summaryrefslogtreecommitdiff
path: root/glew
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2024-04-09 03:14:17 -0400
committersotech117 <michael_foiani@brown.edu>2024-04-09 03:14:17 -0400
commit7a8d0d8bc2572707c9d35006f30ea835c86954b0 (patch)
treededb9a65c1698202ad485378b4186b667008abe5 /glew
parent818324678bd5dca790c57048e5012d2937a4b5e5 (diff)
first draft to generate waves
Diffstat (limited to 'glew')
-rw-r--r--glew/LICENSE.txt73
-rw-r--r--glew/README.md3
-rw-r--r--glew/auto/EGL-Registry/.dummy0
-rw-r--r--glew/auto/EGL-Registry/.htaccess12
-rw-r--r--glew/auto/EGL-Registry/CODE_OF_CONDUCT.md1
-rw-r--r--glew/auto/EGL-Registry/README.md100
-rw-r--r--glew/auto/EGL-Registry/api/1.0/EGL/egl.h286
-rw-r--r--glew/auto/EGL-Registry/api/1.0/egl.h283
-rw-r--r--glew/auto/EGL-Registry/api/1.1/EGL/egl.h226
-rw-r--r--glew/auto/EGL-Registry/api/1.2/EGL/egl.h264
-rw-r--r--glew/auto/EGL-Registry/api/1.2/egl.h260
-rw-r--r--glew/auto/EGL-Registry/api/EGL/egl.h342
-rw-r--r--glew/auto/EGL-Registry/api/EGL/eglext.h1483
-rw-r--r--glew/auto/EGL-Registry/api/EGL/eglplatform.h169
-rw-r--r--glew/auto/EGL-Registry/api/KHR/khrplatform.h311
-rw-r--r--glew/auto/EGL-Registry/api/egl.xml3532
-rw-r--r--glew/auto/EGL-Registry/api/egltest.c8
-rw-r--r--glew/auto/EGL-Registry/api/genheaders.py619
-rw-r--r--glew/auto/EGL-Registry/api/reg.py1168
-rw-r--r--glew/auto/EGL-Registry/api/registry.rnc270
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt64
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt211
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt197
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt70
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt259
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt108
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt281
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt98
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt93
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt88
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt95
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt99
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt126
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt219
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt185
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt108
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt329
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt408
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt146
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt400
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt111
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt169
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt243
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt223
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt106
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt111
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt230
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt202
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt188
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt104
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt175
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt139
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt130
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt127
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt428
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt244
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt131
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt126
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt564
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt371
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt161
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt135
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt414
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt382
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt118
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt329
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt230
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt248
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt247
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt289
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt343
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt376
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt393
-rw-r--r--glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt144
-rw-r--r--glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt138
-rw-r--r--glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt166
-rw-r--r--glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt156
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt278
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt364
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt234
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt648
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt142
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt573
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt242
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt562
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt206
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt197
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt432
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt755
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt158
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt727
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt1077
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt679
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt325
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt261
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt501
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt295
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt122
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt378
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt575
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt1091
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt402
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt560
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt433
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt178
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt386
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt174
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt449
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt138
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt278
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt157
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt147
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt319
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt120
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt95
-rw-r--r--glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt227
-rw-r--r--glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt321
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt94
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt195
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt554
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt127
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt206
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt142
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt91
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt157
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt85
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt241
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt367
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt280
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt105
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt211
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt132
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt152
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt335
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt298
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt472
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt306
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt229
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt198
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt554
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt99
-rw-r--r--glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt114
-rw-r--r--glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt121
-rw-r--r--glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt217
-rw-r--r--glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt101
-rw-r--r--glew/auto/EGL-Registry/index.php382
-rw-r--r--glew/auto/EGL-Registry/registry.tcl770
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/.htaccess13
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/NOTES59
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/README1
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/bottom.php9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/copyright.xml21
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl1455
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml130
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml181
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml929
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml129
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml220
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml389
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml333
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml227
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml244
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml84
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml326
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml114
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml51
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml52
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml66
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml75
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml145
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml109
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml264
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml203
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml85
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml193
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml142
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml288
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml110
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml134
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml216
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml144
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml103
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml93
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml91
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml174
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml123
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml172
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml915
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml161
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml120
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml212
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml624
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml386
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml359
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml270
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml296
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml311
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml75
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml85
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml77
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml98
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml317
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml105
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml42
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml57
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml58
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml143
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml122
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml98
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml148
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml100
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml275
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml321
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml76
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml184
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml179
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml310
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml101
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml125
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml207
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml152
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml94
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml73
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml84
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml73
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml134
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpgbin0 -> 9467 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.pngbin0 -> 26048 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpgbin0 -> 2454 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/accord.js58
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gifbin0 -> 90 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml160
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml228
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml1150
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml226
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml170
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml287
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml774
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml468
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml150
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml341
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml368
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml389
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml149
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml132
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml123
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml145
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml508
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml169
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml70
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml92
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml233
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml172
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml133
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml231
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml149
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml304
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml381
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml107
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml267
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml236
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml155
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml158
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml196
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml137
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml108
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml114
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml112
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml108
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml190
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/index.php121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php135
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css209
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl126
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py316
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl174
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/present.css47
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/start.html87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css2
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/vn221
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/index.php9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/mkshar3
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/reference.xml182
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/setvars5
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/top.php46
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.pngbin0 -> 26048 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html37
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html116
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpgbin0 -> 2454 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html179
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gifbin0 -> 90 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl15
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl1319
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html365
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html1361
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html377
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html488
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html669
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html605
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html494
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html512
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html327
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html329
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html715
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html375
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html275
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html296
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html305
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html430
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html316
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html355
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html492
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html456
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html313
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html474
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html401
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html599
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html362
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html364
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html481
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html385
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html344
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html314
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html320
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html318
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html314
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpgbin0 -> 9467 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html15
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl354
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl49
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css47
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css2
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl214
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css9
-rw-r--r--glew/auto/EGL-Registry/specs/EGLTechNote0001.html110
-rw-r--r--glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.pngbin0 -> 145052 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.0.pdfbin0 -> 238654 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.1.pdfbin0 -> 301346 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.2.pdfbin0 -> 478979 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.3.pdfbin0 -> 516479 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.4.pdfbin0 -> 342048 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdfbin0 -> 347659 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.5.pdfbin0 -> 433708 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdfbin0 -> 435618 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/igstyle.css185
-rw-r--r--glew/auto/EGL-Registry/specs/legal.html34
-rw-r--r--glew/auto/EGL-Registry/specs/legal.xhtml36
-rw-r--r--glew/auto/bin/filter_gl_ext.sh614
-rw-r--r--glew/auto/bin/filter_gles_ext.sh20
-rw-r--r--glew/auto/bin/filter_spec.py38
-rw-r--r--glew/auto/bin/make.pl224
-rw-r--r--glew/auto/bin/make_def_fun.pl37
-rw-r--r--glew/auto/bin/make_def_var.pl33
-rw-r--r--glew/auto/bin/make_enable_index.pl48
-rw-r--r--glew/auto/bin/make_header.pl73
-rw-r--r--glew/auto/bin/make_html.pl57
-rw-r--r--glew/auto/bin/make_index.pl41
-rw-r--r--glew/auto/bin/make_info.pl71
-rw-r--r--glew/auto/bin/make_info_list.pl49
-rw-r--r--glew/auto/bin/make_init.pl61
-rw-r--r--glew/auto/bin/make_initd.pl45
-rw-r--r--glew/auto/bin/make_list.pl75
-rw-r--r--glew/auto/bin/make_list2.pl46
-rw-r--r--glew/auto/bin/make_str.pl55
-rw-r--r--glew/auto/bin/make_struct_fun.pl38
-rw-r--r--glew/auto/bin/make_struct_var.pl33
-rw-r--r--glew/auto/bin/parse_spec.pl410
-rw-r--r--glew/auto/bin/parse_xml.py145
-rw-r--r--glew/auto/bin/update_ext.sh26
-rw-r--r--glew/auto/blacklist27
-rw-r--r--glew/auto/custom.txt7
-rw-r--r--glew/auto/doc/advanced.html130
-rw-r--r--glew/auto/doc/basic.html180
-rw-r--r--glew/auto/doc/build.html49
-rw-r--r--glew/auto/doc/credits.html2
-rw-r--r--glew/auto/doc/index.html113
-rw-r--r--glew/auto/doc/install.html126
-rw-r--r--glew/auto/doc/log.html1319
-rw-r--r--glew/auto/extensions/gl/.dummy0
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_GLES_layers4
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_blob_cache5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer9
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps24
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync9
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_presentation_time5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_recordable5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_device_d3d6
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size5
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_image_format6
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_implicit_external_sync5
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_bind_to_front5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_buffer_age5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_client_extensions4
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_client_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_compositor15
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_config_select_group5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_base7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_drm6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_drm_render_node5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_enumeration5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_openwf6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_persistent_id8
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_query10
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_query_name5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_explicit_device5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p35
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import26
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers17
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_multiview_window5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_base17
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_drm7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_openwf6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_pixel_format_float7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_base7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_device5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_wayland5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_x116
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_xcb6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_present_opaque5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_protected_content5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_protected_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata15
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_compression22
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_sync_reuse5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_yuv_surface29
-rw-r--r--glew/auto/extensions/gl/EGL_HI_clientpixmap6
-rw-r--r--glew/auto/extensions/gl/EGL_HI_colorformats8
-rw-r--r--glew/auto/extensions/gl/EGL_IMG_context_priority8
-rw-r--r--glew/auto/extensions/gl/EGL_IMG_image_plane_attribs6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_cl_event7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_cl_event28
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_config_attribs7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_create_context18
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_debug19
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_display_reference6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_fence_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_colorspace7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image10
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image8
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image_base6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image_pixmap5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface27
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface25
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface327
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_no_config_context5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_partial_update6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_android5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_gbm5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_wayland5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_x116
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_reusable_sync19
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream22
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_attrib13
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture8
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_fifo9
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_surfaceless_context4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_vg_parent_image5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_wait_sync5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_drm_image14
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export6
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_platform_gbm5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_platform_surfaceless5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_query_driver6
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_swap_region5
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_swap_region25
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_3dvision_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_context_priority_realtime5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_coverage_sample6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_cuda_event7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_depth_nonlinear7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_device_cuda5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_native_query7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_post_convert_rounding4
-rw-r--r--glew/auto/extensions/gl/EGL_NV_post_sub_buffer6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_quadruple_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage12
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv10
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_display5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_object5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_partition5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_process5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_system5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_dma6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_fifo_next6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_flush5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_frame_limits6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_metadata21
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_origin15
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_remote12
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_reset7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket_inet5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket_unix5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_sync23
-rw-r--r--glew/auto/extensions/gl/EGL_NV_system_time6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_triple_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_TIZEN_image_native_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_WL_bind_wayland_display14
-rw-r--r--glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image5
-rw-r--r--glew/auto/extensions/gl/GLX_3DFX_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_AMD_gpu_association23
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context10
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_profile7
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_fbconfig_float6
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_get_proc_address5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object5
-rw-r--r--glew/auto/extensions/gl/GLX_ATI_pixel_format_float5
-rw-r--r--glew/auto/extensions/gl/GLX_ATI_render_texture42
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_buffer_age5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_context_priority8
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_create_context_es_profile5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float6
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_get_drawable_type5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_import_context13
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_libglvnd5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_no_config_context4
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_scene_marker4
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_stereo_tree7
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_swap_control7
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_swap_control_tear5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap39
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_visual_info20
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_visual_rating7
-rw-r--r--glew/auto/extensions/gl/GLX_INTEL_swap_event8
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_agp_offset5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_pixmap_colormap5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_query_renderer19
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_release_buffers5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode7
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_swap_control6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_copy_buffer6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_copy_image6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_delay_before_swap5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_float_buffer5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_multigpu_context9
-rw-r--r--glew/auto/extensions/gl/GLX_NV_multisample_coverage6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_present_video7
-rw-r--r--glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_swap_group10
-rw-r--r--glew/auto/extensions/gl/GLX_NV_vertex_array_range6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_video_capture13
-rw-r--r--glew/auto/extensions/gl/GLX_NV_video_out20
-rw-r--r--glew/auto/extensions/gl/GLX_OML_swap_method11
-rw-r--r--glew/auto/extensions/gl/GLX_OML_sync_control9
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_blended_overlay5
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_color_range4
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_shared_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_fbconfig23
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_hyperpipe26
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_pbuffer36
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_swap_barrier6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_swap_group5
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_video_resize11
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_visual_select_group5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_cushion5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_make_current_read6
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_swap_control5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_video_sync6
-rw-r--r--glew/auto/extensions/gl/GLX_SUN_get_transparent_index5
-rw-r--r--glew/auto/extensions/gl/GLX_SUN_video_resize8
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_tbuffer5
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT16
-rw-r--r--glew/auto/extensions/gl/GL_AMD_blend_minmax_factor6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture7
-rw-r--r--glew/auto/extensions/gl/GL_AMD_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_debug_output23
-rw-r--r--glew/auto/extensions/gl/GL_AMD_depth_clamp_separate6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_draw_buffers_blend8
-rw-r--r--glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gcn_shader4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float17
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch33
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_int164
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_int644
-rw-r--r--glew/auto/extensions/gl/GL_AMD_interleaved_elements14
-rw-r--r--glew/auto/extensions/gl/GL_AMD_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_name_gen_delete12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_occlusion_query_event11
-rw-r--r--glew/auto/extensions/gl/GL_AMD_performance_monitor22
-rw-r--r--glew/auto/extensions/gl/GL_AMD_pinned_memory5
-rw-r--r--glew/auto/extensions/gl/GL_AMD_program_binary_Z4005
-rw-r--r--glew/auto/extensions/gl/GL_AMD_query_buffer_object7
-rw-r--r--glew/auto/extensions/gl/GL_AMD_sample_positions6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture5
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_ballot4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_stencil_export4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_sparse_texture15
-rw-r--r--glew/auto/extensions/gl/GL_AMD_stencil_operation_extended9
-rw-r--r--glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_texture_texture44
-rw-r--r--glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_transform_feedback45
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_layer4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator13
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index4
-rw-r--r--glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a4
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_depth_texture4
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_instanced_arrays8
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order5
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt18
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt38
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt58
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_usage6
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_timer_query21
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_translated_shader_source6
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_client_storage5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_clip_distance13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float4
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_copy_texture_levels5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_element_array12
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_fence14
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_float_pixels18
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_flush_buffer_range8
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_object_purgeable13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_pixel_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_rgb_4228
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_row_bytes6
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_specular_vector5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_sync27
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot4
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA88886
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_max_level5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_packed_float8
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_range13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_transform_hint5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_array_range15
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators21
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_ycbcr_4225
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES2_compatibility26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_compatibility18
-rw-r--r--glew/auto/extensions/gl/GL_ARB_arrays_of_arrays4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_base_instance7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_bindless_texture21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_blend_func_extended10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_buffer_storage14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_cl_event9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clear_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clear_texture7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clip_control11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_color_buffer_float10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compatibility4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compute_shader24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compute_variable_group_size9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_conditional_render_inverted8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_copy_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_cull_distance6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_debug_output31
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_buffer_float7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_texture9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_derivative_control4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_direct_state_access103
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_buffers22
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_buffers_blend8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_indirect8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_instanced4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_enhanced_layouts7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_explicit_attrib_location4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_explicit_uniform_location5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_program19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_program_shadow4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_shader7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments17
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_object98
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_geometry_shader427
-rw-r--r--glew/auto/extensions/gl/GL_ARB_get_program_binary11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_get_texture_sub_image6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gl_spirv7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader510
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader_fp6434
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader_int6448
-rw-r--r--glew/auto/extensions/gl/GL_ARB_half_float_pixel5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_half_float_vertex5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_imaging113
-rw-r--r--glew/auto/extensions/gl/GL_ARB_indirect_parameters8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_instanced_arrays8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_internalformat_query6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_internalformat_query2104
-rw-r--r--glew/auto/extensions/gl/GL_ARB_invalidate_subdata10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_map_buffer_alignment5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_map_buffer_range12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_matrix_palette19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multi_bind10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multisample14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multitexture73
-rw-r--r--glew/auto/extensions/gl/GL_ARB_occlusion_query17
-rw-r--r--glew/auto/extensions/gl/GL_ARB_occlusion_query25
-rw-r--r--glew/auto/extensions/gl/GL_ARB_parallel_shader_compile7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query15
-rw-r--r--glew/auto/extensions/gl/GL_ARB_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_point_parameters10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_point_sprite6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_post_depth_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_program_interface_query57
-rw-r--r--glew/auto/extensions/gl/GL_ARB_provoking_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_query_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness31
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness_application_isolation4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sample_locations15
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sample_shading7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sampler_objects19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_seamless_cube_map5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_separate_shader_objects73
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_atomic_counters34
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_ballot4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_bit_encoding4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_clock4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_draw_parameters4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_group_vote4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_image_load_store70
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_image_size4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_objects79
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_precision4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_stencil_export4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_subroutine21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_1005
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_420pack4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_include13
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_packing4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shadow7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shadow_ambient5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture16
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_spirv_extensions6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_stencil_texturing5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sync26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_tessellation_shader38
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_barrier5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_border_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_object10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb324
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_range9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression22
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression_bptc8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_cube_map16
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_cube_map_array11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_add4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_combine26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_crossbar4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_dot36
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_filter_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_float24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_gather7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_multisample29
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_query_levels4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_query_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rectangle10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rg28
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_stencil86
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_storage8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_storage_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_swizzle9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_timer_query9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback215
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback310
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transpose_matrix12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_uniform_buffer_object47
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_array_bgra5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_blend56
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_buffer_object48
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_program145
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_shader14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev44
-rw-r--r--glew/auto/extensions/gl/GL_ARB_viewport_array27
-rw-r--r--glew/auto/extensions/gl/GL_ARB_window_pos20
-rw-r--r--glew/auto/extensions/gl/GL_ARM_mali_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ARM_mali_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ARM_rgba85
-rw-r--r--glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch6
-rw-r--r--glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates5
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_point_sprites10
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_texture_env_combine37
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_texture_env_route7
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_draw_buffers22
-rw-r--r--glew/auto/extensions/gl/GL_ATI_element_array10
-rw-r--r--glew/auto/extensions/gl/GL_ATI_envmap_bumpmap16
-rw-r--r--glew/auto/extensions/gl/GL_ATI_fragment_shader72
-rw-r--r--glew/auto/extensions/gl/GL_ATI_map_object_buffer6
-rw-r--r--glew/auto/extensions/gl/GL_ATI_meminfo7
-rw-r--r--glew/auto/extensions/gl/GL_ATI_pn_triangles15
-rw-r--r--glew/auto/extensions/gl/GL_ATI_separate_stencil10
-rw-r--r--glew/auto/extensions/gl/GL_ATI_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ATI_text_fragment_shader5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_compression_3dc5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_env_combine37
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_float16
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_mirror_once6
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_array_object24
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object7
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_streams59
-rw-r--r--glew/auto/extensions/gl/GL_DMP_program_binary7
-rw-r--r--glew/auto/extensions/gl/GL_DMP_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_422_pixels8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_Cg_shader6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_array4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_storage6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_sync4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_YUV_target5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_abgr5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_base_instance7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_bgra6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_bindable_uniform13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_color10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_equation_separate7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_func_extended14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_func_separate9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_logic_op4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_minmax9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_subtract6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_buffer_storage15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clear_texture6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_control11
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_cull_distance15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_volume_hint5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_cmyka8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_buffer_float4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_buffer_half_float10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_subtable6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_compiled_vertex_array8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_convolution37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_coordinate_frame20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_copy_texture9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_cull_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_debug_label12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_debug_marker7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_depth_bounds_test7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_direct_state_access221
-rw-r--r--glew/auto/extensions/gl/GL_EXT_discard_framebuffer8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_disjoint_timer_query21
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers39
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers210
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_range_elements7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_transform_feedback6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_external_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_float_blend4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_fog_coord17
-rw-r--r--glew/auto/extensions/gl/GL_EXT_frag_depth4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_fragment_lighting36
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_multisample10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_object72
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_point_size37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_shader37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_shader427
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_program_parameters6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_shader464
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_shader54
-rw-r--r--glew/auto/extensions/gl/GL_EXT_histogram27
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_array_formats4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_func5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_material5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_texture4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_instanced_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_light_texture16
-rw-r--r--glew/auto/extensions/gl/GL_EXT_map_buffer_range12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object34
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object_fd6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object_win3217
-rw-r--r--glew/auto/extensions/gl/GL_EXT_misc_attribute4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multi_draw_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiple_textures4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisample23
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisample_compatibility6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture24
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_timer_query4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_depth_stencil8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_float7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_pixels9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_paletted_texture29
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_transform19
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_point_parameters10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_polygon_offset8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_post_depth_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_primitive_bounding_box6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_protected_textures6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_provoking_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_raster_multisample22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_read_format_bgra7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_render_snorm12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_rescale_normal5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_robustness15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sRGB8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sRGB_write_control5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_scene_marker6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_secondary_color28
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore21
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore_fd5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore_win326
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_shader_objects8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_specular_color7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_group_vote4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_image_load_store61
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_integer_mix4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_io_blocks4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage210
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_samples_identical4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shadow_funcs4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shadow_samplers8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shared_texture_palette5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sparse_texture22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sparse_texture24
-rw-r--r--glew/auto/extensions/gl/GL_EXT_static_vertex_array4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_clear_tag6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_two_side7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_wrap6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_subtexture7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_tessellation_point_size48
-rw-r--r--glew/auto/extensions/gl/GL_EXT_tessellation_shader47
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture46
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture3D14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_array13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_border_clamp10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_buffer18
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_buffer_object10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e55
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_bptc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_dxt14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_latc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_cube_map16
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_cube_map_array13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_edge_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_add4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_combine25
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_dot36
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_filter_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_format_BGRA88885
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_integer57
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_lod_bias7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_norm1612
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_object15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_perturb_normal7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_query_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_rectangle8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_rg8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_R85
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG85
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_shadow_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_shared_exponent7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_snorm29
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_storage34
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_storage_compression22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_swizzle9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_timer_query7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_transform_feedback26
-rw-r--r--glew/auto/extensions/gl/GL_EXT_unpack_subimage7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array45
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array_bgra5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit27
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_shader157
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_weighting20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_window_rectangles11
-rw-r--r--glew/auto/extensions/gl/GL_EXT_x11_sync_object6
-rw-r--r--glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO5
-rw-r--r--glew/auto/extensions/gl/GL_GREMEDY_frame_terminator5
-rw-r--r--glew/auto/extensions/gl/GL_GREMEDY_string_marker5
-rw-r--r--glew/auto/extensions/gl/GL_HP_convolution_border_modes4
-rw-r--r--glew/auto/extensions/gl/GL_HP_image_transform10
-rw-r--r--glew/auto/extensions/gl/GL_HP_occlusion_test4
-rw-r--r--glew/auto/extensions/gl/GL_HP_texture_lighting4
-rw-r--r--glew/auto/extensions/gl/GL_IBM_cull_vertex5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_IBM_rasterpos_clip5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_static_data6
-rw-r--r--glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_vertex_array_lists28
-rw-r--r--glew/auto/extensions/gl/GL_IMG_bindless_texture10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_framebuffer_downsample10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_IMG_read_format6
-rw-r--r--glew/auto/extensions/gl/GL_IMG_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc8
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc26
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function11
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_filter_cubic7
-rw-r--r--glew/auto/extensions/gl/GL_IMG_tile_region_protection7
-rw-r--r--glew/auto/extensions/gl/GL_INGR_color_clamp12
-rw-r--r--glew/auto/extensions/gl/GL_INGR_interlace_read5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_blackhole_render5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_conservative_rasterization5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering4
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_map_texture11
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_parallel_arrays13
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_performance_query34
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_shader_integer_functions24
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_texture_scissor6
-rw-r--r--glew/auto/extensions/gl/GL_KHR_blend_equation_advanced21
-rw-r--r--glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent4
-rw-r--r--glew/auto/extensions/gl/GL_KHR_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/GL_KHR_debug55
-rw-r--r--glew/auto/extensions/gl/GL_KHR_no_error5
-rw-r--r--glew/auto/extensions/gl/GL_KHR_parallel_shader_compile7
-rw-r--r--glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior4
-rw-r--r--glew/auto/extensions/gl/GL_KHR_robustness16
-rw-r--r--glew/auto/extensions/gl/GL_KHR_shader_subgroup16
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr52
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr52
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d4
-rw-r--r--glew/auto/extensions/gl/GL_KTX_buffer_region13
-rw-r--r--glew/auto/extensions/gl/GL_MESAX_texture_stack10
-rw-r--r--glew/auto/extensions/gl/GL_MESA_bgra6
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y7
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_pack_invert5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_program_binary_formats5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_resize_buffers5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_shader_integer_functions4
-rw-r--r--glew/auto/extensions/gl/GL_MESA_tile_raster_order4
-rw-r--r--glew/auto/extensions/gl/GL_MESA_window_pos28
-rw-r--r--glew/auto/extensions/gl/GL_MESA_ycbcr_texture7
-rw-r--r--glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers4
-rw-r--r--glew/auto/extensions/gl/GL_NVX_conditional_render6
-rw-r--r--glew/auto/extensions/gl/GL_NVX_gpu_memory_info9
-rw-r--r--glew/auto/extensions/gl/GL_NVX_gpu_multicast211
-rw-r--r--glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast9
-rw-r--r--glew/auto/extensions/gl/GL_NVX_progress_fence8
-rw-r--r--glew/auto/extensions/gl/GL_NV_3dvision_settings13
-rw-r--r--glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external8
-rw-r--r--glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control9
-rw-r--r--glew/auto/extensions/gl/GL_NV_bgr5
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count6
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_texture17
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_equation_advanced56
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent4
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_minmax_factor6
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_square4
-rw-r--r--glew/auto/extensions/gl/GL_NV_clip_space_w_scaling8
-rw-r--r--glew/auto/extensions/gl/GL_NV_command_list40
-rw-r--r--glew/auto/extensions/gl/GL_NV_compute_program56
-rw-r--r--glew/auto/extensions/gl/GL_NV_compute_shader_derivatives4
-rw-r--r--glew/auto/extensions/gl/GL_NV_conditional_render10
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster9
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_dilate8
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap5
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles8
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation4
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_depth_to_color6
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_NV_deep_texture3D6
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_buffer_float11
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_nonlinear5
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_range_unclamped9
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_buffers38
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_texture5
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_vulkan_image10
-rw-r--r--glew/auto/extensions/gl/GL_NV_evaluators37
-rw-r--r--glew/auto/extensions/gl/GL_NV_explicit_attrib_location4
-rw-r--r--glew/auto/extensions/gl/GL_NV_explicit_multisample17
-rw-r--r--glew/auto/extensions/gl/GL_NV_fbo_color_attachments21
-rw-r--r--glew/auto/extensions/gl/GL_NV_fence14
-rw-r--r--glew/auto/extensions/gl/GL_NV_fill_rectangle5
-rw-r--r--glew/auto/extensions/gl/GL_NV_float_buffer19
-rw-r--r--glew/auto/extensions/gl/GL_NV_fog_distance7
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color7
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program16
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program29
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program44
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program_option4
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric4
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_shader_interlock4
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples18
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage9
-rw-r--r--glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB4
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_program48
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_shader44
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough4
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_multicast21
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program424
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program510
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended4
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program_fp644
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_shader566
-rw-r--r--glew/auto/extensions/gl/GL_NV_half_float52
-rw-r--r--glew/auto/extensions/gl/GL_NV_image_formats4
-rw-r--r--glew/auto/extensions/gl/GL_NV_instanced_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_NV_internalformat_sample_query9
-rw-r--r--glew/auto/extensions/gl/GL_NV_light_max_exponent6
-rw-r--r--glew/auto/extensions/gl/GL_NV_memory_attachment20
-rw-r--r--glew/auto/extensions/gl/GL_NV_memory_object_sparse8
-rw-r--r--glew/auto/extensions/gl/GL_NV_mesh_shader56
-rw-r--r--glew/auto/extensions/gl/GL_NV_multisample_coverage5
-rw-r--r--glew/auto/extensions/gl/GL_NV_multisample_filter_hint5
-rw-r--r--glew/auto/extensions/gl/GL_NV_non_square_matrices16
-rw-r--r--glew/auto/extensions/gl/GL_NV_occlusion_query15
-rw-r--r--glew/auto/extensions/gl/GL_NV_pack_subimage7
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_depth_stencil6
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_float6
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_float_linear6
-rw-r--r--glew/auto/extensions/gl/GL_NV_parameter_buffer_object12
-rw-r--r--glew/auto/extensions/gl/GL_NV_parameter_buffer_object24
-rw-r--r--glew/auto/extensions/gl/GL_NV_path_rendering217
-rw-r--r--glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge5
-rw-r--r--glew/auto/extensions/gl/GL_NV_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_NV_pixel_data_range12
-rw-r--r--glew/auto/extensions/gl/GL_NV_platform_binary5
-rw-r--r--glew/auto/extensions/gl/GL_NV_point_sprite9
-rw-r--r--glew/auto/extensions/gl/GL_NV_polygon_mode11
-rw-r--r--glew/auto/extensions/gl/GL_NV_present_video16
-rw-r--r--glew/auto/extensions/gl/GL_NV_primitive_restart8
-rw-r--r--glew/auto/extensions/gl/GL_NV_primitive_shading_rate6
-rw-r--r--glew/auto/extensions/gl/GL_NV_query_resource_tag4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_buffer6
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_buffer_front5
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_depth4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_NV_register_combiners68
-rw-r--r--glew/auto/extensions/gl/GL_NV_register_combiners27
-rw-r--r--glew/auto/extensions/gl/GL_NV_representative_fragment_test5
-rw-r--r--glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/GL_NV_sRGB_formats14
-rw-r--r--glew/auto/extensions/gl/GL_NV_sample_locations15
-rw-r--r--glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_NV_scissor_exclusive8
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_counters4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_float4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_float644
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_int644
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_buffer_load20
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned5
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_texture_footprint4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_thread_group7
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_thread_shuffle4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shading_rate_image32
-rw-r--r--glew/auto/extensions/gl/GL_NV_shadow_samplers_array5
-rw-r--r--glew/auto/extensions/gl/GL_NV_shadow_samplers_cube5
-rw-r--r--glew/auto/extensions/gl/GL_NV_stereo_view_rendering4
-rw-r--r--glew/auto/extensions/gl/GL_NV_tessellation_program59
-rw-r--r--glew/auto/extensions/gl/GL_NV_texgen_emboss7
-rw-r--r--glew/auto/extensions/gl/GL_NV_texgen_reflection6
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_array17
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_barrier5
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_border_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_latc8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_s3tc8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_vtc4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_env_combine49
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_expand_normal5
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_multisample12
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_rectangle8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader77
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader232
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader321
-rw-r--r--glew/auto/extensions/gl/GL_NV_timeline_semaphore12
-rw-r--r--glew/auto/extensions/gl/GL_NV_transform_feedback40
-rw-r--r--glew/auto/extensions/gl/GL_NV_transform_feedback215
-rw-r--r--glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory7
-rw-r--r--glew/auto/extensions/gl/GL_NV_vdpau_interop19
-rw-r--r--glew/auto/extensions/gl/GL_NV_vdpau_interop25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_array_range11
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_array_range25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory41
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program151
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program1_14
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program24
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program2_option6
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program35
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program45
-rw-r--r--glew/auto/extensions/gl/GL_NV_video_capture45
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_array24
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_array24
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_swizzle17
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image6
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image_external8
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image_external_essl34
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_equation_separate7
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_func_separate9
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_subtract9
-rw-r--r--glew/auto/extensions/gl/GL_OES_byte_coordinates4
-rw-r--r--glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture5
-rw-r--r--glew/auto/extensions/gl/GL_OES_compressed_paletted_texture14
-rw-r--r--glew/auto/extensions/gl/GL_OES_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth245
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth325
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth_texture7
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth_texture_cube_map9
-rw-r--r--glew/auto/extensions/gl/GL_OES_draw_buffers_indexed12
-rw-r--r--glew/auto/extensions/gl/GL_OES_draw_texture5
-rw-r--r--glew/auto/extensions/gl/GL_OES_element_index_uint5
-rw-r--r--glew/auto/extensions/gl/GL_OES_extended_matrix_palette4
-rw-r--r--glew/auto/extensions/gl/GL_OES_fbo_render_mipmap4
-rw-r--r--glew/auto/extensions/gl/GL_OES_fragment_precision_high4
-rw-r--r--glew/auto/extensions/gl/GL_OES_framebuffer_object58
-rw-r--r--glew/auto/extensions/gl/GL_OES_geometry_point_size37
-rw-r--r--glew/auto/extensions/gl/GL_OES_geometry_shader37
-rw-r--r--glew/auto/extensions/gl/GL_OES_get_program_binary9
-rw-r--r--glew/auto/extensions/gl/GL_OES_gpu_shader54
-rw-r--r--glew/auto/extensions/gl/GL_OES_mapbuffer11
-rw-r--r--glew/auto/extensions/gl/GL_OES_matrix_get7
-rw-r--r--glew/auto/extensions/gl/GL_OES_matrix_palette24
-rw-r--r--glew/auto/extensions/gl/GL_OES_packed_depth_stencil7
-rw-r--r--glew/auto/extensions/gl/GL_OES_point_size_array9
-rw-r--r--glew/auto/extensions/gl/GL_OES_point_sprite6
-rw-r--r--glew/auto/extensions/gl/GL_OES_read_format6
-rw-r--r--glew/auto/extensions/gl/GL_OES_required_internalformat19
-rw-r--r--glew/auto/extensions/gl/GL_OES_rgb8_rgba86
-rw-r--r--glew/auto/extensions/gl/GL_OES_sample_shading7
-rw-r--r--glew/auto/extensions/gl/GL_OES_sample_variables4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_image_atomic4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_io_blocks4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation7
-rw-r--r--glew/auto/extensions/gl/GL_OES_single_precision10
-rw-r--r--glew/auto/extensions/gl/GL_OES_standard_derivatives5
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil15
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil45
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil85
-rw-r--r--glew/auto/extensions/gl/GL_OES_surfaceless_context5
-rw-r--r--glew/auto/extensions/gl/GL_OES_tessellation_point_size47
-rw-r--r--glew/auto/extensions/gl/GL_OES_tessellation_shader47
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_3D14
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_border_clamp14
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_buffer20
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_compression_astc52
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_cube_map26
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_cube_map_array13
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_env_crossbar4
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_npot4
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_stencil86
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array10
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_half_float5
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_26
-rw-r--r--glew/auto/extensions/gl/GL_OML_interlace6
-rw-r--r--glew/auto/extensions/gl/GL_OML_resample10
-rw-r--r--glew/auto/extensions/gl/GL_OML_subsample6
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview10
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview24
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture5
-rw-r--r--glew/auto/extensions/gl/GL_PGI_misc_hints24
-rw-r--r--glew/auto/extensions/gl/GL_PGI_vertex_hints26
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather4
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_alpha_test8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_binning_control9
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_driver_control8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_extended_get23
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_extended_get28
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_frame_extrapolation5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_motion_estimation8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_render_shared_exponent5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent6
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate4
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shading_rate13
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated12
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated25
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout6
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_tiled_rendering38
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_writeonly_rendering5
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility36
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility17
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_enable14
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_error_string5
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_extension_query6
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_log15
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_proc_address5
-rw-r--r--glew/auto/extensions/gl/GL_REND_screen_coordinates6
-rw-r--r--glew/auto/extensions/gl/GL_S3_s3tc10
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_clip_band_hint4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_color_range13
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_detail_texture6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_fog_function6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_generate_mipmap6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_line_texgen4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_multisample22
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_multitexture19
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_pixel_texture4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_point_line_texgen12
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_shared_multisample5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_sharpen_texture6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture4D6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_border_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_filter46
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_lod8
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_select4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async11
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async_histogram6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async_pixel10
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_g_instruments8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_r_instruments7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_cadd5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_cmultiply5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_clipmap4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_color_table_index_mode4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_complex_polar4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_convolution_accuracy5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_cube_map13
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_cylinder_texgen4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_datapipe8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_decimation4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_depth_texture7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_dvc4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_flush_raster5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_blend6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_layers12
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_offset6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_patchy4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_scale6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_texture5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting21
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragments_instrument7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_framezoom5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_icc_texture16
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_igloo_interface13
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_image_compression4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_instrument_error4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_interlace5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ir_instrument14
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_line_quality_hint5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_list_priority4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_mpeg115
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_mpeg24
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_nurbs_eval24
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_occlusion_instrument5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_packed_6bytes4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_tiles4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_polynomial_ffd8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_quad_mesh6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_reference_plane5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_resample9
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_scalebias_hint5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_shadow8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_shadow_ambient5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_slim8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_sprite8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_subdiv_patch4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_subsample9
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_add_env4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_lod_bias4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_phase5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_range32
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_scale_bias8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_supersample4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vector_ops6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_array_object10
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_preclip6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcb4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcba6
-rw-r--r--glew/auto/extensions/gl/GL_SGI_color_matrix15
-rw-r--r--glew/auto/extensions/gl/GL_SGI_color_table27
-rw-r--r--glew/auto/extensions/gl/GL_SGI_complex4
-rw-r--r--glew/auto/extensions/gl/GL_SGI_complex_type11
-rw-r--r--glew/auto/extensions/gl/GL_SGI_fft16
-rw-r--r--glew/auto/extensions/gl/GL_SGI_texture_color_table6
-rw-r--r--glew/auto/extensions/gl/GL_SUNX_constant_data7
-rw-r--r--glew/auto/extensions/gl/GL_SUN_convolution_border_modes5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_global_alpha14
-rw-r--r--glew/auto/extensions/gl/GL_SUN_mesh_array6
-rw-r--r--glew/auto/extensions/gl/GL_SUN_read_video_pixels5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_slice_accum5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_triangle_list28
-rw-r--r--glew/auto/extensions/gl/GL_SUN_vertex44
-rw-r--r--glew/auto/extensions/gl/GL_VIV_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_WIN_phong_shading6
-rw-r--r--glew/auto/extensions/gl/GL_WIN_scene_markerXXX4
-rw-r--r--glew/auto/extensions/gl/GL_WIN_specular_fog5
-rw-r--r--glew/auto/extensions/gl/GL_WIN_swap_hint5
-rw-r--r--glew/auto/extensions/gl/WGL_3DFX_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_3DL_stereo_control9
-rw-r--r--glew/auto/extensions/gl/WGL_AMD_gpu_association23
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_buffer_region12
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context12
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_profile8
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_extensions_string5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_make_current_read10
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pbuffer18
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pixel_format56
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pixel_format_float5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_render_texture40
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation5
-rw-r--r--glew/auto/extensions/gl/WGL_ATI_pixel_format_float7
-rw-r--r--glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_colorspace7
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_create_context_es_profile5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_depth_float5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_display_color_table8
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_extensions_string5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_make_current_read8
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pbuffer19
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pixel_format52
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_swap_control6
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_swap_control_tear4
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_digital_video_control10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_gamma10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_genlock25
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_image_buffer10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_swap_frame_lock8
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_swap_frame_usage8
-rw-r--r--glew/auto/extensions/gl/WGL_NV_DX_interop15
-rw-r--r--glew/auto/extensions/gl/WGL_NV_DX_interop24
-rw-r--r--glew/auto/extensions/gl/WGL_NV_copy_image6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_delay_before_swap5
-rw-r--r--glew/auto/extensions/gl/WGL_NV_float_buffer13
-rw-r--r--glew/auto/extensions/gl/WGL_NV_gpu_affinity13
-rw-r--r--glew/auto/extensions/gl/WGL_NV_multigpu_context9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_multisample_coverage6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_present_video9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_render_depth_texture9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_render_texture_rectangle7
-rw-r--r--glew/auto/extensions/gl/WGL_NV_swap_group10
-rw-r--r--glew/auto/extensions/gl/WGL_NV_vertex_array_range6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_video_capture12
-rw-r--r--glew/auto/extensions/gl/WGL_NV_video_output24
-rw-r--r--glew/auto/extensions/gl/WGL_OML_sync_control10
-rw-r--r--glew/auto/src/eglew_head.h98
-rw-r--r--glew/auto/src/eglew_mid.h4
-rw-r--r--glew/auto/src/eglew_tail.h15
-rw-r--r--glew/auto/src/footer.html4
-rw-r--r--glew/auto/src/glew_head.c289
-rw-r--r--glew/auto/src/glew_head.h1139
-rw-r--r--glew/auto/src/glew_init_egl.c45
-rw-r--r--glew/auto/src/glew_init_gl.c209
-rw-r--r--glew/auto/src/glew_init_glx.c57
-rw-r--r--glew/auto/src/glew_init_tail.c68
-rw-r--r--glew/auto/src/glew_init_wgl.c41
-rw-r--r--glew/auto/src/glew_license.h32
-rw-r--r--glew/auto/src/glew_str_egl.c17
-rw-r--r--glew/auto/src/glew_str_glx.c17
-rw-r--r--glew/auto/src/glew_str_head.c9
-rw-r--r--glew/auto/src/glew_str_tail.c7
-rw-r--r--glew/auto/src/glew_str_wgl.c17
-rw-r--r--glew/auto/src/glew_tail.h69
-rw-r--r--glew/auto/src/glewinfo_egl.c6
-rw-r--r--glew/auto/src/glewinfo_gl.c7
-rw-r--r--glew/auto/src/glewinfo_glx.c6
-rw-r--r--glew/auto/src/glewinfo_head.c96
-rw-r--r--glew/auto/src/glewinfo_tail.c609
-rw-r--r--glew/auto/src/glewinfo_wgl.c8
-rw-r--r--glew/auto/src/glxew_head.h111
-rw-r--r--glew/auto/src/glxew_mid.h4
-rw-r--r--glew/auto/src/glxew_tail.h20
-rw-r--r--glew/auto/src/header.html96
-rw-r--r--glew/auto/src/khronos_license.h23
-rw-r--r--glew/auto/src/mesa_license.h24
-rw-r--r--glew/auto/src/wglew_head.h36
-rw-r--r--glew/auto/src/wglew_mid.h4
-rw-r--r--glew/auto/src/wglew_tail.h22
-rw-r--r--glew/build/cmake/CMakeLists.txt287
-rw-r--r--glew/build/cmake/CopyImportedTargetProperties.cmake88
-rw-r--r--glew/build/cmake/cmake_uninstall.cmake.in26
-rw-r--r--glew/build/cmake/glew-config.cmake60
-rw-r--r--glew/build/cmake/testbuild/CMakeLists.txt25
-rw-r--r--glew/build/cmake/testbuild/main.c23
-rw-r--r--glew/build/vc10/common.props29
-rw-r--r--glew/build/vc12/common.props29
-rw-r--r--glew/build/vc14/common.props29
-rw-r--r--glew/build/vc15/common.props29
-rw-r--r--glew/build/vc6/glew.dsw71
-rw-r--r--glew/build/vc6/glew_shared.dsp122
-rw-r--r--glew/build/vc6/glew_static.dsp112
-rw-r--r--glew/build/vc6/glewinfo.dsp103
-rw-r--r--glew/build/vc6/visualinfo.dsp103
-rw-r--r--glew/cmake-testbuild.sh71
-rw-r--r--glew/config/config.guess1700
-rw-r--r--glew/config/version7
-rw-r--r--glew/doc/advanced.html230
-rw-r--r--glew/doc/basic.html280
-rw-r--r--glew/doc/build.html149
-rw-r--r--glew/doc/credits.html102
-rw-r--r--glew/doc/github.pngbin0 -> 1219 bytes
-rw-r--r--glew/doc/glew.css187
-rw-r--r--glew/doc/glew.html1071
-rw-r--r--glew/doc/glew.pngbin0 -> 9298 bytes
-rw-r--r--glew/doc/glew.txt29
-rw-r--r--glew/doc/glxew.html188
-rw-r--r--glew/doc/gpl.txt340
-rw-r--r--glew/doc/index.html213
-rw-r--r--glew/doc/install.html226
-rw-r--r--glew/doc/khronos.txt20
-rw-r--r--glew/doc/log.html1419
-rw-r--r--glew/doc/mesa.txt21
-rw-r--r--glew/doc/new.pngbin0 -> 1180 bytes
-rw-r--r--glew/doc/ogl_sm.jpgbin0 -> 1617 bytes
-rw-r--r--glew/doc/travis.pngbin0 -> 2541 bytes
-rw-r--r--glew/doc/wglew.html169
-rw-r--r--glew/glew.pc.in11
-rw-r--r--glew/include/GL/eglew.h3230
-rw-r--r--glew/include/GL/glew.h26719
-rw-r--r--glew/include/GL/glxew.h1843
-rw-r--r--glew/include/GL/wglew.h1468
-rw-r--r--glew/original-readme.md255
-rw-r--r--glew/src/glew.c32522
-rw-r--r--glew/src/glewinfo.c19392
-rw-r--r--glew/src/visualinfo.c1283
1712 files changed, 208526 insertions, 0 deletions
diff --git a/glew/LICENSE.txt b/glew/LICENSE.txt
new file mode 100644
index 0000000..f707804
--- /dev/null
+++ b/glew/LICENSE.txt
@@ -0,0 +1,73 @@
+The OpenGL Extension Wrangler Library
+Copyright (C) 2002-2007, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2007, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Mesa 3-D graphics library
+Version: 7.0
+
+Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Copyright (c) 2007 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
diff --git a/glew/README.md b/glew/README.md
new file mode 100644
index 0000000..94cbcc3
--- /dev/null
+++ b/glew/README.md
@@ -0,0 +1,3 @@
+# Glew Library for CS 1230
+
+Last updated on 8/30/22 \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/.dummy b/glew/auto/EGL-Registry/.dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/glew/auto/EGL-Registry/.dummy
diff --git a/glew/auto/EGL-Registry/.htaccess b/glew/auto/EGL-Registry/.htaccess
new file mode 100644
index 0000000..3872b67
--- /dev/null
+++ b/glew/auto/EGL-Registry/.htaccess
@@ -0,0 +1,12 @@
+RewriteEngine on
+
+# Avoid redirect loops
+RewriteCond %{ENV:REDIRECT_STATUS} 200
+RewriteRule ^ - [L]
+
+# Old versioned-by-date EGL specs redirected to the single per-version copy
+RewriteRule ^specs/eglspec.1.1.02.pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.1.pdf [L,R=301]
+RewriteRule ^specs/eglspec.1.4.([0-9]+).pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.4.pdf [L,R=301]
+RewriteRule ^specs/eglspec.1.4.withchanges.([0-9]+).pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.4.withchanges.pdf [L,R=301]
+
+# RewriteRule ^xhtml/(.*)\.xml https://www.khronos.org/opengles/sdk/docs/man3/html/$1.xhtml [L,R=301]
diff --git a/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md b/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..a11610b
--- /dev/null
+++ b/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil.
diff --git a/glew/auto/EGL-Registry/README.md b/glew/auto/EGL-Registry/README.md
new file mode 100644
index 0000000..1d01f54
--- /dev/null
+++ b/glew/auto/EGL-Registry/README.md
@@ -0,0 +1,100 @@
+# EGL-Registry
+
+The EGL-Registry repository contains the EGL API and Extension Registry,
+including specifications, reference pages and reference cards, and the
+enumerant registry. It is also used as a backing store for the web view of
+the registry at https://www.khronos.org/registry/egl/ ; commits to the
+master branch of this repository will be reflected there.
+
+In the past, the EGL registry was maintained in a public Subversion
+repository. The history in that repository has not been imported to github,
+but it is still available at
+https://cvs.khronos.org/svn/repos/registry/trunk/public/egl/ .
+
+Interesting files in this repository include:
+
+* index.php - toplevel index page for the web view. This relies on PHP
+ include files found elsewhere on www.khronos.org and so is not very useful
+ in isolation.
+* registry.tcl - extension number registry. Documents the names and index
+ numbers assigned to EGL extension specifications.
+* api/egl.xml - extension enumerant and API registry. Defines the EGL API,
+ including extensions, and is used to generate headers. Documents the EGL
+ enumerant ranges assigned to different vendors.
+* api/EGL/ and api/KHR/ - header files used by an EGL implementation.
+ EGL/eglext.h and EGL/egl.h are generated from egl.xml. The other headers
+ are handcoded and express OS and window system (platform) dependencies.
+* extensions/ - EGL extension specifications, grouped into vendor-specific
+ subdirectories.
+* sdk/ - EGL reference pages and reference cards. There are separate sets
+ for each API version.
+* specs/ - EGL specification documents.
+
+## Reserving EGL Enumerant Ranges
+
+EGL enumerants are documented in api/egl.xml . New ranges can be allocated
+by proposing a pull request to master modifying this file, following the
+existing examples. Allocate ranges starting at the lowest free values
+available (search for "Reservable for future use"). Ranges are not
+officially allocated until your pull request is *accepted* into master. At
+that point you can use values from your assigned range for API extensions.
+
+
+## Adding Extension Specifications
+
+Extension specification documents can be added by proposing a pull request
+to master, adding the specification .txt file and related changes under
+extensions/\<vendor\>/filename.txt. Your pull request must also:
+
+* Allocate an extension number in registry.tcl (follow the existing
+ ```<extension>``` examples, search for "Next free extension number", and use
+ the lowest available extension number).
+* Include that extension number in the extension specification document.
+* Define the interfaces introduced by this extension in api/egl.xml,
+ following the examples of existing extensions. If you have difficulty
+ doing this, consult the registry schema documentation in the GL registry
+ at www.khronos.org/registry/gl/; you may also create Issues in the
+ EGL-Registry repository to request help.
+* Verify that the EGL headers regenerate properly after applying your XML
+ changes. In the api/ directory, you must be able to do the following without
+ errors:
+```
+ # Validate XML changes
+ make validate
+ # Verify headers build and are legal C
+ make clobber
+ make
+ make tests
+```
+* Finally, add a link from the extensions section of index.php to the
+ extension document, using the specified extension number, so it shows up
+ in the web view (this could in principle be generated automatically from
+ registry.tcl / egl.xml, but isn't at present).
+
+Sometimes extension text files contain inappropriate UTF-8 characters. They
+should be restricted to the ASCII subset of UTF-8 at present. They can be
+removed using the iconv Linux command-line tool via
+
+ iconv -c -f utf-8 -t ascii filename.txt
+
+(see internal Bugzilla issue 16141 for more).
+
+We may transition to an asciidoc-based extension specification format at
+some point.
+
+
+## Build Tools
+
+This section is not complete (see https://github.com/KhronosGroup/EGL-Registry/issues/92).
+
+To validate the XML and build the headers you will need at least GNU make,
+'jing' for the 'make validate' step (https://relaxng.org/jclark/jing.html),
+and Python 3.5 and the lxml.etree Python library
+(https://pypi.org/project/lxml/) for the 'make' step. The 'make tests' step
+requires whatever the C and C++ compilers configured for GNU make are,
+usually gcc and g++.
+
+All of these components are available prepackaged for major Linux
+distributions and for the Windows 10 Debian WSL.
+
+
diff --git a/glew/auto/EGL-Registry/api/1.0/EGL/egl.h b/glew/auto/EGL-Registry/api/1.0/EGL/egl.h
new file mode 100644
index 0000000..7b36e8a
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.0/EGL/egl.h
@@ -0,0 +1,286 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/* Sketchy version of egl.h (really only for reserving
+ * enumerant values to EGL tokens and sanity checking
+ * prototypes).
+ *
+ * Last modified 2006/08/13
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* Windows calling convention boilerplate */
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef unsigned int EGLenum;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+typedef void *EGLClientBuffer;
+/* NativeDisplayType, NativeWindowType, NativePixmapType TBD */
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+#define EGL_VERSION_1_3 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#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 /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#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_PRESERVED_RESOURCES 0x3030
+#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 /* Attrib list terminator */
+#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 /* Pseudo-attribute (not queryable) */
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENGL_ES2_BIT 0x04 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* CreateContext attributes */
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLAPI EGLint APIENTRY eglGetError();
+
+EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id);
+EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy);
+
+EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api);
+EGLAPI EGLenum APIENTRY eglQueryAPI(void);
+
+EGLAPI EGLBoolean APIENTRY eglWaitClient(void);
+
+EGLAPI EGLBoolean APIENTRY eglReleaseThread(void);
+
+EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLAPI EGLContext APIENTRY eglGetCurrentContext(void);
+EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw);
+EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void);
+EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglWaitGL(void);
+EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine);
+EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.0/egl.h b/glew/auto/EGL-Registry/api/1.0/egl.h
new file mode 100644
index 0000000..f433385
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.0/egl.h
@@ -0,0 +1,283 @@
+/* Sketchy version of egl.h (really only for reserving
+ * enumerant values to EGL tokens and sanity checking
+ * prototypes).
+ *
+ * Last modified 2006/08/13
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* Windows calling convention boilerplate */
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef unsigned int EGLenum;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+typedef void *EGLClientBuffer;
+/* NativeDisplayType, NativeWindowType, NativePixmapType TBD */
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+#define EGL_VERSION_1_3 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#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 /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#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_PRESERVED_RESOURCES 0x3030
+#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 /* Attrib list terminator */
+#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 /* Pseudo-attribute (not queryable) */
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENGL_ES2_BIT 0x04 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* CreateContext attributes */
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLAPI EGLint APIENTRY eglGetError();
+
+EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id);
+EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy);
+
+EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api);
+EGLAPI EGLenum APIENTRY eglQueryAPI(void);
+
+EGLAPI EGLBoolean APIENTRY eglWaitClient(void);
+
+EGLAPI EGLBoolean APIENTRY eglReleaseThread(void);
+
+EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLAPI EGLContext APIENTRY eglGetCurrentContext(void);
+EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw);
+EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void);
+EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglWaitGL(void);
+EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine);
+EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.1/EGL/egl.h b/glew/auto/EGL-Registry/api/1.1/EGL/egl.h
new file mode 100644
index 0000000..99f2880
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.1/EGL/egl.h
@@ -0,0 +1,226 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+#include <GLES/gl.h>
+#include <GLES/egltypes.h>
+
+/*
+** egltypes.h is platform dependent. It defines:
+**
+** - EGL types and resources
+** - Native types
+** - EGL and native handle values
+**
+** EGL types and resources are to be typedef'ed with appropriate platform
+** dependent resource handle types. EGLint must be an integer of at least
+** 32-bit.
+**
+** NativeDisplayType, NativeWindowType and NativePixmapType are to be
+** replaced with corresponding types of the native window system in egl.h.
+**
+** EGL and native handle values must match their types.
+**
+** Example egltypes.h:
+*/
+
+#if 0
+
+#include <sys/types.h>
+#include <native_window_system.h>
+
+/*
+** Types and resources
+*/
+typedef int EGLBoolean;
+typedef int32_t EGLint;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+
+/*
+** EGL and native handle values
+*/
+#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+#endif
+
+/*
+** Versioning and extensions
+*/
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+
+/*
+** Boolean
+*/
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/*
+** Errors
+*/
+#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
+/* 0x300F - 0x301F reserved for additional errors. */
+
+/*
+** Config attributes
+*/
+#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_PRESERVED_RESOURCES 0x3030*/
+#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 /* Also a config value */
+#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
+
+/*
+** Config values
+*/
+#define EGL_DONT_CARE ((EGLint) -1)
+
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* " */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_NO_TEXTURE 0x305C /* EGL_TEXTURE_FORMAT/TARGET value */
+#define EGL_TEXTURE_RGB 0x305D /* EGL_TEXTURE_FORMAT value */
+#define EGL_TEXTURE_RGBA 0x305E /* " */
+#define EGL_TEXTURE_2D 0x305F /* EGL_TEXTURE_TARGET value */
+
+/*
+** Config attribute mask bits
+*/
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bit */
+#define EGL_PIXMAP_BIT 0x02 /* " */
+#define EGL_WINDOW_BIT 0x04 /* " */
+
+/*
+** String names
+*/
+#define EGL_VENDOR 0x3053 /* eglQueryString target */
+#define EGL_VERSION 0x3054 /* " */
+#define EGL_EXTENSIONS 0x3055 /* " */
+
+/*
+** Surface attributes
+*/
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080 /* For pbuffers bound as textures */
+#define EGL_TEXTURE_TARGET 0x3081 /* " */
+#define EGL_MIPMAP_TEXTURE 0x3082 /* " */
+#define EGL_MIPMAP_LEVEL 0x3083 /* " */
+
+/*
+** BindTexImage / ReleaseTexImage buffer target
+*/
+#define EGL_BACK_BUFFER 0x3084
+
+/*
+** Current surfaces
+*/
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/*
+** Engines
+*/
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* 0x305C-0x3FFFF reserved for future use */
+
+/*
+** Functions
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GLAPI EGLint APIENTRY eglGetError (void);
+
+GLAPI EGLDisplay APIENTRY eglGetDisplay (NativeDisplayType display);
+GLAPI EGLBoolean APIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
+GLAPI EGLBoolean APIENTRY eglTerminate (EGLDisplay dpy);
+GLAPI const char * APIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
+GLAPI void (* APIENTRY eglGetProcAddress (const char *procname))();
+
+GLAPI EGLBoolean APIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+
+GLAPI EGLSurface APIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
+GLAPI EGLBoolean APIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+
+/* EGL 1.1 render-to-texture APIs */
+GLAPI EGLBoolean APIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+GLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+GLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+/* EGL 1.1 swap control API */
+GLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+GLAPI EGLContext APIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
+GLAPI EGLBoolean APIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+GLAPI EGLContext APIENTRY eglGetCurrentContext (void);
+GLAPI EGLSurface APIENTRY eglGetCurrentSurface (EGLint readdraw);
+GLAPI EGLDisplay APIENTRY eglGetCurrentDisplay (void);
+GLAPI EGLBoolean APIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+
+GLAPI EGLBoolean APIENTRY eglWaitGL (void);
+GLAPI EGLBoolean APIENTRY eglWaitNative (EGLint engine);
+GLAPI EGLBoolean APIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface draw);
+GLAPI EGLBoolean APIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, NativePixmapType target);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ___egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.2/EGL/egl.h b/glew/auto/EGL-Registry/api/1.2/EGL/egl.h
new file mode 100644
index 0000000..d67fd1a
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.2/EGL/egl.h
@@ -0,0 +1,264 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/* Reference egl.h for EGL 1.2
+ * Last modified 2006/10/24
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+
+/* Define NativeDisplayType, NativeWindowType, NativePixmapType in egltypes.h */
+#include <EGL/egltypes.h>
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#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 /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#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_PRESERVED_RESOURCES 0x3030
+#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 /* Attrib list terminator */
+#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
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLint eglGetError();
+
+EGLDisplay eglGetDisplay(NativeDisplayType display_id);
+EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLBoolean eglTerminate(EGLDisplay dpy);
+
+const char *eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglBindAPI(EGLenum api);
+EGLenum eglQueryAPI(void);
+
+EGLBoolean eglWaitClient(void);
+
+EGLBoolean eglReleaseThread(void);
+
+EGLSurface eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLContext eglGetCurrentContext(void);
+EGLSurface eglGetCurrentSurface(EGLint readdraw);
+EGLDisplay eglGetCurrentDisplay(void);
+EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglWaitGL(void);
+EGLBoolean eglWaitNative(EGLint engine);
+EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+void (*eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.2/egl.h b/glew/auto/EGL-Registry/api/1.2/egl.h
new file mode 100644
index 0000000..bf27697
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.2/egl.h
@@ -0,0 +1,260 @@
+/* Reference egl.h for EGL 1.2
+ * Last modified 2006/10/24
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+
+/* Define NativeDisplayType, NativeWindowType, NativePixmapType in egltypes.h */
+#include <EGL/egltypes.h>
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#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 /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#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_PRESERVED_RESOURCES 0x3030
+#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 /* Attrib list terminator */
+#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
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLint eglGetError();
+
+EGLDisplay eglGetDisplay(NativeDisplayType display_id);
+EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLBoolean eglTerminate(EGLDisplay dpy);
+
+const char *eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglBindAPI(EGLenum api);
+EGLenum eglQueryAPI(void);
+
+EGLBoolean eglWaitClient(void);
+
+EGLBoolean eglReleaseThread(void);
+
+EGLSurface eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLContext eglGetCurrentContext(void);
+EGLSurface eglGetCurrentSurface(EGLint readdraw);
+EGLDisplay eglGetCurrentDisplay(void);
+EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglWaitGL(void);
+EGLBoolean eglWaitNative(EGLint engine);
+EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+void (*eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/EGL/egl.h b/glew/auto/EGL-Registry/api/EGL/egl.h
new file mode 100644
index 0000000..97d0878
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/egl.h
@@ -0,0 +1,342 @@
+#ifndef __egl_h_
+#define __egl_h_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+**
+** This header is generated from the Khronos EGL XML API Registry.
+** The current version of the Registry, generator scripts
+** used to make the header, and the header can be found at
+** http://www.khronos.org/registry/egl
+**
+** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
+*/
+
+#include <EGL/eglplatform.h>
+
+#ifndef EGL_EGL_PROTOTYPES
+#define EGL_EGL_PROTOTYPES 1
+#endif
+
+/* Generated on date 20220525 */
+
+/* Generated C header for:
+ * API: egl
+ * Versions considered: .*
+ * Versions emitted: .*
+ * Default extensions included: None
+ * Additional extensions included: _nomatch_^
+ * Extensions removed: _nomatch_^
+ */
+
+#ifndef EGL_VERSION_1_0
+#define EGL_VERSION_1_0 1
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+#define EGL_ALPHA_SIZE 0x3021
+#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_BLUE_SIZE 0x3022
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
+#define EGL_DRAW 0x3059
+#define EGL_EXTENSIONS 0x3055
+#define EGL_FALSE 0
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_HEIGHT 0x3056
+#define EGL_LARGEST_PBUFFER 0x3058
+#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_NONE 0x3038
+#define EGL_NON_CONFORMANT_CONFIG 0x3051
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
+#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
+#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
+#define EGL_PBUFFER_BIT 0x0001
+#define EGL_PIXMAP_BIT 0x0002
+#define EGL_READ 0x305A
+#define EGL_RED_SIZE 0x3024
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SLOW_CONFIG 0x3050
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_SUCCESS 0x3000
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_TRANSPARENT_RGB 0x3052
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRUE 1
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_WIDTH 0x3057
+#define EGL_WINDOW_BIT 0x0004
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
+typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);
+typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
+EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
+EGLAPI EGLint EGLAPIENTRY eglGetError (void);
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
+EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
+#endif
+#endif /* EGL_VERSION_1_0 */
+
+#ifndef EGL_VERSION_1_1
+#define EGL_VERSION_1_1 1
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_CONTEXT_LOST 0x300E
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_2D 0x305F
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_TARGET 0x3081
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
+#endif
+#endif /* EGL_VERSION_1_1 */
+
+#ifndef EGL_VERSION_1_2
+#define EGL_VERSION_1_2 1
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_ALPHA_FORMAT_PRE 0x308C
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_BUFFER_PRESERVED 0x3094
+#define EGL_BUFFER_DESTROYED 0x3095
+#define EGL_CLIENT_APIS 0x308D
+#define EGL_COLORSPACE 0x3087
+#define EGL_COLORSPACE_sRGB 0x3089
+#define EGL_COLORSPACE_LINEAR 0x308A
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+#define EGL_DISPLAY_SCALING 10000
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_LUMINANCE_BUFFER 0x308F
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_OPENGL_ES_BIT 0x0001
+#define EGL_OPENVG_BIT 0x0002
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+#define EGL_OPENVG_IMAGE 0x3096
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_RGB_BUFFER 0x308E
+#define EGL_SINGLE_BUFFER 0x3085
+#define EGL_SWAP_BEHAVIOR 0x3093
+#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
+#define EGL_VERTICAL_RESOLUTION 0x3091
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);
+typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
+EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
+#endif
+#endif /* EGL_VERSION_1_2 */
+
+#ifndef EGL_VERSION_1_3
+#define EGL_VERSION_1_3 1
+#define EGL_CONFORMANT 0x3042
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041
+#define EGL_OPENGL_ES2_BIT 0x0004
+#define EGL_VG_ALPHA_FORMAT 0x3088
+#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
+#define EGL_VG_COLORSPACE 0x3087
+#define EGL_VG_COLORSPACE_sRGB 0x3089
+#define EGL_VG_COLORSPACE_LINEAR 0x308A
+#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
+#endif /* EGL_VERSION_1_3 */
+
+#ifndef EGL_VERSION_1_4
+#define EGL_VERSION_1_4 1
+#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
+#define EGL_MULTISAMPLE_RESOLVE 0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
+#define EGL_OPENGL_API 0x30A2
+#define EGL_OPENGL_BIT 0x0008
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
+typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
+#endif
+#endif /* EGL_VERSION_1_4 */
+
+#ifndef EGL_VERSION_1_5
+#define EGL_VERSION_1_5 1
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+#define EGL_CONTEXT_MAJOR_VERSION 0x3098
+#define EGL_CONTEXT_MINOR_VERSION 0x30FB
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
+#define EGL_NO_RESET_NOTIFICATION 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_CL_EVENT_HANDLE 0x309C
+#define EGL_SYNC_CL_EVENT 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
+#define EGL_SYNC_TYPE 0x30F7
+#define EGL_SYNC_STATUS 0x30F1
+#define EGL_SYNC_CONDITION 0x30F8
+#define EGL_SIGNALED 0x30F2
+#define EGL_UNSIGNALED 0x30F3
+#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
+#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
+#define EGL_TIMEOUT_EXPIRED 0x30F5
+#define EGL_CONDITION_SATISFIED 0x30F6
+#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
+#define EGL_SYNC_FENCE 0x30F9
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_COLORSPACE_SRGB 0x3089
+#define EGL_GL_COLORSPACE_LINEAR 0x308A
+#define EGL_GL_RENDERBUFFER 0x30B9
+#define EGL_GL_TEXTURE_2D 0x30B1
+#define EGL_GL_TEXTURE_LEVEL 0x30BC
+#define EGL_GL_TEXTURE_3D 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
+#define EGL_IMAGE_PRESERVED 0x30D2
+#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
+typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
+typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
+EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
+#endif
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/glew/auto/EGL-Registry/api/EGL/eglext.h b/glew/auto/EGL-Registry/api/EGL/eglext.h
new file mode 100644
index 0000000..d58da70
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/eglext.h
@@ -0,0 +1,1483 @@
+#ifndef __eglext_h_
+#define __eglext_h_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+**
+** This header is generated from the Khronos EGL XML API Registry.
+** The current version of the Registry, generator scripts
+** used to make the header, and the header can be found at
+** http://www.khronos.org/registry/egl
+**
+** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
+*/
+
+#include <EGL/eglplatform.h>
+
+#define EGL_EGLEXT_VERSION 20220525
+
+/* Generated C header for:
+ * API: egl
+ * Versions considered: .*
+ * Versions emitted: _nomatch_^
+ * Default extensions included: egl
+ * Additional extensions included: _nomatch_^
+ * Extensions removed: _nomatch_^
+ */
+
+#ifndef EGL_KHR_cl_event
+#define EGL_KHR_cl_event 1
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+#endif /* EGL_KHR_cl_event */
+
+#ifndef EGL_KHR_cl_event2
+#define EGL_KHR_cl_event2 1
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
+#endif
+#endif /* EGL_KHR_cl_event2 */
+
+#ifndef EGL_KHR_client_get_all_proc_addresses
+#define EGL_KHR_client_get_all_proc_addresses 1
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+#ifndef EGL_KHR_config_attribs
+#define EGL_KHR_config_attribs 1
+#define EGL_CONFORMANT_KHR 0x3042
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+#endif /* EGL_KHR_config_attribs */
+
+#ifndef EGL_KHR_context_flush_control
+#define EGL_KHR_context_flush_control 1
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
+#endif /* EGL_KHR_context_flush_control */
+
+#ifndef EGL_KHR_create_context
+#define EGL_KHR_create_context 1
+#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+#define EGL_CONTEXT_FLAGS_KHR 0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+#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_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
+#endif /* EGL_KHR_create_context */
+
+#ifndef EGL_KHR_create_context_no_error
+#define EGL_KHR_create_context_no_error 1
+#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+#endif /* EGL_KHR_create_context_no_error */
+
+#ifndef EGL_KHR_debug
+#define EGL_KHR_debug 1
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+#define EGL_OBJECT_THREAD_KHR 0x33B0
+#define EGL_OBJECT_DISPLAY_KHR 0x33B1
+#define EGL_OBJECT_CONTEXT_KHR 0x33B2
+#define EGL_OBJECT_SURFACE_KHR 0x33B3
+#define EGL_OBJECT_IMAGE_KHR 0x33B4
+#define EGL_OBJECT_SYNC_KHR 0x33B5
+#define EGL_OBJECT_STREAM_KHR 0x33B6
+#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
+#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
+#define EGL_DEBUG_CALLBACK_KHR 0x33B8
+typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
+typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
+EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+#endif
+#endif /* EGL_KHR_debug */
+
+#ifndef EGL_KHR_display_reference
+#define EGL_KHR_display_reference 1
+#define EGL_TRACK_REFERENCES_KHR 0x3352
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);
+#endif
+#endif /* EGL_KHR_display_reference */
+
+#ifndef EGL_KHR_fence_sync
+#define EGL_KHR_fence_sync 1
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SYNC_FENCE_KHR 0x30F9
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_fence_sync */
+
+#ifndef EGL_KHR_get_all_proc_addresses
+#define EGL_KHR_get_all_proc_addresses 1
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+#ifndef EGL_KHR_gl_colorspace
+#define EGL_KHR_gl_colorspace 1
+#define EGL_GL_COLORSPACE_KHR 0x309D
+#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+#endif /* EGL_KHR_gl_colorspace */
+
+#ifndef EGL_KHR_gl_renderbuffer_image
+#define EGL_KHR_gl_renderbuffer_image 1
+#define EGL_GL_RENDERBUFFER_KHR 0x30B9
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+#ifndef EGL_KHR_gl_texture_2D_image
+#define EGL_KHR_gl_texture_2D_image 1
+#define EGL_GL_TEXTURE_2D_KHR 0x30B1
+#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+#ifndef EGL_KHR_gl_texture_3D_image
+#define EGL_KHR_gl_texture_3D_image 1
+#define EGL_GL_TEXTURE_3D_KHR 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+#ifndef EGL_KHR_gl_texture_cubemap_image
+#define EGL_KHR_gl_texture_cubemap_image 1
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+#ifndef EGL_KHR_image
+#define EGL_KHR_image 1
+typedef void *EGLImageKHR;
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
+typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
+#endif
+#endif /* EGL_KHR_image */
+
+#ifndef EGL_KHR_image_base
+#define EGL_KHR_image_base 1
+#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+#endif /* EGL_KHR_image_base */
+
+#ifndef EGL_KHR_image_pixmap
+#define EGL_KHR_image_pixmap 1
+#endif /* EGL_KHR_image_pixmap */
+
+#ifndef EGL_KHR_lock_surface
+#define EGL_KHR_lock_surface 1
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#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
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
+#endif
+#endif /* EGL_KHR_lock_surface */
+
+#ifndef EGL_KHR_lock_surface2
+#define EGL_KHR_lock_surface2 1
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+#endif /* EGL_KHR_lock_surface2 */
+
+#ifndef EGL_KHR_lock_surface3
+#define EGL_KHR_lock_surface3 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
+#endif
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifndef EGL_KHR_mutable_render_buffer
+#define EGL_KHR_mutable_render_buffer 1
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
+#endif /* EGL_KHR_mutable_render_buffer */
+
+#ifndef EGL_KHR_no_config_context
+#define EGL_KHR_no_config_context 1
+#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
+#endif /* EGL_KHR_no_config_context */
+
+#ifndef EGL_KHR_partial_update
+#define EGL_KHR_partial_update 1
+#define EGL_BUFFER_AGE_KHR 0x313D
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_KHR_partial_update */
+
+#ifndef EGL_KHR_platform_android
+#define EGL_KHR_platform_android 1
+#define EGL_PLATFORM_ANDROID_KHR 0x3141
+#endif /* EGL_KHR_platform_android */
+
+#ifndef EGL_KHR_platform_gbm
+#define EGL_KHR_platform_gbm 1
+#define EGL_PLATFORM_GBM_KHR 0x31D7
+#endif /* EGL_KHR_platform_gbm */
+
+#ifndef EGL_KHR_platform_wayland
+#define EGL_KHR_platform_wayland 1
+#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
+#endif /* EGL_KHR_platform_wayland */
+
+#ifndef EGL_KHR_platform_x11
+#define EGL_KHR_platform_x11 1
+#define EGL_PLATFORM_X11_KHR 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+#endif /* EGL_KHR_platform_x11 */
+
+#ifndef EGL_KHR_reusable_sync
+#define EGL_KHR_reusable_sync 1
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_REUSABLE_KHR 0x30FA
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_reusable_sync */
+
+#ifndef EGL_KHR_stream
+#define EGL_KHR_stream 1
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_PRODUCER_FRAME_KHR 0x3212
+#define EGL_CONSUMER_FRAME_KHR 0x3213
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
+#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+#define EGL_BAD_STREAM_KHR 0x321B
+#define EGL_BAD_STATE_KHR 0x321C
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_stream */
+
+#ifndef EGL_KHR_stream_attrib
+#define EGL_KHR_stream_attrib 1
+#ifdef KHRONOS_SUPPORT_INT64
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_stream_attrib */
+
+#ifndef EGL_KHR_stream_consumer_gltexture
+#define EGL_KHR_stream_consumer_gltexture 1
+#ifdef EGL_KHR_stream
+#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifndef EGL_KHR_stream_cross_process_fd
+#define EGL_KHR_stream_cross_process_fd 1
+typedef int EGLNativeFileDescriptorKHR;
+#ifdef EGL_KHR_stream
+#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
+typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifndef EGL_KHR_stream_fifo
+#define EGL_KHR_stream_fifo 1
+#ifdef EGL_KHR_stream
+#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+#define EGL_STREAM_TIME_NOW_KHR 0x31FD
+#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_fifo */
+
+#ifndef EGL_KHR_stream_producer_aldatalocator
+#define EGL_KHR_stream_producer_aldatalocator 1
+#ifdef EGL_KHR_stream
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+#ifndef EGL_KHR_stream_producer_eglsurface
+#define EGL_KHR_stream_producer_eglsurface 1
+#ifdef EGL_KHR_stream
+#define EGL_STREAM_BIT_KHR 0x0800
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifndef EGL_KHR_surfaceless_context
+#define EGL_KHR_surfaceless_context 1
+#endif /* EGL_KHR_surfaceless_context */
+
+#ifndef EGL_KHR_swap_buffers_with_damage
+#define EGL_KHR_swap_buffers_with_damage 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifndef EGL_KHR_vg_parent_image
+#define EGL_KHR_vg_parent_image 1
+#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
+#endif /* EGL_KHR_vg_parent_image */
+
+#ifndef EGL_KHR_wait_sync
+#define EGL_KHR_wait_sync 1
+typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+#endif
+#endif /* EGL_KHR_wait_sync */
+
+#ifndef EGL_ANDROID_GLES_layers
+#define EGL_ANDROID_GLES_layers 1
+#endif /* EGL_ANDROID_GLES_layers */
+
+#ifndef EGL_ANDROID_blob_cache
+#define EGL_ANDROID_blob_cache 1
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+#endif
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifndef EGL_ANDROID_create_native_client_buffer
+#define EGL_ANDROID_create_native_client_buffer 1
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
+#endif
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifndef EGL_ANDROID_framebuffer_target
+#define EGL_ANDROID_framebuffer_target 1
+#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+#endif /* EGL_ANDROID_framebuffer_target */
+
+#ifndef EGL_ANDROID_front_buffer_auto_refresh
+#define EGL_ANDROID_front_buffer_auto_refresh 1
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+#ifndef EGL_ANDROID_get_frame_timestamps
+#define EGL_ANDROID_get_frame_timestamps 1
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
+#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
+#define EGL_TIMESTAMPS_ANDROID 0x3430
+#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+#define EGL_READS_DONE_TIME_ANDROID 0x343C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
+#endif
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifndef EGL_ANDROID_get_native_client_buffer
+#define EGL_ANDROID_get_native_client_buffer 1
+struct AHardwareBuffer;
+typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);
+#endif
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140
+#endif /* EGL_ANDROID_image_native_buffer */
+
+#ifndef EGL_ANDROID_native_fence_sync
+#define EGL_ANDROID_native_fence_sync 1
+#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
+#endif
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifndef EGL_ANDROID_presentation_time
+#define EGL_ANDROID_presentation_time 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+#endif
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifndef EGL_ANDROID_recordable
+#define EGL_ANDROID_recordable 1
+#define EGL_RECORDABLE_ANDROID 0x3142
+#endif /* EGL_ANDROID_recordable */
+
+#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
+#define EGL_ANGLE_d3d_share_handle_client_buffer 1
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+#ifndef EGL_ANGLE_device_d3d
+#define EGL_ANGLE_device_d3d 1
+#define EGL_D3D9_DEVICE_ANGLE 0x33A0
+#define EGL_D3D11_DEVICE_ANGLE 0x33A1
+#endif /* EGL_ANGLE_device_d3d */
+
+#ifndef EGL_ANGLE_query_surface_pointer
+#define EGL_ANGLE_query_surface_pointer 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
+#endif
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+#ifndef EGL_ANGLE_sync_control_rate
+#define EGL_ANGLE_sync_control_rate 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
+#endif
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifndef EGL_ANGLE_window_fixed_size
+#define EGL_ANGLE_window_fixed_size 1
+#define EGL_FIXED_SIZE_ANGLE 0x3201
+#endif /* EGL_ANGLE_window_fixed_size */
+
+#ifndef EGL_ARM_image_format
+#define EGL_ARM_image_format 1
+#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+#endif /* EGL_ARM_image_format */
+
+#ifndef EGL_ARM_implicit_external_sync
+#define EGL_ARM_implicit_external_sync 1
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+#endif /* EGL_ARM_implicit_external_sync */
+
+#ifndef EGL_ARM_pixmap_multisample_discard
+#define EGL_ARM_pixmap_multisample_discard 1
+#define EGL_DISCARD_SAMPLES_ARM 0x3286
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+#ifndef EGL_EXT_bind_to_front
+#define EGL_EXT_bind_to_front 1
+#define EGL_FRONT_BUFFER_EXT 0x3464
+#endif /* EGL_EXT_bind_to_front */
+
+#ifndef EGL_EXT_buffer_age
+#define EGL_EXT_buffer_age 1
+#define EGL_BUFFER_AGE_EXT 0x313D
+#endif /* EGL_EXT_buffer_age */
+
+#ifndef EGL_EXT_client_extensions
+#define EGL_EXT_client_extensions 1
+#endif /* EGL_EXT_client_extensions */
+
+#ifndef EGL_EXT_client_sync
+#define EGL_EXT_client_sync 1
+#define EGL_SYNC_CLIENT_EXT 0x3364
+#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_EXT_client_sync */
+
+#ifndef EGL_EXT_compositor
+#define EGL_EXT_compositor 1
+#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+#define EGL_EXTERNAL_REF_ID_EXT 0x3461
+#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);
+#endif
+#endif /* EGL_EXT_compositor */
+
+#ifndef EGL_EXT_config_select_group
+#define EGL_EXT_config_select_group 1
+#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+#endif /* EGL_EXT_config_select_group */
+
+#ifndef EGL_EXT_create_context_robustness
+#define EGL_EXT_create_context_robustness 1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+#endif /* EGL_EXT_create_context_robustness */
+
+#ifndef EGL_EXT_device_base
+#define EGL_EXT_device_base 1
+typedef void *EGLDeviceEXT;
+#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+#endif
+#endif /* EGL_EXT_device_base */
+
+#ifndef EGL_EXT_device_drm
+#define EGL_EXT_device_drm 1
+#define EGL_DRM_DEVICE_FILE_EXT 0x3233
+#define EGL_DRM_MASTER_FD_EXT 0x333C
+#endif /* EGL_EXT_device_drm */
+
+#ifndef EGL_EXT_device_drm_render_node
+#define EGL_EXT_device_drm_render_node 1
+#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+#endif /* EGL_EXT_device_drm_render_node */
+
+#ifndef EGL_EXT_device_enumeration
+#define EGL_EXT_device_enumeration 1
+#endif /* EGL_EXT_device_enumeration */
+
+#ifndef EGL_EXT_device_openwf
+#define EGL_EXT_device_openwf 1
+#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
+#define EGL_OPENWF_DEVICE_EXT 0x333D
+#endif /* EGL_EXT_device_openwf */
+
+#ifndef EGL_EXT_device_persistent_id
+#define EGL_EXT_device_persistent_id 1
+#define EGL_DEVICE_UUID_EXT 0x335C
+#define EGL_DRIVER_UUID_EXT 0x335D
+#define EGL_DRIVER_NAME_EXT 0x335E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
+#endif
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifndef EGL_EXT_device_query
+#define EGL_EXT_device_query 1
+#endif /* EGL_EXT_device_query */
+
+#ifndef EGL_EXT_device_query_name
+#define EGL_EXT_device_query_name 1
+#define EGL_RENDERER_EXT 0x335F
+#endif /* EGL_EXT_device_query_name */
+
+#ifndef EGL_EXT_explicit_device
+#define EGL_EXT_explicit_device 1
+#endif /* EGL_EXT_explicit_device */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_linear
+#define EGL_EXT_gl_colorspace_bt2020_linear 1
+#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_pq
+#define EGL_EXT_gl_colorspace_bt2020_pq 1
+#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3
+#define EGL_EXT_gl_colorspace_display_p3 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_linear
+#define EGL_EXT_gl_colorspace_display_p3_linear 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
+#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb
+#define EGL_EXT_gl_colorspace_scrgb 1
+#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb_linear
+#define EGL_EXT_gl_colorspace_scrgb_linear 1
+#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+#ifndef EGL_EXT_image_dma_buf_import
+#define EGL_EXT_image_dma_buf_import 1
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+#define EGL_ITU_REC601_EXT 0x327F
+#define EGL_ITU_REC709_EXT 0x3280
+#define EGL_ITU_REC2020_EXT 0x3281
+#define EGL_YUV_FULL_RANGE_EXT 0x3282
+#define EGL_YUV_NARROW_RANGE_EXT 0x3283
+#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+#endif /* EGL_EXT_image_dma_buf_import */
+
+#ifndef EGL_EXT_image_dma_buf_import_modifiers
+#define EGL_EXT_image_dma_buf_import_modifiers 1
+#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
+#endif
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifndef EGL_EXT_image_gl_colorspace
+#define EGL_EXT_image_gl_colorspace 1
+#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+#endif /* EGL_EXT_image_gl_colorspace */
+
+#ifndef EGL_EXT_image_implicit_sync_control
+#define EGL_EXT_image_implicit_sync_control 1
+#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+#ifndef EGL_EXT_multiview_window
+#define EGL_EXT_multiview_window 1
+#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+#endif /* EGL_EXT_multiview_window */
+
+#ifndef EGL_EXT_output_base
+#define EGL_EXT_output_base 1
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
+#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
+#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
+#define EGL_SWAP_INTERVAL_EXT 0x322F
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
+EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+#endif
+#endif /* EGL_EXT_output_base */
+
+#ifndef EGL_EXT_output_drm
+#define EGL_EXT_output_drm 1
+#define EGL_DRM_CRTC_EXT 0x3234
+#define EGL_DRM_PLANE_EXT 0x3235
+#define EGL_DRM_CONNECTOR_EXT 0x3236
+#endif /* EGL_EXT_output_drm */
+
+#ifndef EGL_EXT_output_openwf
+#define EGL_EXT_output_openwf 1
+#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+#define EGL_OPENWF_PORT_ID_EXT 0x3239
+#endif /* EGL_EXT_output_openwf */
+
+#ifndef EGL_EXT_pixel_format_float
+#define EGL_EXT_pixel_format_float 1
+#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+#endif /* EGL_EXT_pixel_format_float */
+
+#ifndef EGL_EXT_platform_base
+#define EGL_EXT_platform_base 1
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
+#endif
+#endif /* EGL_EXT_platform_base */
+
+#ifndef EGL_EXT_platform_device
+#define EGL_EXT_platform_device 1
+#define EGL_PLATFORM_DEVICE_EXT 0x313F
+#endif /* EGL_EXT_platform_device */
+
+#ifndef EGL_EXT_platform_wayland
+#define EGL_EXT_platform_wayland 1
+#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
+#endif /* EGL_EXT_platform_wayland */
+
+#ifndef EGL_EXT_platform_x11
+#define EGL_EXT_platform_x11 1
+#define EGL_PLATFORM_X11_EXT 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+#endif /* EGL_EXT_platform_x11 */
+
+#ifndef EGL_EXT_platform_xcb
+#define EGL_EXT_platform_xcb 1
+#define EGL_PLATFORM_XCB_EXT 0x31DC
+#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+#endif /* EGL_EXT_platform_xcb */
+
+#ifndef EGL_EXT_present_opaque
+#define EGL_EXT_present_opaque 1
+#define EGL_PRESENT_OPAQUE_EXT 0x31DF
+#endif /* EGL_EXT_present_opaque */
+
+#ifndef EGL_EXT_protected_content
+#define EGL_EXT_protected_content 1
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+#endif /* EGL_EXT_protected_content */
+
+#ifndef EGL_EXT_protected_surface
+#define EGL_EXT_protected_surface 1
+#endif /* EGL_EXT_protected_surface */
+
+#ifndef EGL_EXT_stream_consumer_egloutput
+#define EGL_EXT_stream_consumer_egloutput 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+#endif
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifndef EGL_EXT_surface_CTA861_3_metadata
+#define EGL_EXT_surface_CTA861_3_metadata 1
+#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+#ifndef EGL_EXT_surface_SMPTE2086_metadata
+#define EGL_EXT_surface_SMPTE2086_metadata 1
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+#define EGL_METADATA_SCALING_EXT 50000
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+#ifndef EGL_EXT_surface_compression
+#define EGL_EXT_surface_compression 1
+#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
+#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
+#endif
+#endif /* EGL_EXT_surface_compression */
+
+#ifndef EGL_EXT_swap_buffers_with_damage
+#define EGL_EXT_swap_buffers_with_damage 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifndef EGL_EXT_sync_reuse
+#define EGL_EXT_sync_reuse 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_EXT_sync_reuse */
+
+#ifndef EGL_EXT_yuv_surface
+#define EGL_EXT_yuv_surface 1
+#define EGL_YUV_ORDER_EXT 0x3301
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_SUBSAMPLE_EXT 0x3312
+#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
+#define EGL_YUV_CSC_STANDARD_EXT 0x330A
+#define EGL_YUV_PLANE_BPP_EXT 0x331A
+#define EGL_YUV_BUFFER_EXT 0x3300
+#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_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_LIMITED_EXT 0x3318
+#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+#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_PLANE_BPP_0_EXT 0x331B
+#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
+#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
+#endif /* EGL_EXT_yuv_surface */
+
+#ifndef EGL_HI_clientpixmap
+#define EGL_HI_clientpixmap 1
+struct EGLClientPixmapHI {
+ void *pData;
+ EGLint iWidth;
+ EGLint iHeight;
+ EGLint iStride;
+};
+#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
+#endif
+#endif /* EGL_HI_clientpixmap */
+
+#ifndef EGL_HI_colorformats
+#define EGL_HI_colorformats 1
+#define EGL_COLOR_FORMAT_HI 0x8F70
+#define EGL_COLOR_RGB_HI 0x8F71
+#define EGL_COLOR_RGBA_HI 0x8F72
+#define EGL_COLOR_ARGB_HI 0x8F73
+#endif /* EGL_HI_colorformats */
+
+#ifndef EGL_IMG_context_priority
+#define EGL_IMG_context_priority 1
+#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+#endif /* EGL_IMG_context_priority */
+
+#ifndef EGL_IMG_image_plane_attribs
+#define EGL_IMG_image_plane_attribs 1
+#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+#endif /* EGL_IMG_image_plane_attribs */
+
+#ifndef EGL_MESA_drm_image
+#define EGL_MESA_drm_image 1
+#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+#define EGL_DRM_BUFFER_USE_MESA 0x31D1
+#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+#define EGL_DRM_BUFFER_MESA 0x31D3
+#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
+#endif
+#endif /* EGL_MESA_drm_image */
+
+#ifndef EGL_MESA_image_dma_buf_export
+#define EGL_MESA_image_dma_buf_export 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
+#endif
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifndef EGL_MESA_platform_gbm
+#define EGL_MESA_platform_gbm 1
+#define EGL_PLATFORM_GBM_MESA 0x31D7
+#endif /* EGL_MESA_platform_gbm */
+
+#ifndef EGL_MESA_platform_surfaceless
+#define EGL_MESA_platform_surfaceless 1
+#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+#endif /* EGL_MESA_platform_surfaceless */
+
+#ifndef EGL_MESA_query_driver
+#define EGL_MESA_query_driver 1
+typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
+typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);
+EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);
+#endif
+#endif /* EGL_MESA_query_driver */
+
+#ifndef EGL_NOK_swap_region
+#define EGL_NOK_swap_region 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#endif
+#endif /* EGL_NOK_swap_region */
+
+#ifndef EGL_NOK_swap_region2
+#define EGL_NOK_swap_region2 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#endif
+#endif /* EGL_NOK_swap_region2 */
+
+#ifndef EGL_NOK_texture_from_pixmap
+#define EGL_NOK_texture_from_pixmap 1
+#define EGL_Y_INVERTED_NOK 0x307F
+#endif /* EGL_NOK_texture_from_pixmap */
+
+#ifndef EGL_NV_3dvision_surface
+#define EGL_NV_3dvision_surface 1
+#define EGL_AUTO_STEREO_NV 0x3136
+#endif /* EGL_NV_3dvision_surface */
+
+#ifndef EGL_NV_context_priority_realtime
+#define EGL_NV_context_priority_realtime 1
+#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+#endif /* EGL_NV_context_priority_realtime */
+
+#ifndef EGL_NV_coverage_sample
+#define EGL_NV_coverage_sample 1
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+#endif /* EGL_NV_coverage_sample */
+
+#ifndef EGL_NV_coverage_sample_resolve
+#define EGL_NV_coverage_sample_resolve 1
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+#endif /* EGL_NV_coverage_sample_resolve */
+
+#ifndef EGL_NV_cuda_event
+#define EGL_NV_cuda_event 1
+#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
+#define EGL_SYNC_CUDA_EVENT_NV 0x323C
+#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+#endif /* EGL_NV_cuda_event */
+
+#ifndef EGL_NV_depth_nonlinear
+#define EGL_NV_depth_nonlinear 1
+#define EGL_DEPTH_ENCODING_NV 0x30E2
+#define EGL_DEPTH_ENCODING_NONE_NV 0
+#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+#endif /* EGL_NV_depth_nonlinear */
+
+#ifndef EGL_NV_device_cuda
+#define EGL_NV_device_cuda 1
+#define EGL_CUDA_DEVICE_NV 0x323A
+#endif /* EGL_NV_device_cuda */
+
+#ifndef EGL_NV_native_query
+#define EGL_NV_native_query 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
+#endif
+#endif /* EGL_NV_native_query */
+
+#ifndef EGL_NV_post_convert_rounding
+#define EGL_NV_post_convert_rounding 1
+#endif /* EGL_NV_post_convert_rounding */
+
+#ifndef EGL_NV_post_sub_buffer
+#define EGL_NV_post_sub_buffer 1
+#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+#endif
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifndef EGL_NV_quadruple_buffer
+#define EGL_NV_quadruple_buffer 1
+#define EGL_QUADRUPLE_BUFFER_NV 0x3231
+#endif /* EGL_NV_quadruple_buffer */
+
+#ifndef EGL_NV_robustness_video_memory_purge
+#define EGL_NV_robustness_video_memory_purge 1
+#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+#ifndef EGL_NV_stream_consumer_eglimage
+#define EGL_NV_stream_consumer_eglimage 1
+#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+#define EGL_STREAM_IMAGE_ADD_NV 0x3374
+#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
+typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
+EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+#endif
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifndef EGL_NV_stream_consumer_gltexture_yuv
+#define EGL_NV_stream_consumer_gltexture_yuv 1
+#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifndef EGL_NV_stream_cross_display
+#define EGL_NV_stream_cross_display 1
+#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+#endif /* EGL_NV_stream_cross_display */
+
+#ifndef EGL_NV_stream_cross_object
+#define EGL_NV_stream_cross_object 1
+#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
+#endif /* EGL_NV_stream_cross_object */
+
+#ifndef EGL_NV_stream_cross_partition
+#define EGL_NV_stream_cross_partition 1
+#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
+#endif /* EGL_NV_stream_cross_partition */
+
+#ifndef EGL_NV_stream_cross_process
+#define EGL_NV_stream_cross_process 1
+#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
+#endif /* EGL_NV_stream_cross_process */
+
+#ifndef EGL_NV_stream_cross_system
+#define EGL_NV_stream_cross_system 1
+#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+#endif /* EGL_NV_stream_cross_system */
+
+#ifndef EGL_NV_stream_dma
+#define EGL_NV_stream_dma 1
+#define EGL_STREAM_DMA_NV 0x3371
+#define EGL_STREAM_DMA_SERVER_NV 0x3372
+#endif /* EGL_NV_stream_dma */
+
+#ifndef EGL_NV_stream_fifo_next
+#define EGL_NV_stream_fifo_next 1
+#define EGL_PENDING_FRAME_NV 0x3329
+#define EGL_STREAM_TIME_PENDING_NV 0x332A
+#endif /* EGL_NV_stream_fifo_next */
+
+#ifndef EGL_NV_stream_fifo_synchronous
+#define EGL_NV_stream_fifo_synchronous 1
+#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+#ifndef EGL_NV_stream_flush
+#define EGL_NV_stream_flush 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_NV_stream_flush */
+
+#ifndef EGL_NV_stream_frame_limits
+#define EGL_NV_stream_frame_limits 1
+#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+#endif /* EGL_NV_stream_frame_limits */
+
+#ifndef EGL_NV_stream_metadata
+#define EGL_NV_stream_metadata 1
+#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+#define EGL_PRODUCER_METADATA_NV 0x3253
+#define EGL_CONSUMER_METADATA_NV 0x3254
+#define EGL_PENDING_METADATA_NV 0x3328
+#define EGL_METADATA0_SIZE_NV 0x3255
+#define EGL_METADATA1_SIZE_NV 0x3256
+#define EGL_METADATA2_SIZE_NV 0x3257
+#define EGL_METADATA3_SIZE_NV 0x3258
+#define EGL_METADATA0_TYPE_NV 0x3259
+#define EGL_METADATA1_TYPE_NV 0x325A
+#define EGL_METADATA2_TYPE_NV 0x325B
+#define EGL_METADATA3_TYPE_NV 0x325C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
+#endif
+#endif /* EGL_NV_stream_metadata */
+
+#ifndef EGL_NV_stream_origin
+#define EGL_NV_stream_origin 1
+#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+#define EGL_LEFT_NV 0x336B
+#define EGL_RIGHT_NV 0x336C
+#define EGL_TOP_NV 0x336D
+#define EGL_BOTTOM_NV 0x336E
+#define EGL_X_AXIS_NV 0x336F
+#define EGL_Y_AXIS_NV 0x3370
+#endif /* EGL_NV_stream_origin */
+
+#ifndef EGL_NV_stream_remote
+#define EGL_NV_stream_remote 1
+#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+#define EGL_STREAM_TYPE_NV 0x3241
+#define EGL_STREAM_PROTOCOL_NV 0x3242
+#define EGL_STREAM_ENDPOINT_NV 0x3243
+#define EGL_STREAM_LOCAL_NV 0x3244
+#define EGL_STREAM_PRODUCER_NV 0x3247
+#define EGL_STREAM_CONSUMER_NV 0x3248
+#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
+#endif /* EGL_NV_stream_remote */
+
+#ifndef EGL_NV_stream_reset
+#define EGL_NV_stream_reset 1
+#define EGL_SUPPORT_RESET_NV 0x3334
+#define EGL_SUPPORT_REUSE_NV 0x3335
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_NV_stream_reset */
+
+#ifndef EGL_NV_stream_socket
+#define EGL_NV_stream_socket 1
+#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+#define EGL_SOCKET_HANDLE_NV 0x324C
+#define EGL_SOCKET_TYPE_NV 0x324D
+#endif /* EGL_NV_stream_socket */
+
+#ifndef EGL_NV_stream_socket_inet
+#define EGL_NV_stream_socket_inet 1
+#define EGL_SOCKET_TYPE_INET_NV 0x324F
+#endif /* EGL_NV_stream_socket_inet */
+
+#ifndef EGL_NV_stream_socket_unix
+#define EGL_NV_stream_socket_unix 1
+#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
+#endif /* EGL_NV_stream_socket_unix */
+
+#ifndef EGL_NV_stream_sync
+#define EGL_NV_stream_sync 1
+#define EGL_SYNC_NEW_FRAME_NV 0x321F
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
+#endif
+#endif /* EGL_NV_stream_sync */
+
+#ifndef EGL_NV_sync
+#define EGL_NV_sync 1
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+#define EGL_SYNC_STATUS_NV 0x30E7
+#define EGL_SIGNALED_NV 0x30E8
+#define EGL_UNSIGNALED_NV 0x30E9
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
+#define EGL_ALREADY_SIGNALED_NV 0x30EA
+#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
+#define EGL_CONDITION_SATISFIED_NV 0x30EC
+#define EGL_SYNC_TYPE_NV 0x30ED
+#define EGL_SYNC_CONDITION_NV 0x30EE
+#define EGL_SYNC_FENCE_NV 0x30EF
+#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
+typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
+EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_NV_sync */
+
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+#ifdef KHRONOS_SUPPORT_INT64
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_NV_system_time */
+
+#ifndef EGL_NV_triple_buffer
+#define EGL_NV_triple_buffer 1
+#define EGL_TRIPLE_BUFFER_NV 0x3230
+#endif /* EGL_NV_triple_buffer */
+
+#ifndef EGL_TIZEN_image_native_buffer
+#define EGL_TIZEN_image_native_buffer 1
+#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+#endif /* EGL_TIZEN_image_native_buffer */
+
+#ifndef EGL_TIZEN_image_native_surface
+#define EGL_TIZEN_image_native_surface 1
+#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
+#endif /* EGL_TIZEN_image_native_surface */
+
+#ifndef EGL_WL_bind_wayland_display
+#define EGL_WL_bind_wayland_display 1
+#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
+#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
+#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
+struct wl_display;
+struct wl_resource;
+#define EGL_WAYLAND_BUFFER_WL 0x31D5
+#define EGL_WAYLAND_PLANE_WL 0x31D6
+#define EGL_TEXTURE_Y_U_V_WL 0x31D7
+#define EGL_TEXTURE_Y_UV_WL 0x31D8
+#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
+#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
+#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
+EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
+#endif
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifndef EGL_WL_create_wayland_buffer_from_image
+#define EGL_WL_create_wayland_buffer_from_image 1
+#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
+struct wl_buffer;
+typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);
+#endif
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/glew/auto/EGL-Registry/api/EGL/eglplatform.h b/glew/auto/EGL-Registry/api/EGL/eglplatform.h
new file mode 100644
index 0000000..99362a2
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/eglplatform.h
@@ -0,0 +1,169 @@
+#ifndef __eglplatform_h_
+#define __eglplatform_h_
+
+/*
+** Copyright 2007-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/* Platform-specific types and definitions for egl.h
+ *
+ * Adopters may modify khrplatform.h and this file to suit their platform.
+ * You are encouraged to submit all modifications to the Khronos group so that
+ * they can be included in future versions of this file. Please submit changes
+ * by filing an issue or pull request on the public Khronos EGL Registry, at
+ * https://www.github.com/KhronosGroup/EGL-Registry/
+ */
+
+#include <KHR/khrplatform.h>
+
+/* Macros used in EGL function prototype declarations.
+ *
+ * EGL functions should be prototyped as:
+ *
+ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
+ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
+ *
+ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
+ */
+
+#ifndef EGLAPI
+#define EGLAPI KHRONOS_APICALL
+#endif
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY KHRONOS_APIENTRY
+#endif
+#define EGLAPIENTRYP EGLAPIENTRY*
+
+/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
+ * are aliases of window-system-dependent types, such as X Display * or
+ * Windows Device Context. They must be defined in platform-specific
+ * code below. The EGL-prefixed versions of Native*Type are the same
+ * types, renamed in EGL 1.3 so all types in the API start with "EGL".
+ *
+ * Khronos STRONGLY RECOMMENDS that you use the default definitions
+ * provided below, since these changes affect both binary and source
+ * portability of applications using EGL running on different EGL
+ * implementations.
+ */
+
+#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
+
+typedef void *EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN 1
+#endif
+#include <windows.h>
+
+typedef HDC EGLNativeDisplayType;
+typedef HBITMAP EGLNativePixmapType;
+typedef HWND EGLNativeWindowType;
+
+#elif defined(__EMSCRIPTEN__)
+
+typedef int EGLNativeDisplayType;
+typedef int EGLNativePixmapType;
+typedef int EGLNativeWindowType;
+
+#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(WL_EGL_PLATFORM)
+
+typedef struct wl_display *EGLNativeDisplayType;
+typedef struct wl_egl_pixmap *EGLNativePixmapType;
+typedef struct wl_egl_window *EGLNativeWindowType;
+
+#elif defined(__GBM__)
+
+typedef struct gbm_device *EGLNativeDisplayType;
+typedef struct gbm_bo *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__ANDROID__) || defined(ANDROID)
+
+struct ANativeWindow;
+struct egl_native_pixmap_t;
+
+typedef void* EGLNativeDisplayType;
+typedef struct egl_native_pixmap_t* EGLNativePixmapType;
+typedef struct ANativeWindow* EGLNativeWindowType;
+
+#elif defined(USE_OZONE)
+
+typedef intptr_t EGLNativeDisplayType;
+typedef intptr_t EGLNativePixmapType;
+typedef intptr_t EGLNativeWindowType;
+
+#elif defined(USE_X11)
+
+/* X11 (tentative) */
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef Display *EGLNativeDisplayType;
+typedef Pixmap EGLNativePixmapType;
+typedef Window EGLNativeWindowType;
+
+#elif defined(__unix__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__APPLE__)
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__HAIKU__)
+
+#include <kernel/image.h>
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__Fuchsia__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#else
+#error "Platform not recognized"
+#endif
+
+/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
+typedef EGLNativeDisplayType NativeDisplayType;
+typedef EGLNativePixmapType NativePixmapType;
+typedef EGLNativeWindowType NativeWindowType;
+
+
+/* Define EGLint. This must be a signed integral type large enough to contain
+ * all legal attribute names and values passed into and out of EGL, whether
+ * their type is boolean, bitmask, enumerant (symbolic constant), integer,
+ * handle, or other. While in general a 32-bit integer will suffice, if
+ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
+ * integer type.
+ */
+typedef khronos_int32_t EGLint;
+
+
+/* C++ / C typecast macros for special EGL handle values */
+#if defined(__cplusplus)
+#define EGL_CAST(type, value) (static_cast<type>(value))
+#else
+#define EGL_CAST(type, value) ((type) (value))
+#endif
+
+#endif /* __eglplatform_h */
diff --git a/glew/auto/EGL-Registry/api/KHR/khrplatform.h b/glew/auto/EGL-Registry/api/KHR/khrplatform.h
new file mode 100644
index 0000000..0164644
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/KHR/khrplatform.h
@@ -0,0 +1,311 @@
+#ifndef __khrplatform_h_
+#define __khrplatform_h_
+
+/*
+** Copyright (c) 2008-2018 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+/* Khronos platform-specific types and definitions.
+ *
+ * The master copy of khrplatform.h is maintained in the Khronos EGL
+ * Registry repository at https://github.com/KhronosGroup/EGL-Registry
+ * The last semantic modification to khrplatform.h was at commit ID:
+ * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
+ *
+ * Adopters may modify this file to suit their platform. Adopters are
+ * encouraged to submit platform specific modifications to the Khronos
+ * group so that they can be included in future versions of this file.
+ * Please submit changes by filing pull requests or issues on
+ * the EGL Registry repository linked above.
+ *
+ *
+ * See the Implementer's Guidelines for information about where this file
+ * should be located on your system and for more details of its use:
+ * http://www.khronos.org/registry/implementers_guide.pdf
+ *
+ * This file should be included as
+ * #include <KHR/khrplatform.h>
+ * by Khronos client API header files that use its types and defines.
+ *
+ * The types in khrplatform.h should only be used to define API-specific types.
+ *
+ * Types defined in khrplatform.h:
+ * khronos_int8_t signed 8 bit
+ * khronos_uint8_t unsigned 8 bit
+ * khronos_int16_t signed 16 bit
+ * khronos_uint16_t unsigned 16 bit
+ * khronos_int32_t signed 32 bit
+ * khronos_uint32_t unsigned 32 bit
+ * khronos_int64_t signed 64 bit
+ * khronos_uint64_t unsigned 64 bit
+ * khronos_intptr_t signed same number of bits as a pointer
+ * khronos_uintptr_t unsigned same number of bits as a pointer
+ * khronos_ssize_t signed size
+ * khronos_usize_t unsigned size
+ * khronos_float_t signed 32 bit floating point
+ * khronos_time_ns_t unsigned 64 bit time in nanoseconds
+ * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
+ * nanoseconds
+ * khronos_stime_nanoseconds_t signed time interval in nanoseconds
+ * khronos_boolean_enum_t enumerated boolean type. This should
+ * only be used as a base type when a client API's boolean type is
+ * an enum. Client APIs which use an integer or other type for
+ * booleans cannot use this as the base type for their boolean.
+ *
+ * Tokens defined in khrplatform.h:
+ *
+ * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
+ *
+ * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
+ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
+ *
+ * Calling convention macros defined in this file:
+ * KHRONOS_APICALL
+ * KHRONOS_APIENTRY
+ * KHRONOS_APIATTRIBUTES
+ *
+ * These may be used in function prototypes as:
+ *
+ * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
+ * int arg1,
+ * int arg2) KHRONOS_APIATTRIBUTES;
+ */
+
+#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
+# define KHRONOS_STATIC 1
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APICALL
+ *-------------------------------------------------------------------------
+ * This precedes the return type of the function in the function prototype.
+ */
+#if defined(KHRONOS_STATIC)
+ /* If the preprocessor constant KHRONOS_STATIC is defined, make the
+ * header compatible with static linking. */
+# define KHRONOS_APICALL
+#elif defined(_WIN32)
+# define KHRONOS_APICALL __declspec(dllimport)
+#elif defined (__SYMBIAN32__)
+# define KHRONOS_APICALL IMPORT_C
+#elif defined(__ANDROID__)
+# define KHRONOS_APICALL __attribute__((visibility("default")))
+#else
+# define KHRONOS_APICALL
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIENTRY
+ *-------------------------------------------------------------------------
+ * This follows the return type of the function and precedes the function
+ * name in the function prototype.
+ */
+#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
+ /* Win32 but not WinCE */
+# define KHRONOS_APIENTRY __stdcall
+#else
+# define KHRONOS_APIENTRY
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIATTRIBUTES
+ *-------------------------------------------------------------------------
+ * This follows the closing parenthesis of the function prototype arguments.
+ */
+#if defined (__ARMCC_2__)
+#define KHRONOS_APIATTRIBUTES __softfp
+#else
+#define KHRONOS_APIATTRIBUTES
+#endif
+
+/*-------------------------------------------------------------------------
+ * basic type definitions
+ *-----------------------------------------------------------------------*/
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
+
+
+/*
+ * Using <stdint.h>
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+/*
+ * To support platform where unsigned long cannot be used interchangeably with
+ * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
+ * Ideally, we could just use (u)intptr_t everywhere, but this could result in
+ * ABI breakage if khronos_uintptr_t is changed from unsigned long to
+ * unsigned long long or similar (this results in different C++ name mangling).
+ * To avoid changes for existing platforms, we restrict usage of intptr_t to
+ * platforms where the size of a pointer is larger than the size of long.
+ */
+#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
+#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
+#define KHRONOS_USE_INTPTR_T
+#endif
+#endif
+
+#elif defined(__VMS ) || defined(__sgi)
+
+/*
+ * Using <inttypes.h>
+ */
+#include <inttypes.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
+
+/*
+ * Win32
+ */
+typedef __int32 khronos_int32_t;
+typedef unsigned __int32 khronos_uint32_t;
+typedef __int64 khronos_int64_t;
+typedef unsigned __int64 khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(__sun__) || defined(__digital__)
+
+/*
+ * Sun or Digital
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#if defined(__arch64__) || defined(_LP64)
+typedef long int khronos_int64_t;
+typedef unsigned long int khronos_uint64_t;
+#else
+typedef long long int khronos_int64_t;
+typedef unsigned long long int khronos_uint64_t;
+#endif /* __arch64__ */
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif 0
+
+/*
+ * Hypothetical platform with no float or int64 support
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#define KHRONOS_SUPPORT_INT64 0
+#define KHRONOS_SUPPORT_FLOAT 0
+
+#else
+
+/*
+ * Generic fallback
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#endif
+
+
+/*
+ * Types that are (so far) the same on all platforms
+ */
+typedef signed char khronos_int8_t;
+typedef unsigned char khronos_uint8_t;
+typedef signed short int khronos_int16_t;
+typedef unsigned short int khronos_uint16_t;
+
+/*
+ * Types that differ between LLP64 and LP64 architectures - in LLP64,
+ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
+ * to be the only LLP64 architecture in current use.
+ */
+#ifdef KHRONOS_USE_INTPTR_T
+typedef intptr_t khronos_intptr_t;
+typedef uintptr_t khronos_uintptr_t;
+#elif defined(_WIN64)
+typedef signed long long int khronos_intptr_t;
+typedef unsigned long long int khronos_uintptr_t;
+#else
+typedef signed long int khronos_intptr_t;
+typedef unsigned long int khronos_uintptr_t;
+#endif
+
+#if defined(_WIN64)
+typedef signed long long int khronos_ssize_t;
+typedef unsigned long long int khronos_usize_t;
+#else
+typedef signed long int khronos_ssize_t;
+typedef unsigned long int khronos_usize_t;
+#endif
+
+#if KHRONOS_SUPPORT_FLOAT
+/*
+ * Float type
+ */
+typedef float khronos_float_t;
+#endif
+
+#if KHRONOS_SUPPORT_INT64
+/* Time types
+ *
+ * These types can be used to represent a time interval in nanoseconds or
+ * an absolute Unadjusted System Time. Unadjusted System Time is the number
+ * of nanoseconds since some arbitrary system event (e.g. since the last
+ * time the system booted). The Unadjusted System Time is an unsigned
+ * 64 bit value that wraps back to 0 every 584 years. Time intervals
+ * may be either signed or unsigned.
+ */
+typedef khronos_uint64_t khronos_utime_nanoseconds_t;
+typedef khronos_int64_t khronos_stime_nanoseconds_t;
+#endif
+
+/*
+ * Dummy value used to pad enum types to 32 bits.
+ */
+#ifndef KHRONOS_MAX_ENUM
+#define KHRONOS_MAX_ENUM 0x7FFFFFFF
+#endif
+
+/*
+ * Enumerated boolean type
+ *
+ * Values other than zero should be considered to be true. Therefore
+ * comparisons should not be made against KHRONOS_TRUE.
+ */
+typedef enum {
+ KHRONOS_FALSE = 0,
+ KHRONOS_TRUE = 1,
+ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
+} khronos_boolean_enum_t;
+
+#endif /* __khrplatform_h_ */
diff --git a/glew/auto/EGL-Registry/api/egl.xml b/glew/auto/EGL-Registry/api/egl.xml
new file mode 100644
index 0000000..e9b9eaf
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/egl.xml
@@ -0,0 +1,3532 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<registry>
+ <!--
+ Copyright 2013-2020 The Khronos Group Inc.
+ SPDX-License-Identifier: Apache-2.0
+ -->
+ <!--
+ This file, egl.xml, is the EGL API Registry. The older ".spec" file
+ format has been retired and will no longer be updated with new
+ extensions and API versions. The canonical version of the registry,
+ together with documentation, schema, and Python generator scripts used
+ to generate C header files for EGL, can be found in the Khronos Registry
+ at
+ https://www.github.com/KhronosGroup/EGL-Registry
+ -->
+
+ <!-- SECTION: EGL type definitions. Does not include GL types. -->
+ <types>
+ <!-- These are dependencies EGL types require to be declared legally -->
+ <type name="khrplatform">#include &lt;KHR/khrplatform.h&gt;</type>
+ <type name="eglplatform" requires="khrplatform">#include &lt;EGL/eglplatform.h&gt;</type>
+ <type name="khronos_utime_nanoseconds_t" requires="khrplatform"/>
+ <type name="khronos_stime_nanoseconds_t" requires="khrplatform"/>
+ <type name="khronos_uint64_t" requires="khrplatform"/>
+ <type name="khronos_ssize_t" requires="khrplatform"/>
+ <type name="EGLNativeDisplayType" requires="eglplatform"/>
+ <type name="EGLNativePixmapType" requires="eglplatform"/>
+ <type name="EGLNativeWindowType" requires="eglplatform"/>
+ <type name="EGLint" requires="eglplatform"/>
+ <type name="NativeDisplayType" requires="eglplatform"/>
+ <type name="NativePixmapType" requires="eglplatform"/>
+ <type name="NativeWindowType" requires="eglplatform"/>
+ <type>struct <name>AHardwareBuffer</name>;</type>
+ <type>struct <name>wl_buffer</name>;</type>
+ <type>struct <name>wl_display</name>;</type>
+ <type>struct <name>wl_resource</name>;</type>
+ <!-- Dummy placeholders for non-EGL types -->
+ <type name="Bool"/>
+ <!-- These are actual EGL types. -->
+ <type>typedef unsigned int <name>EGLBoolean</name>;</type>
+ <type>typedef unsigned int <name>EGLenum</name>;</type>
+ <type requires="khrplatform">typedef intptr_t <name>EGLAttribKHR</name>;</type>
+ <type requires="khrplatform">typedef intptr_t <name>EGLAttrib</name>;</type>
+ <type>typedef void *<name>EGLClientBuffer</name>;</type>
+ <type>typedef void *<name>EGLConfig</name>;</type>
+ <type>typedef void *<name>EGLContext</name>;</type>
+ <type>typedef void *<name>EGLDeviceEXT</name>;</type>
+ <type>typedef void *<name>EGLDisplay</name>;</type>
+ <type>typedef void *<name>EGLImage</name>;</type>
+ <type>typedef void *<name>EGLImageKHR</name>;</type>
+ <type>typedef void *<name>EGLLabelKHR</name>;</type>
+ <type>typedef void *<name>EGLObjectKHR</name>;</type>
+ <type>typedef void *<name>EGLOutputLayerEXT</name>;</type>
+ <type>typedef void *<name>EGLOutputPortEXT</name>;</type>
+ <type>typedef void *<name>EGLStreamKHR</name>;</type>
+ <type>typedef void *<name>EGLSurface</name>;</type>
+ <type>typedef void *<name>EGLSync</name>;</type>
+ <type>typedef void *<name>EGLSyncKHR</name>;</type>
+ <type>typedef void *<name>EGLSyncNV</name>;</type>
+ <type>typedef void (*<name>__eglMustCastToProperFunctionPointerType</name>)(void);</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeKHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTime</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeNV</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLuint64NV</name>;</type>
+ <type requires="khrplatform">typedef khronos_uint64_t <name>EGLuint64KHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_stime_nanoseconds_t <name>EGLnsecsANDROID</name>;</type>
+ <type>typedef int <name>EGLNativeFileDescriptorKHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_ssize_t <name>EGLsizeiANDROID</name>;</type>
+ <type requires="EGLsizeiANDROID">typedef void (*<name>EGLSetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);</type>
+ <type requires="EGLsizeiANDROID">typedef EGLsizeiANDROID (*<name>EGLGetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);</type>
+ <type>struct <name>EGLClientPixmapHI</name> {
+ void *pData;
+ EGLint iWidth;
+ EGLint iHeight;
+ EGLint iStride;
+};</type>
+ <!-- Backwards-compatibility hack: Downstream implementations shipped
+ incorrect function pointer names for some years. -->
+ <type>typedef void (<apientry/> *<name>EGLDEBUGPROCKHR</name>)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);</type>
+ <type>#define <name>PFNEGLBINDWAYLANDDISPLAYWL</name> PFNEGLBINDWAYLANDDISPLAYWLPROC</type>
+ <type>#define <name>PFNEGLUNBINDWAYLANDDISPLAYWL</name> PFNEGLUNBINDWAYLANDDISPLAYWLPROC</type>
+ <type>#define <name>PFNEGLQUERYWAYLANDBUFFERWL</name> PFNEGLQUERYWAYLANDBUFFERWLPROC</type>
+ <type>#define <name>PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL</name> PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC</type>
+ </types>
+
+ <!-- SECTION: EGL enumerant (token) definitions. -->
+
+ <!-- Bitmasks each have their own namespace, as do a few other
+ categories of enumeration -->
+
+ <enums namespace="EGLSurfaceTypeMask" type="bitmask" comment="EGL_SURFACE_TYPE bits">
+ <enum value="0x0001" name="EGL_PBUFFER_BIT"/>
+ <enum value="0x0002" name="EGL_PIXMAP_BIT"/>
+ <enum value="0x0004" name="EGL_WINDOW_BIT"/>
+ <enum value="0x0008" name="EGL_PBUFFER_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
+ <enum value="0x0010" name="EGL_PBUFFER_PALETTE_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
+ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
+ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
+ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
+ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
+ <enum value="0x0080" name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum value="0x0100" name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum value="0x0200" name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
+ <enum value="0x0400" name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
+ <enum value="0x0800" name="EGL_STREAM_BIT_KHR"/>
+ <!--
+ <enum value="0x0800" name="EGL_STREAM_BIT_NV" comment="Draft EGL_NV_stream_producer_eglsurface extension (bug 8064)"/>
+ -->
+ <enum value="0x1000" name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLRenderableTypeMask" type="bitmask" comment="EGL_RENDERABLE_TYPE bits">
+ <enum value="0x0001" name="EGL_OPENGL_ES_BIT"/>
+ <enum value="0x0002" name="EGL_OPENVG_BIT"/>
+ <enum value="0x0004" name="EGL_OPENGL_ES2_BIT"/>
+ <enum value="0x0008" name="EGL_OPENGL_BIT"/>
+ <enum value="0x0010" name="EGL_INTEROP_BIT_KHR" comment="EGL_KHR_interop"/>
+ <enum value="0x0020" name="EGL_OPENMAX_IL_BIT_KHR" comment="EGL_KHR_interop"/>
+ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT"/>
+ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT_KHR" alias="EGL_OPENGL_ES3_BIT"/>
+ </enums>
+
+ <enums namespace="EGLLockUsageHintKHRMask" type="bitmask" comment="EGL_LOCK_USAGE_HINT_KHR bits">
+ <enum value="0x0001" name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum value="0x0002" name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLNativeBufferUsageFlags" type="bitmask" comment="EGL_NATIVE_BUFFER_USAGE_ANDROID bits">
+ <enum value="0x00000001" name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum value="0x00000002" name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum value="0x00000004" name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ </enums>
+
+ <enums namespace="EGLSyncFlagsKHR" type="bitmask" comment="Fence/reusable sync wait bits">
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ </enums>
+
+ <enums namespace="EGLDRMBufferUseMESAMask" type="bitmask" comment="EGL_DRM_BUFFER_USE_MESA bits">
+ <enum value="0x00000001" name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
+ <enum value="0x00000002" name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum value="0x00000004" name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
+ </enums>
+
+ <!-- Should be shared with GL, but aren't aren't since the
+ FORWARD_COMPATIBLE and DEBUG_BIT values are swapped in the
+ corresponding GL enums. Oops :-( -->
+ <enums namespace="EGLContextFlagMask" type="bitmask" comment="EGL_CONTEXT_FLAGS_KHR bits">
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
+ <enum value="0x00000004" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLContextProfileMask" type="bitmask" comment="Shared with GL">
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ </enums>
+
+ <!-- The default ("API") enum namespace starts here. While some
+ assigned values may overlap, and different parts of the
+ namespace are reserved for different purposes, it is a single
+ namespace. The "class" attribute indicates some of the reserved
+ purposes but is by no means complete (and cannot be, since many
+ tokens are reused for different purposes in different
+ extensions and API versions). -->
+
+ <enums namespace="EGL" start="0x0000" end="0x2FFF" vendor="KHR" comment="Reserved for enumerants shared with WGL, GLX, and GL">
+ <enum value="0" name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum value="0x2097" name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum value="0x2098" name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" group="Boolean" vendor="ARB">
+ <enum value="0" name="EGL_FALSE"/>
+ <enum value="1" name="EGL_TRUE"/>
+ </enums>
+
+ <enums namespace="EGL" group="SpecialNumbers" vendor="ARB" comment="Tokens whose numeric value is intrinsically meaningful">
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_DONT_CARE"/>
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_UNKNOWN"/>
+ <enum value="-1" name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
+ <enum value="0" name="EGL_DEPTH_ENCODING_NONE_NV"/>
+ <enum value="EGL_CAST(EGLContext,0)" name="EGL_NO_CONTEXT"/>
+ <enum value="EGL_CAST(EGLDeviceEXT,0)" name="EGL_NO_DEVICE_EXT"/>
+ <enum value="EGL_CAST(EGLDisplay,0)" name="EGL_NO_DISPLAY"/>
+ <enum value="EGL_CAST(EGLImage,0)" name="EGL_NO_IMAGE"/>
+ <enum value="EGL_CAST(EGLImageKHR,0)" name="EGL_NO_IMAGE_KHR"/>
+ <enum value="EGL_CAST(EGLNativeDisplayType,0)" name="EGL_DEFAULT_DISPLAY"/>
+ <enum value="EGL_CAST(EGLNativeFileDescriptorKHR,-1)" name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
+ <enum value="EGL_CAST(EGLOutputLayerEXT,0)" name="EGL_NO_OUTPUT_LAYER_EXT"/>
+ <enum value="EGL_CAST(EGLOutputPortEXT,0)" name="EGL_NO_OUTPUT_PORT_EXT"/>
+ <enum value="EGL_CAST(EGLStreamKHR,0)" name="EGL_NO_STREAM_KHR"/>
+ <enum value="EGL_CAST(EGLSurface,0)" name="EGL_NO_SURFACE"/>
+ <enum value="EGL_CAST(EGLSync,0)" name="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncKHR,0)" name="EGL_NO_SYNC_KHR" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncNV,0)" name="EGL_NO_SYNC_NV" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLConfig,0)" name="EGL_NO_CONFIG_KHR"/>
+ <enum value="10000" name="EGL_DISPLAY_SCALING"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER" type="ull"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_KHR" type="ull" alias="EGL_FOREVER"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_NV" type="ull" alias="EGL_FOREVER"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3000" end="0x305F" vendor="KHR">
+ <enum value="0x3000" name="EGL_SUCCESS"/>
+ <enum value="0x3001" name="EGL_NOT_INITIALIZED"/>
+ <enum value="0x3002" name="EGL_BAD_ACCESS"/>
+ <enum value="0x3003" name="EGL_BAD_ALLOC"/>
+ <enum value="0x3004" name="EGL_BAD_ATTRIBUTE"/>
+ <enum value="0x3005" name="EGL_BAD_CONFIG"/>
+ <enum value="0x3006" name="EGL_BAD_CONTEXT"/>
+ <enum value="0x3007" name="EGL_BAD_CURRENT_SURFACE"/>
+ <enum value="0x3008" name="EGL_BAD_DISPLAY"/>
+ <enum value="0x3009" name="EGL_BAD_MATCH"/>
+ <enum value="0x300A" name="EGL_BAD_NATIVE_PIXMAP"/>
+ <enum value="0x300B" name="EGL_BAD_NATIVE_WINDOW"/>
+ <enum value="0x300C" name="EGL_BAD_PARAMETER"/>
+ <enum value="0x300D" name="EGL_BAD_SURFACE"/>
+ <enum value="0x300E" name="EGL_CONTEXT_LOST"/>
+ <unused start="0x300F" end="0x301F" comment="for additional errors"/>
+ <enum value="0x3020" name="EGL_BUFFER_SIZE"/>
+ <enum value="0x3021" name="EGL_ALPHA_SIZE"/>
+ <enum value="0x3022" name="EGL_BLUE_SIZE"/>
+ <enum value="0x3023" name="EGL_GREEN_SIZE"/>
+ <enum value="0x3024" name="EGL_RED_SIZE"/>
+ <enum value="0x3025" name="EGL_DEPTH_SIZE"/>
+ <enum value="0x3026" name="EGL_STENCIL_SIZE"/>
+ <enum value="0x3027" name="EGL_CONFIG_CAVEAT"/>
+ <enum value="0x3028" name="EGL_CONFIG_ID"/>
+ <enum value="0x3029" name="EGL_LEVEL"/>
+ <enum value="0x302A" name="EGL_MAX_PBUFFER_HEIGHT"/>
+ <enum value="0x302B" name="EGL_MAX_PBUFFER_PIXELS"/>
+ <enum value="0x302C" name="EGL_MAX_PBUFFER_WIDTH"/>
+ <enum value="0x302D" name="EGL_NATIVE_RENDERABLE"/>
+ <enum value="0x302E" name="EGL_NATIVE_VISUAL_ID"/>
+ <enum value="0x302F" name="EGL_NATIVE_VISUAL_TYPE"/>
+ <enum value="0x3031" name="EGL_SAMPLES"/>
+ <enum value="0x3032" name="EGL_SAMPLE_BUFFERS"/>
+ <enum value="0x3033" name="EGL_SURFACE_TYPE"/>
+ <enum value="0x3034" name="EGL_TRANSPARENT_TYPE"/>
+ <enum value="0x3035" name="EGL_TRANSPARENT_BLUE_VALUE"/>
+ <enum value="0x3036" name="EGL_TRANSPARENT_GREEN_VALUE"/>
+ <enum value="0x3037" name="EGL_TRANSPARENT_RED_VALUE"/>
+ <enum value="0x3038" name="EGL_NONE" comment="Attribute list terminator"/>
+ <enum value="0x3039" name="EGL_BIND_TO_TEXTURE_RGB"/>
+ <enum value="0x303A" name="EGL_BIND_TO_TEXTURE_RGBA"/>
+ <enum value="0x303B" name="EGL_MIN_SWAP_INTERVAL"/>
+ <enum value="0x303C" name="EGL_MAX_SWAP_INTERVAL"/>
+ <enum value="0x303D" name="EGL_LUMINANCE_SIZE"/>
+ <enum value="0x303E" name="EGL_ALPHA_MASK_SIZE"/>
+ <enum value="0x303F" name="EGL_COLOR_BUFFER_TYPE"/>
+ <enum value="0x3040" name="EGL_RENDERABLE_TYPE"/>
+ <enum value="0x3041" name="EGL_MATCH_NATIVE_PIXMAP"/>
+ <enum value="0x3042" name="EGL_CONFORMANT"/>
+ <enum value="0x3042" name="EGL_CONFORMANT_KHR"/>
+ <enum value="0x3043" name="EGL_MATCH_FORMAT_KHR"/>
+ <unused start="0x3044" end="0x304F" comment="for additional config attributes"/>
+ <enum value="0x3050" name="EGL_SLOW_CONFIG"/>
+ <enum value="0x3051" name="EGL_NON_CONFORMANT_CONFIG"/>
+ <enum value="0x3052" name="EGL_TRANSPARENT_RGB"/>
+ <enum value="0x3053" name="EGL_VENDOR"/>
+ <enum value="0x3054" name="EGL_VERSION"/>
+ <enum value="0x3055" name="EGL_EXTENSIONS"/>
+ <enum value="0x3056" name="EGL_HEIGHT"/>
+ <enum value="0x3057" name="EGL_WIDTH"/>
+ <enum value="0x3058" name="EGL_LARGEST_PBUFFER"/>
+ <enum value="0x3059" name="EGL_DRAW"/>
+ <enum value="0x305A" name="EGL_READ"/>
+ <enum value="0x305B" name="EGL_CORE_NATIVE_ENGINE"/>
+ <enum value="0x305C" name="EGL_NO_TEXTURE"/>
+ <enum value="0x305D" name="EGL_TEXTURE_RGB"/>
+ <enum value="0x305E" name="EGL_TEXTURE_RGBA"/>
+ <enum value="0x305F" name="EGL_TEXTURE_2D"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3060-0x306F" vendor="TAO" comment="Reserved for Phil Huxley">
+ <unused start="0x3060" end="0x306F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3070-0x307F" vendor="NOK" comment="Reserved for Jani Vaarala">
+ <unused start="0x3070" end="0x307E"/>
+ <enum value="0x307F" name="EGL_Y_INVERTED_NOK"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3080-0x30AF" vendor="KHR">
+ <enum value="0x3080" name="EGL_TEXTURE_FORMAT"/>
+ <enum value="0x3081" name="EGL_TEXTURE_TARGET"/>
+ <enum value="0x3082" name="EGL_MIPMAP_TEXTURE"/>
+ <enum value="0x3083" name="EGL_MIPMAP_LEVEL"/>
+ <enum value="0x3084" name="EGL_BACK_BUFFER"/>
+ <enum value="0x3085" name="EGL_SINGLE_BUFFER"/>
+ <enum value="0x3086" name="EGL_RENDER_BUFFER"/>
+ <enum value="0x3087" name="EGL_COLORSPACE" alias="EGL_VG_COLORSPACE"/>
+ <enum value="0x3087" name="EGL_VG_COLORSPACE"/>
+ <enum value="0x3088" name="EGL_ALPHA_FORMAT" alias="EGL_VG_ALPHA_FORMAT"/>
+ <enum value="0x3088" name="EGL_VG_ALPHA_FORMAT"/>
+ <enum value="0x3089" name="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB_KHR" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_VG_COLORSPACE_sRGB" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x308A" name="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR_KHR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_VG_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308B" name="EGL_ALPHA_FORMAT_NONPRE" alias="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum value="0x308B" name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum value="0x308C" name="EGL_ALPHA_FORMAT_PRE" alias="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum value="0x308C" name="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum value="0x308D" name="EGL_CLIENT_APIS"/>
+ <enum value="0x308E" name="EGL_RGB_BUFFER"/>
+ <enum value="0x308F" name="EGL_LUMINANCE_BUFFER"/>
+ <enum value="0x3090" name="EGL_HORIZONTAL_RESOLUTION"/>
+ <enum value="0x3091" name="EGL_VERTICAL_RESOLUTION"/>
+ <enum value="0x3092" name="EGL_PIXEL_ASPECT_RATIO"/>
+ <enum value="0x3093" name="EGL_SWAP_BEHAVIOR"/>
+ <enum value="0x3094" name="EGL_BUFFER_PRESERVED"/>
+ <enum value="0x3095" name="EGL_BUFFER_DESTROYED"/>
+ <enum value="0x3096" name="EGL_OPENVG_IMAGE"/>
+ <enum value="0x3097" name="EGL_CONTEXT_CLIENT_TYPE"/>
+ <enum value="0x3098" name="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION" alias="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION_KHR" alias="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3099" name="EGL_MULTISAMPLE_RESOLVE"/>
+ <enum value="0x309A" name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
+ <enum value="0x309B" name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
+ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE"/>
+ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE_KHR" alias="EGL_CL_EVENT_HANDLE"/>
+ <enum value="0x309D" name="EGL_GL_COLORSPACE"/>
+ <enum value="0x309D" name="EGL_GL_COLORSPACE_KHR" alias="EGL_GL_COLORSPACE"/>
+ <unused start="0x309E" end="0x309F"/>
+ <enum value="0x30A0" name="EGL_OPENGL_ES_API"/>
+ <enum value="0x30A1" name="EGL_OPENVG_API"/>
+ <enum value="0x30A2" name="EGL_OPENGL_API"/>
+ <unused start="0x30A3" end="0x30AF" comment="for additional client API names"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30B0-0x30BF" vendor="NV" comment="Reserved for Ignacio Llamas">
+ <enum value="0x30B0" name="EGL_NATIVE_PIXMAP_KHR"/>
+ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D"/>
+ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D_KHR" alias="EGL_GL_TEXTURE_2D"/>
+ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D"/>
+ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D_KHR" alias="EGL_GL_TEXTURE_3D"/>
+ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER"/>
+ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER_KHR" alias="EGL_GL_RENDERBUFFER"/>
+ <enum value="0x30BA" name="EGL_VG_PARENT_IMAGE_KHR"/>
+ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL"/>
+ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL_KHR" alias="EGL_GL_TEXTURE_LEVEL"/>
+ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET"/>
+ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET_KHR" alias="EGL_GL_TEXTURE_ZOFFSET"/>
+ <enum value="0x30BE" name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
+ <enum value="0x30BF" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30C0-0x30CF" vendor="KHR">
+ <enum value="0x30C0" name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum value="0x30C1" name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum value="0x30C2" name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum value="0x30C3" name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum value="0x30C4" name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum value="0x30C5" name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum value="0x30C6" name="EGL_BITMAP_POINTER_KHR"/>
+ <enum value="0x30C7" name="EGL_BITMAP_PITCH_KHR"/>
+ <enum value="0x30C8" name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum value="0x30C9" name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum value="0x30CA" name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum value="0x30CB" name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum value="0x30CC" name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum value="0x30CD" name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum value="0x30CE" name="EGL_LOWER_LEFT_KHR"/>
+ <enum value="0x30CF" name="EGL_UPPER_LEFT_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30D0" end="0x30DF" vendor="Symbian" comment="Reserved for Robert Palmer (bug #2545)">
+ <unused start="0x30D0" end="0x30D1"/>
+ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED"/>
+ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED_KHR"/>
+ <unused start="0x30D3" end="0x30D9"/>
+ <enum value="0x30DA" name="EGL_SHARED_IMAGE_NOK" comment="Unreleased extension"/>
+ <unused start="0x30DB" end="0x30DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30E0" end="0x30EF" vendor="NV" comment="Reserved for Russell Pflughaupt (bug #3314)">
+ <enum value="0x30E0" name="EGL_COVERAGE_BUFFERS_NV"/>
+ <enum value="0x30E1" name="EGL_COVERAGE_SAMPLES_NV"/>
+ <enum value="0x30E2" name="EGL_DEPTH_ENCODING_NV"/>
+ <enum value="0x30E3" name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
+ <unused start="0x30E4" end="0x30E5"/>
+ <enum value="0x30E6" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
+ <enum value="0x30E7" name="EGL_SYNC_STATUS_NV"/>
+ <enum value="0x30E8" name="EGL_SIGNALED_NV"/>
+ <enum value="0x30E9" name="EGL_UNSIGNALED_NV"/>
+ <enum value="0x30EA" name="EGL_ALREADY_SIGNALED_NV"/>
+ <enum value="0x30EB" name="EGL_TIMEOUT_EXPIRED_NV"/>
+ <enum value="0x30EC" name="EGL_CONDITION_SATISFIED_NV"/>
+ <enum value="0x30ED" name="EGL_SYNC_TYPE_NV"/>
+ <enum value="0x30EE" name="EGL_SYNC_CONDITION_NV"/>
+ <enum value="0x30EF" name="EGL_SYNC_FENCE_NV"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30F0" end="0x30FF" vendor="KHR">
+ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR" alias="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum value="0x30F1" name="EGL_SYNC_STATUS"/>
+ <enum value="0x30F1" name="EGL_SYNC_STATUS_KHR" alias="EGL_SYNC_STATUS"/>
+ <enum value="0x30F2" name="EGL_SIGNALED"/>
+ <enum value="0x30F2" name="EGL_SIGNALED_KHR" alias="EGL_SIGNALED"/>
+ <enum value="0x30F3" name="EGL_UNSIGNALED"/>
+ <enum value="0x30F3" name="EGL_UNSIGNALED_KHR" alias="EGL_UNSIGNALED"/>
+ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED"/>
+ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED_KHR" alias="EGL_TIMEOUT_EXPIRED"/>
+ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED"/>
+ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED_KHR" alias="EGL_CONDITION_SATISFIED"/>
+ <enum value="0x30F7" name="EGL_SYNC_TYPE"/>
+ <enum value="0x30F7" name="EGL_SYNC_TYPE_KHR" alias="EGL_SYNC_TYPE"/>
+ <enum value="0x30F8" name="EGL_SYNC_CONDITION"/>
+ <enum value="0x30F8" name="EGL_SYNC_CONDITION_KHR" alias="EGL_SYNC_CONDITION"/>
+ <enum value="0x30F9" name="EGL_SYNC_FENCE"/>
+ <enum value="0x30F9" name="EGL_SYNC_FENCE_KHR" alias="EGL_SYNC_FENCE"/>
+ <enum value="0x30FA" name="EGL_SYNC_REUSABLE_KHR"/>
+ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION_KHR" alias="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum value="0x30FC" name="EGL_CONTEXT_FLAGS_KHR"/>
+ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR" alias="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT"/>
+ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT_KHR" alias="EGL_SYNC_CL_EVENT"/>
+ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE_KHR" alias="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3100" end="0x310F" vendor="IMG" comment="Reserved for Ben Bowman (Khronos bug 4748)">
+ <enum value="0x3100" name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
+ <enum value="0x3101" name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
+ <enum value="0x3102" name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
+ <enum value="0x3103" name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
+ <unused start="0x3104"/>
+ <enum value="0x3105" name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum value="0x3106" name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ <unused start="0x3107" end="0x310F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3110" end="0x311F" vendor="ATX" comment="Reserved for Tim Renouf, Antix (Khronos bug 4949)">
+ <enum value="0x3110" name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ <unused start="0x3111" end="0x311F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3120" end="0x312F" vendor="QCOM" comment="EGL_QCOM_create_image">
+ <enum value="0x3120" name="EGL_NEW_IMAGE_QCOM"/>
+ <enum value="0x3121" name="EGL_IMAGE_FORMAT_QCOM"/>
+ <enum value="0x3122" name="EGL_FORMAT_RGBA_8888_QCOM"/>
+ <enum value="0x3123" name="EGL_FORMAT_RGB_565_QCOM"/>
+ <enum value="0x3124" name="EGL_FORMAT_YUYV_QCOM"/>
+ <enum value="0x3125" name="EGL_FORMAT_UYVY_QCOM"/>
+ <enum value="0x3126" name="EGL_FORMAT_YV12_QCOM"/>
+ <enum value="0x3127" name="EGL_FORMAT_NV21_QCOM"/>
+ <enum value="0x3128" name="EGL_FORMAT_NV12_TILED_QCOM"/>
+ <enum value="0x3129" name="EGL_FORMAT_BGRA_8888_QCOM"/>
+ <enum value="0x312A" name="EGL_FORMAT_BGRX_8888_QCOM"/>
+ <unused start="0x312B" end="0x312E"/>
+ <enum value="0x312F" name="EGL_FORMAT_RGBX_8888_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3130" end="0x313F" vendor="NV" comment="Reserved for Greg Prisament (Khronos bug 5166)">
+ <unused start="0x3130"/>
+ <enum value="0x3131" name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
+ <enum value="0x3132" name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
+ <enum value="0x3133" name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
+ <enum value="0x3134" name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
+ <unused start="0x3135"/>
+ <enum value="0x3136" name="EGL_AUTO_STEREO_NV"/>
+ <unused start="0x3137"/>
+ <enum value="0x3138" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
+ <unused start="0x3139" end="0x313C"/>
+ <enum value="0x313D" name="EGL_BUFFER_AGE_KHR"/>
+ <enum value="0x313D" name="EGL_BUFFER_AGE_EXT" alias="EGL_BUFFER_AGE_KHR"/>
+ <unused start="0x313E" end="0x313F"/>
+ <enum value="0x313F" name="EGL_PLATFORM_DEVICE_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3140" end="0x314F" vendor="Google" comment="Reserved for Mathias Agopian (Khronos bug 5199)">
+ <enum value="0x3140" name="EGL_NATIVE_BUFFER_ANDROID"/>
+ <enum value="0x3141" name="EGL_PLATFORM_ANDROID_KHR"/>
+ <enum value="0x3142" name="EGL_RECORDABLE_ANDROID"/>
+ <enum value="0x3143" name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
+ <enum value="0x3144" name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
+ <enum value="0x3145" name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
+ <enum value="0x3146" name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
+ <enum value="0x3147" name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
+ <unused start="0x3148" end="0x314B"/>
+ <enum value="0x314C" name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ <enum value="0x314D" name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ <unused start="0x314E" end="0x314F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3150" end="0x315F" vendor="NOK" comment="Reserved for Robert Palmer (Khronos bug 5368)">
+ <unused start="0x3150" end="0x315F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3160" end="0x316F" vendor="Seaweed" comment="Reserved for Sree Sridharan (Khronos public bug 198)">
+ <unused start="0x3160" end="0x316F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3170" end="0x318F" vendor="QNX" comment="Reserved for Joel Pilon (Khronos bug 5834)">
+ <unused start="0x3170" end="0x318F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3190" end="0x31AF" vendor="FSL" comment="Reserved for Brian Murray, Freescale (Khronos bug 5939)">
+ <unused start="0x3190" end="0x31AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31B0" end="0x31BF" vendor="KHR" comment="Reserved for Marcus Lorentzon (Khronos bug 6437)">
+ <enum value="0x31B0" name="EGL_CONTEXT_OPENGL_DEBUG"/>
+ <enum value="0x31B1" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
+ <enum value="0x31B2" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum value="0x31B3" name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
+ <unused start="0x31B4" end="0x31BC" comment="0x31B3-0x31BC formerly reserved for EGL_image_stream"/>
+ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR" alias="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_KHR" alias="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_EXT" alias="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_KHR" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_EXT" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31C0" end="0x31CF" vendor="QCOM" comment="Reserved for Maurice Ribble (Khronos bug 6644) - EGL_QCOM_create_image spec">
+ <enum value="0x31C0" name="EGL_FORMAT_R8_QCOM"/>
+ <enum value="0x31C1" name="EGL_FORMAT_RG88_QCOM"/>
+ <enum value="0x31C2" name="EGL_FORMAT_NV12_QCOM"/>
+ <enum value="0x31C3" name="EGL_FORMAT_SRGBX_8888_QCOM"/>
+ <enum value="0x31C4" name="EGL_FORMAT_SRGBA_8888_QCOM"/>
+ <enum value="0x31C5" name="EGL_FORMAT_YVYU_QCOM"/>
+ <enum value="0x31C6" name="EGL_FORMAT_VYUY_QCOM"/>
+ <enum value="0x31C7" name="EGL_FORMAT_IYUV_QCOM"/>
+ <enum value="0x31C8" name="EGL_FORMAT_RGB_888_QCOM"/>
+ <enum value="0x31C9" name="EGL_FORMAT_RGBA_5551_QCOM"/>
+ <enum value="0x31CA" name="EGL_FORMAT_RGBA_4444_QCOM"/>
+ <enum value="0x31CB" name="EGL_FORMAT_R_16_FLOAT_QCOM"/>
+ <enum value="0x31CC" name="EGL_FORMAT_RG_1616_FLOAT_QCOM"/>
+ <enum value="0x31CD" name="EGL_FORMAT_RGBA_16_FLOAT_QCOM"/>
+ <enum value="0x31CE" name="EGL_FORMAT_RGBA_1010102_QCOM"/>
+ <enum value="0x31CF" name="EGL_FORMAT_FLAG_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31D0" end="0x31DF" vendor="MESA" comment="Reserved for Kristian H&#248;gsberg (Khronos bug 6757)">
+ <enum value="0x31D0" name="EGL_DRM_BUFFER_FORMAT_MESA"/>
+ <enum value="0x31D1" name="EGL_DRM_BUFFER_USE_MESA"/>
+ <enum value="0x31D2" name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
+ <enum value="0x31D3" name="EGL_DRM_BUFFER_MESA"/>
+ <enum value="0x31D4" name="EGL_DRM_BUFFER_STRIDE_MESA"/>
+ <enum value="0x31D5" name="EGL_PLATFORM_X11_KHR"/>
+ <enum value="0x31D5" name="EGL_PLATFORM_X11_EXT" alias="EGL_PLATFORM_X11_KHR"/>
+ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_EXT" alias="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ <enum value="0x31D7" name="EGL_PLATFORM_GBM_KHR"/>
+ <enum value="0x31D7" name="EGL_PLATFORM_GBM_MESA" alias="EGL_PLATFORM_GBM_KHR"/>
+ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_KHR"/>
+ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_EXT" alias="EGL_PLATFORM_WAYLAND_KHR"/>
+ <enum value="0x31DC" name="EGL_PLATFORM_XCB_EXT"/>
+ <enum value="0x31DD" name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ <enum value="0x31DE" name="EGL_PLATFORM_XCB_SCREEN_EXT"/>
+ <enum value="0x31DF" name="EGL_PRESENT_OPAQUE_EXT"/>
+ </enums>
+
+ <!-- Due to an oversight in development, these enums alias the above MESA
+ vendor range for EGL the X11/GBM/Wayland/surfaceless platforms.
+ They are both currently in wide use and cannot be changed, however
+ the tokens cannot be used in the same contexts and the aliasing is
+ therefore harmless. Future Wayland tokens should not create further
+ aliasing in this range.-->
+ <enums namespace="EGL" start="0x31D5" end="0x31DB" vendor="WL" comment="EGL_WL_bind_wayland_display">
+ <enum value="0x31D5" name="EGL_WAYLAND_BUFFER_WL"/>
+ <enum value="0x31D6" name="EGL_WAYLAND_PLANE_WL"/>
+ <enum value="0x31D7" name="EGL_TEXTURE_Y_U_V_WL"/>
+ <enum value="0x31D8" name="EGL_TEXTURE_Y_UV_WL"/>
+ <enum value="0x31D9" name="EGL_TEXTURE_Y_XUXV_WL"/>
+ <enum value="0x31DA" name="EGL_TEXTURE_EXTERNAL_WL"/>
+ <enum value="0x31DB" name="EGL_WAYLAND_Y_INVERTED_WL"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31E0" end="0x31EF" vendor="HI" comment="Reserved for Mark Callow (Khronos bug 6799)">
+ <unused start="0x31E0" end="0x31EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31F0" end="0x31FF" vendor="KHR">
+ <unused start="0x31F0" end="0x31FB" comment="Placeholders for draft extensions follow"/>
+ <!--
+ <enum value="0x31F0" name="EGL_IMAGE_USE_AS_OPENGL_ES1_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl1_renderbuffer"/>
+ <enum value="0x31F1" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl1_texture_2d"/>
+ <enum value="0x31F2" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl1_texture_external"/>
+ <enum value="0x31F3" name="EGL_IMAGE_USE_AS_OPENGL_ES2_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl2_renderbuffer"/>
+ <enum value="0x31F4" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl2_texture_2d"/>
+ <enum value="0x31F5" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl2_texture_external"/>
+ <enum value="0x31F6" name="EGL_IMAGE_USE_AS_OPENVG_IMAGE_KHR" comment="Draft KHR_image_use_vg_vgimage"/>
+ <enum value="0x31F7" name="EGL_STREAM_CONSUMER_ATTACHMENT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31F8" name="EGL_NO_FORMAT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31F9" name="EGL_FORMAT_RGBA8888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31FA" name="EGL_FORMAT_RGB888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31FB" name="EGL_FORMAT_RGB565_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ -->
+ <enum value="0x31FC" name="EGL_STREAM_FIFO_LENGTH_KHR"/>
+ <enum value="0x31FD" name="EGL_STREAM_TIME_NOW_KHR"/>
+ <enum value="0x31FE" name="EGL_STREAM_TIME_CONSUMER_KHR"/>
+ <enum value="0x31FF" name="EGL_STREAM_TIME_PRODUCER_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3200" end="0x320F" vendor="ANGLE" comment="Reserved for Daniel Koch, ANGLE Project (Khronos bug 7139)">
+ <enum value="0x3200" name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ <enum value="0x3201" name="EGL_FIXED_SIZE_ANGLE"/>
+ <unused start="0x3202" end="0x320F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3210" end="0x321F" vendor="KHR">
+ <enum value="0x3210" name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <unused start="0x3211"/>
+ <enum value="0x3212" name="EGL_PRODUCER_FRAME_KHR"/>
+ <enum value="0x3213" name="EGL_CONSUMER_FRAME_KHR"/>
+ <enum value="0x3214" name="EGL_STREAM_STATE_KHR"/>
+ <enum value="0x3215" name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum value="0x3216" name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <enum value="0x3217" name="EGL_STREAM_STATE_EMPTY_KHR"/>
+ <enum value="0x3218" name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
+ <enum value="0x3219" name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
+ <enum value="0x321A" name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
+ <enum value="0x321B" name="EGL_BAD_STREAM_KHR"/>
+ <enum value="0x321C" name="EGL_BAD_STATE_KHR"/>
+ <enum value="0x321D" name="EGL_BUFFER_COUNT_NV" comment="From EGL_NV_stream_producer_eglsurface, which has no known specification and was replaced by a KHR extension"/>
+ <enum value="0x321E" name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
+ <enum value="0x321F" name="EGL_SYNC_NEW_FRAME_NV"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3220" end="0x325F" vendor="NV" comment="Reserved for Greg Roth (Bug 8220)">
+ <unused start="0x3220" end="0x322A"/>
+ <enum value="0x322B" name="EGL_BAD_DEVICE_EXT"/>
+ <enum value="0x322C" name="EGL_DEVICE_EXT"/>
+ <enum value="0x322D" name="EGL_BAD_OUTPUT_LAYER_EXT"/>
+ <enum value="0x322E" name="EGL_BAD_OUTPUT_PORT_EXT"/>
+ <enum value="0x322F" name="EGL_SWAP_INTERVAL_EXT"/>
+ <enum value="0x3230" name="EGL_TRIPLE_BUFFER_NV"/>
+ <enum value="0x3231" name="EGL_QUADRUPLE_BUFFER_NV"/>
+ <unused start="0x3232"/>
+ <enum value="0x3233" name="EGL_DRM_DEVICE_FILE_EXT"/>
+ <enum value="0x3234" name="EGL_DRM_CRTC_EXT"/>
+ <enum value="0x3235" name="EGL_DRM_PLANE_EXT"/>
+ <enum value="0x3236" name="EGL_DRM_CONNECTOR_EXT"/>
+ <enum value="0x3237" name="EGL_OPENWF_DEVICE_ID_EXT"/>
+ <enum value="0x3238" name="EGL_OPENWF_PIPELINE_ID_EXT"/>
+ <enum value="0x3239" name="EGL_OPENWF_PORT_ID_EXT"/>
+ <enum value="0x323A" name="EGL_CUDA_DEVICE_NV"/>
+ <enum value="0x323B" name="EGL_CUDA_EVENT_HANDLE_NV"/>
+ <enum value="0x323C" name="EGL_SYNC_CUDA_EVENT_NV"/>
+ <enum value="0x323D" name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
+ <unused start="0x323E"/>
+ <enum value="0x323F" name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ <enum value="0x3240" name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum value="0x3241" name="EGL_STREAM_TYPE_NV"/>
+ <enum value="0x3242" name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum value="0x3243" name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum value="0x3244" name="EGL_STREAM_LOCAL_NV"/>
+ <enum value="0x3245" name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ <enum value="0x3246" name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ <enum value="0x3247" name="EGL_STREAM_PRODUCER_NV"/>
+ <enum value="0x3248" name="EGL_STREAM_CONSUMER_NV"/>
+ <unused start="0x3239" end="0x324A"/>
+ <enum value="0x324B" name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum value="0x324C" name="EGL_SOCKET_HANDLE_NV"/>
+ <enum value="0x324D" name="EGL_SOCKET_TYPE_NV"/>
+ <enum value="0x324E" name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ <enum value="0x324F" name="EGL_SOCKET_TYPE_INET_NV"/>
+ <enum value="0x3250" name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
+ <enum value="0x3251" name="EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV"/>
+ <enum value="0x3252" name="EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV"/>
+ <enum value="0x3253" name="EGL_PRODUCER_METADATA_NV"/>
+ <enum value="0x3254" name="EGL_CONSUMER_METADATA_NV"/>
+ <enum value="0x3255" name="EGL_METADATA0_SIZE_NV"/>
+ <enum value="0x3256" name="EGL_METADATA1_SIZE_NV"/>
+ <enum value="0x3257" name="EGL_METADATA2_SIZE_NV"/>
+ <enum value="0x3258" name="EGL_METADATA3_SIZE_NV"/>
+ <enum value="0x3259" name="EGL_METADATA0_TYPE_NV"/>
+ <enum value="0x325A" name="EGL_METADATA1_TYPE_NV"/>
+ <enum value="0x325B" name="EGL_METADATA2_TYPE_NV"/>
+ <enum value="0x325C" name="EGL_METADATA3_TYPE_NV"/>
+ <unused start="0x325D" end="0x325F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3260" end="0x326F" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Public bug 620)">
+ <unused start="0x3260" end="0x326F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3270" end="0x328F" vendor="ARM" comment="Reserved for Tom Cooksey (Bug 9963)">
+ <enum value="0x3270" name="EGL_LINUX_DMA_BUF_EXT"/>
+ <enum value="0x3271" name="EGL_LINUX_DRM_FOURCC_EXT"/>
+ <enum value="0x3272" name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
+ <enum value="0x3273" name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
+ <enum value="0x3274" name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
+ <enum value="0x3275" name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
+ <enum value="0x3276" name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
+ <enum value="0x3277" name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
+ <enum value="0x3278" name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
+ <enum value="0x3279" name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
+ <enum value="0x327A" name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
+ <enum value="0x327B" name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
+ <enum value="0x327C" name="EGL_SAMPLE_RANGE_HINT_EXT"/>
+ <enum value="0x327D" name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
+ <enum value="0x327E" name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
+ <enum value="0x327F" name="EGL_ITU_REC601_EXT"/>
+ <enum value="0x3280" name="EGL_ITU_REC709_EXT"/>
+ <enum value="0x3281" name="EGL_ITU_REC2020_EXT"/>
+ <enum value="0x3282" name="EGL_YUV_FULL_RANGE_EXT"/>
+ <enum value="0x3283" name="EGL_YUV_NARROW_RANGE_EXT"/>
+ <enum value="0x3284" name="EGL_YUV_CHROMA_SITING_0_EXT"/>
+ <enum value="0x3285" name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
+ <enum value="0x3286" name="EGL_DISCARD_SAMPLES_ARM"/>
+ <enum value="0x3287" name="EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM"/>
+ <enum value="0x3288" name="EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM"/>
+ <unused start="0x3289" end="0x3289"/>
+ <enum value="0x328A" name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ <unused start="0x328B" end="0x328D"/>
+ <enum value="0x328E" name="EGL_SURFACE_COMPRESSION_PLANE1_EXT"/>
+ <enum value="0x328F" name="EGL_SURFACE_COMPRESSION_PLANE2_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3290" end="0x329F" vendor="MESA" comment="Reserved for John K&#229;re Alsaker (Public bug 757)">
+ <unused start="0x3290" end="0x329F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32A0" end="0x32AF" vendor="Samsung" comment="Reserved for Dongyeon Kim (Public bug 880)">
+ <enum value="0x32A0" name="EGL_NATIVE_BUFFER_TIZEN"/>
+ <enum value="0x32A1" name="EGL_NATIVE_SURFACE_TIZEN"/>
+ <unused start="0x32A2" end="0x32AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32B0" end="0x32BF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 10663) - EGL_QCOM_lock_image2 spec">
+ <enum value="0x32B0" name="EGL_IMAGE_NUM_PLANES_QCOM"/>
+ <enum value="0x32B1" name="EGL_IMAGE_PLANE_PITCH_0_QCOM"/>
+ <enum value="0x32B2" name="EGL_IMAGE_PLANE_PITCH_1_QCOM"/>
+ <enum value="0x32B3" name="EGL_IMAGE_PLANE_PITCH_2_QCOM"/>
+ <enum value="0x32B4" name="EGL_IMAGE_PLANE_DEPTH_0_QCOM"/>
+ <enum value="0x32B5" name="EGL_IMAGE_PLANE_DEPTH_1_QCOM"/>
+ <enum value="0x32B6" name="EGL_IMAGE_PLANE_DEPTH_2_QCOM"/>
+ <enum value="0x32B7" name="EGL_IMAGE_PLANE_WIDTH_0_QCOM"/>
+ <enum value="0x32B8" name="EGL_IMAGE_PLANE_WIDTH_1_QCOM"/>
+ <enum value="0x32B9" name="EGL_IMAGE_PLANE_WIDTH_2_QCOM"/>
+ <enum value="0x32BA" name="EGL_IMAGE_PLANE_HEIGHT_0_QCOM"/>
+ <enum value="0x32BB" name="EGL_IMAGE_PLANE_HEIGHT_1_QCOM"/>
+ <enum value="0x32BC" name="EGL_IMAGE_PLANE_HEIGHT_2_QCOM"/>
+ <enum value="0x32BD" name="EGL_IMAGE_PLANE_POINTER_0_QCOM"/>
+ <enum value="0x32BE" name="EGL_IMAGE_PLANE_POINTER_1_QCOM"/>
+ <enum value="0x32BF" name="EGL_IMAGE_PLANE_POINTER_2_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32C0" end="0x32CF" vendor="Vivante" comment="Reserved for Yanjun Zhang (Bug 11498)">
+ <enum value="0x32C0" name="EGL_PROTECTED_CONTENT_EXT"/>
+ <unused start="0x32C1" end="0x32CF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32D0" end="0x32EF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 11735) - EGL_QCOM_gpu_perf spec">
+ <enum value="0x32D0" name="EGL_GPU_PERF_HINT_QCOM"/>
+ <enum value="0x32D1" name="EGL_HINT_PERSISTENT_QCOM"/>
+ <unused start="0x32D2" end="0x32EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32F0" end="0x32FF" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Bug 12870)">
+ <unused start="0x32F0" end="0x32FF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3300" end="0x331F" vendor="QCOM" comment="Reserved for Jeff Vigil (Bugs 12973,12849) - EGL_EXT_yuv_surface spec TBD">
+ <enum value="0x3300" name="EGL_YUV_BUFFER_EXT"/>
+ <enum value="0x3301" name="EGL_YUV_ORDER_EXT"/>
+ <enum value="0x3302" name="EGL_YUV_ORDER_YUV_EXT"/>
+ <enum value="0x3303" name="EGL_YUV_ORDER_YVU_EXT"/>
+ <enum value="0x3304" name="EGL_YUV_ORDER_YUYV_EXT"/>
+ <enum value="0x3305" name="EGL_YUV_ORDER_UYVY_EXT"/>
+ <enum value="0x3306" name="EGL_YUV_ORDER_YVYU_EXT"/>
+ <enum value="0x3307" name="EGL_YUV_ORDER_VYUY_EXT"/>
+ <enum value="0x3308" name="EGL_YUV_ORDER_AYUV_EXT"/>
+ <unused start="0x3309"/>
+ <enum value="0x330A" name="EGL_YUV_CSC_STANDARD_EXT"/>
+ <enum value="0x330B" name="EGL_YUV_CSC_STANDARD_601_EXT"/>
+ <enum value="0x330C" name="EGL_YUV_CSC_STANDARD_709_EXT"/>
+ <enum value="0x330D" name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
+ <unused start="0x330E" end="0x3310"/>
+ <enum value="0x3311" name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum value="0x3312" name="EGL_YUV_SUBSAMPLE_EXT"/>
+ <enum value="0x3313" name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
+ <enum value="0x3314" name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
+ <enum value="0x3315" name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
+ <unused start="0x3316"/>
+ <enum value="0x3317" name="EGL_YUV_DEPTH_RANGE_EXT"/>
+ <enum value="0x3318" name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
+ <enum value="0x3319" name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
+ <enum value="0x331A" name="EGL_YUV_PLANE_BPP_EXT"/>
+ <enum value="0x331B" name="EGL_YUV_PLANE_BPP_0_EXT"/>
+ <enum value="0x331C" name="EGL_YUV_PLANE_BPP_8_EXT"/>
+ <enum value="0x331D" name="EGL_YUV_PLANE_BPP_10_EXT"/>
+ <unused start="0x331E" end="0x331F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3320" end="0x339F" vendor="NV" comment="Reserved for James Jones (Bug 13209)">
+ <unused start="0x3320" end="0x3327"/>
+ <enum value="0x3328" name="EGL_PENDING_METADATA_NV"/>
+ <enum value="0x3329" name="EGL_PENDING_FRAME_NV"/>
+ <enum value="0x332A" name="EGL_STREAM_TIME_PENDING_NV"/>
+ <unused start="0x332B"/>
+ <enum value="0x332C" name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
+ <enum value="0x332D" name="EGL_YUV_PLANE1_TEXTURE_UNIT_NV"/>
+ <enum value="0x332E" name="EGL_YUV_PLANE2_TEXTURE_UNIT_NV"/>
+ <unused start="0x332F" end="0x3333"/>
+ <enum value="0x3334" name="EGL_SUPPORT_RESET_NV"/>
+ <enum value="0x3335" name="EGL_SUPPORT_REUSE_NV"/>
+ <enum value="0x3336" name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ <enum value="0x3337" name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum value="0x3338" name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
+ <enum value="0x3339" name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
+ <enum value="0x333A" name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
+ <enum value="0x333B" name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
+ <enum value="0x333C" name="EGL_DRM_MASTER_FD_EXT"/>
+ <enum value="0x333D" name="EGL_OPENWF_DEVICE_EXT"/>
+ <unused start="0x333E"/>
+ <enum value="0x333F" name="EGL_GL_COLORSPACE_BT2020_LINEAR_EXT"/>
+ <enum value="0x3340" name="EGL_GL_COLORSPACE_BT2020_PQ_EXT"/>
+ <enum value="0x3341" name="EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT"/>
+ <enum value="0x3342" name="EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT"/>
+ <enum value="0x3343" name="EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT"/>
+ <enum value="0x3344" name="EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT"/>
+ <enum value="0x3345" name="EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT"/>
+ <enum value="0x3346" name="EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT"/>
+ <enum value="0x3347" name="EGL_SMPTE2086_WHITE_POINT_X_EXT"/>
+ <enum value="0x3348" name="EGL_SMPTE2086_WHITE_POINT_Y_EXT"/>
+ <enum value="0x3349" name="EGL_SMPTE2086_MAX_LUMINANCE_EXT"/>
+ <enum value="0x334A" name="EGL_SMPTE2086_MIN_LUMINANCE_EXT"/>
+ <enum value="50000" name="EGL_METADATA_SCALING_EXT"/>
+ <unused start="0x334B"/>
+ <enum value="0x334C" name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ <enum value="0x334D" name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ <enum value="0x334E" name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ <enum value="0x334F" name="EGL_STREAM_CROSS_SYSTEM_NV"/>
+ <enum value="0x3350" name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
+ <enum value="0x3351" name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ <enum value="0x3352" name="EGL_TRACK_REFERENCES_KHR"/>
+ <unused start="0x3353" end="0x3356"/>
+ <enum value="0x3357" name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ <unused start="0x3358" end="0x335B"/>
+ <enum value="0x335C" name="EGL_DEVICE_UUID_EXT"/>
+ <enum value="0x335D" name="EGL_DRIVER_UUID_EXT"/>
+ <enum value="0x335E" name="EGL_DRIVER_NAME_EXT"/>
+ <enum value="0x335F" name="EGL_RENDERER_EXT"/>
+ <enum value="0x3360" name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum value="0x3361" name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
+ <enum value="0x3362" name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
+ <enum value="0x3363" name="EGL_GL_COLORSPACE_DISPLAY_P3_EXT"/>
+ <enum value="0x3364" name="EGL_SYNC_CLIENT_EXT"/>
+ <enum value="0x3365" name="EGL_SYNC_CLIENT_SIGNAL_EXT"/>
+ <enum value="0x3366" name="EGL_STREAM_FRAME_ORIGIN_X_NV"/>
+ <enum value="0x3367" name="EGL_STREAM_FRAME_ORIGIN_Y_NV"/>
+ <enum value="0x3368" name="EGL_STREAM_FRAME_MAJOR_AXIS_NV"/>
+ <enum value="0x3369" name="EGL_CONSUMER_AUTO_ORIENTATION_NV"/>
+ <enum value="0x336A" name="EGL_PRODUCER_AUTO_ORIENTATION_NV"/>
+ <enum value="0x336B" name="EGL_LEFT_NV"/>
+ <enum value="0x336C" name="EGL_RIGHT_NV"/>
+ <enum value="0x336D" name="EGL_TOP_NV"/>
+ <enum value="0x336E" name="EGL_BOTTOM_NV"/>
+ <enum value="0x336F" name="EGL_X_AXIS_NV"/>
+ <enum value="0x3370" name="EGL_Y_AXIS_NV"/>
+ <enum value="0x3371" name="EGL_STREAM_DMA_NV"/>
+ <enum value="0x3372" name="EGL_STREAM_DMA_SERVER_NV"/>
+ <enum value="0x3373" name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
+ <enum value="0x3374" name="EGL_STREAM_IMAGE_ADD_NV"/>
+ <enum value="0x3375" name="EGL_STREAM_IMAGE_REMOVE_NV"/>
+ <enum value="0x3376" name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
+ <enum value="0x3377" name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ <unused start="0x3378" end="0x339F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
+ <enum value="0x33A0" name="EGL_D3D9_DEVICE_ANGLE"/>
+ <enum value="0x33A1" name="EGL_D3D11_DEVICE_ANGLE"/>
+ <unused start="0x33A2" end="0x33AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33B0" end="0x33BF" vendor="KHR" comment="Reserved for EGL_KHR_debug / Jeff Vigil (Bug 13357)">
+ <enum value="0x33B0" name="EGL_OBJECT_THREAD_KHR"/>
+ <enum value="0x33B1" name="EGL_OBJECT_DISPLAY_KHR"/>
+ <enum value="0x33B2" name="EGL_OBJECT_CONTEXT_KHR"/>
+ <enum value="0x33B3" name="EGL_OBJECT_SURFACE_KHR"/>
+ <enum value="0x33B4" name="EGL_OBJECT_IMAGE_KHR"/>
+ <enum value="0x33B5" name="EGL_OBJECT_SYNC_KHR"/>
+ <enum value="0x33B6" name="EGL_OBJECT_STREAM_KHR"/>
+ <unused start="0x33B7"/>
+ <enum value="0x33B8" name="EGL_DEBUG_CALLBACK_KHR"/>
+ <enum value="0x33B9" name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
+ <enum value="0x33BA" name="EGL_DEBUG_MSG_ERROR_KHR"/>
+ <enum value="0x33BB" name="EGL_DEBUG_MSG_WARN_KHR"/>
+ <enum value="0x33BC" name="EGL_DEBUG_MSG_INFO_KHR"/>
+ <unused start="0x33BD" end="0x33BF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33C0" end="0x33DF" vendor="BCOM" comment="Reserved for Gary Sweet (Bug 12203)">
+ <unused start="0x33C0" end="0x33DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33E0" end="0x342F" vendor="QCOM" comment="EGL_QCOM_create_image and EGL_QCOM_lock_image2">
+ <enum value="0x33E0" name="EGL_FORMAT_FLAG_UBWC_QCOM"/>
+ <enum value="0x33E1" name="EGL_FORMAT_FLAG_MACROTILE_QCOM"/>
+ <enum value="0x33E2" name="EGL_FORMAT_ASTC_4X4_QCOM"/>
+ <enum value="0x33E3" name="EGL_FORMAT_ASTC_5X4_QCOM"/>
+ <enum value="0x33E4" name="EGL_FORMAT_ASTC_5X5_QCOM"/>
+ <enum value="0x33E5" name="EGL_FORMAT_ASTC_6X5_QCOM"/>
+ <enum value="0x33E6" name="EGL_FORMAT_ASTC_6X6_QCOM"/>
+ <enum value="0x33E7" name="EGL_FORMAT_ASTC_8X5_QCOM"/>
+ <enum value="0x33E8" name="EGL_FORMAT_ASTC_8X6_QCOM"/>
+ <enum value="0x33E9" name="EGL_FORMAT_ASTC_8X8_QCOM"/>
+ <enum value="0x33EA" name="EGL_FORMAT_ASTC_10X5_QCOM"/>
+ <enum value="0x33EB" name="EGL_FORMAT_ASTC_10X6_QCOM"/>
+ <enum value="0x33EC" name="EGL_FORMAT_ASTC_10X8_QCOM"/>
+ <enum value="0x33ED" name="EGL_FORMAT_ASTC_10X10_QCOM"/>
+ <enum value="0x33EE" name="EGL_FORMAT_ASTC_12X10_QCOM"/>
+ <enum value="0x33EF" name="EGL_FORMAT_ASTC_12X12_QCOM"/>
+ <enum value="0x3400" name="EGL_FORMAT_ASTC_4X4_SRGB_QCOM"/>
+ <enum value="0x3401" name="EGL_FORMAT_ASTC_5X4_SRGB_QCOM"/>
+ <enum value="0x3402" name="EGL_FORMAT_ASTC_5X5_SRGB_QCOM"/>
+ <enum value="0x3403" name="EGL_FORMAT_ASTC_6X5_SRGB_QCOM"/>
+ <enum value="0x3404" name="EGL_FORMAT_ASTC_6X6_SRGB_QCOM"/>
+ <enum value="0x3405" name="EGL_FORMAT_ASTC_8X5_SRGB_QCOM"/>
+ <enum value="0x3406" name="EGL_FORMAT_ASTC_8X6_SRGB_QCOM"/>
+ <enum value="0x3407" name="EGL_FORMAT_ASTC_8X8_SRGB_QCOM"/>
+ <enum value="0x3408" name="EGL_FORMAT_ASTC_10X5_SRGB_QCOM"/>
+ <enum value="0x3409" name="EGL_FORMAT_ASTC_10X6_SRGB_QCOM"/>
+ <enum value="0x340A" name="EGL_FORMAT_ASTC_10X8_SRGB_QCOM"/>
+ <enum value="0x340B" name="EGL_FORMAT_ASTC_10X10_SRGB_QCOM"/>
+ <enum value="0x340C" name="EGL_FORMAT_ASTC_12X10_SRGB_QCOM"/>
+ <enum value="0x340D" name="EGL_FORMAT_ASTC_12X12_SRGB_QCOM"/>
+ <enum value="0x340E" name="EGL_FORMAT_TP10_QCOM"/>
+ <enum value="0x340F" name="EGL_FORMAT_NV12_Y_QCOM"/>
+ <enum value="0x3410" name="EGL_FORMAT_NV12_UV_QCOM"/>
+ <enum value="0x3411" name="EGL_FORMAT_NV21_VU_QCOM"/>
+ <enum value="0x3412" name="EGL_FORMAT_NV12_4R_QCOM"/>
+ <enum value="0x3413" name="EGL_FORMAT_NV12_4R_Y_QCOM"/>
+ <enum value="0x3414" name="EGL_FORMAT_NV12_4R_UV_QCOM"/>
+ <enum value="0x3415" name="EGL_FORMAT_P010_QCOM"/>
+ <enum value="0x3416" name="EGL_FORMAT_P010_Y_QCOM"/>
+ <enum value="0x3417" name="EGL_FORMAT_P010_UV_QCOM"/>
+ <enum value="0x3418" name="EGL_FORMAT_TP10_Y_QCOM"/>
+ <enum value="0x3419" name="EGL_FORMAT_TP10_UV_QCOM"/>
+ <unused start="0x341A" end="0x341F"/>
+ <enum value="0x3420" name="EGL_GENERIC_TOKEN_1_QCOM"/>
+ <enum value="0x3421" name="EGL_GENERIC_TOKEN_2_QCOM"/>
+ <enum value="0x3422" name="EGL_GENERIC_TOKEN_3_QCOM"/>
+ <unused start="0x3423" end="0x342F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3430" end="0x343F" vendor="ANDROID" comment="Reserved for Pablo Ceballos (Bug 15874)">
+ <enum value="EGL_CAST(EGLnsecsANDROID,-2)" name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum value="EGL_CAST(EGLnsecsANDROID,-1)" name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum value="0x3430" name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum value="0x3431" name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum value="0x3432" name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum value="0x3433" name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum value="0x3434" name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum value="0x3435" name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum value="0x3436" name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum value="0x3437" name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3438" name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3439" name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum value="0x343A" name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum value="0x343B" name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum value="0x343C" name="EGL_READS_DONE_TIME_ANDROID"/>
+ <unused start="0x343D" end="0x343F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3440" end="0x344F" vendor="ANDROID" comment="Reserved for Kristian Kristensen (Bug 16033)">
+ <enum value="0x3440" name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum value="0x3441" name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum value="0x3442" name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum value="0x3443" name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum value="0x3444" name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum value="0x3445" name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum value="0x3446" name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum value="0x3447" name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum value="0x3448" name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum value="0x3449" name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum value="0x344A" name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <unused start="0x344B" end="0x344F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3450" end="0x345F" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 16106)">
+ <unused start="0x3450" end="0x345F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3460" end="0x346F" vendor="COREAVI" comment="Reserved for Daniel Herring (Bug 16162)">
+ <enum value="0x3460" name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum value="0x3461" name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum value="0x3462" name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3463" name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3464" name="EGL_FRONT_BUFFER_EXT"/>
+ <unused start="0x3465" end="0x346F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3470" end="0x347F" vendor="EXT" comment="Reserved for Daniel Stone (PR 14)">
+ <enum value="0x3470" name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum value="0x3471" name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum value="0x3472" name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </enums>
+ <enums namespace="EGL" start="0x3480" end="0x348F" vendor="ANGLE" comment="Reserved for Courtney Goeltzenleuchter - ANGLE (gitlab EGL bug 7)">
+ <unused start="0x3480" end="0x348F"/>
+ </enums>
+ <enums namespace="EGL" start="0x3490" end="0x349F" vendor="EXT" comment="Reserved for Courtney Goeltzenleuchter - Android (gitlab EGL bug 69)">
+ <enum value="0x3490" name="EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT"/>
+ <unused start="0x3491" end="0x349F"/>
+ </enums>
+ <enums namespace="EGL" start="0x34A0" end="0x34AF" vendor="ANGLE" comment="Reserved for Ken Russell - ANGLE (via github pull request)">
+ <unused start="0x34A0" end="0x34AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34B0" end="0x34BF" vendor="ARM" comment="Reserved for Jan-Harald Fredriksen (via github pull request)">
+ <enum value="0x34B0" name="EGL_SURFACE_COMPRESSION_EXT"/>
+ <enum value="0x34B1" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT"/>
+ <enum value="0x34B2" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"/>
+ <unused start="0x34B3" end="0x34B3"/>
+ <enum value="0x34B4" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT"/>
+ <enum value="0x34B5" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT"/>
+ <enum value="0x34B6" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT"/>
+ <enum value="0x34B7" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT"/>
+ <enum value="0x34B8" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT"/>
+ <enum value="0x34B9" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT"/>
+ <enum value="0x34BA" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT"/>
+ <enum value="0x34BB" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT"/>
+ <enum value="0x34BC" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT"/>
+ <enum value="0x34BD" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT"/>
+ <enum value="0x34BE" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT"/>
+ <enum value="0x34BF" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34C0" end="0x34CF" vendor="EXT" comment="Reserved for Robert Mader (PR 124)">
+ <enum value="0x34C0" name="EGL_CONFIG_SELECT_GROUP_EXT"/>
+ <unused start="0x34C1" end="0x34CF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34D0" end="0x34DF" vendor="ANGLE" comment="Reserved for Peng Huang - ANGLE (via github pull request)">
+ <unused start="0x34D0" end="0x34DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34E0" end="0x34EF" vendor="Huawei" comment="Reserved for Openharmony OS (via github pull request)">
+ <unused start="0x34E0" end="0x34EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34F0" end="0x34FF" vendor="ANGLE" comment="Reserved for Ken Russell - ANGLE (via github pull request)">
+ <unused start="0x34F0" end="0x34FF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3500" end="0x352F" vendor="COREAVI" comment="Reserved for Daniel Herring (via github pull request)">
+ <unused start="0x3500" end="0x352F"/>
+ </enums>
+
+<!-- Please remember that new enumerant allocations must be obtained by
+ request to the Khronos API registrar (see comments at the top of this
+ file) File requests in the Khronos Bugzilla, EGL project, Registry
+ component. Also note that some EGL enum values are shared with other
+ Khronos APIs, and new ranges should be allocated with such overlaps in
+ mind. -->
+
+<!-- Reservable for future use. To generate a new range, allocate multiples
+ of 16 starting at the lowest available point in this block. -->
+ <enums namespace="EGL" start="0x3530" end="0x3FFF" vendor="KHR" comment="Reserved for future use">
+ <unused start="0x3530" end="0x3FFF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with GL.">
+ <enum value="0x8F70" name="EGL_COLOR_FORMAT_HI"/>
+ <enum value="0x8F71" name="EGL_COLOR_RGB_HI"/>
+ <enum value="0x8F72" name="EGL_COLOR_RGBA_HI"/>
+ <enum value="0x8F73" name="EGL_COLOR_ARGB_HI"/>
+ <enum value="0x8F74" name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
+ </enums>
+
+ <!-- SECTION: EGL command definitions. -->
+ <commands namespace="EGL">
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindAPI</name></proto>
+ <param><ptype>EGLenum</ptype> <name>api</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindTexImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglChooseConfig</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
+ <param><ptype>EGLint</ptype> <name>config_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglClientSignalSyncEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTime</ptype> <name>timeout</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTimeKHR</ptype> <name>timeout</name></param>
+ <alias name="eglClientWaitSync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTimeNV</ptype> <name>timeout</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCopyBuffers</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> <name>target</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLContext</ptype> <name>eglCreateContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLContext</ptype> <name>share_context</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateDRMImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncNV</ptype> <name>eglCreateFenceSyncNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>condition</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImage</ptype> <name>eglCreateImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLenum</ptype> <name>target</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateImageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLenum</ptype> <name>target</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglCreateNativeClientBufferANDROID</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferFromClientBuffer</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>buftype</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> <name>pixmap</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurfaceHI</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>struct <ptype>EGLClientPixmapHI</ptype> *<name>pixmap</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_pixmap</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurfaceEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_pixmap</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_window</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurfaceEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_window</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamFromFileDescriptorKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLNativeFileDescriptorKHR</ptype> <name>file_descriptor</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreateStreamProducerSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateStreamSyncNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSync</ptype> <name>eglCreateSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSync64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLAttribKHR</ptype> *<name>attrib_list</name></param>
+ <alias name="eglCreateSync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreateWindowSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLNativeWindowType</ptype> <name>win</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglDebugMessageControlKHR</name></proto>
+ <param><ptype>EGLDEBUGPROCKHR</ptype> <name>callback</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImage</ptype> <name>image</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <alias name="eglDestroyImage"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <alias name="eglDestroySync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglDupNativeFenceFDANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param>int *<name>fds</name></param>
+ <param><ptype>EGLint</ptype> *<name>strides</name></param>
+ <param><ptype>EGLint</ptype> *<name>offsets</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageQueryMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param>int *<name>fourcc</name></param>
+ <param>int *<name>num_planes</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDRMImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param><ptype>EGLint</ptype> *<name>name</name></param>
+ <param><ptype>EGLint</ptype> *<name>handle</name></param>
+ <param><ptype>EGLint</ptype> *<name>stride</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglFenceNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigs</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
+ <param><ptype>EGLint</ptype> <name>config_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLContext</ptype> <name>eglGetCurrentContext</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetCurrentDisplay</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglGetCurrentSurface</name></proto>
+ <param><ptype>EGLint</ptype> <name>readdraw</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetDisplay</name></proto>
+ <param><ptype>EGLNativeDisplayType</ptype> <name>display_id</name></param>
+ </command>
+ <command>
+ <proto>char *<name>eglGetDisplayDriverConfig</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglGetDisplayDriverName</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglGetError</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateANGLE</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> *<name>numerator</name></param>
+ <param><ptype>EGLint</ptype> *<name>denominator</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglGetNativeClientBufferANDROID</name></proto>
+ <param>const struct <ptype>AHardwareBuffer</ptype> *<name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputLayersEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> *<name>layers</name></param>
+ <param><ptype>EGLint</ptype> <name>max_layers</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_layers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputPortsEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> *<name>ports</name></param>
+ <param><ptype>EGLint</ptype> <name>max_ports</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_ports</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplay</name></proto>
+ <param><ptype>EGLenum</ptype> <name>platform</name></param>
+ <param>void *<name>native_display</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplayEXT</name></proto>
+ <param><ptype>EGLenum</ptype> <name>platform</name></param>
+ <param>void *<name>native_display</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>__eglMustCastToProperFunctionPointerType</ptype> <name>eglGetProcAddress</name></proto>
+ <param>const char *<name>procname</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLNativeFileDescriptorKHR</ptype> <name>eglGetStreamFileDescriptorKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeFrequencyNV</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeNV</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglInitialize</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> *<name>major</name></param>
+ <param><ptype>EGLint</ptype> *<name>minor</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglLabelObjectKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>display</name></param>
+ <param><ptype>EGLenum</ptype> <name>objectType</name></param>
+ <param><ptype>EGLObjectKHR</ptype> <name>object</name></param>
+ <param><ptype>EGLLabelKHR</ptype> <name>label</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglLockSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglMakeCurrent</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>draw</name></param>
+ <param><ptype>EGLSurface</ptype> <name>read</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglOutputLayerAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglOutputPortAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglPostSubBufferNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>x</name></param>
+ <param><ptype>EGLint</ptype> <name>y</name></param>
+ <param><ptype>EGLint</ptype> <name>width</name></param>
+ <param><ptype>EGLint</ptype> <name>height</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglPresentationTimeANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> <name>time</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>names</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetNextFrameIdANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>frameId</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>timestamp</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampsANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> <name>frameId</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>timestamps</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLenum</ptype> <name>eglQueryAPI</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDebugKHR</name></proto>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceAttribEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryDeviceStringEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDevicesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>max_devices</name></param>
+ <param><ptype>EGLDeviceEXT</ptype> *<name>devices</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_devices</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufFormatsEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>max_formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_formats</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufModifiersEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>format</name></param>
+ <param><ptype>EGLint</ptype> <name>max_modifiers</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ <param><ptype>EGLBoolean</ptype> *<name>external_only</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_modifiers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeDisplayNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLNativeDisplayType</ptype> *<name>display_id</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativePixmapNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> *<name>pixmap</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeWindowNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
+ <param><ptype>EGLNativeWindowType</ptype> *<name>window</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputLayerAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryOutputLayerStringEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputPortAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryOutputPortStringEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamMetadataNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>name</name></param>
+ <param><ptype>EGLint</ptype> <name>n</name></param>
+ <param><ptype>EGLint</ptype> <name>offset</name></param>
+ <param><ptype>EGLint</ptype> <name>size</name></param>
+ <param>void *<name>data</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamTimeKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLTimeKHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamu64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryString</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySupportedCompressionRatesEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLint</ptype> *<name>rates</name></param>
+ <param><ptype>EGLint</ptype> <name>rate_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_rates</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttribKHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurfacePointerANGLE</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param>void **<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseTexImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseThread</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglResetStreamNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto>void <name>eglSetBlobCacheFuncsANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSetBlobFuncANDROID</ptype> <name>set</name></param>
+ <param><ptype>EGLGetBlobFuncANDROID</ptype> <name>get</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetDamageRegionKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetStreamMetadataNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLint</ptype> <name>n</name></param>
+ <param><ptype>EGLint</ptype> <name>offset</name></param>
+ <param><ptype>EGLint</ptype> <name>size</name></param>
+ <param>const void *<name>data</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLenum</ptype> <name>mode</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLenum</ptype> <name>mode</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalAttribsNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerOutputEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamFlushNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSurfaceAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffers</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegionNOK</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numRects</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegion2NOK</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numRects</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapInterval</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>interval</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglTerminate</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnlockSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnsignalSyncEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitClient</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitGL</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitNative</name></proto>
+ <param><ptype>EGLint</ptype> <name>engine</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglWaitSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextListEXT</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>external_ref_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>context_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowListEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>external_win_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>window_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorBindTexWindowEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetSizeEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>width</name></param>
+ <param><ptype>EGLint</ptype> <name>height</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSwapPolicyEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>policy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindWaylandDisplayWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_display</ptype> *<name>display</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnbindWaylandDisplayWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_display</ptype> *<name>display</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryWaylandBufferWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_resource</ptype> *<name>buffer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>struct <ptype>wl_buffer</ptype> *<name>eglCreateWaylandBufferFromImageWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamImageConsumerConnectNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLint</ptype> <name>num_modifiers</name></param>
+ <param>const <ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglQueryStreamConsumerEventNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLTime</ptype> <name>timeout</name></param>
+ <param><ptype>EGLenum</ptype> *<name>event</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>aux</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamAcquireImageNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLImage</ptype> *<name>pImage</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamReleaseImageNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLImage</ptype> <name>image</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceBinaryEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ <param><ptype>EGLint</ptype> <name>max_size</name></param>
+ <param>void *<name>value</name></param>
+ <param>EGLint *<name>size</name></param>
+ </command>
+ </commands>
+
+ <!-- SECTION: EGL API interface definitions. -->
+ <feature api="egl" name="EGL_VERSION_1_0" number="1.0">
+ <require>
+ <enum name="EGL_ALPHA_SIZE"/>
+ <enum name="EGL_BAD_ACCESS"/>
+ <enum name="EGL_BAD_ALLOC"/>
+ <enum name="EGL_BAD_ATTRIBUTE"/>
+ <enum name="EGL_BAD_CONFIG"/>
+ <enum name="EGL_BAD_CONTEXT"/>
+ <enum name="EGL_BAD_CURRENT_SURFACE"/>
+ <enum name="EGL_BAD_DISPLAY"/>
+ <enum name="EGL_BAD_MATCH"/>
+ <enum name="EGL_BAD_NATIVE_PIXMAP"/>
+ <enum name="EGL_BAD_NATIVE_WINDOW"/>
+ <enum name="EGL_BAD_PARAMETER"/>
+ <enum name="EGL_BAD_SURFACE"/>
+ <enum name="EGL_BLUE_SIZE"/>
+ <enum name="EGL_BUFFER_SIZE"/>
+ <enum name="EGL_CONFIG_CAVEAT"/>
+ <enum name="EGL_CONFIG_ID"/>
+ <enum name="EGL_CORE_NATIVE_ENGINE"/>
+ <enum name="EGL_DEPTH_SIZE"/>
+ <enum name="EGL_DONT_CARE"/>
+ <enum name="EGL_DRAW"/>
+ <enum name="EGL_EXTENSIONS"/>
+ <enum name="EGL_FALSE"/>
+ <enum name="EGL_GREEN_SIZE"/>
+ <enum name="EGL_HEIGHT"/>
+ <enum name="EGL_LARGEST_PBUFFER"/>
+ <enum name="EGL_LEVEL"/>
+ <enum name="EGL_MAX_PBUFFER_HEIGHT"/>
+ <enum name="EGL_MAX_PBUFFER_PIXELS"/>
+ <enum name="EGL_MAX_PBUFFER_WIDTH"/>
+ <enum name="EGL_NATIVE_RENDERABLE"/>
+ <enum name="EGL_NATIVE_VISUAL_ID"/>
+ <enum name="EGL_NATIVE_VISUAL_TYPE"/>
+ <enum name="EGL_NONE"/>
+ <enum name="EGL_NON_CONFORMANT_CONFIG"/>
+ <enum name="EGL_NOT_INITIALIZED"/>
+ <enum name="EGL_NO_CONTEXT"/>
+ <enum name="EGL_NO_DISPLAY"/>
+ <enum name="EGL_NO_SURFACE"/>
+ <enum name="EGL_PBUFFER_BIT"/>
+ <enum name="EGL_PIXMAP_BIT"/>
+ <enum name="EGL_READ"/>
+ <enum name="EGL_RED_SIZE"/>
+ <enum name="EGL_SAMPLES"/>
+ <enum name="EGL_SAMPLE_BUFFERS"/>
+ <enum name="EGL_SLOW_CONFIG"/>
+ <enum name="EGL_STENCIL_SIZE"/>
+ <enum name="EGL_SUCCESS"/>
+ <enum name="EGL_SURFACE_TYPE"/>
+ <enum name="EGL_TRANSPARENT_BLUE_VALUE"/>
+ <enum name="EGL_TRANSPARENT_GREEN_VALUE"/>
+ <enum name="EGL_TRANSPARENT_RED_VALUE"/>
+ <enum name="EGL_TRANSPARENT_RGB"/>
+ <enum name="EGL_TRANSPARENT_TYPE"/>
+ <enum name="EGL_TRUE"/>
+ <enum name="EGL_VENDOR"/>
+ <enum name="EGL_VERSION"/>
+ <enum name="EGL_WIDTH"/>
+ <enum name="EGL_WINDOW_BIT"/>
+ <command name="eglChooseConfig"/>
+ <command name="eglCopyBuffers"/>
+ <command name="eglCreateContext"/>
+ <command name="eglCreatePbufferSurface"/>
+ <command name="eglCreatePixmapSurface"/>
+ <command name="eglCreateWindowSurface"/>
+ <command name="eglDestroyContext"/>
+ <command name="eglDestroySurface"/>
+ <command name="eglGetConfigAttrib"/>
+ <command name="eglGetConfigs"/>
+ <command name="eglGetCurrentDisplay"/>
+ <command name="eglGetCurrentSurface"/>
+ <command name="eglGetDisplay"/>
+ <command name="eglGetError"/>
+ <command name="eglGetProcAddress"/>
+ <command name="eglInitialize"/>
+ <command name="eglMakeCurrent"/>
+ <command name="eglQueryContext"/>
+ <command name="eglQueryString"/>
+ <command name="eglQuerySurface"/>
+ <command name="eglSwapBuffers"/>
+ <command name="eglTerminate"/>
+ <command name="eglWaitGL"/>
+ <command name="eglWaitNative"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_1" number="1.1">
+ <require>
+ <enum name="EGL_BACK_BUFFER"/>
+ <enum name="EGL_BIND_TO_TEXTURE_RGB"/>
+ <enum name="EGL_BIND_TO_TEXTURE_RGBA"/>
+ <enum name="EGL_CONTEXT_LOST"/>
+ <enum name="EGL_MIN_SWAP_INTERVAL"/>
+ <enum name="EGL_MAX_SWAP_INTERVAL"/>
+ <enum name="EGL_MIPMAP_TEXTURE"/>
+ <enum name="EGL_MIPMAP_LEVEL"/>
+ <enum name="EGL_NO_TEXTURE"/>
+ <enum name="EGL_TEXTURE_2D"/>
+ <enum name="EGL_TEXTURE_FORMAT"/>
+ <enum name="EGL_TEXTURE_RGB"/>
+ <enum name="EGL_TEXTURE_RGBA"/>
+ <enum name="EGL_TEXTURE_TARGET"/>
+ <command name="eglBindTexImage"/>
+ <command name="eglReleaseTexImage"/>
+ <command name="eglSurfaceAttrib"/>
+ <command name="eglSwapInterval"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_2" number="1.2">
+ <require>
+ <enum name="EGL_ALPHA_FORMAT"/>
+ <enum name="EGL_ALPHA_FORMAT_NONPRE"/>
+ <enum name="EGL_ALPHA_FORMAT_PRE"/>
+ <enum name="EGL_ALPHA_MASK_SIZE"/>
+ <enum name="EGL_BUFFER_PRESERVED"/>
+ <enum name="EGL_BUFFER_DESTROYED"/>
+ <enum name="EGL_CLIENT_APIS"/>
+ <enum name="EGL_COLORSPACE"/>
+ <enum name="EGL_COLORSPACE_sRGB"/>
+ <enum name="EGL_COLORSPACE_LINEAR"/>
+ <enum name="EGL_COLOR_BUFFER_TYPE"/>
+ <enum name="EGL_CONTEXT_CLIENT_TYPE"/>
+ <enum name="EGL_DISPLAY_SCALING"/>
+ <enum name="EGL_HORIZONTAL_RESOLUTION"/>
+ <enum name="EGL_LUMINANCE_BUFFER"/>
+ <enum name="EGL_LUMINANCE_SIZE"/>
+ <enum name="EGL_OPENGL_ES_BIT"/>
+ <enum name="EGL_OPENVG_BIT"/>
+ <enum name="EGL_OPENGL_ES_API"/>
+ <enum name="EGL_OPENVG_API"/>
+ <enum name="EGL_OPENVG_IMAGE"/>
+ <enum name="EGL_PIXEL_ASPECT_RATIO"/>
+ <enum name="EGL_RENDERABLE_TYPE"/>
+ <enum name="EGL_RENDER_BUFFER"/>
+ <enum name="EGL_RGB_BUFFER"/>
+ <enum name="EGL_SINGLE_BUFFER"/>
+ <enum name="EGL_SWAP_BEHAVIOR"/>
+ <enum name="EGL_UNKNOWN"/>
+ <enum name="EGL_VERTICAL_RESOLUTION"/>
+ <command name="eglBindAPI"/>
+ <command name="eglQueryAPI"/>
+ <command name="eglCreatePbufferFromClientBuffer"/>
+ <command name="eglReleaseThread"/>
+ <command name="eglWaitClient"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_3" number="1.3">
+ <require>
+ <enum name="EGL_CONFORMANT"/>
+ <enum name="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum name="EGL_MATCH_NATIVE_PIXMAP"/>
+ <enum name="EGL_OPENGL_ES2_BIT"/>
+ <enum name="EGL_VG_ALPHA_FORMAT"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
+ <enum name="EGL_VG_COLORSPACE"/>
+ <enum name="EGL_VG_COLORSPACE_sRGB"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_4" number="1.4">
+ <require>
+ <enum name="EGL_DEFAULT_DISPLAY"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
+ <enum name="EGL_OPENGL_API"/>
+ <enum name="EGL_OPENGL_BIT"/>
+ <enum name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
+ <command name="eglGetCurrentContext"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_5" number="1.5">
+ <require comment="EGL_KHR_create_context features">
+ <enum name="EGL_CONTEXT_MAJOR_VERSION"/>
+ <enum name="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ <enum name="EGL_CONTEXT_OPENGL_DEBUG"/>
+ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum name="EGL_OPENGL_ES3_BIT"/>
+ </require>
+ <require comment="EGL_EXT_create_context_robustness">
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ </require>
+ <require comment="EGL_EXT_client_extensions"/>
+ <require comment="EGL_KHR_cl_event2">
+ <enum name="EGL_CL_EVENT_HANDLE"/>
+ <enum name="EGL_SYNC_CL_EVENT"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ </require>
+ <require comment="EGL_KHR_fence_sync">
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum name="EGL_SYNC_TYPE"/>
+ <enum name="EGL_SYNC_STATUS"/>
+ <enum name="EGL_SYNC_CONDITION"/>
+ <enum name="EGL_SIGNALED"/>
+ <enum name="EGL_UNSIGNALED"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum name="EGL_FOREVER"/>
+ <enum name="EGL_TIMEOUT_EXPIRED"/>
+ <enum name="EGL_CONDITION_SATISFIED"/>
+ <enum name="EGL_NO_SYNC"/>
+ <enum name="EGL_SYNC_FENCE"/>
+ <command name="eglCreateSync"/>
+ <command name="eglDestroySync"/>
+ <command name="eglClientWaitSync"/>
+ <command name="eglGetSyncAttrib"/>
+ </require>
+ <require comment="EGL_KHR_get_all_proc_addresses"/>
+ <require comment="EGL_KHR_client_get_all_proc_addresses"/>
+ <require comment="EGL_KHR_gl_colorspace">
+ <enum name="EGL_GL_COLORSPACE"/>
+ <enum name="EGL_GL_COLORSPACE_SRGB"/>
+ <enum name="EGL_GL_COLORSPACE_LINEAR"/>
+ </require>
+ <require comment="EGL_KHR_gl_renderbuffer_image">
+ <enum name="EGL_GL_RENDERBUFFER"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_2D_image">
+ <enum name="EGL_GL_TEXTURE_2D"/>
+ <enum name="EGL_GL_TEXTURE_LEVEL"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_3D_image">
+ <enum name="EGL_GL_TEXTURE_3D"/>
+ <enum name="EGL_GL_TEXTURE_ZOFFSET"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_cubemap_image">
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ </require>
+ <require comment="EGL_KHR_image_base">
+ <enum name="EGL_IMAGE_PRESERVED"/>
+ <enum name="EGL_NO_IMAGE"/>
+ <command name="eglCreateImage"/>
+ <command name="eglDestroyImage"/>
+ </require>
+ <require comment="EGL_EXT_platform_base">
+ <command name="eglGetPlatformDisplay"/>
+ <command name="eglCreatePlatformWindowSurface"/>
+ <command name="eglCreatePlatformPixmapSurface"/>
+ </require>
+ <require comment="EGL_KHR_surfaceless_context - just relaxes an error condition"/>
+ <require comment="EGL_KHR_wait_sync">
+ <command name="eglWaitSync"/>
+ </require>
+ </feature>
+
+ <!-- SECTION: EGL extension interface definitions -->
+ <extensions>
+ <extension name="EGL_ANDROID_blob_cache" supported="egl">
+ <require>
+ <command name="eglSetBlobCacheFuncsANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_create_native_client_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ <command name="eglCreateNativeClientBufferANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_framebuffer_target" supported="egl">
+ <require>
+ <enum name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_get_native_client_buffer" supported="egl">
+ <require>
+ <command name="eglGetNativeClientBufferANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_front_buffer_auto_refresh" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_image_native_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_native_fence_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
+ <enum name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
+ <enum name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
+ <enum name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
+ <command name="eglDupNativeFenceFDANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_presentation_time" supported="egl">
+ <require>
+ <command name="eglPresentationTimeANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_get_frame_timestamps" supported="egl">
+ <require>
+ <enum name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum name="EGL_READS_DONE_TIME_ANDROID"/>
+ <command name="eglGetCompositorTimingSupportedANDROID"/>
+ <command name="eglGetCompositorTimingANDROID"/>
+ <command name="eglGetNextFrameIdANDROID"/>
+ <command name="eglGetFrameTimestampSupportedANDROID"/>
+ <command name="eglGetFrameTimestampsANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_recordable" supported="egl">
+ <require>
+ <enum name="EGL_RECORDABLE_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_GLES_layers" supported="egl"/>
+ <extension name="EGL_ANGLE_d3d_share_handle_client_buffer" supported="egl">
+ <require>
+ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_device_d3d" supported="egl">
+ <require>
+ <enum name="EGL_D3D9_DEVICE_ANGLE"/>
+ <enum name="EGL_D3D11_DEVICE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_query_surface_pointer" supported="egl">
+ <require>
+ <command name="eglQuerySurfacePointerANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_surface_d3d_texture_2d_share_handle" supported="egl">
+ <require>
+ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_sync_control_rate" supported="egl">
+ <require>
+ <command name="eglGetMscRateANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_window_fixed_size" supported="egl">
+ <require>
+ <enum name="EGL_FIXED_SIZE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_implicit_external_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_pixmap_multisample_discard" supported="egl">
+ <require>
+ <enum name="EGL_DISCARD_SAMPLES_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_buffer_age" supported="egl">
+ <require>
+ <enum name="EGL_BUFFER_AGE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_client_extensions" supported="egl"/>
+ <extension name="EGL_EXT_client_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_CLIENT_EXT"/>
+ <enum name="EGL_SYNC_CLIENT_SIGNAL_EXT"/>
+ <command name="eglClientSignalSyncEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_config_select_group" supported="egl">
+ <require>
+ <enum name="EGL_CONFIG_SELECT_GROUP_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_create_context_robustness" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION_EXT"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_base" supported="egl">
+ <require>
+ <enum name="EGL_NO_DEVICE_EXT"/>
+ <enum name="EGL_BAD_DEVICE_EXT"/>
+ <enum name="EGL_DEVICE_EXT"/>
+ <command name="eglQueryDeviceAttribEXT"/>
+ <command name="eglQueryDeviceStringEXT"/>
+ <command name="eglQueryDevicesEXT"/>
+ <command name="eglQueryDisplayAttribEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_drm" supported="egl">
+ <require>
+ <enum name="EGL_DRM_DEVICE_FILE_EXT"/>
+ <enum name="EGL_DRM_MASTER_FD_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_enumeration" supported="egl">
+ <require>
+ <command name="eglQueryDevicesEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_openwf" supported="egl">
+ <require>
+ <enum name="EGL_OPENWF_DEVICE_ID_EXT"/>
+ <enum name="EGL_OPENWF_DEVICE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_query" supported="egl">
+ <require>
+ <enum name="EGL_NO_DEVICE_EXT"/>
+ <enum name="EGL_BAD_DEVICE_EXT"/>
+ <enum name="EGL_DEVICE_EXT"/>
+ <command name="eglQueryDeviceAttribEXT"/>
+ <command name="eglQueryDeviceStringEXT"/>
+ <command name="eglQueryDisplayAttribEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_bt2020_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_BT2020_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_bt2020_pq" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_BT2020_PQ_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_scrgb" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_scrgb_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3_passthrough" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_dma_buf_import" supported="egl">
+ <require>
+ <enum name="EGL_LINUX_DMA_BUF_EXT"/>
+ <enum name="EGL_LINUX_DRM_FOURCC_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
+ <enum name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
+ <enum name="EGL_SAMPLE_RANGE_HINT_EXT"/>
+ <enum name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
+ <enum name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
+ <enum name="EGL_ITU_REC601_EXT"/>
+ <enum name="EGL_ITU_REC709_EXT"/>
+ <enum name="EGL_ITU_REC2020_EXT"/>
+ <enum name="EGL_YUV_FULL_RANGE_EXT"/>
+ <enum name="EGL_YUV_NARROW_RANGE_EXT"/>
+ <enum name="EGL_YUV_CHROMA_SITING_0_EXT"/>
+ <enum name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_dma_buf_import_modifiers" supported="egl">
+ <require>
+ <enum name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <command name="eglQueryDmaBufFormatsEXT"/>
+ <command name="eglQueryDmaBufModifiersEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_gl_colorspace" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE"/>
+ <enum name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_multiview_window" supported="egl">
+ <require>
+ <enum name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_base" supported="egl">
+ <require>
+ <type name="EGLOutputLayerEXT"/>
+ <type name="EGLOutputPortEXT"/>
+ <enum name="EGL_NO_OUTPUT_LAYER_EXT"/>
+ <enum name="EGL_NO_OUTPUT_PORT_EXT"/>
+ <enum name="EGL_BAD_OUTPUT_LAYER_EXT"/>
+ <enum name="EGL_BAD_OUTPUT_PORT_EXT"/>
+ <enum name="EGL_SWAP_INTERVAL_EXT"/>
+ <command name="eglGetOutputLayersEXT"/>
+ <command name="eglGetOutputPortsEXT"/>
+ <command name="eglOutputLayerAttribEXT"/>
+ <command name="eglQueryOutputLayerAttribEXT"/>
+ <command name="eglQueryOutputLayerStringEXT"/>
+ <command name="eglOutputPortAttribEXT"/>
+ <command name="eglQueryOutputPortAttribEXT"/>
+ <command name="eglQueryOutputPortStringEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_drm" supported="egl">
+ <require>
+ <enum name="EGL_DRM_CRTC_EXT"/>
+ <enum name="EGL_DRM_PLANE_EXT"/>
+ <enum name="EGL_DRM_CONNECTOR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_openwf" supported="egl">
+ <require>
+ <enum name="EGL_OPENWF_PIPELINE_ID_EXT"/>
+ <enum name="EGL_OPENWF_PORT_ID_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_pixel_format_float" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_base" supported="egl">
+ <require>
+ <command name="eglGetPlatformDisplayEXT"/>
+ <command name="eglCreatePlatformWindowSurfaceEXT"/>
+ <command name="eglCreatePlatformPixmapSurfaceEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_device" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_DEVICE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_wayland" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_WAYLAND_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_x11" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_X11_EXT"/>
+ <enum name="EGL_PLATFORM_X11_SCREEN_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_xcb" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_XCB_EXT"/>
+ <enum name="EGL_PLATFORM_XCB_SCREEN_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_present_opaque" supported="egl">
+ <require>
+ <enum name="EGL_PRESENT_OPAQUE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_protected_content" supported="egl">
+ <require>
+ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_protected_surface" supported="egl">
+ <require>
+ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_stream_consumer_egloutput" supported="egl">
+ <require>
+ <command name="eglStreamConsumerOutputEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_SMPTE2086_metadata" supported="egl">
+ <require>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT"/>
+ <enum name="EGL_SMPTE2086_WHITE_POINT_X_EXT"/>
+ <enum name="EGL_SMPTE2086_WHITE_POINT_Y_EXT"/>
+ <enum name="EGL_SMPTE2086_MAX_LUMINANCE_EXT"/>
+ <enum name="EGL_SMPTE2086_MIN_LUMINANCE_EXT"/>
+ <enum name="EGL_METADATA_SCALING_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_swap_buffers_with_damage" supported="egl">
+ <require>
+ <command name="eglSwapBuffersWithDamageEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_sync_reuse" supported="egl">
+ <require>
+ <command name="eglUnsignalSyncEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_yuv_surface" supported="egl">
+ <require>
+ <enum name="EGL_YUV_ORDER_EXT"/>
+ <enum name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_EXT"/>
+ <enum name="EGL_YUV_BUFFER_EXT"/>
+ <enum name="EGL_YUV_ORDER_YUV_EXT"/>
+ <enum name="EGL_YUV_ORDER_YVU_EXT"/>
+ <enum name="EGL_YUV_ORDER_YUYV_EXT"/>
+ <enum name="EGL_YUV_ORDER_UYVY_EXT"/>
+ <enum name="EGL_YUV_ORDER_YVYU_EXT"/>
+ <enum name="EGL_YUV_ORDER_VYUY_EXT"/>
+ <enum name="EGL_YUV_ORDER_AYUV_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_601_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_709_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_0_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_8_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_10_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_HI_clientpixmap" supported="egl">
+ <require>
+ <enum name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
+ <command name="eglCreatePixmapSurfaceHI"/>
+ </require>
+ </extension>
+ <extension name="EGL_HI_colorformats" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_FORMAT_HI"/>
+ <enum name="EGL_COLOR_RGB_HI"/>
+ <enum name="EGL_COLOR_RGBA_HI"/>
+ <enum name="EGL_COLOR_ARGB_HI"/>
+ </require>
+ </extension>
+ <extension name="EGL_IMG_context_priority" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
+ </require>
+ </extension>
+ <extension name="EGL_IMG_image_plane_attribs" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_cl_event" supported="egl">
+ <require>
+ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_cl_event2" supported="egl">
+ <require>
+ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
+ <command name="eglCreateSync64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_config_attribs" supported="egl">
+ <require>
+ <enum name="EGL_CONFORMANT_KHR"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_client_get_all_proc_addresses" supported="egl" comment="Alias of EGL_KHR_get_all_proc_addresses"/>
+ <extension name="EGL_KHR_context_flush_control" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_create_context" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_MAJOR_VERSION_KHR"/>
+ <enum name="EGL_CONTEXT_MINOR_VERSION_KHR"/>
+ <enum name="EGL_CONTEXT_FLAGS_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION_KHR"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR"/>
+ <enum name="EGL_OPENGL_ES3_BIT"/>
+ <enum name="EGL_OPENGL_ES3_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_create_context_no_error" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_debug" supported="egl">
+ <require>
+ <!-- Explicit dependencies require to get EGLDEBUGPROCKHR dependencies correct -->
+ <type name="EGLLabelKHR"/>
+ <type name="EGLObjectKHR"/>
+ <enum name="EGL_OBJECT_THREAD_KHR"/>
+ <enum name="EGL_OBJECT_DISPLAY_KHR"/>
+ <enum name="EGL_OBJECT_CONTEXT_KHR"/>
+ <enum name="EGL_OBJECT_SURFACE_KHR"/>
+ <enum name="EGL_OBJECT_IMAGE_KHR"/>
+ <enum name="EGL_OBJECT_SYNC_KHR"/>
+ <enum name="EGL_OBJECT_STREAM_KHR"/>
+ <enum name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
+ <enum name="EGL_DEBUG_MSG_ERROR_KHR"/>
+ <enum name="EGL_DEBUG_MSG_WARN_KHR"/>
+ <enum name="EGL_DEBUG_MSG_INFO_KHR"/>
+ <enum name="EGL_DEBUG_CALLBACK_KHR"/>
+ <command name="eglDebugMessageControlKHR"/>
+ <command name="eglQueryDebugKHR"/>
+ <command name="eglLabelObjectKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_display_reference" supported="egl">
+ <require>
+ <enum name="EGL_TRACK_REFERENCES_KHR"/>
+ <command name="eglQueryDisplayAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_fence_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <!-- Most interfaces also defined by EGL_KHR_reusable sync -->
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR"/>
+ <enum name="EGL_SYNC_CONDITION_KHR"/>
+ <enum name="EGL_SYNC_FENCE_KHR"/>
+ <command name="eglCreateSyncKHR"/>
+ <command name="eglDestroySyncKHR"/>
+ <command name="eglClientWaitSyncKHR"/>
+ <command name="eglGetSyncAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_get_all_proc_addresses" supported="egl"/>
+ <extension name="EGL_KHR_gl_colorspace" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_KHR"/>
+ <enum name="EGL_GL_COLORSPACE_SRGB_KHR"/>
+ <enum name="EGL_GL_COLORSPACE_LINEAR_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_renderbuffer_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_RENDERBUFFER_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_2D_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_2D_KHR"/>
+ <enum name="EGL_GL_TEXTURE_LEVEL_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_3D_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_3D_KHR"/>
+ <enum name="EGL_GL_TEXTURE_ZOFFSET_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_cubemap_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
+ <enum name="EGL_NO_IMAGE_KHR"/>
+ <command name="eglCreateImageKHR"/>
+ <command name="eglDestroyImageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image_base" supported="egl">
+ <require>
+ <enum name="EGL_IMAGE_PRESERVED_KHR"/>
+ <enum name="EGL_NO_IMAGE_KHR"/>
+ <command name="eglCreateImageKHR"/>
+ <command name="eglDestroyImageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image_pixmap" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface" supported="egl">
+ <require>
+ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum name="EGL_MATCH_FORMAT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum name="EGL_BITMAP_POINTER_KHR"/>
+ <enum name="EGL_BITMAP_PITCH_KHR"/>
+ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum name="EGL_LOWER_LEFT_KHR"/>
+ <enum name="EGL_UPPER_LEFT_KHR"/>
+ <command name="eglLockSurfaceKHR"/>
+ <command name="eglUnlockSurfaceKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface2" supported="egl">
+ <require>
+ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface3" supported="egl">
+ <require>
+ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum name="EGL_MATCH_FORMAT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum name="EGL_BITMAP_PITCH_KHR"/>
+ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ <enum name="EGL_BITMAP_POINTER_KHR"/>
+ <enum name="EGL_LOWER_LEFT_KHR"/>
+ <enum name="EGL_UPPER_LEFT_KHR"/>
+ <command name="eglLockSurfaceKHR"/>
+ <command name="eglUnlockSurfaceKHR"/>
+ <command name="eglQuerySurface64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_mutable_render_buffer" supported="egl">
+ <require>
+ <enum name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_no_config_context" supported="egl">
+ <require>
+ <enum name="EGL_NO_CONFIG_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_partial_update" supported="egl">
+ <require>
+ <enum name="EGL_BUFFER_AGE_KHR"/>
+ <command name="eglSetDamageRegionKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_android" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_ANDROID_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_gbm" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_GBM_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_wayland" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_WAYLAND_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_x11" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_X11_KHR"/>
+ <enum name="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_reusable_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_STATUS_KHR"/>
+ <enum name="EGL_SIGNALED_KHR"/>
+ <enum name="EGL_UNSIGNALED_KHR"/>
+ <enum name="EGL_TIMEOUT_EXPIRED_KHR"/>
+ <enum name="EGL_CONDITION_SATISFIED_KHR"/>
+ <enum name="EGL_SYNC_TYPE_KHR"/>
+ <enum name="EGL_SYNC_REUSABLE_KHR"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR"/>
+ <enum name="EGL_FOREVER_KHR"/>
+ <enum name="EGL_NO_SYNC_KHR"/>
+ <command name="eglCreateSyncKHR"/>
+ <command name="eglDestroySyncKHR"/>
+ <command name="eglClientWaitSyncKHR"/>
+ <command name="eglSignalSyncKHR"/>
+ <command name="eglGetSyncAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_NO_STREAM_KHR"/>
+ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <enum name="EGL_PRODUCER_FRAME_KHR"/>
+ <enum name="EGL_CONSUMER_FRAME_KHR"/>
+ <enum name="EGL_STREAM_STATE_KHR"/>
+ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <enum name="EGL_STREAM_STATE_EMPTY_KHR"/>
+ <enum name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
+ <enum name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
+ <enum name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
+ <enum name="EGL_BAD_STREAM_KHR"/>
+ <enum name="EGL_BAD_STATE_KHR"/>
+ <command name="eglCreateStreamKHR"/>
+ <command name="eglDestroyStreamKHR"/>
+ <command name="eglStreamAttribKHR"/>
+ <command name="eglQueryStreamKHR"/>
+ <command name="eglQueryStreamu64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_attrib" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <enum name="EGL_STREAM_STATE_KHR"/>
+ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <command name="eglCreateStreamAttribKHR"/>
+ <command name="eglSetStreamAttribKHR"/>
+ <command name="eglQueryStreamAttribKHR"/>
+ <command name="eglStreamConsumerAcquireAttribKHR"/>
+ <command name="eglStreamConsumerReleaseAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_consumer_gltexture" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
+ <command name="eglStreamConsumerGLTextureExternalKHR"/>
+ <command name="eglStreamConsumerAcquireKHR"/>
+ <command name="eglStreamConsumerReleaseKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_cross_process_fd" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
+ <command name="eglGetStreamFileDescriptorKHR"/>
+ <command name="eglCreateStreamFromFileDescriptorKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_fifo" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FIFO_LENGTH_KHR"/>
+ <enum name="EGL_STREAM_TIME_NOW_KHR"/>
+ <enum name="EGL_STREAM_TIME_CONSUMER_KHR"/>
+ <enum name="EGL_STREAM_TIME_PRODUCER_KHR"/>
+ <command name="eglQueryStreamTimeKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_producer_aldatalocator" protect="EGL_KHR_stream" supported="egl"/>
+ <extension name="EGL_KHR_stream_producer_eglsurface" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_BIT_KHR"/>
+ <command name="eglCreateStreamProducerSurfaceKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_surfaceless_context" supported="egl" comment="Just relaxes an error condition"/>
+ <extension name="EGL_KHR_swap_buffers_with_damage" supported="egl">
+ <require>
+ <command name="eglSwapBuffersWithDamageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_vg_parent_image" supported="egl">
+ <require>
+ <enum name="EGL_VG_PARENT_IMAGE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_wait_sync" supported="egl">
+ <require>
+ <command name="eglWaitSyncKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_drm_image" supported="egl">
+ <require>
+ <enum name="EGL_DRM_BUFFER_FORMAT_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
+ <enum name="EGL_DRM_BUFFER_MESA"/>
+ <enum name="EGL_DRM_BUFFER_STRIDE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
+ <command name="eglCreateDRMImageMESA"/>
+ <command name="eglExportDRMImageMESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_image_dma_buf_export" supported="egl">
+ <require>
+ <type name="EGLuint64KHR"/>
+ <command name="eglExportDMABUFImageQueryMESA"/>
+ <command name="eglExportDMABUFImageMESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_platform_gbm" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_GBM_MESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_platform_surfaceless" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_query_driver" supported="egl">
+ <require>
+ <command name="eglGetDisplayDriverConfig"/>
+ <command name="eglGetDisplayDriverName"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_swap_region" supported="egl">
+ <require>
+ <command name="eglSwapBuffersRegionNOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_swap_region2" supported="egl">
+ <require>
+ <command name="eglSwapBuffersRegion2NOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_texture_from_pixmap" supported="egl">
+ <require>
+ <enum name="EGL_Y_INVERTED_NOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_3dvision_surface" supported="egl">
+ <require>
+ <enum name="EGL_AUTO_STEREO_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_coverage_sample" supported="egl">
+ <require>
+ <enum name="EGL_COVERAGE_BUFFERS_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLES_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_context_priority_realtime" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_coverage_sample_resolve" supported="egl">
+ <require>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_cuda_event" supported="egl">
+ <require>
+ <enum name="EGL_CUDA_EVENT_HANDLE_NV"/>
+ <enum name="EGL_SYNC_CUDA_EVENT_NV"/>
+ <enum name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_depth_nonlinear" supported="egl">
+ <require>
+ <enum name="EGL_DEPTH_ENCODING_NV"/>
+ <enum name="EGL_DEPTH_ENCODING_NONE_NV"/>
+ <enum name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_device_cuda" supported="egl">
+ <require>
+ <enum name="EGL_CUDA_DEVICE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_native_query" supported="egl">
+ <require>
+ <command name="eglQueryNativeDisplayNV"/>
+ <command name="eglQueryNativeWindowNV"/>
+ <command name="eglQueryNativePixmapNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_post_convert_rounding" supported="egl">
+ <require>
+ </require>
+ </extension>
+ <extension name="EGL_NV_post_sub_buffer" supported="egl">
+ <require>
+ <enum name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
+ <command name="eglPostSubBufferNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_quadruple_buffer" supported="egl">
+ <require>
+ <enum name="EGL_QUADRUPLE_BUFFER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_robustness_video_memory_purge" supported="egl">
+ <require>
+ <enum name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_consumer_gltexture_yuv" supported="egl">
+ <require>
+ <enum name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_PLANE1_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_PLANE2_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum name="EGL_YUV_BUFFER_EXT"/>
+ <command name="eglStreamConsumerGLTextureExternalAttribsNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_object" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_display" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_partition" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_process" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_system" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_SYSTEM_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_dma" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_DMA_NV"/>
+ <enum name="EGL_STREAM_DMA_SERVER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_consumer_eglimage" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
+ <enum name="EGL_STREAM_IMAGE_ADD_NV"/>
+ <enum name="EGL_STREAM_IMAGE_REMOVE_NV"/>
+ <enum name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
+ <command name="eglStreamImageConsumerConnectNV"/>
+ <command name="eglQueryStreamConsumerEventNV"/>
+ <command name="eglStreamAcquireImageNV"/>
+ <command name="eglStreamReleaseImageNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_next" supported="egl">
+ <require>
+ <enum name="EGL_PENDING_FRAME_NV"/>
+ <enum name="EGL_STREAM_TIME_PENDING_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_synchronous" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_flush" supported="egl">
+ <require>
+ <command name="eglStreamFlushNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_frame_limits" supported="egl">
+ <require>
+ <enum name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_metadata" supported="egl">
+ <require>
+ <enum name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
+ <enum name="EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV"/>
+ <enum name="EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV"/>
+ <enum name="EGL_PRODUCER_METADATA_NV"/>
+ <enum name="EGL_CONSUMER_METADATA_NV"/>
+ <enum name="EGL_PENDING_METADATA_NV"/>
+ <enum name="EGL_METADATA0_SIZE_NV"/>
+ <enum name="EGL_METADATA1_SIZE_NV"/>
+ <enum name="EGL_METADATA2_SIZE_NV"/>
+ <enum name="EGL_METADATA3_SIZE_NV"/>
+ <enum name="EGL_METADATA0_TYPE_NV"/>
+ <enum name="EGL_METADATA1_TYPE_NV"/>
+ <enum name="EGL_METADATA2_TYPE_NV"/>
+ <enum name="EGL_METADATA3_TYPE_NV"/>
+ <command name="eglQueryDisplayAttribNV"/>
+ <command name="eglSetStreamMetadataNV"/>
+ <command name="eglQueryStreamMetadataNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_reset" supported="egl">
+ <require>
+ <enum name="EGL_SUPPORT_RESET_NV"/>
+ <enum name="EGL_SUPPORT_REUSE_NV"/>
+ <command name="eglResetStreamNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_remote" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum name="EGL_STREAM_TYPE_NV"/>
+ <enum name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum name="EGL_STREAM_LOCAL_NV"/>
+ <enum name="EGL_STREAM_PRODUCER_NV"/>
+ <enum name="EGL_STREAM_CONSUMER_NV"/>
+ </require>
+ <require comment="Supported only if EGL_KHR_stream_cross_process_fd is supported">
+ <enum name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum name="EGL_SOCKET_HANDLE_NV"/>
+ <enum name="EGL_SOCKET_TYPE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_inet" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_INET_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_unix" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_TYPE_KHR"/>
+ <enum name="EGL_SYNC_NEW_FRAME_NV"/>
+ <command name="eglCreateStreamSyncNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
+ <enum name="EGL_SYNC_STATUS_NV"/>
+ <enum name="EGL_SIGNALED_NV"/>
+ <enum name="EGL_UNSIGNALED_NV"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV"/>
+ <enum name="EGL_FOREVER_NV"/>
+ <enum name="EGL_ALREADY_SIGNALED_NV"/>
+ <enum name="EGL_TIMEOUT_EXPIRED_NV"/>
+ <enum name="EGL_CONDITION_SATISFIED_NV"/>
+ <enum name="EGL_SYNC_TYPE_NV"/>
+ <enum name="EGL_SYNC_CONDITION_NV"/>
+ <enum name="EGL_SYNC_FENCE_NV"/>
+ <enum name="EGL_NO_SYNC_NV"/>
+ <command name="eglCreateFenceSyncNV"/>
+ <command name="eglDestroySyncNV"/>
+ <command name="eglFenceNV"/>
+ <command name="eglClientWaitSyncNV"/>
+ <command name="eglSignalSyncNV"/>
+ <command name="eglGetSyncAttribNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_system_time" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <command name="eglGetSystemTimeFrequencyNV"/>
+ <command name="eglGetSystemTimeNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_triple_buffer" supported="egl">
+ <require>
+ <enum name="EGL_TRIPLE_BUFFER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_TIZEN_image_native_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_TIZEN"/>
+ </require>
+ </extension>
+ <extension name="EGL_TIZEN_image_native_surface" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_SURFACE_TIZEN"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_compositor" supported="egl">
+ <require>
+ <enum name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+
+ <command name="eglCompositorSetContextListEXT"/>
+ <command name="eglCompositorSetContextAttributesEXT"/>
+ <command name="eglCompositorSetWindowListEXT"/>
+ <command name="eglCompositorSetWindowAttributesEXT"/>
+ <command name="eglCompositorBindTexWindowEXT"/>
+ <command name="eglCompositorSetSizeEXT"/>
+ <command name="eglCompositorSwapPolicyEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_CTA861_3_metadata" supported="egl">
+ <require>
+ <enum name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_compression" supported="egl">
+ <require>
+ <enum name="EGL_SURFACE_COMPRESSION_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_PLANE1_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_PLANE2_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT"/>
+ <command name="eglQuerySupportedCompressionRatesEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_implicit_sync_control" supported="egl">
+ <require>
+ <enum name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_bind_to_front" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_origin" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FRAME_ORIGIN_X_NV"/>
+ <enum name="EGL_STREAM_FRAME_ORIGIN_Y_NV"/>
+ <enum name="EGL_STREAM_FRAME_MAJOR_AXIS_NV"/>
+ <enum name="EGL_CONSUMER_AUTO_ORIENTATION_NV"/>
+ <enum name="EGL_PRODUCER_AUTO_ORIENTATION_NV"/>
+ <enum name="EGL_LEFT_NV"/>
+ <enum name="EGL_RIGHT_NV"/>
+ <enum name="EGL_TOP_NV"/>
+ <enum name="EGL_BOTTOM_NV"/>
+ <enum name="EGL_X_AXIS_NV"/>
+ <enum name="EGL_Y_AXIS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_WL_bind_wayland_display" supported="egl">
+ <require>
+ <enum name="EGL_WAYLAND_BUFFER_WL"/>
+ <enum name="EGL_WAYLAND_PLANE_WL"/>
+ <enum name="EGL_TEXTURE_Y_U_V_WL"/>
+ <enum name="EGL_TEXTURE_Y_UV_WL"/>
+ <enum name="EGL_TEXTURE_Y_XUXV_WL"/>
+ <enum name="EGL_TEXTURE_EXTERNAL_WL"/>
+ <enum name="EGL_WAYLAND_Y_INVERTED_WL"/>
+
+ <command name="eglBindWaylandDisplayWL"/>
+ <command name="eglUnbindWaylandDisplayWL"/>
+ <command name="eglQueryWaylandBufferWL"/>
+ <type name="PFNEGLBINDWAYLANDDISPLAYWL"/>
+ <type name="PFNEGLUNBINDWAYLANDDISPLAYWL"/>
+ <type name="PFNEGLQUERYWAYLANDBUFFERWL"/>
+ </require>
+ </extension>
+ <extension name="EGL_WL_create_wayland_buffer_from_image" supported="egl">
+ <require>
+ <command name="eglCreateWaylandBufferFromImageWL"/>
+ <type name="PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_image_format" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_query_name" supported="egl">
+ <require>
+ <enum name="EGL_RENDERER_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_persistent_id" supported="egl">
+ <require>
+ <enum name="EGL_DEVICE_UUID_EXT"/>
+ <enum name="EGL_DRIVER_UUID_EXT"/>
+ <enum name="EGL_DRIVER_NAME_EXT"/>
+ <command name="eglQueryDeviceBinaryEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_drm_render_node" supported="egl">
+ <require>
+ <enum name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_explicit_device" supported="egl">
+ <require>
+ <enum name="EGL_DEVICE_EXT"/>
+ </require>
+ </extension>
+ </extensions>
+</registry>
diff --git a/glew/auto/EGL-Registry/api/egltest.c b/glew/auto/EGL-Registry/api/egltest.c
new file mode 100644
index 0000000..cf3fe56
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/egltest.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/* Simple test that generated EGL headers compile with C and C++ */
+#include "EGL/egl.h"
+#include "EGL/eglext.h"
diff --git a/glew/auto/EGL-Registry/api/genheaders.py b/glew/auto/EGL-Registry/api/genheaders.py
new file mode 100644
index 0000000..2bf28a3
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/genheaders.py
@@ -0,0 +1,619 @@
+#!/usr/bin/python -i
+#
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+import sys, time, pdb
+from reg import *
+
+# debug - start header generation in debugger
+# dump - dump registry after loading
+# profile - enable Python profiling
+# protect - whether to use #ifndef protections
+# registry <filename> - use specified XML registry instead of gl.xml
+# target - string name of target header, or all targets if None
+# timeit - time length of registry loading & header generation
+# validate - validate return & parameter group tags against <group>
+debug = False
+dump = False
+profile = False
+protect = True
+target = None
+timeit = False
+validate= False
+# Default input / log files
+errFilename = None
+diagFilename = 'diag.txt'
+regFilename = 'gl.xml'
+
+
+# Simple timer functions
+startTime = None
+def startTimer():
+ global startTime
+ startTime = time.process_time()
+def endTimer(msg):
+ global startTime
+ endTime = time.process_time()
+ if (timeit):
+ write(msg, endTime - startTime)
+ startTime = None
+
+# Turn a list of strings into a regexp string matching exactly those strings
+def makeREstring(list):
+ return '^(' + '|'.join(list) + ')$'
+
+# These are "mandatory" OpenGL ES 1 extensions, to
+# be included in the core GLES/gl.h header.
+es1CoreList = [
+ 'GL_OES_read_format',
+ 'GL_OES_compressed_paletted_texture',
+ 'GL_OES_point_size_array',
+ 'GL_OES_point_sprite'
+]
+
+# Descriptive names for various regexp patterns used to select
+# versions and extensions
+
+allVersions = allExtensions = '.*'
+noVersions = noExtensions = None
+gl12andLaterPat = '1\.[2-9]|[234]\.[0-9]'
+gles2onlyPat = '2\.[0-9]'
+gles2through30Pat = '2\.[0-9]|3\.0'
+gles2through31Pat = '2\.[0-9]|3\.[01]'
+gles2through32Pat = '2\.[0-9]|3\.[012]'
+es1CorePat = makeREstring(es1CoreList)
+# Extensions in old glcorearb.h but not yet tagged accordingly in gl.xml
+glCoreARBPat = None
+glx13andLaterPat = '1\.[3-9]'
+
+# Copyright text prefixing all headers (list of strings).
+prefixStrings = [
+ '/*',
+ '** Copyright 2013-2020 The Khronos Group Inc.',
+ '** SPDX-' + 'License-Identifier: Apache-2.0',
+ '**',
+ '** This header is generated from the Khronos EGL XML API Registry.',
+ '** The current version of the Registry, generator scripts',
+ '** used to make the header, and the header can be found at',
+ '** http://www.khronos.org/registry/egl',
+ '**',
+ '** Khronos $' + 'Revision$ on $' + 'Date$',
+ '*/',
+ ''
+]
+
+# glext.h / glcorearb.h define calling conventions inline (no GL *platform.h)
+glExtPlatformStrings = [
+ '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)',
+ '#ifndef WIN32_LEAN_AND_MEAN',
+ '#define WIN32_LEAN_AND_MEAN 1',
+ '#endif',
+ '#include <windows.h>',
+ '#endif',
+ '',
+ '#ifndef APIENTRY',
+ '#define APIENTRY',
+ '#endif',
+ '#ifndef APIENTRYP',
+ '#define APIENTRYP APIENTRY *',
+ '#endif',
+ '#ifndef GLAPI',
+ '#define GLAPI extern',
+ '#endif',
+ ''
+]
+
+glCorearbPlatformStrings = glExtPlatformStrings + [
+ '/* glcorearb.h is for use with OpenGL core profile implementations.',
+ '** It should should be placed in the same directory as gl.h and',
+ '** included as <GL/glcorearb.h>.',
+ '**',
+ '** glcorearb.h includes only APIs in the latest OpenGL core profile',
+ '** implementation together with APIs in newer ARB extensions which ',
+ '** can be supported by the core profile. It does not, and never will',
+ '** include functionality removed from the core profile, such as',
+ '** fixed-function vertex and fragment processing.',
+ '**',
+ '** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or',
+ '** <GL/glext.h> in the same source file.',
+ '*/',
+ ''
+]
+
+# wglext.h needs Windows include
+wglPlatformStrings = [
+ '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)',
+ '#define WIN32_LEAN_AND_MEAN 1',
+ '#include <windows.h>',
+ '#endif',
+ '',
+]
+
+# Different APIs use different *platform.h files to define calling
+# conventions
+gles1PlatformStrings = [ '#include <GLES/glplatform.h>', '' ]
+gles2PlatformStrings = [ '#include <GLES2/gl2platform.h>', '' ]
+gles3PlatformStrings = [ '#include <GLES3/gl3platform.h>', '' ]
+glsc2PlatformStrings = [ '#include <GLSC2/gl2platform.h>', '' ]
+eglPlatformStrings = [ '#include <EGL/eglplatform.h>', '' ]
+
+# GLES headers have a small addition to calling convention headers for function pointer typedefs
+apiEntryPrefixStrings = [
+ '#ifndef GL_APIENTRYP',
+ '#define GL_APIENTRYP GL_APIENTRY*',
+ '#endif',
+ ''
+]
+
+# GLES 2/3 core API headers use a different protection mechanism for
+# prototypes, per bug 14206.
+glesProtoPrefixStrings = [
+ '#ifndef GL_GLES_PROTOTYPES',
+ '#define GL_GLES_PROTOTYPES 1',
+ '#endif',
+ ''
+]
+
+# EGL headers use a protection mechanism similar to GLES.
+eglProtoPrefixStrings = [
+ '#ifndef EGL_EGL_PROTOTYPES',
+ '#define EGL_EGL_PROTOTYPES 1',
+ '#endif',
+ ''
+]
+
+# Insert generation date in a comment for headers not having *GLEXT_VERSION macros
+genDateCommentString = [
+ format('/* Generated on date %s */' % time.strftime('%Y%m%d')),
+ ''
+]
+
+# GL_GLEXT_VERSION is defined only in glext.h
+glextVersionStrings = [
+ format('#define GL_GLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# WGL_WGLEXT_VERSION is defined only in wglext.h
+wglextVersionStrings = [
+ format('#define WGL_WGLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# GLX_GLXEXT_VERSION is defined only in glxext.h
+glxextVersionStrings = [
+ format('#define GLX_GLXEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# EGL_EGLEXT_VERSION is defined only in eglext.h
+eglextVersionStrings = [
+ format('#define EGL_EGLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+
+# Defaults for generating re-inclusion protection wrappers (or not)
+protectFile = protect
+protectFeature = protect
+protectProto = protect
+
+buildList = [
+ # GL API 1.2+ + extensions - GL/glext.h
+ CGeneratorOptions(
+ filename = 'GL/glext.h',
+ apiname = 'gl',
+ profile = 'compatibility',
+ versions = allVersions,
+ emitversions = gl12andLaterPat,
+ defaultExtensions = 'gl', # Default extensions for GL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + glExtPlatformStrings + glextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GLAPI ',
+ apientry = 'APIENTRY ',
+ apientryp = 'APIENTRYP '),
+ # GL core profile + extensions - GL/glcorearb.h
+ CGeneratorOptions(
+ filename = 'GL/glcorearb.h',
+ apiname = 'gl',
+ profile = 'core',
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = 'glcore', # Default extensions for GL core profile (only)
+ addExtensions = glCoreARBPat,
+ removeExtensions = None,
+ prefixText = prefixStrings + glCorearbPlatformStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GLAPI ',
+ apientry = 'APIENTRY ',
+ apientryp = 'APIENTRYP '),
+ # GLES 1.x API + mandatory extensions - GLES/gl.h (no function pointers)
+ CGeneratorOptions(
+ filename = 'GLES/gl.h',
+ apiname = 'gles1',
+ profile = 'common',
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = es1CorePat, # Add mandatory ES1 extensions in GLES1/gl.h
+ removeExtensions = None,
+ prefixText = prefixStrings + gles1PlatformStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False, # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_API ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 1.x extensions - GLES/glext.h
+ CGeneratorOptions(
+ filename = 'GLES/glext.h',
+ apiname = 'gles1',
+ profile = 'common',
+ versions = allVersions,
+ emitversions = noVersions,
+ defaultExtensions = 'gles1', # Default extensions for GLES 1
+ addExtensions = None,
+ removeExtensions = es1CorePat, # Remove mandatory ES1 extensions in GLES1/glext.h
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_API ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 2.0 API - GLES2/gl2.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES2/gl2.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles2PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.1 / 3.0 / 2.0 extensions - GLES2/gl2ext.h
+ CGeneratorOptions(
+ filename = 'GLES2/gl2ext.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = None,
+ defaultExtensions = 'gles2', # Default extensions for GLES 2
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.2 API - GLES3/gl32.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl32.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through32Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.1 API - GLES3/gl31.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl31.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through31Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.0 API - GLES3/gl3.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl3.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through30Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLSC 2.0 API - GLSC2/glsc2.h
+ CGeneratorOptions(
+ filename = 'GLSC2/glsc2.h',
+ apiname = 'glsc2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + glsc2PlatformStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLSC 2.0 extensions - GLSC2/gl2ext.h
+ CGeneratorOptions(
+ filename = 'GLSC2/glsc2ext.h',
+ apiname = 'glsc2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = None,
+ defaultExtensions = 'glsc2', # Default extensions for GLSC 2
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # EGL API - EGL/egl.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'EGL/egl.h',
+ apiname = 'egl',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + eglPlatformStrings + eglProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero',
+ protectProtoStr = 'EGL_EGL_PROTOTYPES',
+ apicall = 'EGLAPI ',
+ apientry = 'EGLAPIENTRY ',
+ apientryp = 'EGLAPIENTRYP '),
+ # EGL extensions - EGL/eglext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'EGL/eglext.h',
+ apiname = 'egl',
+ profile = None,
+ versions = allVersions,
+ emitversions = None,
+ defaultExtensions = 'egl', # Default extensions for EGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + eglPlatformStrings + eglextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'EGL_EGLEXT_PROTOTYPES',
+ apicall = 'EGLAPI ',
+ apientry = 'EGLAPIENTRY ',
+ apientryp = 'EGLAPIENTRYP '),
+ # GLX 1.* API - GL/glx.h
+ CGeneratorOptions(
+ filename = 'GL/glx.h',
+ apiname = 'glx',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ # add glXPlatformStrings?
+ prefixText = prefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GLX_GLXEXT_PROTOTYPES',
+ apicall = '',
+ apientry = '',
+ apientryp = ' *'),
+ # GLX 1.3+ API + extensions - GL/glxext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/glxext.h',
+ apiname = 'glx',
+ profile = None,
+ versions = allVersions,
+ emitversions = glx13andLaterPat,
+ defaultExtensions = 'glx', # Default extensions for GLX
+ addExtensions = None,
+ removeExtensions = None,
+ # add glXPlatformStrings?
+ prefixText = prefixStrings + glxextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GLX_GLXEXT_PROTOTYPES',
+ apicall = '',
+ apientry = '',
+ apientryp = ' *'),
+ # WGL API + extensions - GL/wgl.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/wgl.h',
+ apiname = 'wgl',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = 'wgl', # Default extensions for WGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + wglPlatformStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'WGL_WGLEXT_PROTOTYPES',
+ apicall = '',
+ apientry = 'WINAPI ',
+ apientryp = 'WINAPI * '),
+ # WGL extensions - GL/wglext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/wglext.h',
+ apiname = 'wgl',
+ profile = None,
+ versions = allVersions,
+ emitversions = None,
+ defaultExtensions = 'wgl', # Default extensions for WGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + wglPlatformStrings + wglextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'WGL_WGLEXT_PROTOTYPES',
+ apicall = '',
+ apientry = 'WINAPI ',
+ apientryp = 'WINAPI * '),
+ # End of list
+ None
+]
+
+def genHeaders():
+ # Loop over targets, building each
+ generated = 0
+ for genOpts in buildList:
+ if (genOpts == None):
+ break
+ if (target and target != genOpts.filename):
+ # write('*** Skipping', genOpts.filename)
+ continue
+ write('*** Building', genOpts.filename)
+ generated = generated + 1
+ startTimer()
+ gen = COutputGenerator(errFile=errWarn,
+ warnFile=errWarn,
+ diagFile=diag)
+ reg.setGenerator(gen)
+ reg.apiGen(genOpts)
+ write('** Generated', genOpts.filename)
+ endTimer('Time to generate ' + genOpts.filename + ' =')
+ if (target and generated == 0):
+ write('Failed to generate target:', target)
+
+if __name__ == '__main__':
+ i = 1
+ while (i < len(sys.argv)):
+ arg = sys.argv[i]
+ i = i + 1
+ if (arg == '-debug'):
+ write('Enabling debug (-debug)', file=sys.stderr)
+ debug = True
+ elif (arg == '-dump'):
+ write('Enabling dump (-dump)', file=sys.stderr)
+ dump = True
+ elif (arg == '-noprotect'):
+ write('Disabling inclusion protection in output headers', file=sys.stderr)
+ protect = False
+ elif (arg == '-profile'):
+ write('Enabling profiling (-profile)', file=sys.stderr)
+ profile = True
+ elif (arg == '-registry'):
+ regFilename = sys.argv[i]
+ i = i+1
+ write('Using registry ', regFilename, file=sys.stderr)
+ elif (arg == '-time'):
+ write('Enabling timing (-time)', file=sys.stderr)
+ timeit = True
+ elif (arg == '-validate'):
+ write('Enabling group validation (-validate)', file=sys.stderr)
+ validate = True
+ elif (arg[0:1] == '-'):
+ write('Unrecognized argument:', arg, file=sys.stderr)
+ exit(1)
+ else:
+ target = arg
+ write('Using target', target, file=sys.stderr)
+
+ # Load & parse registry
+ reg = Registry()
+
+ startTimer()
+ tree = etree.parse(regFilename)
+ endTimer('Time to make ElementTree =')
+
+ startTimer()
+ reg.loadElementTree(tree)
+ endTimer('Time to parse ElementTree =')
+
+ if (validate):
+ reg.validateGroups()
+
+ if (dump):
+ write('***************************************')
+ write('Performing Registry dump to regdump.txt')
+ write('***************************************')
+ reg.dumpReg(filehandle = open('regdump.txt','w'))
+
+ # create error/warning & diagnostic files
+ if (errFilename):
+ errWarn = open(errFilename,'w')
+ else:
+ errWarn = sys.stderr
+ diag = open(diagFilename, 'w')
+
+ if (debug):
+ pdb.run('genHeaders()')
+ elif (profile):
+ import cProfile, pstats
+ cProfile.run('genHeaders()', 'profile.txt')
+ p = pstats.Stats('profile.txt')
+ p.strip_dirs().sort_stats('time').print_stats(50)
+ else:
+ genHeaders()
diff --git a/glew/auto/EGL-Registry/api/reg.py b/glew/auto/EGL-Registry/api/reg.py
new file mode 100644
index 0000000..6ac25f3
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/reg.py
@@ -0,0 +1,1168 @@
+#!/usr/bin/python -i
+#
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+import io,os,re,string,sys
+from lxml import etree
+import subprocess
+
+def write(*args, **kwargs):
+ file = kwargs.pop('file', sys.stdout)
+ end = kwargs.pop('end', '\n')
+ file.write(' '.join([str(arg) for arg in args]))
+ file.write(end)
+
+# noneStr - returns string argument, or "" if argument is None.
+# Used in converting lxml Elements into text.
+# str - string to convert
+def noneStr(str):
+ if (str):
+ return str
+ else:
+ return ""
+
+# matchAPIProfile - returns whether an API and profile
+# being generated matches an element's profile
+# api - string naming the API to match
+# profile - string naming the profile to match
+# elem - Element which (may) have 'api' and 'profile'
+# attributes to match to.
+# If a tag is not present in the Element, the corresponding API
+# or profile always matches.
+# Otherwise, the tag must exactly match the API or profile.
+# Thus, if 'profile' = core:
+# <remove> with no attribute will match
+# <remove profile='core'> will match
+# <remove profile='compatibility'> will not match
+# Possible match conditions:
+# Requested Element
+# Profile Profile
+# --------- --------
+# None None Always matches
+# 'string' None Always matches
+# None 'string' Does not match. Can't generate multiple APIs
+# or profiles, so if an API/profile constraint
+# is present, it must be asked for explicitly.
+# 'string' 'string' Strings must match
+#
+# ** In the future, we will allow regexes for the attributes,
+# not just strings, so that api="^(gl|gles2)" will match. Even
+# this isn't really quite enough, we might prefer something
+# like "gl(core)|gles1(common-lite)".
+def matchAPIProfile(api, profile, elem):
+ """Match a requested API & profile name to a api & profile attributes of an Element"""
+ match = True
+ # Match 'api', if present
+ if ('api' in elem.attrib):
+ if (api == None):
+ raise UserWarning("No API requested, but 'api' attribute is present with value '" +
+ elem.get('api') + "'")
+ elif (api != elem.get('api')):
+ # Requested API doesn't match attribute
+ return False
+ if ('profile' in elem.attrib):
+ if (profile == None):
+ raise UserWarning("No profile requested, but 'profile' attribute is present with value '" +
+ elem.get('profile') + "'")
+ elif (profile != elem.get('profile')):
+ # Requested profile doesn't match attribute
+ return False
+ return True
+
+# BaseInfo - base class for information about a registry feature
+# (type/group/enum/command/API/extension).
+# required - should this feature be defined during header generation
+# (has it been removed by a profile or version)?
+# declared - has this feature been defined already?
+# elem - lxml.etree Element for this feature
+# resetState() - reset required/declared to initial values. Used
+# prior to generating a new API interface.
+class BaseInfo:
+ """Represents the state of a registry feature, used during API generation"""
+ def __init__(self, elem):
+ self.required = False
+ self.declared = False
+ self.elem = elem
+ def resetState(self):
+ self.required = False
+ self.declared = False
+
+# TypeInfo - registry information about a type. No additional state
+# beyond BaseInfo is required.
+class TypeInfo(BaseInfo):
+ """Represents the state of a registry type"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+
+# GroupInfo - registry information about a group of related enums.
+# enums - dictionary of enum names which are in the group
+class GroupInfo(BaseInfo):
+ """Represents the state of a registry enumerant group"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.enums = {}
+
+# EnumInfo - registry information about an enum
+# type - numeric type of the value of the <enum> tag
+# ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 )
+class EnumInfo(BaseInfo):
+ """Represents the state of a registry enum"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.type = elem.get('type')
+ if (self.type == None):
+ self.type = ''
+
+# CmdInfo - registry information about a command
+# glxtype - type of GLX protocol { None, 'render', 'single', 'vendor' }
+# glxopcode - GLX protocol opcode { None, number }
+# glxequiv - equivalent command at GLX dispatch level { None, string }
+# vecequiv - equivalent vector form of a command taking multiple scalar args
+# { None, string }
+class CmdInfo(BaseInfo):
+ """Represents the state of a registry command"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.glxtype = None
+ self.glxopcode = None
+ self.glxequiv = None
+ self.vecequiv = None
+
+# FeatureInfo - registry information about an API <feature>
+# or <extension>
+# name - feature name string (e.g. 'GL_ARB_multitexture')
+# number - feature version number (e.g. 1.2). <extension>
+# features are unversioned and assigned version number 0.
+# category - category, e.g. VERSION or ARB/KHR/OES/ETC/vendor
+# emit - has this feature been defined already?
+class FeatureInfo(BaseInfo):
+ """Represents the state of an API feature (version/extension)"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.name = elem.get('name')
+ # Determine element category (vendor). Only works
+ # for <extension> elements.
+ if (elem.tag == 'feature'):
+ self.category = 'VERSION'
+ self.number = elem.get('number')
+ else:
+ self.category = self.name.split('_', 2)[1]
+ self.number = "0"
+ self.emit = False
+
+# Primary sort key for regSortFeatures.
+# Sorts by category of the feature name string:
+# Core API features (those defined with a <feature> tag)
+# ARB/KHR/OES (Khronos extensions)
+# other (EXT/vendor extensions)
+def regSortCategoryKey(feature):
+ if (feature.elem.tag == 'feature'):
+ return 0
+ elif (feature.category == 'ARB' or
+ feature.category == 'KHR' or
+ feature.category == 'OES'):
+ return 1
+ else:
+ return 2
+
+# Secondary sort key for regSortFeatures.
+# Sorts by extension name.
+def regSortNameKey(feature):
+ return feature.name
+
+# Tertiary sort key for regSortFeatures.
+# Sorts by feature version number. <extension>
+# elements all have version number "0"
+def regSortNumberKey(feature):
+ return feature.number
+
+# regSortFeatures - default sort procedure for features.
+# Sorts by primary key of feature category,
+# then by feature name within the category,
+# then by version number
+def regSortFeatures(featureList):
+ featureList.sort(key = regSortNumberKey)
+ featureList.sort(key = regSortNameKey)
+ featureList.sort(key = regSortCategoryKey)
+
+# GeneratorOptions - base class for options used during header production
+# These options are target language independent, and used by
+# Registry.apiGen() and by base OutputGenerator objects.
+#
+# Members
+# filename - name of file to generate, or None to write to stdout.
+# apiname - string matching <api> 'apiname' attribute, e.g. 'gl'.
+# profile - string specifying API profile , e.g. 'core', or None.
+# versions - regex matching API versions to process interfaces for.
+# Normally '.*' or '[0-9]\.[0-9]' to match all defined versions.
+# emitversions - regex matching API versions to actually emit
+# interfaces for (though all requested versions are considered
+# when deciding which interfaces to generate). For GL 4.3 glext.h,
+# this might be '1\.[2-5]|[2-4]\.[0-9]'.
+# defaultExtensions - If not None, a string which must in its
+# entirety match the pattern in the "supported" attribute of
+# the <extension>. Defaults to None. Usually the same as apiname.
+# addExtensions - regex matching names of additional extensions
+# to include. Defaults to None.
+# removeExtensions - regex matching names of extensions to
+# remove (after defaultExtensions and addExtensions). Defaults
+# to None.
+# sortProcedure - takes a list of FeatureInfo objects and sorts
+# them in place to a preferred order in the generated output.
+# Default is core API versions, ARB/KHR/OES extensions, all
+# other extensions, alphabetically within each group.
+# The regex patterns can be None or empty, in which case they match
+# nothing.
+class GeneratorOptions:
+ """Represents options during header production from an API registry"""
+ def __init__(self,
+ filename = None,
+ apiname = None,
+ profile = None,
+ versions = '.*',
+ emitversions = '.*',
+ defaultExtensions = None,
+ addExtensions = None,
+ removeExtensions = None,
+ sortProcedure = regSortFeatures):
+ self.filename = filename
+ self.apiname = apiname
+ self.profile = profile
+ self.versions = self.emptyRegex(versions)
+ self.emitversions = self.emptyRegex(emitversions)
+ self.defaultExtensions = defaultExtensions
+ self.addExtensions = self.emptyRegex(addExtensions)
+ self.removeExtensions = self.emptyRegex(removeExtensions)
+ self.sortProcedure = sortProcedure
+ #
+ # Substitute a regular expression which matches no version
+ # or extension names for None or the empty string.
+ def emptyRegex(self,pat):
+ if (pat == None or pat == ''):
+ return '_nomatch_^'
+ else:
+ return pat
+
+# CGeneratorOptions - subclass of GeneratorOptions.
+#
+# Adds options used by COutputGenerator objects during C language header
+# generation.
+#
+# Additional members
+# prefixText - list of strings to prefix generated header with
+# (usually a copyright statement + calling convention macros).
+# protectFile - True if multiple inclusion protection should be
+# generated (based on the filename) around the entire header.
+# protectFeature - True if #ifndef..#endif protection should be
+# generated around a feature interface in the header file.
+# genFuncPointers - True if function pointer typedefs should be
+# generated
+# protectProto - Controls cpp protection around prototypes:
+# False - no protection
+# 'nonzero' - protectProtoStr must be defined to a nonzero value
+# True - protectProtoStr must be defined
+# protectProtoStr - #ifdef symbol to use around prototype
+# declarations, if protected
+# apicall - string to use for the function declaration prefix,
+# such as APICALL on Windows.
+# apientry - string to use for the calling convention macro,
+# in typedefs, such as APIENTRY.
+# apientryp - string to use for the calling convention macro
+# in function pointer typedefs, such as APIENTRYP.
+class CGeneratorOptions(GeneratorOptions):
+ """Represents options during C header production from an API registry"""
+ def __init__(self,
+ filename = None,
+ apiname = None,
+ profile = None,
+ versions = '.*',
+ emitversions = '.*',
+ defaultExtensions = None,
+ addExtensions = None,
+ removeExtensions = None,
+ sortProcedure = regSortFeatures,
+ prefixText = "",
+ genFuncPointers = True,
+ protectFile = True,
+ protectFeature = True,
+ protectProto = True,
+ protectProtoStr = True,
+ apicall = '',
+ apientry = '',
+ apientryp = ''):
+ GeneratorOptions.__init__(self, filename, apiname, profile,
+ versions, emitversions, defaultExtensions,
+ addExtensions, removeExtensions, sortProcedure)
+ self.prefixText = prefixText
+ self.genFuncPointers = genFuncPointers
+ self.protectFile = protectFile
+ self.protectFeature = protectFeature
+ self.protectProto = protectProto
+ self.protectProtoStr = protectProtoStr
+ self.apicall = apicall
+ self.apientry = apientry
+ self.apientryp = apientryp
+
+# OutputGenerator - base class for generating API interfaces.
+# Manages basic logic, logging, and output file control
+# Derived classes actually generate formatted output.
+#
+# ---- methods ----
+# OutputGenerator(errFile, warnFile, diagFile)
+# errFile, warnFile, diagFile - file handles to write errors,
+# warnings, diagnostics to. May be None to not write.
+# logMsg(level, *args) - log messages of different categories
+# level - 'error', 'warn', or 'diag'. 'error' will also
+# raise a UserWarning exception
+# *args - print()-style arguments
+# beginFile(genOpts) - start a new interface file
+# genOpts - GeneratorOptions controlling what's generated and how
+# endFile() - finish an interface file, closing it when done
+# beginFeature(interface, emit) - write interface for a feature
+# and tag generated features as having been done.
+# interface - element for the <version> / <extension> to generate
+# emit - actually write to the header only when True
+# endFeature() - finish an interface.
+# genType(typeinfo,name) - generate interface for a type
+# typeinfo - TypeInfo for a type
+# genEnum(enuminfo, name) - generate interface for an enum
+# enuminfo - EnumInfo for an enum
+# name - enum name
+# genCmd(cmdinfo) - generate interface for a command
+# cmdinfo - CmdInfo for a command
+class OutputGenerator:
+ """Generate specified API interfaces in a specific style, such as a C header"""
+ def __init__(self,
+ errFile = sys.stderr,
+ warnFile = sys.stderr,
+ diagFile = sys.stdout):
+ self.outFile = None
+ self.errFile = errFile
+ self.warnFile = warnFile
+ self.diagFile = diagFile
+ # Internal state
+ self.featureName = None
+ self.genOpts = None
+ #
+ # logMsg - write a message of different categories to different
+ # destinations.
+ # level -
+ # 'diag' (diagnostic, voluminous)
+ # 'warn' (warning)
+ # 'error' (fatal error - raises exception after logging)
+ # *args - print()-style arguments to direct to corresponding log
+ def logMsg(self, level, *args):
+ """Log a message at the given level. Can be ignored or log to a file"""
+ if (level == 'error'):
+ strfile = io.StringIO()
+ write('ERROR:', *args, file=strfile)
+ if (self.errFile != None):
+ write(strfile.getvalue(), file=self.errFile)
+ raise UserWarning(strfile.getvalue())
+ elif (level == 'warn'):
+ if (self.warnFile != None):
+ write('WARNING:', *args, file=self.warnFile)
+ elif (level == 'diag'):
+ if (self.diagFile != None):
+ write('DIAG:', *args, file=self.diagFile)
+ else:
+ raise UserWarning(
+ '*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
+ #
+ def beginFile(self, genOpts):
+ self.genOpts = genOpts
+ #
+ # Open specified output file. Not done in constructor since a
+ # Generator can be used without writing to a file.
+ if (self.genOpts.filename != None):
+ self.outFile = open(self.genOpts.filename, 'w')
+ else:
+ self.outFile = sys.stdout
+ def endFile(self):
+ self.errFile and self.errFile.flush()
+ self.warnFile and self.warnFile.flush()
+ self.diagFile and self.diagFile.flush()
+ self.outFile.flush()
+ if (self.outFile != sys.stdout and self.outFile != sys.stderr):
+ self.outFile.close()
+ self.genOpts = None
+ #
+ def beginFeature(self, interface, emit):
+ self.emit = emit
+ self.featureName = interface.get('name')
+ # If there's an additional 'protect' attribute in the feature, save it
+ self.featureExtraProtect = interface.get('protect')
+ def endFeature(self):
+ # Derived classes responsible for emitting feature
+ self.featureName = None
+ self.featureExtraProtect = None
+ #
+ # Type generation
+ def genType(self, typeinfo, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate type', name,
+ 'when not in feature')
+ #
+ # Enumerant generation
+ def genEnum(self, enuminfo, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate enum', name,
+ 'when not in feature')
+ #
+ # Command generation
+ def genCmd(self, cmd, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate command', name,
+ 'when not in feature')
+
+# COutputGenerator - subclass of OutputGenerator.
+# Generates C-language API interfaces.
+#
+# ---- methods ----
+# COutputGenerator(errFile, warnFile, diagFile) - args as for
+# OutputGenerator. Defines additional internal state.
+# makeCDecls(cmd) - return C prototype and function pointer typedef for a
+# <command> Element, as a list of two strings
+# cmd - Element for the <command>
+# newline() - print a newline to the output file (utility function)
+# ---- methods overriding base class ----
+# beginFile(genOpts)
+# endFile()
+# beginFeature(interface, emit)
+# endFeature()
+# genType(typeinfo,name) - generate interface for a type
+# genEnum(enuminfo, name)
+# genCmd(cmdinfo)
+class COutputGenerator(OutputGenerator):
+ """Generate specified API interfaces in a specific style, such as a C header"""
+ def __init__(self,
+ errFile = sys.stderr,
+ warnFile = sys.stderr,
+ diagFile = sys.stdout):
+ OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+ # Internal state - accumulators for different inner block text
+ self.typeBody = ''
+ self.enumBody = ''
+ self.cmdBody = ''
+ #
+ # makeCDecls - return C prototype and function pointer typedef for a
+ # command, as a two-element list of strings.
+ # cmd - Element containing a <command> tag
+ def makeCDecls(self, cmd):
+ """Generate C function pointer typedef for <command> Element"""
+ proto = cmd.find('proto')
+ params = cmd.findall('param')
+ # Begin accumulating prototype and typedef strings
+ pdecl = self.genOpts.apicall
+ tdecl = 'typedef '
+ #
+ # Insert the function return type/name.
+ # For prototypes, add APIENTRY macro before the name
+ # For typedefs, add (APIENTRYP <name>) around the name and
+ # use the PFNGLCMDNAMEPROC nameng convention.
+ # Done by walking the tree for <proto> element by element.
+ # lxml.etree has elem.text followed by (elem[i], elem[i].tail)
+ # for each child element and any following text
+ # Leading text
+ pdecl += noneStr(proto.text)
+ tdecl += noneStr(proto.text)
+ # For each child element, if it's a <name> wrap in appropriate
+ # declaration. Otherwise append its contents and tail contents.
+ for elem in proto:
+ text = noneStr(elem.text)
+ tail = noneStr(elem.tail)
+ if (elem.tag == 'name'):
+ pdecl += self.genOpts.apientry + text + tail
+ tdecl += '(' + self.genOpts.apientryp + 'PFN' + text.upper() + 'PROC' + tail + ')'
+ else:
+ pdecl += text + tail
+ tdecl += text + tail
+ # Now add the parameter declaration list, which is identical
+ # for prototypes and typedefs. Concatenate all the text from
+ # a <param> node without the tags. No tree walking required
+ # since all tags are ignored.
+ n = len(params)
+ paramdecl = ' ('
+ if n > 0:
+ for i in range(0,n):
+ paramdecl += ''.join([t for t in params[i].itertext()])
+ if (i < n - 1):
+ paramdecl += ', '
+ else:
+ paramdecl += 'void'
+ paramdecl += ');\n';
+ return [ pdecl + paramdecl, tdecl + paramdecl ]
+ #
+ def newline(self):
+ write('', file=self.outFile)
+ #
+ def beginFile(self, genOpts):
+ OutputGenerator.beginFile(self, genOpts)
+ # C-specific
+ #
+ # Multiple inclusion protection & C++ wrappers.
+ if (genOpts.protectFile and self.genOpts.filename):
+ headerSym = '__' + re.sub('\.h', '_h_', os.path.basename(self.genOpts.filename))
+ write('#ifndef', headerSym, file=self.outFile)
+ write('#define', headerSym, '1', file=self.outFile)
+ self.newline()
+ write('#ifdef __cplusplus', file=self.outFile)
+ write('extern "C" {', file=self.outFile)
+ write('#endif', file=self.outFile)
+ self.newline()
+ #
+ # User-supplied prefix text, if any (list of strings)
+ if (genOpts.prefixText):
+ try:
+ git_rev = subprocess.check_output(['git', 'rev-parse', '--short=10', 'HEAD']).decode('utf-8').strip()
+ git_date = subprocess.check_output(['git', 'log', '-1', '--format=%ai']).decode('utf-8').strip()
+ except (OSError, subprocess.CalledProcessError):
+ git_rev = 'unknown'
+ git_date = 'unknown'
+ for s in genOpts.prefixText:
+ s = s.replace('$Revision$', '$Git commit SHA1: ' + git_rev + ' $')
+ s = s.replace('$Date$', '$Git commit date: ' + git_date + ' $')
+ write(s, file=self.outFile)
+ #
+ # Some boilerplate describing what was generated - this
+ # will probably be removed later since the extensions
+ # pattern may be very long.
+ write('/* Generated C header for:', file=self.outFile)
+ write(' * API:', genOpts.apiname, file=self.outFile)
+ if (genOpts.profile):
+ write(' * Profile:', genOpts.profile, file=self.outFile)
+ write(' * Versions considered:', genOpts.versions, file=self.outFile)
+ write(' * Versions emitted:', genOpts.emitversions, file=self.outFile)
+ write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile)
+ write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile)
+ write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile)
+ write(' */', file=self.outFile)
+ def endFile(self):
+ # C-specific
+ # Finish C++ wrapper and multiple inclusion protection
+ self.newline()
+ write('#ifdef __cplusplus', file=self.outFile)
+ write('}', file=self.outFile)
+ write('#endif', file=self.outFile)
+ if (self.genOpts.protectFile and self.genOpts.filename):
+ self.newline()
+ write('#endif', file=self.outFile)
+ # Finish processing in superclass
+ OutputGenerator.endFile(self)
+ def beginFeature(self, interface, emit):
+ # Start processing in superclass
+ OutputGenerator.beginFeature(self, interface, emit)
+ # C-specific
+ # Accumulate types, enums, function pointer typedefs, end function
+ # prototypes separately for this feature. They're only printed in
+ # endFeature().
+ self.typeBody = ''
+ self.enumBody = ''
+ self.cmdPointerBody = ''
+ self.cmdBody = ''
+ def endFeature(self):
+ # C-specific
+ # Actually write the interface to the output file.
+ if (self.emit):
+ self.newline()
+ if (self.genOpts.protectFeature):
+ write('#ifndef', self.featureName, file=self.outFile)
+ write('#define', self.featureName, '1', file=self.outFile)
+ if (self.typeBody != ''):
+ write(self.typeBody, end='', file=self.outFile)
+ #
+ # Don't add additional protection for derived type declarations,
+ # which may be needed by other features later on.
+ if (self.featureExtraProtect != None):
+ write('#ifdef', self.featureExtraProtect, file=self.outFile)
+ if (self.enumBody != ''):
+ write(self.enumBody, end='', file=self.outFile)
+ if (self.genOpts.genFuncPointers and self.cmdPointerBody != ''):
+ write(self.cmdPointerBody, end='', file=self.outFile)
+ if (self.cmdBody != ''):
+ if (self.genOpts.protectProto == True):
+ prefix = '#ifdef ' + self.genOpts.protectProtoStr + '\n'
+ suffix = '#endif\n'
+ elif (self.genOpts.protectProto == 'nonzero'):
+ prefix = '#if ' + self.genOpts.protectProtoStr + '\n'
+ suffix = '#endif\n'
+ elif (self.genOpts.protectProto == False):
+ prefix = ''
+ suffix = ''
+ else:
+ self.gen.logMsg('warn',
+ '*** Unrecognized value for protectProto:',
+ self.genOpts.protectProto,
+ 'not generating prototype wrappers')
+ prefix = ''
+ suffix = ''
+
+ write(prefix + self.cmdBody + suffix, end='', file=self.outFile)
+ if (self.featureExtraProtect != None):
+ write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile)
+ if (self.genOpts.protectFeature):
+ write('#endif /*', self.featureName, '*/', file=self.outFile)
+ # Finish processing in superclass
+ OutputGenerator.endFeature(self)
+ #
+ # Type generation
+ def genType(self, typeinfo, name):
+ OutputGenerator.genType(self, typeinfo, name)
+ #
+ # Replace <apientry /> tags with an APIENTRY-style string
+ # (from self.genOpts). Copy other text through unchanged.
+ # If the resulting text is an empty string, don't emit it.
+ typeElem = typeinfo.elem
+ s = noneStr(typeElem.text)
+ for elem in typeElem:
+ if (elem.tag == 'apientry'):
+ s += self.genOpts.apientry + noneStr(elem.tail)
+ else:
+ s += noneStr(elem.text) + noneStr(elem.tail)
+ if (len(s) > 0):
+ self.typeBody += s + '\n'
+ #
+ # Enumerant generation
+ def genEnum(self, enuminfo, name):
+ OutputGenerator.genEnum(self, enuminfo, name)
+ #
+ # EnumInfo.type is a C value suffix (e.g. u, ull)
+ self.enumBody += '#define ' + name.ljust(33) + ' ' + enuminfo.elem.get('value')
+ #
+ # Handle non-integer 'type' fields by using it as the C value suffix
+ t = enuminfo.elem.get('type')
+ if (t != '' and t != 'i'):
+ self.enumBody += enuminfo.type
+ self.enumBody += '\n'
+ #
+ # Command generation
+ def genCmd(self, cmdinfo, name):
+ OutputGenerator.genCmd(self, cmdinfo, name)
+ #
+ decls = self.makeCDecls(cmdinfo.elem)
+ self.cmdBody += decls[0]
+ if (self.genOpts.genFuncPointers):
+ self.cmdPointerBody += decls[1]
+
+# Registry - object representing an API registry, loaded from an XML file
+# Members
+# tree - ElementTree containing the root <registry>
+# typedict - dictionary of TypeInfo objects keyed by type name
+# groupdict - dictionary of GroupInfo objects keyed by group name
+# enumdict - dictionary of EnumInfo objects keyed by enum name
+# cmddict - dictionary of CmdInfo objects keyed by command name
+# apidict - dictionary of <api> Elements keyed by API name
+# extensions - list of <extension> Elements
+# extdict - dictionary of <extension> Elements keyed by extension name
+# gen - OutputGenerator object used to write headers / messages
+# genOpts - GeneratorOptions object used to control which
+# fetures to write and how to format them
+# emitFeatures - True to actually emit features for a version / extension,
+# or False to just treat them as emitted
+# Public methods
+# loadElementTree(etree) - load registry from specified ElementTree
+# loadFile(filename) - load registry from XML file
+# setGenerator(gen) - OutputGenerator to use
+# parseTree() - parse the registry once loaded & create dictionaries
+# dumpReg(maxlen, filehandle) - diagnostic to dump the dictionaries
+# to specified file handle (default stdout). Truncates type /
+# enum / command elements to maxlen characters (default 80)
+# generator(g) - specify the output generator object
+# apiGen(apiname, genOpts) - generate API headers for the API type
+# and profile specified in genOpts, but only for the versions and
+# extensions specified there.
+# apiReset() - call between calls to apiGen() to reset internal state
+# validateGroups() - call to verify that each <proto> or <param>
+# with a 'group' attribute matches an actual existing group.
+# Private methods
+# addElementInfo(elem,info,infoName,dictionary) - add feature info to dict
+# lookupElementInfo(fname,dictionary) - lookup feature info in dict
+class Registry:
+ """Represents an API registry loaded from XML"""
+ def __init__(self):
+ self.tree = None
+ self.typedict = {}
+ self.groupdict = {}
+ self.enumdict = {}
+ self.cmddict = {}
+ self.apidict = {}
+ self.extensions = []
+ self.extdict = {}
+ # A default output generator, so commands prior to apiGen can report
+ # errors via the generator object.
+ self.gen = OutputGenerator()
+ self.genOpts = None
+ self.emitFeatures = False
+ def loadElementTree(self, tree):
+ """Load ElementTree into a Registry object and parse it"""
+ self.tree = tree
+ self.parseTree()
+ def loadFile(self, file):
+ """Load an API registry XML file into a Registry object and parse it"""
+ self.tree = etree.parse(file)
+ self.parseTree()
+ def setGenerator(self, gen):
+ """Specify output generator object. None restores the default generator"""
+ self.gen = gen
+ # addElementInfo - add information about an element to the
+ # corresponding dictionary
+ # elem - <type>/<group>/<enum>/<command>/<feature>/<extension> Element
+ # info - corresponding {Type|Group|Enum|Cmd|Feature}Info object
+ # infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension'
+ # dictionary - self.{type|group|enum|cmd|api|ext}dict
+ # If the Element has an 'api' attribute, the dictionary key is the
+ # tuple (name,api). If not, the key is the name. 'name' is an
+ # attribute of the Element
+ def addElementInfo(self, elem, info, infoName, dictionary):
+ if ('api' in elem.attrib):
+ key = (elem.get('name'),elem.get('api'))
+ else:
+ key = elem.get('name')
+ if key in dictionary:
+ self.gen.logMsg('warn', '*** Attempt to redefine',
+ infoName, 'with key:', key)
+ else:
+ dictionary[key] = info
+ #
+ # lookupElementInfo - find a {Type|Enum|Cmd}Info object by name.
+ # If an object qualified by API name exists, use that.
+ # fname - name of type / enum / command
+ # dictionary - self.{type|enum|cmd}dict
+ def lookupElementInfo(self, fname, dictionary):
+ key = (fname, self.genOpts.apiname)
+ if (key in dictionary):
+ # self.gen.logMsg('diag', 'Found API-specific element for feature', fname)
+ return dictionary[key]
+ elif (fname in dictionary):
+ # self.gen.logMsg('diag', 'Found generic element for feature', fname)
+ return dictionary[fname]
+ else:
+ return None
+ def parseTree(self):
+ """Parse the registry Element, once created"""
+ # This must be the Element for the root <registry>
+ self.reg = self.tree.getroot()
+ #
+ # Create dictionary of registry types from toplevel <types> tags
+ # and add 'name' attribute to each <type> tag (where missing)
+ # based on its <name> element.
+ #
+ # There's usually one <types> block; more are OK
+ # Required <type> attributes: 'name' or nested <name> tag contents
+ self.typedict = {}
+ for type in self.reg.findall('types/type'):
+ # If the <type> doesn't already have a 'name' attribute, set
+ # it from contents of its <name> tag.
+ if (type.get('name') == None):
+ type.attrib['name'] = type.find('name').text
+ self.addElementInfo(type, TypeInfo(type), 'type', self.typedict)
+ #
+ # Create dictionary of registry groups from toplevel <groups> tags.
+ #
+ # There's usually one <groups> block; more are OK.
+ # Required <group> attributes: 'name'
+ self.groupdict = {}
+ for group in self.reg.findall('groups/group'):
+ self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict)
+ #
+ # Create dictionary of registry enums from toplevel <enums> tags
+ #
+ # There are usually many <enums> tags in different namespaces, but
+ # these are functional namespaces of the values, while the actual
+ # enum names all share the dictionary.
+ # Required <enums> attributes: 'name', 'value'
+ self.enumdict = {}
+ for enum in self.reg.findall('enums/enum'):
+ self.addElementInfo(enum, EnumInfo(enum), 'enum', self.enumdict)
+ #
+ # Create dictionary of registry commands from <command> tags
+ # and add 'name' attribute to each <command> tag (where missing)
+ # based on its <proto><name> element.
+ #
+ # There's usually only one <commands> block; more are OK.
+ # Required <command> attributes: 'name' or <proto><name> tag contents
+ self.cmddict = {}
+ for cmd in self.reg.findall('commands/command'):
+ # If the <command> doesn't already have a 'name' attribute, set
+ # it from contents of its <proto><name> tag.
+ if (cmd.get('name') == None):
+ cmd.attrib['name'] = cmd.find('proto/name').text
+ ci = CmdInfo(cmd)
+ self.addElementInfo(cmd, ci, 'command', self.cmddict)
+ #
+ # Create dictionaries of API and extension interfaces
+ # from toplevel <api> and <extension> tags.
+ #
+ self.apidict = {}
+ for feature in self.reg.findall('feature'):
+ ai = FeatureInfo(feature)
+ self.addElementInfo(feature, ai, 'feature', self.apidict)
+ self.extensions = self.reg.findall('extensions/extension')
+ self.extdict = {}
+ for feature in self.extensions:
+ ei = FeatureInfo(feature)
+ self.addElementInfo(feature, ei, 'extension', self.extdict)
+ def dumpReg(self, maxlen = 40, filehandle = sys.stdout):
+ """Dump all the dictionaries constructed from the Registry object"""
+ write('***************************************', file=filehandle)
+ write(' ** Dumping Registry contents **', file=filehandle)
+ write('***************************************', file=filehandle)
+ write('// Types', file=filehandle)
+ for name in self.typedict:
+ tobj = self.typedict[name]
+ write(' Type', name, '->', etree.tostring(tobj.elem)[0:maxlen], file=filehandle)
+ write('// Groups', file=filehandle)
+ for name in self.groupdict:
+ gobj = self.groupdict[name]
+ write(' Group', name, '->', etree.tostring(gobj.elem)[0:maxlen], file=filehandle)
+ write('// Enums', file=filehandle)
+ for name in self.enumdict:
+ eobj = self.enumdict[name]
+ write(' Enum', name, '->', etree.tostring(eobj.elem)[0:maxlen], file=filehandle)
+ write('// Commands', file=filehandle)
+ for name in self.cmddict:
+ cobj = self.cmddict[name]
+ write(' Command', name, '->', etree.tostring(cobj.elem)[0:maxlen], file=filehandle)
+ write('// APIs', file=filehandle)
+ for key in self.apidict:
+ write(' API Version ', key, '->',
+ etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle)
+ write('// Extensions', file=filehandle)
+ for key in self.extdict:
+ write(' Extension', key, '->',
+ etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
+ # write('***************************************', file=filehandle)
+ # write(' ** Dumping XML ElementTree **', file=filehandle)
+ # write('***************************************', file=filehandle)
+ # write(etree.tostring(self.tree.getroot(),pretty_print=True), file=filehandle)
+ #
+ # typename - name of type
+ # required - boolean (to tag features as required or not)
+ def markTypeRequired(self, typename, required):
+ """Require (along with its dependencies) or remove (but not its dependencies) a type"""
+ self.gen.logMsg('diag', '*** tagging type:', typename, '-> required =', required)
+ # Get TypeInfo object for <type> tag corresponding to typename
+ type = self.lookupElementInfo(typename, self.typedict)
+ if (type != None):
+ # Tag required type dependencies as required.
+ # This DOES NOT un-tag dependencies in a <remove> tag.
+ # See comments in markRequired() below for the reason.
+ if (required and ('requires' in type.elem.attrib)):
+ depType = type.elem.get('requires')
+ self.gen.logMsg('diag', '*** Generating dependent type',
+ depType, 'for type', typename)
+ self.markTypeRequired(depType, required)
+ type.required = required
+ else:
+ self.gen.logMsg('warn', '*** type:', typename , 'IS NOT DEFINED')
+ #
+ # features - Element for <require> or <remove> tag
+ # required - boolean (to tag features as required or not)
+ def markRequired(self, features, required):
+ """Require or remove features specified in the Element"""
+ self.gen.logMsg('diag', '*** markRequired (features = <too long to print>, required =', required, ')')
+ # Loop over types, enums, and commands in the tag
+ # @@ It would be possible to respect 'api' and 'profile' attributes
+ # in individual features, but that's not done yet.
+ for typeElem in features.findall('type'):
+ self.markTypeRequired(typeElem.get('name'), required)
+ for enumElem in features.findall('enum'):
+ name = enumElem.get('name')
+ self.gen.logMsg('diag', '*** tagging enum:', name, '-> required =', required)
+ enum = self.lookupElementInfo(name, self.enumdict)
+ if (enum != None):
+ enum.required = required
+ else:
+ self.gen.logMsg('warn', '*** enum:', name , 'IS NOT DEFINED')
+ for cmdElem in features.findall('command'):
+ name = cmdElem.get('name')
+ self.gen.logMsg('diag', '*** tagging command:', name, '-> required =', required)
+ cmd = self.lookupElementInfo(name, self.cmddict)
+ if (cmd != None):
+ cmd.required = required
+ # Tag all parameter types of this command as required.
+ # This DOES NOT remove types of commands in a <remove>
+ # tag, because many other commands may use the same type.
+ # We could be more clever and reference count types,
+ # instead of using a boolean.
+ if (required):
+ # Look for <ptype> in entire <command> tree,
+ # not just immediate children
+ for ptype in cmd.elem.findall('.//ptype'):
+ self.gen.logMsg('diag', '*** markRequired: command implicitly requires dependent type', ptype.text)
+ self.markTypeRequired(ptype.text, required)
+ else:
+ self.gen.logMsg('warn', '*** command:', name, 'IS NOT DEFINED')
+ #
+ # interface - Element for <version> or <extension>, containing
+ # <require> and <remove> tags
+ # api - string specifying API name being generated
+ # profile - string specifying API profile being generated
+ def requireAndRemoveFeatures(self, interface, api, profile):
+ """Process <recquire> and <remove> tags for a <version> or <extension>"""
+ # <require> marks things that are required by this version/profile
+ for feature in interface.findall('require'):
+ if (matchAPIProfile(api, profile, feature)):
+ self.markRequired(feature,True)
+ # <remove> marks things that are removed by this version/profile
+ for feature in interface.findall('remove'):
+ if (matchAPIProfile(api, profile, feature)):
+ self.markRequired(feature,False)
+ #
+ # generateFeature - generate a single type / enum / command,
+ # and all its dependencies as needed.
+ # fname - name of feature (<type>/<enum>/<command>
+ # ftype - type of feature, 'type' | 'enum' | 'command'
+ # dictionary - of *Info objects - self.{type|enum|cmd}dict
+ # genProc - bound function pointer for self.gen.gen{Type|Enum|Cmd}
+ def generateFeature(self, fname, ftype, dictionary, genProc):
+ f = self.lookupElementInfo(fname, dictionary)
+ if (f == None):
+ # No such feature. This is an error, but reported earlier
+ self.gen.logMsg('diag', '*** No entry found for feature', fname,
+ 'returning!')
+ return
+ #
+ # If feature isn't required, or has already been declared, return
+ if (not f.required):
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(not required)')
+ return
+ if (f.declared):
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(already declared)')
+ return
+ #
+ # Pull in dependent type declaration(s) of the feature.
+ # For types, there may be one in the 'required' attribute of the element
+ # For commands, there may be many in <ptype> tags within the element
+ # For enums, no dependencies are allowed (though perhasps if you
+ # have a uint64 enum, it should require GLuint64)
+ if (ftype == 'type'):
+ if ('requires' in f.elem.attrib):
+ depname = f.elem.get('requires')
+ self.gen.logMsg('diag', '*** Generating required dependent type',
+ depname)
+ self.generateFeature(depname, 'type', self.typedict,
+ self.gen.genType)
+ elif (ftype == 'command'):
+ for ptype in f.elem.findall('.//ptype'):
+ depname = ptype.text
+ self.gen.logMsg('diag', '*** Generating required parameter type',
+ depname)
+ self.generateFeature(depname, 'type', self.typedict,
+ self.gen.genType)
+ #
+ # Actually generate the type only if emitting declarations
+ if self.emitFeatures:
+ self.gen.logMsg('diag', '*** Emitting', ftype, 'decl for', fname)
+ genProc(f, fname)
+ else:
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname,
+ '(not emitting this feature)')
+ # Always mark feature declared, as though actually emitted
+ f.declared = True
+ #
+ # generateRequiredInterface - generate all interfaces required
+ # by an API version or extension
+ # interface - Element for <version> or <extension>
+ def generateRequiredInterface(self, interface):
+ """Generate required C interface for specified API version/extension"""
+ #
+ # Loop over all features inside all <require> tags.
+ # <remove> tags are ignored (handled in pass 1).
+ for features in interface.findall('require'):
+ for t in features.findall('type'):
+ self.generateFeature(t.get('name'), 'type', self.typedict,
+ self.gen.genType)
+ for e in features.findall('enum'):
+ self.generateFeature(e.get('name'), 'enum', self.enumdict,
+ self.gen.genEnum)
+ for c in features.findall('command'):
+ self.generateFeature(c.get('name'), 'command', self.cmddict,
+ self.gen.genCmd)
+ #
+ # apiGen(genOpts) - generate interface for specified versions
+ # genOpts - GeneratorOptions object with parameters used
+ # by the Generator object.
+ def apiGen(self, genOpts):
+ """Generate interfaces for the specified API type and range of versions"""
+ #
+ self.gen.logMsg('diag', '*******************************************')
+ self.gen.logMsg('diag', ' Registry.apiGen file:', genOpts.filename,
+ 'api:', genOpts.apiname,
+ 'profile:', genOpts.profile)
+ self.gen.logMsg('diag', '*******************************************')
+ #
+ self.genOpts = genOpts
+ # Reset required/declared flags for all features
+ self.apiReset()
+ #
+ # Compile regexps used to select versions & extensions
+ regVersions = re.compile(self.genOpts.versions)
+ regEmitVersions = re.compile(self.genOpts.emitversions)
+ regAddExtensions = re.compile(self.genOpts.addExtensions)
+ regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
+ #
+ # Get all matching API versions & add to list of FeatureInfo
+ features = []
+ apiMatch = False
+ for key in self.apidict:
+ fi = self.apidict[key]
+ api = fi.elem.get('api')
+ if (api == self.genOpts.apiname):
+ apiMatch = True
+ if (regVersions.match(fi.number)):
+ # Matches API & version #s being generated. Mark for
+ # emission and add to the features[] list .
+ # @@ Could use 'declared' instead of 'emit'?
+ fi.emit = (regEmitVersions.match(fi.number) != None)
+ features.append(fi)
+ if (not fi.emit):
+ self.gen.logMsg('diag', '*** NOT tagging feature api =', api,
+ 'name =', fi.name, 'number =', fi.number,
+ 'for emission (does not match emitversions pattern)')
+ else:
+ self.gen.logMsg('diag', '*** NOT including feature api =', api,
+ 'name =', fi.name, 'number =', fi.number,
+ '(does not match requested versions)')
+ else:
+ self.gen.logMsg('diag', '*** NOT including feature api =', api,
+ 'name =', fi.name,
+ '(does not match requested API)')
+ if (not apiMatch):
+ self.gen.logMsg('warn', '*** No matching API versions found!')
+ #
+ # Get all matching extensions & add to the list.
+ # Start with extensions tagged with 'api' pattern matching the API
+ # being generated. Add extensions matching the pattern specified in
+ # regExtensions, then remove extensions matching the pattern
+ # specified in regRemoveExtensions
+ for key in self.extdict:
+ ei = self.extdict[key]
+ extName = ei.name
+ include = False
+ #
+ # Include extension if defaultExtensions is not None and if the
+ # 'supported' attribute matches defaultExtensions. The regexp in
+ # 'supported' must exactly match defaultExtensions, so bracket
+ # it with ^(pat)$.
+ pat = '^(' + ei.elem.get('supported') + ')$'
+ if (self.genOpts.defaultExtensions and
+ re.match(pat, self.genOpts.defaultExtensions)):
+ self.gen.logMsg('diag', '*** Including extension',
+ extName, "(defaultExtensions matches the 'supported' attribute)")
+ include = True
+ #
+ # Include additional extensions if the extension name matches
+ # the regexp specified in the generator options. This allows
+ # forcing extensions into an interface even if they're not
+ # tagged appropriately in the registry.
+ if (regAddExtensions.match(extName) != None):
+ self.gen.logMsg('diag', '*** Including extension',
+ extName, '(matches explicitly requested extensions to add)')
+ include = True
+ # Remove extensions if the name matches the regexp specified
+ # in generator options. This allows forcing removal of
+ # extensions from an interface even if they're tagged that
+ # way in the registry.
+ if (regRemoveExtensions.match(extName) != None):
+ self.gen.logMsg('diag', '*** Removing extension',
+ extName, '(matches explicitly requested extensions to remove)')
+ include = False
+ #
+ # If the extension is to be included, add it to the
+ # extension features list.
+ if (include):
+ ei.emit = True
+ features.append(ei)
+ else:
+ self.gen.logMsg('diag', '*** NOT including extension',
+ extName, '(does not match api attribute or explicitly requested extensions)')
+ #
+ # Sort the extension features list, if a sort procedure is defined
+ if (self.genOpts.sortProcedure):
+ self.genOpts.sortProcedure(features)
+ #
+ # Pass 1: loop over requested API versions and extensions tagging
+ # types/commands/features as required (in an <require> block) or no
+ # longer required (in an <exclude> block). It is possible to remove
+ # a feature in one version and restore it later by requiring it in
+ # a later version.
+ # If a profile other than 'None' is being generated, it must
+ # match the profile attribute (if any) of the <require> and
+ # <remove> tags.
+ self.gen.logMsg('diag', '*** PASS 1: TAG FEATURES ********************************************')
+ for f in features:
+ self.gen.logMsg('diag', '*** PASS 1: Tagging required and removed features for',
+ f.name)
+ self.requireAndRemoveFeatures(f.elem, self.genOpts.apiname, self.genOpts.profile)
+ #
+ # Pass 2: loop over specified API versions and extensions printing
+ # declarations for required things which haven't already been
+ # generated.
+ self.gen.logMsg('diag', '*** PASS 2: GENERATE INTERFACES FOR FEATURES ************************')
+ self.gen.beginFile(self.genOpts)
+ for f in features:
+ self.gen.logMsg('diag', '*** PASS 2: Generating interface for',
+ f.name)
+ emit = self.emitFeatures = f.emit
+ if (not emit):
+ self.gen.logMsg('diag', '*** PASS 2: NOT declaring feature',
+ f.elem.get('name'), 'because it is not tagged for emission')
+ # Generate the interface (or just tag its elements as having been
+ # emitted, if they haven't been).
+ self.gen.beginFeature(f.elem, emit)
+ self.generateRequiredInterface(f.elem)
+ self.gen.endFeature()
+ self.gen.endFile()
+ #
+ # apiReset - use between apiGen() calls to reset internal state
+ #
+ def apiReset(self):
+ """Reset type/enum/command dictionaries before generating another API"""
+ for type in self.typedict:
+ self.typedict[type].resetState()
+ for enum in self.enumdict:
+ self.enumdict[enum].resetState()
+ for cmd in self.cmddict:
+ self.cmddict[cmd].resetState()
+ for cmd in self.apidict:
+ self.apidict[cmd].resetState()
+ #
+ # validateGroups - check that group= attributes match actual groups
+ #
+ def validateGroups(self):
+ """Validate group= attributes on <param> and <proto> tags"""
+ # Keep track of group names not in <group> tags
+ badGroup = {}
+ self.gen.logMsg('diag', '*** VALIDATING GROUP ATTRIBUTES ***')
+ for cmd in self.reg.findall('commands/command'):
+ proto = cmd.find('proto')
+ funcname = cmd.find('proto/name').text
+ if ('group' in proto.attrib.keys()):
+ group = proto.get('group')
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' has return group ', group)
+ if (group not in self.groupdict.keys()):
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' has UNKNOWN return group ', group)
+ if (group not in badGroup.keys()):
+ badGroup[group] = 1
+ else:
+ badGroup[group] = badGroup[group] + 1
+ for param in cmd.findall('param'):
+ pname = param.find('name')
+ if (pname != None):
+ pname = pname.text
+ else:
+ pname = type.get('name')
+ if ('group' in param.attrib.keys()):
+ group = param.get('group')
+ if (group not in self.groupdict.keys()):
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' param ', pname, ' has UNKNOWN group ', group)
+ if (group not in badGroup.keys()):
+ badGroup[group] = 1
+ else:
+ badGroup[group] = badGroup[group] + 1
+ if (len(badGroup.keys()) > 0):
+ self.gen.logMsg('diag', '*** SUMMARY OF UNRECOGNIZED GROUPS ***')
+ for key in sorted(badGroup.keys()):
+ self.gen.logMsg('diag', ' ', key, ' occurred ', badGroup[key], ' times')
diff --git a/glew/auto/EGL-Registry/api/registry.rnc b/glew/auto/EGL-Registry/api/registry.rnc
new file mode 100644
index 0000000..be70668
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/registry.rnc
@@ -0,0 +1,270 @@
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+# Relax NG schema for Khronos Registry XML
+# See https://www.github.com/KhronosGroup/EGL-Registry
+#
+# Last modified 2017/02/03
+# This definition is subject to change (mostly in the form of additions)
+
+namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
+
+# Toplevel is a <registry> tag.
+# May be led by an optional <comment> tag containing e.g. copyrights.
+start = element registry {
+ (
+ element comment { text } ? |
+ Types * |
+ Groups * |
+ Enums * |
+ Commands * |
+ Feature * |
+ Extensions *
+ ) *
+}
+
+# <types> defines a group of types
+Types = element types {
+ Type *
+}
+
+# <type> defines a single type. It is usually a C typedef but
+# may contain arbitrary C code.
+# name - name of this type, if not present in the <name> tag
+# api - matches a <feature> api attribute, if present
+# requires - name of another type definition required by this one
+# type - "group", if present, indicating a group of values in the
+# corresponding <enums> definition.
+# comment - unused
+# <apientry /> - substitutes for an APIENTRY-style macro on output
+# <name> - contains typename
+Type = element type {
+ attribute api { text } ? ,
+ attribute requires { text } ? ,
+ attribute name { TypeName } ? ,
+ attribute type { text } ? ,
+ Comment ? ,
+ text ,
+ element apientry { text } ? ,
+ text ,
+ element name { TypeName } ? ,
+ text
+}
+
+# <groups> defines a group of enum groups
+Groups = element groups {
+ Group *
+}
+
+# <group> defines a single enum group. Enums may
+# be in multiple groups.
+# name - group name
+# comment - unused
+# <enum name=""> - members of the group
+
+Group = element group {
+ Name ,
+ Comment ? ,
+ element enum { Name } *
+}
+
+# <enums> defines a group of enumerants
+# namespace - identifies a numeric namespace
+# group - identifies a functional subset of the namespace - same as <group name="">
+# start, end - beginning and end of a numeric range in the namespace
+# vendor - owner of the numeric range
+# type - "bitmask", if present
+# comment - unused
+Enums = element enums {
+ attribute namespace { text } ? ,
+ attribute group { text } ? ,
+ attribute type { text } ? ,
+ attribute start { Integer } ? ,
+ attribute end { Integer } ? ,
+ Vendor ? ,
+ Comment ? ,
+ (Enum | Unused) *
+}
+# <enum> defines a single enumerant
+# value - integer (including hex) value of the enumerant
+# api - matches a <feature> api attribute, if present
+# type - "u" (unsigned), "ull" (uint64), or integer if not present
+# name - enumerant name
+# alias - another enumerant this is semantically identical to
+# comment - unused
+Enum = element enum {
+ (
+ attribute value { Integer } &
+ attribute api { text } ? &
+ attribute type { TypeSuffix } ? &
+ attribute name { text } &
+ attribute alias { text } ? &
+ Comment ?
+ )
+}
+# <unused> defines a range of enumerants not currently being used
+# start, end - beginning and end of an unused numeric range
+# vendor - unused
+# comment - unused
+Unused = element unused {
+ attribute start { Integer } ,
+ attribute end { Integer } ? ,
+ Vendor ? ,
+ Comment ?
+}
+# <commands> defines a group of commands
+# namespace - identifies a function namespace
+Commands = element commands {
+ attribute namespace { text } ? ,
+ Command *
+}
+# <command> defines a single command
+# <proto> is the C function prototype, including the return type
+# <param> are function parameters, in order
+# <ptype> is a <type> name, if present
+# <name> is the function / parameter name
+# The textual contents of <proto> and <param> should be legal C
+# for those parts of a function declaration.
+# <alias> - denotes function aliasing
+# name - name of aliased function
+# <vecequiv> - denotes scalar / vector function equivalence
+# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv)
+# <glx> - information about GLX protocol
+# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply}
+# opcode - numeric opcode of specified type for this function
+# name - if present, protocol name (defaults to command name)
+# comment - unused
+Command = element command {
+ Comment ? ,
+ element proto {
+ attribute group { text } ? ,
+ text ,
+ element ptype { TypeName } ? ,
+ text ,
+ element name { text } ,
+ text
+ } ,
+ element param {
+ attribute group { text } ? ,
+ attribute len { text } ? ,
+ text ,
+ element ptype { TypeName } ? ,
+ text ,
+ element name { text } ,
+ text
+ } * ,
+ (
+ element alias {
+ Name
+ } ? &
+ element vecequiv {
+ Name
+ } ? &
+ element glx {
+ attribute type { text } ,
+ attribute opcode { xsd:integer } ,
+ Name ? ,
+ Comment ?
+ } *
+ )
+}
+# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2)
+# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not
+# neccessarily an actual API name
+# name - version name (C preprocessor name, e.g. GL_VERSION_4_2)
+# number - version number, e.g. 4.2
+# protect - additional #ifdef symbol to place around the feature
+# <require> / <remove> contains features to require or remove in
+# this version
+# profile - only require/remove when generated profile matches
+# comment - unused
+Feature = element feature {
+ attribute api { text } ,
+ Name ,
+ attribute number { xsd:float } ,
+ attribute protect { text } ?,
+ Comment ? ,
+ (
+ element require {
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ } |
+ element remove {
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ }
+ ) *
+}
+Extensions = element extensions {
+ Extension *
+}
+# Defines the interface of an API <extension>. Like a <feature>
+# tag, but with a slightly different api attribute.
+# api - regexp pattern matching one or more API tags, indicating
+# which APIs the extension is known to work with. The only
+# syntax supported is <name>{|<name>}* and each name must
+# exactly match an API being generated (implicit ^$ surrounding).
+# In addition, <require> / <remove> tags also support an
+# api attribute:
+# api - only require/remove these features for the matching API.
+# Not a regular expression.
+Extension = element extension {
+ Name ,
+ attribute protect { text } ?,
+ attribute supported { StringGroup } ? ,
+ Comment ? ,
+ (
+ element require {
+ attribute api { text } ? ,
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ } |
+ element remove {
+ attribute api { text } ? ,
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ }
+ ) *
+}
+# Contents of a <require> / <remove> tag, defining a group
+# of features to require or remove.
+# <type> / <enum> / <command> all have attributes
+# name - feature name which must match
+InterfaceElement =
+ element type {
+ Name ,
+ Comment ?
+ } |
+ element enum {
+ Name ,
+ Comment ?
+ } |
+ element command {
+ Name ,
+ Comment ?
+ }
+
+# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but
+# XML Schema types don't seem to support hex notation, so we use this
+# as a placeholder.
+Integer = text
+
+# TypeName is an argument/return value C type name
+TypeName = text
+
+# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull'
+TypeSuffix = text
+
+# StringGroup is a regular expression with an implicit
+# '^(' and ')$' bracketing it.
+StringGroup = text
+
+# Repeatedly used attributes
+ProfileName = attribute profile { text }
+Vendor = attribute vendor { text }
+Comment = attribute comment { text }
+Name = attribute name { text }
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
new file mode 100644
index 0000000..eb2a7d9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
@@ -0,0 +1,64 @@
+Name
+
+ ANDROID_GLES_layers
+
+Name Strings
+
+ EGL_ANDROID_GLES_layers
+
+Contributors
+
+ Cody Northrop
+
+Contact
+
+ Cody Northrop, Google LLC (cnorthrop 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, March 3, 2019
+
+Number
+
+ EGL Extension #132
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.5 or EGL_EXT_client_extensions
+
+Overview
+
+ This extension indicates the EGL loader supports GLES layering on Android.
+ It does not add any requirements to drivers or hardware.
+
+ See frameworks/native/opengl/libs/EGL/GLES_layers.md in Android for
+ more information.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Issues
+
+ None
+
+Revision History
+
+#1 (Cody Northrop, March 3, 2019)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt
new file mode 100644
index 0000000..e984694
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt
@@ -0,0 +1,211 @@
+Name
+
+ ANDROID_blob_cache
+
+Name Strings
+
+ EGL_ANDROID_blob_cache
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, December 13, 2012
+
+Number
+
+ EGL Extension #48
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Shader compilation and optimization has been a troublesome aspect of OpenGL
+ programming for a long time. It can consume seconds of CPU cycles during
+ application start-up. Additionally, state-based re-compiles done
+ internally by the drivers add an unpredictable element to application
+ performance tuning, often leading to occasional pauses in otherwise smooth
+ animations.
+
+ This extension provides a mechanism through which client API
+ implementations may cache shader binaries after they are compiled. It may
+ then retrieve those cached shaders during subsequent executions of the same
+ program. The management of the cache is handled by the application (or
+ middleware), allowing it to be tuned to a particular platform or
+ environment.
+
+ While the focus of this extension is on providing a persistent cache for
+ shader binaries, it may also be useful for caching other data. This is
+ perfectly acceptable, but the guarantees provided (or lack thereof) were
+ designed around the shader use case.
+
+ Note that although this extension is written as if the application
+ implements the caching functionality, on the Android OS it is implemented
+ as part of the Android EGL module. This extension is not exposed to
+ applications on Android, but will be used automatically in every
+ application that uses EGL if it is supported by the underlying
+ device-specific EGL implementation.
+
+New Types
+
+ /*
+ * EGLsizeiANDROID is a signed integer type for representing the size of a
+ * memory buffer.
+ */
+ #include <khrplatform.h>
+ typedef khronos_ssize_t EGLsizeiANDROID;
+
+ /*
+ * EGLSetBlobFunc is a pointer to an application-provided function that a
+ * client API implementation may use to insert a key/value pair into the
+ * cache.
+ */
+ typedef void (*EGLSetBlobFuncANDROID) (const void* key,
+ EGLsizeiANDROID keySize, const void* value, EGLsizeiANDROID valueSize)
+
+ /*
+ * EGLGetBlobFunc is a pointer to an application-provided function that a
+ * client API implementation may use to retrieve a cached value from the
+ * cache.
+ */
+ typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void* key,
+ EGLsizeiANDROID keySize, void* value, EGLsizeiANDROID valueSize)
+
+New Procedures and Functions
+
+ void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
+ EGLSetBlobFuncANDROID set,
+ EGLGetBlobFuncANDROID get);
+
+New Tokens
+
+ None.
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add a new subsection after Section 3.8, page 50
+ (Synchronization Primitives)
+
+ "3.9 Persistent Caching
+
+ In order to facilitate persistent caching of internal client API state that
+ is slow to compute or collect, the application may specify callback
+ function pointers through which the client APIs can request data be cached
+ and retrieved. The command
+
+ void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
+ EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+
+ sets the callback function pointers that client APIs associated with
+ display <dpy> can use to interact with caching functionality provided by
+ the application. <set> points to a function that inserts a new value into
+ the cache and associates it with the given key. <get> points to a function
+ that retrieves from the cache the value associated with a given key. The
+ semantics of these callback functions are described in Section 3.9.1 (Cache
+ Operations).
+
+ Cache functions may only be specified once during the lifetime of an
+ EGLDisplay. The <set> and <get> functions may be called at any time and
+ from any thread from the time at which eglSetBlobCacheFuncsANDROID is
+ called until the time that the last resource associated with <dpy> is
+ deleted and <dpy> itself is terminated. Concurrent calls to these
+ functions from different threads is also allowed.
+
+ If eglSetBlobCacheFuncsANDROID generates an error then all client APIs must
+ behave as though eglSetBlobCacheFuncsANDROID was not called for the display
+ <dpy>. If <set> or <get> is NULL then an EGL_BAD_PARAMETER error is
+ generated. If a successful eglSetBlobCacheFuncsANDROID call was already
+ made for <dpy> and the display has not since been terminated then an
+ EGL_BAD_PARAMETER error is generated.
+
+ 3.9.1 Cache Operations
+
+ To insert a new binary value into the cache and associate it with a given
+ key, a client API implementation can call the application-provided callback
+ function
+
+ void (*set) (const void* key, EGLsizeiANDROID keySize,
+ const void* value, EGLsizeiANDROID valueSize)
+
+ <key> and <value> are pointers to the beginning of the key and value,
+ respectively, that are to be inserted. <keySize> and <valueSize> specify
+ the size in bytes of the data pointed to by <key> and <value>,
+ respectively.
+
+ No guarantees are made as to whether a given key/value pair is present in
+ the cache after the set call. If a different value has been associated
+ with the given key in the past then it is undefined which value, if any, is
+ associated with the key after the set call. Note that while there are no
+ guarantees, the cache implementation should attempt to cache the most
+ recently set value for a given key.
+
+ To retrieve the binary value associated with a given key from the cache, a
+ client API implementation can call the application-provided callback
+ function
+
+ EGLsizeiANDROID (*get) (const void* key, EGLsizeiANDROID keySize,
+ void* value, EGLsizeiANDROID valueSize)
+
+ <key> is a pointer to the beginning of the key. <keySize> specifies the
+ size in bytes of the binary key pointed to by <key>. If the cache contains
+ a value associated with the given key then the size of that binary value in
+ bytes is returned. Otherwise 0 is returned.
+
+ If the cache contains a value for the given key and its size in bytes is
+ less than or equal to <valueSize> then the value is written to the memory
+ pointed to by <value>. Otherwise nothing is written to the memory pointed
+ to by <value>.
+
+Issues
+
+ 1. How should errors be handled in the callback functions?
+
+ RESOLVED: No guarantees are made about the presence of values in the cache,
+ so there should not be a need to return error information to the client API
+ implementation. The cache implementation can simply drop a value if it
+ encounters an error during the 'set' callback. Similarly, it can simply
+ return 0 if it encouters an error in a 'get' callback.
+
+ 2. When a client API driver gets updated, that may need to invalidate
+ previously cached entries. How can the driver handle this situation?
+
+ RESPONSE: There are a number of ways the driver can handle this situation.
+ The recommended way is to include the driver version in all cache keys.
+ That way each driver version will use a set of cache keys that are unique
+ to that version, and conflicts should never occur. Updating the driver
+ could then leave a number of values in the cache that will never be
+ requested again. If needed, the cache implementation can handle those
+ values in some way, but the driver does not need to take any special
+ action.
+
+ 3. How much data can be stored in the cache?
+
+ RESPONSE: This is entirely dependent upon the cache implementation.
+ Presumably it will be tuned to store enough data to be useful, but not
+ enough to become problematic. :)
+
+Revision History
+
+#3 (Jon Leech, December 13, 2012)
+ - Fix typo in New Functions section & assign extension #.
+
+#2 (Jamie Gennis, April 25, 2011)
+ - Swapped the order of the size and pointer arguments to the get and set
+ functions.
+
+#1 (Jamie Gennis, April 22, 2011)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
new file mode 100644
index 0000000..3e0c4a9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
@@ -0,0 +1,197 @@
+Name
+
+ ANDROID_create_native_client_buffer
+
+Name Strings
+
+ EGL_ANDROID_create_native_client_buffer
+
+Contributors
+
+ Craig Donner
+
+Contact
+
+ Craig Donner, Google Inc. (cdonner 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, January 19, 2016
+
+Number
+
+ EGL Extension #99
+
+Dependencies
+
+ Requires EGL 1.2.
+
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_base are required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base and
+ EGL_ANDROID_image_native_buffer.
+
+Overview
+
+ This extension allows creating an EGLClientBuffer backed by an Android
+ window buffer (struct ANativeWindowBuffer) which can be later used to
+ create an EGLImage.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLClientBuffer eglCreateNativeClientBufferANDROID(
+ const EGLint *attrib_list)
+
+New Tokens
+
+ EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following to section 2.5.1 "EGLImage Specification" (as modified by
+ the EGL_KHR_image_base and EGL_ANDROID_image_native_buffer specifications),
+ below the description of eglCreateImageKHR:
+
+ "The command
+
+ EGLClientBuffer eglCreateNativeClientBufferANDROID(
+ const EGLint *attrib_list)
+
+ may be used to create an EGLClientBuffer backed by an ANativeWindowBuffer
+ struct. EGL implementations must guarantee that the lifetime of the
+ returned EGLClientBuffer is at least as long as the EGLImage(s) it is bound
+ to, following the lifetime semantics described below in section 2.5.2; the
+ EGLClientBuffer must be destroyed no earlier than when all of its associated
+ EGLImages are destroyed by eglDestroyImageKHR. <attrib_list> is a list of
+ attribute-value pairs which is used to specify the dimensions, format, and
+ usage of the underlying buffer structure. If <attrib_list> is non-NULL, the
+ last attribute specified in the list must be EGL_NONE.
+
+ Attribute names accepted in <attrib_list> are shown in Table aaa,
+ together with the <target> for which each attribute name is valid, and
+ the default value used for each attribute if it is not included in
+ <attrib_list>.
+
+ +---------------------------------+----------------------+---------------+
+ | Attribute | Description | Default Value |
+ | | | |
+ +---------------------------------+----------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_WIDTH | The width of the | 0 |
+ | | buffer data | |
+ | EGL_HEIGHT | The height of the | 0 |
+ | | buffer data | |
+ | EGL_RED_SIZE | The bits of Red in | 0 |
+ | | the color buffer | |
+ | EGL_GREEN_SIZE | The bits of Green in | 0 |
+ | | the color buffer | |
+ | EGL_BLUE_SIZE | The bits of Blue in | 0 |
+ | | the color buffer | |
+ | EGL_ALPHA_SIZE | The bits of Alpha in | 0 |
+ | | the color buffer | |
+ | | buffer data | |
+ | EGL_NATIVE_BUFFER_USAGE_ANDROID | The usage bits of | 0 |
+ | | the buffer data | |
+ +---------------------------------+----------------------+---------------+
+ Table aaa. Legal attributes for eglCreateNativeClientBufferANDROID
+ <attrib_list> parameter.
+
+ The maximum width and height may depend on the amount of available memory,
+ which may also depend on the format and usage flags. The values of
+ EGL_RED_SIZE, EGL_GREEN_SIZE, and EGL_BLUE_SIZE must be non-zero and
+ correspond to a valid pixel format for the implementation. If EGL_ALPHA_SIZE
+ is non-zero then the combination of all four sizes must correspond to a
+ valid pixel format for the implementation. The
+ EGL_NATIVE_BUFFER_USAGE_ANDROID flag may include any of the following bits:
+
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID: Indicates that the
+ created buffer must have a hardware-protected path to external display
+ sink. If a hardware-protected path is not available, then either don't
+ composite only this buffer (preferred) to the external sink, or (less
+ desirable) do not route the entire composition to the external sink.
+
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID: The buffer will be
+ used to create a renderbuffer. This flag must not be set if
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID is set.
+
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID: The buffer will be used to
+ create a texture. This flag must not be set if
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID is set.
+
+ Errors
+
+ If eglCreateNativeClientBufferANDROID fails, NULL will be returned, no
+ memory will be allocated, and one of the following errors will be
+ generated:
+
+ * If the value of EGL_WIDTH or EGL_HEIGHT is not positive, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If the combination of the values of EGL_RED_SIZE, EGL_GREEN_SIZE,
+ EGL_BLUE_SIZE, and EGL_ALPHA_SIZE is not a valid pixel format for the
+ EGL implementation, the error EGL_BAD_PARAMETER is generated.
+
+ * If the value of EGL_NATIVE_BUFFER_ANDROID is not a valid combination
+ of gralloc usage flags for the EGL implementation, or is incompatible
+ with the value of EGL_FORMAT, the error EGL_BAD_PARAMETER is
+ Generated.
+
+ * If both the EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID and
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID are set in the value of
+ EGL_NATIVE_BUFFER_USAGE_ANDROID, the error EGL_BAD_PARAMETER is
+ Generated."
+
+Issues
+
+ 1. Should this extension define what combinations of formats and usage flags
+ EGL implementations are required to support?
+
+ RESOLVED: Partially.
+
+ The set of valid color combinations is implementation-specific and may
+ depend on additional EGL extensions, but generally RGB565 and RGBA888 should
+ be supported. The particular valid combinations for a given Android version
+ and implementation should be documented by that version.
+
+ 2. Should there be an eglDestroyNativeClientBufferANDROID to destroy the
+ client buffers created by this extension?
+
+ RESOLVED: No.
+
+ A destroy function would add several complications:
+
+ a) ANativeWindowBuffer is a reference counted object, may be used
+ outside of EGL.
+ b) The same buffer may back multiple EGLImages, though this usage may
+ result in undefined behavior.
+ c) The interactions between the lifetimes of EGLImages and their
+ EGLClientBuffers would become needlessly complex.
+
+ Because ANativeWindowBuffer is a reference counted object, implementations
+ of this extension should ensure the buffer has a lifetime at least as long
+ as a generated EGLImage (via EGL_ANDROID_image_native_buffer). The simplest
+ method is to increment the reference count of the buffer in
+ eglCreateImagKHR, and then decrement it in eglDestroyImageKHR. This should
+ ensure proper lifetime semantics.
+
+Revision History
+
+#2 (Craig Donner, April 15, 2016)
+ - Set color formats and usage bits explicitly using additional attributes,
+ and add value for new token EGL_NATIVE_BUFFER_USAGE_ANDROID.
+
+#1 (Craig Donner, January 19, 2016)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
new file mode 100644
index 0000000..a15dfa8
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
@@ -0,0 +1,102 @@
+Name
+
+ ANDROID_framebuffer_target
+
+Name Strings
+
+ EGL_ANDROID_framebuffer_target
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, September 20, 2012
+
+Number
+
+ EGL Extension #47
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Android supports a number of different ANativeWindow implementations that
+ can be used to create an EGLSurface. One implementation, which is used to
+ send the result of performing window composition to a display, may have
+ some device-specific restrictions. Because of this, some EGLConfigs may
+ be incompatible with these ANativeWindows. This extension introduces a
+ new boolean EGLConfig attribute that indicates whether the EGLConfig
+ supports rendering to an ANativeWindow for which the buffers are passed to
+ the HWComposer HAL as a framebuffer target layer.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Section 3.4, Configuration Management, add a row to Table 3.1.
+
+ Attribute Type Notes
+ ------------------------------ ------- ---------------------------
+ EGL_FRAMEBUFFER_TARGET_ANDROID boolean whether use as a HWComposer
+ framebuffer target layer is
+ supported
+
+ Section 3.4, Configuration Management, add a row to Table 3.4.
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ------------------------------ ------------- --------- ----- --------
+ EGL_FRAMEBUFFER_TARGET_ANDROID EGL_DONT_CARE Exact None
+
+ Section 3.4, Configuration Management, add a paragraph at the end of the
+ subsection titled Other EGLConfig Attribute Descriptions.
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID is a boolean indicating whether the
+ config may be used to create an EGLSurface from an ANativeWindow for
+ which the buffers are to be passed to HWComposer as a framebuffer
+ target layer.
+
+ Section 3.4.1, Querying Configurations, change the last paragraph as follow
+
+ EGLConfigs are not sorted with respect to the parameters
+ EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
+ EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
+ EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
+ EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
+ EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
+ EGL_RECORDABLE_ANDROID.
+
+Issues
+
+
+Revision History
+
+#1 (Jamie Gennis, September 20, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
new file mode 100644
index 0000000..4c0e64c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
@@ -0,0 +1,70 @@
+Name
+
+ ANDROID_front_buffer_auto_refresh
+
+Name Strings
+
+ EGL_ANDROID_front_buffer_auto_refresh
+
+Contributors
+
+ Pablo Ceballos
+
+Contact
+
+ Pablo Ceballos, Google Inc. (pceballos 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, February 3, 2016
+
+Number
+
+ EGL Extension #XXX
+
+Dependencies
+
+ Requires EGL 1.2
+
+ This extension is written against the wording of the EGL 1.5 Specification
+
+Overview
+
+ This extension is intended for latency-sensitive applications that are doing
+ front-buffer rendering. It allows them to indicate to the Android compositor
+ that it should perform composition every time the display refreshes. This
+ removes the overhead of having to notify the compositor that the window
+ surface has been updated, but it comes at the cost of doing potentially
+ unneeded composition work if the window surface has not been updated.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_ANDROID_front_buffer_auto_refresh, then value specifies
+ whether to enable or disable auto-refresh in the Android compositor when
+ doing front-buffer rendering.
+
+Issues
+
+ None
+
+Revision History
+
+#1 (Pablo Ceballos, February 3, 2016)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
new file mode 100644
index 0000000..bf8d149
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
@@ -0,0 +1,259 @@
+Name
+
+ ANDROID_get_frame_timestamps
+
+Name Strings
+
+ EGL_ANDROID_get_frame_timestamps
+
+Contributors
+
+ Brian Anderson
+ Dan Stoza
+ Pablo Ceballos
+ Jesse Hall
+ Fabien Sanglard
+
+Contact
+
+ Brian Anderson, Google Inc. (brianderson 'at' google.com)
+ Dan Stoza, Google Inc. (stoza 'at' google.com)
+ Pablo Ceballos, Google Inc. (pceballos 'at' google.com)
+ Jesse Hall, Google Inc. (jessehall 'at' google.com)
+ Fabien Sanglard, Google Inc. (sanglardf 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 8, April 11, 2017
+
+Number
+
+ EGL Extension #122
+
+Dependencies
+
+ Requires EGL 1.2
+
+ This extension is written against the wording of the EGL 1.5 Specification
+
+Overview
+
+ This extension allows querying various timestamps related to the composition
+ and display of window surfaces.
+
+ Some examples of how this might be used:
+ - The display present time can be used to calculate end-to-end latency
+ of the entire graphics pipeline.
+ - The queue time and rendering complete time can be used to determine
+ how long the application's rendering took to complete. Likewise, the
+ composition start time and finish time can be used to determine how
+ long the compositor's rendering work took. In combination these can be
+ used to help determine if the system is GPU or CPU bound.
+
+New Types
+
+ /*
+ * EGLnsecsANDROID is a signed integer type for representing a time in
+ * nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+New Procedures and Functions
+
+ EGLBoolean eglGetNextFrameIdANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR *frameId);
+
+ EGLBoolean eglGetCompositorTimingANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint numTimestamps,
+ const EGLint *names, EGLnsecsANDROID *values);
+
+ EGLBoolean eglGetFrameTimestampsANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR frameId, EGLint numTimestamps,
+ const EGLint *timestamps, EGLnsecsANDROID *values);
+
+ EGLBoolean eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint timestamp);
+
+New Tokens
+
+ EGL_TIMESTAMPS_ANDROID 0x3430
+ EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+ EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+ EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+ EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+ EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+ EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+ EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+ EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+ EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+ EGL_READS_DONE_TIME_ANDROID 0x343C
+ EGL_TIMESTAMP_PENDING_ANDROID -2
+ EGL_TIMESTAMP_INVALID_ANDROID -1
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_TIMESTAMPS_ANDROID, then values specifies whether to
+ enable/disable timestamp collection for this surface. A value of EGL_TRUE
+ enables timestamp collection, while a value of EGL_FALSE disables it. The
+ initial value is false. If surface is not a window surface this has no
+ effect.
+Changes to Chapter 3 of the EGL 1.5 Specification (EGL Functions and Errors)
+
+ Add a new subsection under Section 3,
+
+ "3.13 Composition and Display Timestamps
+
+ The function
+
+ EGLBoolean eglGetNextFrameIdANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR *frameId);
+
+ Returns an identifier for the next frame to be swapped. The identifier can
+ be used to correlate a particular eglSwapBuffers with its timestamps in
+ eglGetFrameTimestampsANDROID. If any error is generated, the function will
+ return EGL_FALSE.
+
+ The function
+
+ EGLBoolean eglGetCompositorTimingANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint numTimestamps,
+ const EGLint *names, EGLnsecsANDROID *values);
+
+ allows querying anticipated timestamps and durations related to the
+ composition and display of a window surface. The values are not associated
+ with a particular frame and can be retrieved before the first swap.
+
+ The eglGetCompositorTimingANDROID function takes an array of names to
+ query and returns their values in the corresponding indices of the values
+ array. The possible names that can be queried are:
+ - EGL_COMPOSITE_DEADLINE_ANDROID - The timestamp of the next time the
+ compositor will begin composition. This is effectively the deadline
+ for when the compositor must receive a newly queued frame.
+ - EGL_COMPOSITE_INTERVAL_ANDROID - The time delta between subsequent
+ composition events.
+ - EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID - The time delta between
+ the start of composition and the expected present time of that
+ composition. This can be used to estimate the latency of the
+ actual present time.
+
+ The function
+
+ EGLBoolean eglGetFrameTimestampsANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps,
+ const EGLint *timestamps, EGLnsecsANDROID *values);
+
+ allows querying various timestamps related to the composition and display
+ of specific frames of a window surface.
+
+ The frameId indicates which frame to query. The implementation maintains a
+ limited history of timestamp data. If a query is made for a frame whose
+ timestamp history no longer exists then EGL_BAD_ACCESS is generated. If
+ timestamp collection has not been enabled for the surface then
+ EGL_BAD_SURFACE is generated. Timestamps for events that might still occur
+ will have the value EGL_TIMESTAMP_PENDING_ANDROID. Timestamps for events
+ that did not occur will have the value EGL_TIMESTAMP_INVALID_ANDROID.
+ Otherwise, the timestamp will be valid and indicate the event has occured.
+ Timestamp queries that are not supported will generate an EGL_BAD_PARAMETER
+ error. If any error is generated the function will return EGL_FALSE.
+
+ The application can poll for the timestamp of particular events by calling
+ eglGetFrameTimestamps over and over without needing to call any other EGL
+ function between calls. This is true even for the most recently swapped
+ frame. eglGetFrameTimestamps is thread safe and can be called from a
+ different thread than the swapping thread.
+
+ The eglGetFrameTimestampsANDROID function takes an array of timestamps to
+ query and returns timestamps in the corresponding indices of the values
+ array. The possible timestamps that can be queried are:
+ - EGL_REQUESTED_PRESENT_TIME_ANDROID - The time the application
+ requested this frame be presented. See EGL_ANDROID_presentation_time.
+ If the application does not request a presentation time explicitly,
+ this will correspond to buffer's queue time.
+ - EGL_RENDERING_COMPLETE_TIME_ANDROID - The time when all of the
+ application's rendering to the surface was completed.
+ - EGL_COMPOSITION_LATCH_TIME_ANDROID - The time when the compositor
+ selected this frame as the one to use for the next composition. The
+ latch is the earliest indication that the frame was submitted in time
+ to be composited.
+ - EGL_FIRST_COMPOSITION_START_TIME_ANDROID - The first time at which
+ the compositor began preparing composition for this frame.
+ - EGL_LAST_COMPOSITION_START_TIME_ANDROID - The last time at which the
+ compositor began preparing composition for this frame. If this frame
+ is composited only once, it will have the same value as
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID. If the value is not equal,
+ that indicates the subsequent frame was not submitted in time to be
+ latched by the compositor. Note: The value may not be updated for
+ every display refresh if the compositor becomes idle.
+ - EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID - The time at which
+ the compositor's rendering work for this frame finished. This will be
+ zero if composition was handled by the display and the compositor
+ didn't do any rendering.
+ - EGL_DISPLAY_PRESENT_TIME_ANDROID - The time at which this frame
+ started to scan out to the physical display.
+ - EGL_DEQUEUE_READY_TIME_ANDROID - The time when the buffer became
+ available for reuse as a buffer the client can target without
+ blocking. This is generally the point when all read commands of the
+ buffer have been submitted, but not necessarily completed.
+ - EGL_READS_DONE_TIME_ANDROID - The time at which all reads for the
+ purpose of display/composition were completed for this frame.
+
+ Not all implementations may support all of the above timestamp queries. The
+ functions
+
+ EGLBoolean eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint name);
+
+ and
+
+ EGLBoolean eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint timestamp);
+
+ allows querying which values are supported by the implementations of
+ eglGetCompositorTimingANDROID and eglGetFrameTimestampSupportedANDROID
+ respectively."
+
+Issues
+
+ None
+
+Revision History
+
+#9 (Chris Forbes, June 11, 2019)
+ - Fix eglGetFrameTimestampSupportedANDROID function name in extension
+ spec to match reality
+
+#8 (Brian Anderson, April 11, 2017)
+ - Use reserved enumerant values.
+
+#7 (Brian Anderson, March 21, 2017)
+ - Differentiate between pending events and events that did not occur.
+
+#6 (Brian Anderson, March 16, 2017)
+ - Remove DISPLAY_RETIRE_TIME_ANDROID.
+
+#5 (Brian Anderson, January 13, 2017)
+ - Add eglGetCompositorTimingANDROID.
+
+#4 (Brian Anderson, January 10, 2017)
+ - Use an absolute frameId rather than a relative framesAgo.
+
+#3 (Brian Anderson, November 30, 2016)
+ - Add EGL_COMPOSITION_LATCH_TIME_ANDROID,
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID, and
+ EGL_DEQUEUE_READY_TIME_ANDROID.
+
+#2 (Brian Anderson, July 22, 2016)
+ - Replace EGL_QUEUE_TIME_ANDROID with EGL_REQUESTED_PRESENT_TIME_ANDROID.
+ - Add DISPLAY_PRESENT_TIME_ANDROID.
+
+#1 (Pablo Ceballos, May 31, 2016)
+ - Initial draft.
+
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
new file mode 100644
index 0000000..285bba4
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
@@ -0,0 +1,102 @@
+Name
+
+ ANDROID_get_native_client_buffer
+
+Name Strings
+
+ EGL_ANDROID_get_native_client_buffer
+
+Contributors
+
+ Craig Donner
+
+Contact
+
+ Craig Donner, Google Inc. (cdonner 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, October 11, 2017
+
+Number
+
+ EGL Extension #123
+
+Dependencies
+
+ Requires EGL 1.2.
+
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_base are required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base and
+ EGL_ANDROID_image_native_buffer.
+
+Overview
+
+ This extension allows creating an EGLClientBuffer from an Android
+ AHardwareBuffer object which can be later used to create an EGLImage.
+
+New Types
+
+ struct AHardwareBuffer
+
+New Procedures and Functions
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following to section 2.5.1 "EGLImage Specification" (as modified by
+ the EGL_KHR_image_base and EGL_ANDROID_image_native_buffer specifications),
+ below the description of eglCreateImageKHR:
+
+ "The command
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID(
+ const struct AHardwareBuffer *buffer)
+
+ may be used to create an EGLClientBuffer from an AHardwareBuffer object.
+ EGL implementations must guarantee that the lifetime of the returned
+ EGLClientBuffer is at least as long as the EGLImage(s) it is bound to,
+ following the lifetime semantics described below in section 2.5.2; the
+ EGLClientBuffer must be destroyed no earlier than when all of its associated
+ EGLImages are destroyed by eglDestroyImageKHR.
+
+ Errors
+
+ If eglGetNativeClientBufferANDROID fails, NULL will be returned, no
+ memory will be allocated, and the following error will be generated:
+
+ * If the value of buffer is NULL, the error EGL_BAD_PARAMETER is
+ generated.
+
+Issues
+
+ 1. Should this extension define what particular AHardwareBuffer formats EGL
+ implementations are required to support?
+
+ RESOLVED: No.
+
+ The set of valid formats is implementation-specific and may depend on
+ additional EGL extensions. The particular valid combinations for a given
+ Android version and implementation should be documented by that version.
+
+Revision History
+
+#3 (Jesse Hall, October 11, 2017)
+ - Assigned extension number, fixed minor issues for publication
+
+#2 (Craig Donner, February 17, 2017)
+ - Fix typographical errors.
+
+#1 (Craig Donner, January 27, 2017)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
new file mode 100644
index 0000000..7392d4f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
@@ -0,0 +1,108 @@
+Name
+
+ ANDROID_image_native_buffer
+
+Name Strings
+
+ EGL_ANDROID_image_native_buffer
+
+Contributors
+
+ Mathias Agopian
+ Jamie Gennis
+ Jesse Hall
+
+Contact
+
+ Jesse Hall, Google Inc. (jessehall 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, November 28, 2012
+
+Number
+
+ EGL Extension #49
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension enables using an Android window buffer (struct
+ ANativeWindowBuffer) as an EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_ANDROID 0x3140
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +----------------------------+-----------------------------------------+
+ | <target> | Notes |
+ +----------------------------+-----------------------------------------+
+ | EGL_NATIVE_BUFFER_ANDROID | Used for ANativeWindowBuffer objects |
+ +----------------------------+-----------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_ANDROID, <dpy> must be a valid display,
+ <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer to a valid
+ ANativeWindowBuffer object (cast into the type EGLClientBuffer), and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_BUFFER_ANDROID and <buffer> is not a
+ pointer to a valid ANativeWindowBuffer, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_ANDROID and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_ANDROID and <buffer> was created
+ with properties (format, usage, dimensions, etc.) not supported by
+ the EGL implementation, the error EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of ANativeWindowBuffer
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change with
+ future Android releases. The minimum requirements for a given Android
+ version should be documented by that version.
+
+Revision History
+
+#1 (Jesse Hall, November 28, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
new file mode 100644
index 0000000..d72edd7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
@@ -0,0 +1,281 @@
+Name
+
+ ANDROID_native_fence_sync
+
+Name Strings
+
+ EGL_ANDROID_native_fence_sync
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, September 4, 2012
+
+Number
+
+ EGL Extension #50
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2 Specification
+
+ EGL_KHR_fence_sync is required.
+
+Overview
+
+ This extension enables the creation of EGL fence sync objects that are
+ associated with a native synchronization fence object that is referenced
+ using a file descriptor. These EGL fence sync objects have nearly
+ identical semantics to those defined by the KHR_fence_sync extension,
+ except that they have an additional attribute storing the file descriptor
+ referring to the native fence object.
+
+ This extension assumes the existence of a native fence synchronization
+ object that behaves similarly to an EGL fence sync object. These native
+ objects must have a signal status like that of an EGLSyncKHR object that
+ indicates whether the fence has ever been signaled. Once signaled the
+ native object's signal status may not change again.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLint eglDupNativeFenceFDANDROID(
+ EGLDisplay dpy,
+ EGLSyncKHR);
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+
+ Accepted by the <attrib_list> parameter of eglCreateSyncKHR:
+
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+
+ Accepted by the <attrib_list> parameter of eglCreateSyncKHR, and returned
+ by eglDupNativeFenceFDANDROID in the event of an error:
+
+ EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+
+ Returned in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following after the sixth paragraph of Section 3.8.1 (Sync
+ Objects), added by KHR_fence_sync
+
+ "If <type> is EGL_SYNC_NATIVE_FENCE_ANDROID, an EGL native fence sync
+ object is created. In this case the EGL_SYNC_NATIVE_FENCE_FD_ANDROID
+ attribute may optionally be specified. If this attribute is specified, it
+ must be set to either a file descriptor that refers to a native fence
+ object or to the value EGL_NO_NATIVE_FENCE_FD_ANDROID.
+
+ The default values for the EGL native fence sync object attributes are as
+ follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_NATIVE_FENCE_ANDROID
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID EGL_NO_NATIVE_FENCE_FD_ANDROID
+
+ If the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute is not
+ EGL_NO_NATIVE_FENCE_FD_ANDROID then the EGL_SYNC_CONDITION_KHR attribute is
+ set to EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID and the EGL_SYNC_STATUS_KHR
+ attribute is set to reflect the signal status of the native fence object.
+ Additionally, the EGL implementation assumes ownership of the file
+ descriptor, so the caller must not use it after calling eglCreateSyncKHR."
+
+ Modify Section 3.8.1 (Sync Objects), added by KHR_fence_sync, starting at
+ the seventh paragraph
+
+ "When a fence sync object is created or when an EGL native fence sync
+ object is created with the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute set
+ to EGL_NO_NATIVE_FENCE_FD_ANDROID, eglCreateSyncKHR also inserts a fence
+ command into the command stream of the bound client API's current context
+ (i.e., the context returned by eglGetCurrentContext), and associates it
+ with the newly created sync object.
+
+ After associating the fence command with an EGL native fence sync object,
+ the next Flush() operation performed by the current client API causes a
+ new native fence object to be created, and the
+ EGL_SYNC_NATIVE_FENCE_ANDROID attribute of the EGL native fence object is
+ set to a file descriptor that refers to the new native fence object. This
+ new native fence object is signaled when the EGL native fence sync object
+ is signaled.
+
+ When the condition of the sync object is satisfied by the fence command,
+ the sync is signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock.
+ If the sync object is an EGL native fence sync object then the native
+ fence object is also signaled when the condition is satisfied. The
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR condition is satisfied by completion
+ of the fence command corresponding to the sync object and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+
+ The EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID condition is satisfied by the
+ signaling of the native fence object referred to by the
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute. When this happens any
+ eglClientWaitSyncKHR commands blocking on <sync> unblock."
+
+ Modify the list of eglCreateSyncKHR errors in Section 3.8.1 (Sync Objects),
+ added by KHR_fence_sync
+
+ "Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and <attrib_list> is neither NULL nor
+ empty (containing only EGL_NONE), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_ATTRIBUTE error is generated.
+ * If <type> is EGL_SYNC_NATIVE_FENCE_ANDROID and <attrib_list> contains
+ an attribute other than EGL_SYNC_NATIVE_FENCE_FD_ANDROID,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ no context is current for the bound API (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ <dpy> does not match the EGLDisplay of the currently bound context for
+ the currently bound client API (the EGLDisplay returned by
+ eglGetCurrentDisplay()) then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ the currently bound client API does not support the client API
+ extension indicating it can place fence commands, then EGL_NO_SYNC_KHR
+ is returned and an EGL_BAD_MATCH error is generated."
+
+ Modify table 3.cc in Section 3.8.1 (Sync Objects), added by KHR_fence_sync
+
+ "
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR and
+ EGL_SYNC_NATIVE_FENCE_ANDROID only
+ "
+
+ Modify the second paragraph description of eglDestroySyncKHR in Section
+ 3.8.1 (Sync Objects), added by KHR_fence_sync
+
+ "If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object. Additionally, if <sync> is an
+ EGL native fence sync object and the EGL_SYNC_NATIVE_FENCE_FD_ANDROID
+ attribute is not EGL_NO_NATIVE_FENCE_FD_ANDROID then that file descriptor
+ is closed."
+
+ Add the following after the last paragraph of Section 3.8.1 (Sync
+ Objects), added by KHR_fence_sync
+
+ The command
+
+ EGLint eglDupNativeFenceFDANDROID(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ duplicates the file descriptor stored in the
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute of an EGL native fence sync
+ object and returns the new file descriptor.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>,
+ EGL_NO_NATIVE_FENCE_FD_ANDROID is returned and an EGL_BAD_PARAMETER
+ error is generated.
+ * If the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute of <sync> is
+ EGL_NO_NATIVE_FENCE_FD_ANDROID, EGL_NO_NATIVE_FENCE_FD_ANDROID is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined."
+
+Issues
+
+ 1. Should EGLSyncKHR objects that wrap native fence objects use the
+ EGL_SYNC_FENCE_KHR type?
+
+ RESOLVED: A new sync object type will be added.
+
+ We don't want to require all EGL fence sync objects to wrap native fence
+ objects, so we need some way to tell the EGL implementation at sync object
+ creation whether the sync object should support querying the native fence
+ FD attribute. We could do this with either a new sync object type or with a
+ boolean attribute. It might be nice to pick up future signaling conditions
+ that might be added for fence sync objects, but there may be things that
+ get added that don't make sense in the context of native fence objects.
+
+ 2. Who is responsible for dup'ing the native fence file descriptors?
+
+ RESOLVED: Whenever a file descriptor is passed into or returned from an
+ EGL call in this extension, ownership of that file descriptor is
+ transfered. The recipient of the file descriptor must close it when it is
+ no longer needed, and the provider of the file descriptor must dup it
+ before providing it if they require continued use of the native fence.
+
+ 3. Can the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute be queried?
+
+ RESOLVED: No.
+
+ Returning the file descriptor owned by the EGL implementation would
+ violate the file descriptor ownership rule described in issue #2. Having
+ eglGetSyncAttribKHR return a different (dup'd) file descriptor each time
+ it's called seems wrong, so a new function was added to explicitly dup the
+ file descriptor.
+
+ That said, the attribute is useful both as a way to pass an existing file
+ descriptor to eglCreateSyncKHR and as a way to describe the subsequent
+ behavior of EGL native fence sync objects, so it is left as an attribute
+ for which the value cannot be queried.
+
+Revision History
+
+#3 (Jamie Gennis, September 4, 2012)
+ - Reworded the extension to refer to "native fence" objects rather than
+ "Android fence" objects.
+ - Added a paragraph to the overview that describes assumptions about the
+ native fence sync objects.
+
+#2 (Jamie Gennis, July 23, 2012)
+ - Changed the file descriptor ownership transferring behavior.
+ - Added the eglDupAndroidFenceFDANDROID function.
+ - Removed EGL_SYNC_NATIVE_FENCE_FD_ANDROID from the table of gettable
+ attributes.
+ - Added language specifying that a native Android fence is created at the
+ flush following the creation of an EGL Android fence sync object that is
+ not passed an existing native fence.
+
+#1 (Jamie Gennis, May 29, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt
new file mode 100644
index 0000000..ac1f45e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt
@@ -0,0 +1,140 @@
+Name
+
+ ANDROID_presentation_time
+
+Name Strings
+
+ EGL_ANDROID_presentation_time
+
+Contributors
+
+ Jamie Gennis
+ Andy McFadden
+ Jesse Hall
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4, June 6, 2016
+
+Number
+
+ EGL Extension #98
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Often when rendering a sequence of images, there is some time at which each
+ image is intended to be presented to the viewer. This extension allows
+ this desired presentation time to be specified for each frame rendered to
+ an EGLSurface, allowing the native window system to use it.
+
+New Types
+
+ /*
+ * EGLnsecsANDROID is a signed integer type for representing a time in
+ * nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+
+New Procedures and Functions
+
+ EGLBoolean eglPresentationTimeANDROID(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLnsecsANDROID time);
+
+New Tokens
+
+ None.
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection before Section 3.9.4, page 53 (Posting Errors)
+
+ "3.9.4 Presentation Time
+
+ The function
+
+ EGLBoolean eglPresentationTimeANDROID(EGLDisplay dpy, EGLSurface
+ surface, EGLnsecsANDROID time);
+
+ specifies the time at which the current color buffer of <surface> should be
+ presented to the viewer. The <time> parameter should be a time in
+ nanoseconds, but the exact meaning of the time depends on the native
+ window system's use of the presentation time. In situations where
+ an absolute time is needed such as displaying the color buffer on a
+ display device, the time should correspond to the system monotonic up-time
+ clock. For situations in which an absolute time is not needed such as
+ using the color buffer for video encoding, the presentation time of the
+ first frame may be arbitrarily chosen and those of subsequent frames
+ chosen relative to that of the first frame.
+
+ The presentation time may be set multiple times, with each call to
+ eglPresentationTimeANDROID overriding prior calls. Setting the
+ presentation time alone does not cause the color buffer to be made
+ visible, but if the color buffer is subsequently posted to a native window
+ or copied to a native pixmap then the presentation time of the surface at
+ that time may be passed along for the native window system to use.
+
+ If the surface presentation time is successfully set, EGL_TRUE is
+ returned. Otherwise EGL_FALSE is returned and an appropriate error is
+ set. If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated. If <surface> is not a valid EGLSurface
+ then an EGL_BAD_SURFACE error is generated.
+
+Issues
+
+ 1. How is the presentation time used?
+
+ RESOLVED: The uses of the presentation time are intentionally not specified
+ in this extension. Some possible uses include Audio/Video synchronization,
+ video frame timestamps for video encoding, display latency metrics, and
+ display latency control.
+
+ 2. How can the current value of the clock that should be used for the
+ presentation time when an absolute time is needed be queried on Android?
+
+ RESOLVED: The current clock value can be queried from the Java
+ System.nanoTime() method, or from the native clock_gettime function by
+ passing CLOCK_MONOTONIC as the clock identifier.
+
+ 3. Should the presentation time be state which is used by eglSwapBuffers,
+ or should it be a new parameter to an extended variant of eglSwapBuffers?
+
+ RESOLVED: The presentation time should be new state which is used by
+ the existing eglSwapBuffers call. Adding new state composes better with
+ other (hypothetical) extensions that also modify the behavior of
+ eglSwapBuffers.
+
+Revision History
+
+#4 (Jon Leech, June 6, 2016)
+ - Clean up for publication. Make prototype parameter name 'surface'
+ match the spec body.
+
+#3 (Jesse Hall, June 26, 2013)
+ - Enumerated errors generated by eglPresentationTimeANDROID.
+ - Added Issue #3 with resolution.
+
+#2 (Jamie Gennis, April 1, 2013)
+ - Clarified how uses that either do or do not need an absolute time should
+ be handled.
+ - Specified the eglPresentationTimeANDROID return value.
+
+#1 (Jamie Gennis, January 8, 2013)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt
new file mode 100644
index 0000000..d21094e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt
@@ -0,0 +1,140 @@
+Name
+
+ ANDROID_recordable
+
+Name Strings
+
+ EGL_ANDROID_recordable
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, July 15, 2011
+
+Number
+
+ EGL Extension #51
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Android supports a number of different ANativeWindow implementations that
+ can be used to create an EGLSurface. One implementation, which records the
+ rendered image as a video each time eglSwapBuffers gets called, may have
+ some device-specific restrictions. Because of this, some EGLConfigs may be
+ incompatible with these ANativeWindows. This extension introduces a new
+ boolean EGLConfig attribute that indicates whether the EGLConfig supports
+ rendering to an ANativeWindow that records images to a video.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_RECORDABLE_ANDROID 0x3142
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Section 3.4, Configuration Management, add a row to Table 3.1.
+
+ Attribute Type Notes
+ ---------------------- ------- --------------------------
+ EGL_RECORDABLE_ANDROID boolean whether video recording is
+ supported
+
+ Section 3.4, Configuration Management, add a row to Table 3.4.
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ---------------------- ------------- --------- ----- --------
+ EGL_RECORDABLE_ANDROID EGL_DONT_CARE Exact None
+
+ Section 3.4, Configuration Management, add a paragraph at the end of the
+ subsection titled Other EGLConfig Attribute Descriptions.
+
+ EGL_RECORDABLE_ANDROID is a boolean indicating whether the config may
+ be used to create an EGLSurface from an ANativeWindow that is a video
+ recorder as indicated by the NATIVE_WINDOW_IS_VIDEO_RECORDER query on
+ the ANativeWindow.
+
+ Section 3.4.1, Querying Configurations, change the last paragraph as follow
+
+ EGLConfigs are not sorted with respect to the parameters
+ EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
+ EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
+ EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
+ EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
+ EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
+ EGL_RECORDABLE_ANDROID.
+
+Issues
+
+ 1. Should this functionality be exposed as a new attribute or as a bit in
+ the EGL_SURFACE_TYPE bitfield?
+
+ RESOLVED: It should be a new attribute. It does not make sense to use up a
+ bit in the limit-size bitfield for a platform-specific extension.
+
+ 2. How should the new attribute affect the sorting of EGLConfigs?
+
+ RESOLVED: It should not affect sorting. Some implementations may not have
+ any drawback associated with using a recordable EGLConfig. Such
+ implementations should not have to double-up some of their configs to one
+ sort earlier than . Implementations that do have drawbacks can use the
+ existing caveat mechanism to report this drawback to the client.
+
+ 3. How is this extension expected to be implemented?
+
+ RESPONSE: There are two basic approaches to implementing this extension
+ that were considered during its design. In both cases it is assumed that a
+ color space conversion must be performed at some point because most video
+ encoding formats use a YUV color space. The two approaches are
+ distinguished by the point at which this color space conversion is
+ performed.
+
+ One approach involves performing the color space conversion as part of the
+ eglSwapBuffers call before queuing the rendered image to the ANativeWindow.
+ In this case, the VisualID of the EGLConfig would correspond to a YUV
+ Android HAL pixel format from which the video encoder can read. The
+ EGLConfig would likely have the EGL_SLOW_CONFIG caveat because using that
+ config to render normal window contents would result in an RGB -> YUV color
+ space conversion when rendering the frame as well as a YUV -> RGB
+ conversion when compositing the window.
+
+ The other approach involves performing the color space conversion in the
+ video encoder. In this case, the VisualID of the EGLConfig would
+ correspond to an RGB HAL pixel format from which the video encoder can
+ read. The EGLConfig would likely not need to have any caveat set, as using
+ this config for normal window rendering would not have any added cost.
+
+Revision History
+
+#2 (Jamie Gennis, July 15, 2011)
+ - Added issue 3.
+
+#1 (Jamie Gennis, July 8, 2011)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
new file mode 100644
index 0000000..b205883
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
@@ -0,0 +1,98 @@
+Name
+
+ ANGLE_d3d_share_handle_client_buffer
+
+Name Strings
+
+ EGL_ANGLE_d3d_share_handle_client_buffer
+
+Contributors
+
+ John Bauman
+ Alastair Patrick
+ Daniel Koch
+
+Contacts
+
+ John Bauman, Google Inc. (jbauman 'at' chromium.org)
+
+Status
+
+ Complete
+ Implemented (ANGLE r650)
+
+Version
+
+ Version 3, May 12, 2011
+
+Number
+
+ EGL Extension #38
+
+Dependencies
+
+ Requires the EGL_ANGLE_surface_d3d_texture_2d_share_handle extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating EGL surfaces from handles to textures
+ shared from the Direct3D API or from
+ EGL_ANGLE_surface_texture_2d_share_handle.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Replace the last sentence of paragraph 1 of Section 3.5.3 with the
+ following text.
+ "Currently, the only client API resources which may be bound in this
+ fashion are OpenVG VGImage objects and Direct3D share handles."
+
+ Replace the last sentence of paragraph 2 ("To bind a client API...") of
+ Section 3.5.3 with the following text.
+ "When <buftype> is EGL_OPENVG_IMAGE, the width and height of the pbuffer
+ are determined by the width and height of <buffer>. When <buftype> is
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, the width and height are specified
+ using EGL_WIDTH and EGL_HEIGHT, or else they default to zero. The width
+ and height must match the dimensions of the texture which the share handle
+ was created from or else an EGL_BAD_ALLOC error is generated."
+
+ Replace the third paragraph of Section 3.5.3 with the following text.
+ "<buftype> specifies the type of buffer to be bound. The only allowed values
+ of <buftype> are EGL_OPENVG_IMAGE and
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE".
+
+ Append the following text to the fourth paragraph of Section 3.5.3.
+ "When <buftype> is EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, <buffer> must be
+ a valid D3D share handle, cast into the type EGLClientBuffer. The handle
+ may be obtained from the Direct3D9Ex CreateTexture function, from DXGI's
+ GetSharedHandle method on an ID3D10Texture2D, or from the
+ EGL_ANGLE_surface_d3d_texture_2d_share_handle extension."
+
+Issues
+
+Revision History
+
+ Version 3, 2011/05/12
+ - publish
+
+ Version 2, 2011/05/03
+ - specify EGL_D3D_TEXTURE_2D_SHARE_HANDLE
+ - specify error if dimensions don't match
+
+ Version 1, 2011/04/12 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt
new file mode 100644
index 0000000..8e606cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt
@@ -0,0 +1,93 @@
+Name
+
+ ANGLE_device_d3d
+
+Name Strings
+
+ EGL_ANGLE_device_d3d
+
+Contributors
+
+ Jamie Madill (jmadill 'at' google.com)
+
+Contact
+
+ Jamie Madill (jmadill 'at' google.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1, Mar 25, 2015
+
+Number
+
+ EGL Extension #90
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 as
+ modified by EGL_EXT_device_query.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ ANGLE has the ability to run GPU commands on a native D3D device.
+ This extension defines a mapping from an EGL device to a D3D
+ device, after it's queried from an EGL display.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
+
+ EGL_D3D9_DEVICE_ANGLE 0x33A0
+ EGL_D3D11_DEVICE_ANGLE 0x33A1
+
+Add a new section 2.1.3 (D3D Devices) after 2.1.2 (Devices)
+
+ Somewhat analogous to an EGL device, a D3D device establishes a
+ namespace for D3D operations. In the D3D APIs, such devices are
+ represented by pointers. For more details, see the D3D
+ documentation.
+
+Changes to section 3.2 (Devices)
+
+ Replace the paragraph immediately following the prototype for
+ eglQueryDeviceAttribEXT:
+
+ <attribute> may be either EGL_D3D9_DEVICE_ANGLE or EGL_D3D11_DEVICE_ANGLE.
+ On success, EGL_TRUE is returned, and a valid D3D9 or D3D11 device pointer
+ corresponding to the EGL device is returned in <value>. This handle
+ is compatible with D3D API functions. If the EGL device is not currently
+ associated with a D3D9 device and <attribute> is EGL_D3D9_DEVICE_ANGLE,
+ or if the EGL device is not currently associated with a D3D11 device and
+ <attribute> is EGL_D3D11_DEVICE_ANGLE, EGL_BAD_ATTRIBUTE is returned,
+ and <value> is left unchanged.
+
+Issues
+
+ None
+
+Revision History
+
+ Version 1, Mar 25, 2015 (Jamie Madill)
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
new file mode 100644
index 0000000..75126fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
@@ -0,0 +1,88 @@
+Name
+
+ ANGLE_query_surface_pointer
+
+Name Strings
+
+ EGL_ANGLE_query_surface_pointer
+
+Contributors
+
+ Vladimir Vukicevic
+ Daniel Koch
+
+Contacts
+
+ Vladimir Vukicevic (vladimir 'at' pobox.com)
+
+Status
+
+ Complete
+ Implemented (ANGLE r558)
+
+Version
+
+ Version 3, February 11, 2011
+
+Number
+
+ EGL Extension #28
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows querying pointer-sized surface attributes,
+ thus avoiding problems with coercing 64-bit pointers into a 32-bit
+ integer.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglQuerySurfacePointerANGLE(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ void **value);
+
+New Tokens
+
+ None
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to the end of the paragraph starting with "To query an
+ attribute associated with an EGLSurface" in section 3.5.6,
+ "Surface Attributes":
+
+ "If the attribute type in table 3.5 is 'pointer', then
+ eglQuerySurface returns EGL_FALSE and an EGL_BAD_PARAMETER error
+ is generated. To query pointer attributes, call:
+
+ EGLBoolean eglQuerySurfacePointerANGLE(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ void **value);
+
+ eglQuerySurfacePointerANGLE behaves identically to eglQuerySurface,
+ except that only attributes of type 'pointer' can be queried.
+ If an attribute queried via eglQuerySurfacePointerANGLE is not
+ of type 'pointer', then eglQuerySurfacePointer returns EGL_FALSE
+ and an EGL_BAD_PARAMETER error is generated."
+
+Issues
+
+Revision History
+
+ Version 3, 2011/02/11 - publish
+
+ Version 2, 2010/12/21 - fix typos.
+
+ Version 1, 2010/12/07 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
new file mode 100644
index 0000000..917e445
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
@@ -0,0 +1,95 @@
+Name
+
+ ANGLE_surface_d3d_texture_2d_share_handle
+
+Name Strings
+
+ EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+Contributors
+
+ Vladimir Vukicevic
+ Daniel Koch
+
+Contacts
+
+ Vladimir Vukicevic (vladimir 'at' pobox.com)
+
+Status
+
+ Complete
+ Implemented (ANGLE r558)
+
+Version
+
+ Version 2, December 21, 2010
+
+Number
+
+ EGL Extension #29
+
+Dependencies
+
+ Requires the EGL_ANGLE_query_surface_pointer extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ Some EGL implementations generate EGLSurface handles that are
+ backed by Direct3D 2D textures. For such surfaces, a D3D share
+ handle can be generated, allowing access to the same surface
+ from the Direct3D API.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <attribute> parameter of eglQuerySurfacePointerANGLE:
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to table 3.5, "Queryable surface attributes and types":
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE pointer Direct3D share handle
+
+ Add before the last paragraph in section 3.5, "Surface attributes":
+
+ "Querying EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE returns a Direct3D
+ share handle, or NULL if a share handle for the surface is not
+ available. The share handle must be queried using
+ eglQuerySurfaceAttribPointerANGLE. Before using a Direct3D surface
+ created with this share handle, ensure that all rendering
+ to the EGLSurface with EGL client APIs has completed.
+
+ The Direct3D share handle may be passed as the pSharedHandle
+ parameter of the Direct3D9Ex CreateTexture function, or via the
+ Direct3D10 OpenSharedResource function. If used with Direct3D 9,
+ the level argument to CreateTexture must be 1, and the dimensions
+ must match the dimensions of the EGL surface. If used with
+ Direct3D 10, OpenSharedResource should be called with the
+ ID3D10Texture2D uuid to obtain an ID3D10Texture2D object.
+
+Issues
+
+Revision History
+
+ Version 3, 2011/02/11 - publish
+
+ Version 2, 2010/12/21
+ - renamed token to EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE (adding "2D")
+ - renamed extension to ANGLE_surface_d3d_texture_2d_share_handle
+ - added language about supported usage of the shared handle from D3D
+
+ Version 1, 2010/12/07 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
new file mode 100644
index 0000000..4259145
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
@@ -0,0 +1,99 @@
+Name
+
+ ANGLE_sync_control_rate
+
+Name Strings
+
+ EGL_ANGLE_sync_control_rate
+
+Contact
+
+ Jonah Ryan-Davis, Google (jonahr 'at' google.com)
+
+Status
+
+ Draft.
+
+Version
+
+ Version 1, 2020-03-24
+
+ Based on GLX_OML_sync_control Revision 6.0
+ Related to EGL_CHROMIUM_sync_control Revision 2.0
+
+Number
+
+ 142
+
+Dependencies
+
+ The extension is written against the EGL 1.2 Specification, although it
+ should work on other versions of these specifications.
+
+Overview
+
+ This extension provides counters which let applications know about the
+ timing of the last vertical retrace. By looking at the system clock, as
+ well as the refresh rate of the monitor, this should enable applications
+ to predict the position of future retraces so as to schedule an optimal
+ workload.
+
+ This extension incorporates the use of a counter that provides the
+ necessary synchronization. The graphics Media Stream Counter (or
+ graphics MSC) is a counter that is unique to the graphics subsystem
+ and increments for each vertical retrace that occurs.
+
+ By querying the MSC rate for a given surface, the application can
+ accurately predict the timing for the next vertical retraces and schedule
+ rendering accordingly.
+
+Issues
+
+ None.
+
+IP Status
+
+ No known issues.
+
+New Procedures and Functions
+
+ Bool eglGetMscRateANGLE(EGLDisplay* dpy,
+ EGLSurface surface,
+ int32_t* numerator,
+ int32_t* denominator)
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.3 Specification
+
+ The graphics MSC value is incremented once for each screen refresh.
+ For a non-interlaced display, this means that the graphics MSC value
+ is incremented for each frame. For an interlaced display, it means
+ that it will be incremented for each field. For a multi-monitor
+ system, the monitor used to determine MSC is the one where the surface
+ is located. If the surface spans multiple monitors, the monitor used
+ to determine MSC is the one with the biggest coverage in pixels.
+
+ eglGetMscRateANGLE returns the rate at which the MSC will be incremented
+ for the display associated with <dpy> and <surface>. The rate is expressed
+ in Hertz as <numerator> / <denominator>. If the MSC rate in Hertz is an
+ integer, then <denominator> will be 1 and <numerator> will be
+ the MSC rate.
+
+Errors
+
+ The function eglGetMscRateANGLE returns FALSE on failure.
+ If <dpy> is not a valid EGLDisplay, EGL_BAD_DISPLAY is generated.
+ If <surface> is not a valid EGLSurface, EGL_BAD_SURFACE is generated.
+ If there is no current EGLContext, EGL_BAD_CONTEXT is generated.
+
+New Implementation Dependent State
+
+ None
+
+Revision History
+
+ Version 1, 2020-03-24 (Jonah Ryan-Davis)
+ - Initial draft, based on GLX_OML_sync_control revision 6.0.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
new file mode 100644
index 0000000..6e60e86
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
@@ -0,0 +1,136 @@
+Name
+
+ ANGLE_window_fixed_size
+
+Name Strings
+
+ EGL_ANGLE_window_fixed_size
+
+Contributors
+
+ John Bauman
+ Shannon Woods
+
+Contacts
+
+ John Bauman, Google Inc. (jbauman 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, February 24, 2014
+
+Number
+
+ EGL Extension #85
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating a window surface with a fixed size that is
+ specified when it is created.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface and by the
+ <attrib_list> parameter of eglCreateWindowSurface:
+
+ EGL_FIXED_SIZE_ANGLE 0x3201
+
+Additions to Chapter 3 of the EGL 1.4 Specification:
+
+ Modify the third paragraph of Section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ "<attrib_list> specifies a list of attributes for the window. The list has
+ the same structure as described for eglChooseConfig. Attributes that can
+ be specified in <attrib_list> include EGL_RENDER_BUFFER,
+ EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT, EGL_FIXED_SIZE_ANGLE, EGL_WIDTH,
+ and EGL_HEIGHT."
+
+ Add before the last paragraph of Section 3.5.1
+
+ "EGL_FIXED_SIZE_ANGLE specifies whether the surface must be resized by the
+ implementation when the native window is resized. The default value is
+ EGL_FALSE. Its value can be EGL_TRUE, in which case the size must be
+ specified when the window is created, or EGL_FALSE, in which case the size
+ is taken from the native window. Its default value is EGL_FALSE.
+
+ If the value of EGL_FIXED_SIZE_ANGLE is EGL_TRUE, the window surface's
+ size in pixels is specified by the EGL_WIDTH and EGL_HEIGHT attributes,
+ and will not change throughout the lifetime of the surface. If its value
+ is EGL_FALSE, then the values of EGL_WIDTH and EGL_HEIGHT are ignored and
+ the window surface must be resized by the implementation subsequent to the
+ native window being resized, and prior to copying its contents to the
+ native window (e.g. in eglSwapBuffers, as described in section 3.9.1.1).
+ The default values for EGL_WIDTH and EGL_HEIGHT are zero. If the value
+ specified for either of EGL_WIDTH or EGL_HEIGHT is less than zero then an
+ EGL_BAD_PARAMETER error is generated."
+
+ Add the following entry to Table 3.5
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ -------------------- ------- ---------------------------------------------
+ EGL_FIXED_SIZE_ANGLE boolean Surface will not be resized with a native
+ window
+
+ Replace the last paragraph on page 37 in Section 3.5.6 (Surface Attributes)
+
+ "Querying EGL_WIDTH and EGL_HEIGHT returns respectively the width and
+ height, in pixels, of the surface. For a pixmap surface or window surface
+ with EGL_FIXED_SIZE_ANGLE set to EGL_FALSE, these values are initially
+ equal to the width and height of the native window or pixmap with respect
+ to which the surface was created. If the native window is resized and the
+ corresponding window surface is not fixed size, the corresponding window
+ surface will eventually be resized by the implementation to match (as
+ discussed in section 3.9.1). If there is a discrepancy because EGL has not
+ yet resized the window surface, the size returned by eglQuerySurface will
+ always be that of the EGL surface, not the corresponding native window."
+
+ Add the following paragraph to Section 3.5.6 (Surface Attributes)
+
+ "Querying EGL_FIXED_SIZE_ANGLE returns EGL_FALSE if the surface will be
+ resized to match a native window, and EGL_TRUE if the surface cannot be
+ resized."
+
+ Alter the beginning of the first paragraph of Section 3.9.1.1 (Native
+ Window Resizing)
+
+ "If <surface> does not have EGL_FIXED_SIZE_ANGLE set and the native window
+ corresponding to <surface> has been resized prior to the swap, <surface>
+ must be resized to match."
+
+Issues
+
+ 1. Should there be a way to resize a window surface that had its size
+ specified initially.
+
+ RESOLVED: No. Surfaces that have their sizes specified initially must have
+ EGL_FIXED_SIZE_ANGLE set and can never be resized.
+
+Revision History
+
+ Version 4, 2014/02/24 - formatting changes.
+
+ Version 3, 2014/02/12 - ignore EGL_WIDTH and EGL_HEIGHT if
+ EGL_FIXED_SIZE_ANGLE is EGL_FALSE
+
+ Version 2, 2014/02/07 - rename to EGL_ANGLE_window_fixed_size, and add an
+ EGL_FIXED_SIZE_ANGLE token.
+
+ Version 1, 2014/02/05 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt
new file mode 100644
index 0000000..c1a40ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt
@@ -0,0 +1,126 @@
+Name
+
+ ARM_image_format
+
+Name Strings
+
+ EGL_ARM_image_format
+
+Contributors
+
+ Jan-Harald Fredriksen
+
+Contact
+
+ Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - February 18, 2020
+
+Number
+
+ 138
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ specification.
+
+ This extension reuses tokens from EGL_EXT_pixel_format_float.
+
+Overview
+
+ When an EGLImage is created from an existing image resource the
+ implementation will deduce the format of the image data from that
+ resource. In some cases, however, the implementation may not know how to
+ map the existing image resource to a known format. This extension extends
+ the list of attributes accepted by eglCreateImageKHR such that applications
+ can tell the implementation how to interpret the data.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglCreateImageKHR:
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+
+ Accepted as attribute values for the EGL_COLOR_COMPONENT_TYPE_EXT attribute
+ of eglCreateImageKHR:
+
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+ EGL_RED_SIZE 0x3024
+ EGL_GREEN_SIZE 0x3023
+ EGL_BLUE_SIZE 0x3022
+ EGL_ALPHA_SIZE 0x3021
+
+Modifications to the EGL 1.4 Specification
+
+ Add the following rows to Table 3.xx: Legal attributes for
+ eglCreateImageKHR <attrib_list> parameter:
+
+ +------------------------------+------------------------------+-----------+---------------+
+ | Attribute | Description | Valid | Default Value |
+ | | | <target>s | |
+ +------------------------------+------------------------------+-----------+---------------+
+ | EGL_COLOR_COMPONENT_TYPE_EXT | Specifies the component | All | NA |
+ | | type the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_RED_SIZE | Specifies the red component | All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_GREEN_SIZE | Specifies the green component| All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_BLUE_SIZE | Specifies the blue component | All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_ALPHA_SIZE | Specifies the alpha component| All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ +------------------------------+------------------------------+-----------+---------------+
+
+ If <attrib_list> specifies values for EGL_COLOR_COMPONENT_TYPE_EXT,
+ EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, or EGL_ALPHA_SIZE, the
+ implementation will treat these as hints for how to interpret the contents
+ of <buffer>.
+
+ EGL_COLOR_COMPONENT_TYPE_EXT indicates the component type of <buffer> and
+ must be either EGL_COLOR_COMPONENT_TYPE_FIXED_EXT for fixed-point,
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT for floating-point,
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM for unsigned integer, or
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM for integer components.
+
+Add to the list of error conditions for eglCreateImageKHR:
+
+ * If the implementation is unable to interpret the contents <buffer>
+ according to the component types and sizes in <attrib_list>, then a
+ EGL_BAD_MATCH error is generated.
+
+Issues
+
+ 1. Should there be a way to specify the component order?
+
+ Resolved. No, the component order is interpreted to be R, G, B, A,
+ with R mapping to component 0. If the application needs a different
+ component order it can use swizzle in the client API side or in the
+ shader.
+
+Revision History
+
+ Version 1, 2020/02/18
+ - Internal revisions
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt
new file mode 100644
index 0000000..bce6a74
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt
@@ -0,0 +1,219 @@
+Name
+
+ ARM_implicit_external_sync
+
+Name Strings
+
+ EGL_ARM_implicit_external_sync
+
+Contributors
+
+ David Garbett
+ Ray Smith
+
+Contacts
+
+ David Garbett, ARM Ltd. (david 'dot' garbett 'at' arm 'dot' com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, September 8, 2014
+
+Number
+
+ EGL Extension #103
+
+Dependencies
+
+ Requires EGL 1.1.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+ EGL_KHR_fence_sync is required.
+
+Overview
+
+ This extension extends the "fence sync objects" defined in
+ EGL_KHR_fence_sync. It allows the condition that triggers the associated
+ fence command in the client API command stream to be explicitly specified on
+ fence object creation. It introduces a new condition that can be used to
+ ensure ordering between operations on buffers that may be accessed
+ externally to the client API, when those operations use an implicit
+ synchronization mechanism. Such a fence object will be signaled when all
+ prior commands affecting such buffers are guaranteed to be executed before
+ such external commands.
+
+ Applications have limited control over when a native buffer is read or
+ written by the GPU when imported as an EGLImageKHR or via
+ eglCreatePixmapSurface, which is controlled by the EGL and client API
+ implementations. While eglWaitClient or a client call such as glFinish
+ could be called, this forces all rendering to complete, which can result in
+ CPU/GPU serialization. Note this isn't an issue for window surfaces, where
+ eglSwapBuffers ensures the rendering occurs in the correct order for the
+ platform.
+
+ Some platforms have an implicit synchronization mechanism associated with
+ native resources, such as buffers. This means that accesses to the buffer
+ have an implicit ordering imposed on them, without involvement from the
+ application. However, this requires that an application that has imported
+ an affected buffer into EGL has a mechanism to flush any drawing operations
+ in flight such that they are waiting on the synchronization mechanism.
+ Otherwise the application cannot guarantee that subsequent operations (such
+ as displaying a rendered buffer) will occur after the commands performed by
+ the client API (such as rendering the buffer).
+
+ The mechanism to wait for the synchronization mechanism should not require
+ the application to wait for all rendering to complete, so that it can
+ continue preparing further commands asynchronously to the queued commands.
+ This extension provides this functionality using the new condition type for
+ fence sync objects, so the application only waits for the external
+ synchronization.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a value of the EGL_SYNC_CONDITION_KHR attribute passed in the
+ <attrib_list> list to eglCreateSyncKHR when <type> is EGL_FENCE_SYNC_KHR,
+ and can populate <*value> when eglGetSyncAttribKHR is called with
+ <attribute> set to EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following after the fifth paragraph of Section 3.8.1 (Sync Objects),
+ added by KHR_fence_sync:
+
+ "Typically client APIs are considered to execute commands in a linear queue,
+ where a prior command is executed and completes before a later command is
+ started. By default fence sync objects adhere to this model - a fence is
+ signaled once prior commands have completed. However on some platforms a
+ command in a client API may transition through multiple states before it
+ completes, which may impact other components of the system. Therefore the
+ condition that all prior commands must meet before the fence is triggered is
+ configurable."
+
+ Replace the sixth paragraph of Section 3.8.1 (Sync Objects), added by
+ KHR_fence_sync:
+
+ "If, <type> is EGL_SYNC_FENCE_KHR, a fence sync object is created. In this
+ case <attrib_list> can be NULL or empty, or can specify the
+ EGL_SYNC_CONDITION_KHR attribute. Attributes of the fence sync object have
+ the following default values:"
+
+ Replace the eighth paragraph of Section 3.8.1 (Sync Objects), added by
+ KHR_fence_sync:
+
+ "When the condition of the sync object is satisfied by the fence command,
+ the sync is signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock. The
+ condition is specified by the EGL_SYNC_CONDITION_KHR attribute passed to
+ eglCreateSyncKHR.
+
+ If the condition is specified as EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, the
+ fence sync object is satisfied by completion of the fence command
+ corresponding to the sync object, and all preceding commands in the
+ associated client API context's command stream. The sync object will not be
+ signaled until all effects from these commands on the client API's internal
+ and framebuffer state are fully realized. No other state is affected by
+ execution of the fence command.
+
+ If the condition is specified as
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM, the fence sync object is
+ satisfied by the completion of the fence command corresponding to the sync
+ object, and the <submission> of all preceding commands in the associated
+ client API context's command stream. <Submission> defines the point in time
+ when a command has been queued on any implicit synchronization mechanisms
+ present on the platform which apply to any of the resources used by the
+ command. This enforces an ordering, as defined by the synchronization
+ mechanism, between the command and any other operations that also respect
+ the synchronization mechanism(s)."
+
+ Replace the second entry in the list of eglCreateSyncKHR errors in Section
+ 3.8.1 (Sync Objects), added by KHR_fence_sync:
+
+ " * If <type> is EGL_SYNC_FENCE_KHR and <attrib_list> contains an attribute
+ other than EGL_SYNC_CONDITION_KHR, EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_ATTRIBUTE error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and the value specified for
+ EGL_SYNC_CONDITION_KHR is not EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR or
+ EGL_SYNC_PRIOR_COMMANDS_SUBMITTED_ARM, EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated."
+
+Issues
+
+ 1. Could glFlush guarantee commands are submitted, making this extension
+ unnecessary?
+
+ RESOLVED: The Open GL ES 3.1 specification defines glFlush() as causing "all
+ previously issued GL commands to complete in finite time". There is no
+ requirement for the execution of commands to reach any specific point before
+ it returns - a valid implementation of glFlush() could spawn a new thread
+ that sleeps for a minute before submitting the pending commands. While an
+ implementation could decide to ensure all commands are submitted within
+ glFlush(), it could not be assumed to be the case across all
+ implementations.
+
+ In addition, there may be scenarios when submitting commands within
+ glFlush() is harmful. Waiting for command submission may have a performance
+ impact on some implementations that perform processing of commands
+ asynchronously. In addition such a change may restrict what is possible in
+ the future. For example if user events were introduced into OpenGL ES they
+ have the potential of introducing deadlocks if submission in glFlush() is
+ guaranteed.
+
+ 2. Should a new entry point be defined that flushes commands synchronously,
+ instead of the new fence type as defined by this extension?
+
+ RESOLVED: While a synchronous "flush and submit" entrypoint would meet the
+ requirements for this extension, there may be a small benefit in enabling
+ the application to continue processing between flushing and waiting for
+ submission. In addition, the semantics of the existing EGL_KHR_fence_sync
+ extension closely match what is required for this extension, so defining
+ the new functionality in terms of fences may enable simpler implementations.
+
+ 3. Should OpenGL ES 3 glFenceSync be extended in preference to
+ eglCreateSyncKHR?
+
+ RESOLVED: Some platforms are yet to move to a OpenGL ES 3 implementation, or
+ may be unwilling to expose OpenGL ES 3 entrypoints to applications. As
+ EGL_KHR_fence_sync is older than OpenGL ES 3, and is comparatively a small
+ change, it has a better chance of adoption in a platform.
+
+ In addition this extension is based on the idea that there are
+ platform-specific ways to interact with the client API command stream. As
+ this is platform-specific, and does not fit with the existing model
+ typically used by client APIs (such as Open GL ES) it is better placed in
+ EGL.
+
+ Finally extending EGL has the advantage that the extension applies to all
+ client APIs.
+
+ 4. Should a new <type> parameter be defined, instead of extending the
+ EGL_FENCE_SYNC_KHR fence sync objects defined by EGL_KHR_fence_sync?
+
+ RESOLVED: Whether the new functionality is defined as an extension to the
+ existing fence sync objects, or whether they are defined as a new type of
+ sync object, we must acknowledge that the model of a client API processing
+ commands serially (with prior commands completing before later commands are
+ executed) is too simplistic for some platforms.
+
+ Extending the existing fence sync objects allows us to use the existing
+ concept of conditions that trigger the fences. It also allows the maximum
+ amount of reuse of existing functionality, potentially simplifying the
+ implementation and the use of the extension by applications.
+
+Revision History
+#1 (David Garbett, September 8, 2014)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
new file mode 100644
index 0000000..847a749
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
@@ -0,0 +1,185 @@
+Name
+
+ ARM_pixmap_multisample_discard
+
+Name Strings
+
+ EGL_ARM_pixmap_multisample_discard
+
+Contributors
+
+ Arne Bergene Fossaa
+ Tom Cooksey
+ Endre Sund
+ David Garbett
+
+Contacts
+
+ Tom Cooksey (tom 'dot' cooksey 'at' arm 'dot' com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1, March 5, 2013
+
+Number
+
+ EGL Extension #54
+
+Dependencies
+
+ EGL 1.0 is required.
+
+ This extension is written against the wording of the EGL 1.4 Specification.
+
+Overview
+
+ ARM_pixmap_multisample_discard adds an attribute to eglCreatePixmapSurface
+ that allows the client API implementation to resolve a multisampled pixmap
+ surface, therefore allowing the multisample buffer to be discarded.
+
+ Some GPU architectures - such as tile-based renderers - are capable of
+ performing multisampled rendering by storing multisample data in internal
+ high-speed memory and downsampling the data when writing out to external
+ memory after rendering has finished. Since per-sample data is never written
+ out to external memory, this approach saves bandwidth and storage space. In
+ this case multisample data gets discarded, however this is acceptable in
+ most cases.
+
+ The extension provides the EGL_DISCARD_SAMPLES_ARM attribute that allows
+ for implicit resolution when rendering to a pixmap surface. This complements
+ the OpenGL ES EXT_multisampled_render_to_texture extension which provides
+ similar functionality for rendering to an OpenGL ES texture.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglCreatePixmapSurface and by the <attribute> parameter of eglQuerySurface:
+
+ EGL_DISCARD_SAMPLES_ARM 0x3286
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the second paragraph under "The Multisample Buffer" of Section 3.4,
+ page 18 (Configuration Management)
+
+ "Operations such as posting a surface with eglSwapBuffers (see section
+ 3.9.1, copying a surface with eglCopyBuffers (see section 3.9.2), reading
+ from the color buffer using client API commands, binding a client API
+ context to a surface (see section 3.7.3), and flushing to a pixmap surface
+ created with the EGL_DISCARD_SAMPLES_ARM attribute enabled (see
+ section 3.5.4) may cause resolution of the multisample buffer to the color
+ buffer."
+
+ Modify the fifth paragraph under "The Multisample Buffer" of Section 3.4,
+ page 18 (Configuration Management)
+
+ "There are no single-sample depth or stencil buffers for a multisample
+ EGLConfig, or with a pixmap surface created with the
+ EGL_DISCARD_SAMPLES_ARM attribute (see section 3.5.4). The only depth and
+ stencil buffers are those in the multisample buffer. If the color samples
+ in the multisample buffer store fewer bits than are stored in the color
+ buffers, this fact will not be reported accurately. Presumably a
+ compression scheme is being employed, and is expected to maintain an
+ aggregate resolution equal to that of the color buffers."
+
+ Modify the fifth paragraph of Section 3.5.4, page 34 (Creating Native
+ Pixmap Rendering Surfaces)
+
+ "attrib list specifies a list of attributes for the pixmap. The list has the
+ same structure as described for eglChooseConfig. Attributes that can be
+ specified in attrib list include EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT and
+ EGL_DISCARD_SAMPLES_ARM."
+
+ Add the following between paragraphs eight and nine of Section 3.5.4,
+ page 34 (Creating Native Pixmap Rendering Surfaces)
+
+ "EGL_DISCARD_SAMPLES_ARM specifies whether the client API implementation is
+ allowed to implicitly resolve the multisample buffer. On some GPU
+ architectures - such as tile-based renderers - an implicit resolve can avoid
+ writing the multisample buffer back to external memory as the multisample
+ data is stored in internal high-speed memory.
+
+ The implicit resolve can occur when the client API uses the pixmap as the
+ source or destination of any operation, when flushing to the pixmap or when
+ the client API unbinds (or breaks) the pixmap. When these operations occur
+ is dependent on the client API implementation. They can occur as an explicit
+ part of client API functions (such as glFinish, glReadPixels and
+ glCopyTexImage) or they can occur implicitly.
+
+ Further rendering causes the implementation to read the surface buffer and
+ any ancillary buffers back in as single-sampled data.
+ Therefore use of this attribute may result in lower quality images.
+
+ Valid values are EGL_TRUE, in which case the multisample buffer can be
+ discarded, or EGL_FALSE, in which case the multisample buffer is preserved.
+ The default value is EGL_FALSE.
+
+ Note that the multisample buffer may be discarded during eglMakeCurrent
+ regardless of the value of the EGL_DISCARD_SAMPLES_ARM attribute (see
+ section 3.7.3)."
+
+ Modify the ninth paragraph of Section 3.5.4, page 34 (Creating Native
+ Pixmap Rendering Surfaces)
+
+ "On failure eglCreatePixmapSurface returns EGL_NO_SURFACE. If the attributes
+ of pixmap do not correspond to config, then an EGL_BAD_MATCH error is
+ generated. If config does not support rendering to pixmaps (the
+ EGL_SURFACE_TYPE attribute does not contain EGL_PIXMAP_BIT), an
+ EGL_BAD_MATCH error is generated. If config does not support the colorspace
+ or alpha format attributes specified in attriblist (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated. If config does
+ not specify non-zero EGL_SAMPLES and EGL_SAMPLE_BUFFERS and the
+ EGL_DISCARD_SAMPLES_ARM attribute is set to EGL_TRUE, then an EGL_BAD_MATCH
+ error is generated. If config is not a valid EGLConfig, an EGL_BAD_CONFIG
+ error is generated. If pixmap is not a valid native pixmap handle, then an
+ EGL_BAD_NATIVE_PIXMAP error should be generated. If there is already an
+ EGLSurface associated with pixmap (as a result of a previous
+ eglCreatePixmapSurface call), then a EGL_BAD_ALLOC error is generated.
+ Finally, if the implementation cannot allocate resources for the new EGL
+ pixmap, an EGL_BAD_ALLOC error is generated."
+
+
+ Add the following entry to Table 3.5, page 36
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ ------------------------- ------- ---------------------------------------
+ EGL_DISCARD_SAMPLES_ARM boolean Multisample resolve when flushing to
+ surface
+
+ Add the following paragraph before the last paragraph of Section 3.5.7,
+ page 38 (Surface Attributes)
+
+ "Querying EGL_DISCARD_SAMPLES_ARM returns whether a multisample resolve
+ is forced on every flush to the surface (see section 3.5.4). This will only
+ return EGL_TRUE for pixmap surfaces created with the EGL_DISCARD_SAMPLES_ARM
+ attribute set to EGL_TRUE. EGL_FALSE will be returned for window and
+ pbuffer surfaces."
+
+Issues
+
+ 1. Should eglSurfaceAttrib accept EGL_DISCARD_SAMPLES_ARM?
+ RESOLVED: No. The attribute should be decided at surface creation time.
+
+ 2. Should eglCreateWindowSurface or eglCreatePbufferSurface accept
+ EGL_DISCARD_SAMPLES_ARM?
+ RESOLVED: No. While the attribute could equally apply to window and
+ pbuffer surfaces, no use case has been identified to justify the
+ additional maintenance this would require.
+
+Revision History
+
+ Version 1, 2013/03/05 - Original release.
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt
new file mode 100644
index 0000000..e83f9c9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt
@@ -0,0 +1,108 @@
+Name
+
+ EXT_bind_to_front
+
+Name Strings
+
+ EGL_EXT_bind_to_front
+
+
+Contributors
+
+ Daniel Herring
+
+Contacts
+
+ Daniel Herring, Core Avionics & Industrial Inc., daniel dot herring at ch1group dot com
+
+Status
+
+ Complete
+
+Version
+
+ Version 1.0, February 21, 2017
+
+Number
+
+ EGL Extension #121
+
+Dependencies
+
+ Requires EGL 1.2.
+
+Overview
+
+ This extension allows for using double buffered Pbuffers for rendering to textures, by
+ allowing a new enumeration to be used in eglBindTexImage. EGL_FRONT_BUFFER_EXT is used
+ to denote reading the textures data from the front buffer of a double buffered Pbuffer.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_FRONT_BUFFER_EXT 0x3464
+
+Modify Section 3.6.1 of the EGL 1.2 Specification, paragraph 1
+ Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute.
+
+Modify Section 3.6.2 of the EGL 1.2 Specification, paragraph 5
+ Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute.
+
+Modify Section 3.5.2 of the EGL 1.2 Specification, paragraph 4
+ Add EGL_RENDER_BUFFER to list of attributes which can be accepted in attrib_list.
+
+Add to Section 3.5.2 of the EGL 1.2 Specification
+ EGL_RENDER_BUFFER specifies the number of color buffers which should be useable by the
+ client API rendering to the Pbuffer. If its value is EGL_SINGLE_BUFFER, then there is
+ one color buffer the client APIs will render to directly. If its value is EGL_BACK_BUFFER,
+ then there are at least two color buffers the client API can render to. eglSwapBuffers
+ is used to switch which color buffer is currently being rendered to. By default, all
+ client APIs should render into the back buffer. The default value of EGL_RENDER_BUFFER
+ is EGL_SINGLE_BUFFER.
+
+Modify Section 2.2.2 of the EGL 1.2 Specification, paragraph 2
+ Pbuffer surfaces have a back buffer but no associated window, so the back buffer
+ need not be copied.
+ Change to:
+ Pbuffer surfaces have no associated window, and include a back buffer, used by
+ default, for rendering to by the client API. Pbuffers may have a front buffer
+ used during render to texture operations to provide a read only texture which may
+ be used while the back buffer is being rendered to.
+
+Modify Section 3.5.6
+ Querying EGL RENDER BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface, this is the same attribute value
+ specified when the surface was created. For a Pbuffer surface, it is always
+ EGL BACK BUFFER. For a pixmap surface, it is always EGL SINGLE BUFFER. To
+ determine the actual buffer being rendered to by a context, call eglQueryContext
+ (see section 3.7.4).
+
+ Change to:
+ Querying EGL RENDER BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface or Pbuffer surface, this is the
+ same attribute value specified when the surface was created. For a pixmap
+ surface, it is always EGL SINGLE BUFFER. To determine the actual buffer being
+ rendered to by a context, call eglQueryContext (see section 3.7.4).
+
+Revision History
+ Version 1.0, 21/02/2017 - Initial Version
+
+Question:
+ What if the implementation already uses double buffering for single buffered PBuffers?
+ Such as when an implementation must insert a resolve to a texture instead of being
+ able to use the same memory.
+Answer:
+ EGL_BACK_BUFFER would still refer to the resolved buffer. But in the case of the a
+ double buffer EGL_FRONT_BUFFER should be used to reference the resolved buffer instead
+ of EGL_BACK_BUFFER as in this case the user has specified 2 buffers and knows they want
+ the resolved buffer.
+ In the double buffer case where only a back draw and a front resolved buffer is used
+ the implementation may not support EGL_BACK_BUFFER and should generate an EGL_BAD_
+ PARAMETER error when not supporting EGL_BACK_BUFFER texture binding.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt
new file mode 100644
index 0000000..5e46fa9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt
@@ -0,0 +1,329 @@
+Name
+
+ EXT_buffer_age
+
+Name Strings
+
+ EGL_EXT_buffer_age
+
+Notice
+
+ Copyright 2011,2012 Intel Cooperation
+
+IP Status
+
+ No known IP claims.
+
+Contributors
+
+ Robert Bragg
+ Neil Roberts
+ Tapani Pälli
+ Kristian Høgsberg
+ Acorn Pooley
+ James Jones
+
+Contacts
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+Status
+
+ Complete.
+
+Version
+
+ 12 - June 13, 2013
+
+Number
+
+ EGL Extension #52
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The aim of this extension is to expose enough information to
+ applications about how the driver manages the set of front and
+ back buffers associated with a given surface to allow applications
+ to re-use the contents of old frames and minimize how much must be
+ redrawn for the next frame.
+
+ There are lots of different ways for a driver to manage these
+ buffers, from double buffering, different styles of triple
+ buffering and even n-buffering or simply single buffer rendering.
+ We also need to consider that power management events or memory
+ pressure events might also result in some of the buffers not
+ currently in-use being freed.
+
+ This extension lets applications query the age of the back buffer
+ contents for an EGL surface as the number of frames elapsed since
+ the contents were most recently defined. The back buffer can
+ either be reported as invalid (has an age of 0) or it may be
+ reported to contain the contents from n frames prior to the
+ current frame.
+
+ Once the application has queried the buffer age, the age of
+ contents remains valid until the end of the frame for all pixels
+ that continue to pass the pixel ownership test.
+
+ For many use-cases this extension can provide an efficient
+ alternative to using the EGL_BUFFER_PRESERVED swap behaviour. The
+ EGL_BUFFER_PRESERVED swap behaviour adds a direct dependency for
+ any frame n on frame n - 1 which can affect the pipelining of
+ multiple frames but also implies a costly copy-back of data to
+ initialize the back-buffer at the start of each frame.
+
+ For example if you consider a double buffered application drawing
+ a small spinning icon, but everything else in the scene is static.
+ If we know that 2 buffers are continuously being recycled each
+ time eglSwapBuffers is called then even though 100s of frames may
+ need to be drawn to animate the icon it can be seen that the two
+ buffers are remaining unchanged except within the bounds of the
+ icon. In this scenario ideally the application would simply
+ perform an incremental update of the old buffer instead of
+ redundantly redrawing all the static parts of the scene. The
+ problem up until now though has been that EGL doesn't report how
+ buffers may be recycled so it wasn't safe for applications to try
+ and reuse their contents. Now applications can keep track of all
+ the regions that have changed over the last n frames and by
+ knowing the age of the buffer they know how to efficiently repair
+ buffers that are re-cycled instead of redrawing the entire scene.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_BUFFER_AGE_EXT 0x313D
+
+Additions to Section 2.2 of the EGL 1.4 Specification (Rendering
+Contexts and drawing surfaces)
+
+ Add the following text to a new subsection titled "Pixel
+ Ownership Test" after the subsection titled "Interaction With
+ Native Rendering":
+
+ A fragment produced by a client api through rasterization
+ with windows coordinates (x, y) only modifies the pixel in the
+ rendering surface at that location if it passes the pixel
+ ownership test defined by the native window system.
+
+ The pixel ownership test determines if the pixel at location
+ (x, y) in a rendering surface is currently owned by the client
+ api (more precisely, by this its context). If it is not, the
+ native window system decides the fate of the incoming
+ fragment. Possible results are that the fragment is discarded
+ or that some subset of the subsequent per-fragment operations
+ are applied to the fragment. This test allows the window
+ system to control the client api behavior, for instance, when
+ a window surface is obscured.
+
+ The pixel ownership test can only fail for window surfaces,
+ not for pixmap surfaces or pbuffer surfaces.
+
+ Most native window systems will be able to guarantee that no
+ fragment will ever fail the pixel ownership test, but a
+ notable exception to this is the X11 window system where,
+ depending on the driver, the pixel ownership test may fail
+ when portions of a window are obscured.
+
+Additions to Section 3.5 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Add the following to the table of "Queryable surface attributes
+ and types":
+
+ +----------------------+---------+-----------------------------+
+ | Attribute | Type | Description |
+ +----------------------+---------+-----------------------------+
+ | EGL_BUFFER_AGE_EXT | Integer | Age of back-buffer contents |
+ +----------------------+---------+-----------------------------+
+ Table aaa: Queryable surface attributes and types.
+
+
+ Add the following text to the subsection titled "Surface
+ Attributes" in the description for eglQuerySurface
+
+ Querying EGL_BUFFER_AGE_EXT returns the age of the color
+ contents of the current back-buffer as the number of frames
+ elapsed since it was most recently defined. Applications can,
+ under certain conditions described below, use this age to
+ safely rely on the contents of old back- buffers to
+ potentially reduce the amount of redrawing they do each frame.
+ A frame is the period between calls to any of the functions in
+ table 3.X, hereafter referred to as "frame boundaries."
+
+ Function name
+ --------------------
+ eglSwapBuffers
+
+ Table 3.X, Frame Boundary Functions
+
+ Buffers' ages are initialized to 0 at buffer creation time.
+ When a frame boundary is reached, the following occurs before
+ any exchanging or copying of color buffers:
+
+ * The current back buffer's age is set to 1.
+ * Any other color buffers' ages are incremented by 1 if
+ their age was previously greater than 0.
+
+ For the purposes of buffer age tracking, a buffer's content
+ is considered defined when its age is a value greater than 0.
+
+ For example, with a double buffered surface and an
+ implementation that swaps via buffer exchanges, the age would
+ usually be 2. With a triple buffered surface the age would
+ usually be 3. An age of 1 means the previous swap was
+ implemented as a copy. An age of 0 means the buffer has only
+ just been initialized and the contents are undefined. Single
+ buffered surfaces have no frame boundaries and therefore
+ always have an age of 0.
+
+ Frame boundaries are the only events that can set a buffer's
+ age to a positive value. Once EGL_BUFFER_AGE_EXT has been
+ queried then it can be assumed that the age will remain valid
+ until the next frame boundary. EGL implementations are
+ permitted, but not required, to reset the buffer age in
+ response to pixel ownership test changes for any pixels within
+ the drawable, or if new pixels are added to or removed from
+ the drawable, i.e., the drawable is resized. A reset of this
+ nature does not affect the age of content for pixels that pass
+ the pixel ownership test before and after the event that
+ caused the reset. In other words, applications can assume
+ that no event will invalidate the content of pixels that
+ continuously pass the pixel ownership test between when the
+ buffer age was queried and the following frame boundary.
+
+ It is up to applications to track pixel ownership using data
+ collected from relevant window system events, such as
+ configuration and expose events on X11.
+
+ If the EGL implementation decides to free un-used back-buffers
+ when the system is under memory pressure or in response to
+ power-management events then EGL will return an age of 0 when
+ it allocates a new buffer at the start of a new frame.
+
+ If the EGL_BUFFER_PRESERVED swap behaviour is in use then
+ it can be assumed that the age will always be 1. It is
+ recommended where possible though that the
+ EGL_BUFFER_PRESERVED swap behaviour not be used since it can
+ have severe performance consequences. Keeping track of the
+ buffer age and the regions that have changed over the last 2
+ or 3 frames instead can often replace the need for using
+ EGL_BUFFER_PRESERVED.
+
+ EGL_BUFFER_AGE_EXT state is a property of the EGL surface that
+ owns the buffers and lives in the address space of the
+ application. That is, if an EGL surface has been created from
+ a native window or pixmap that may be shared between
+ processes, the buffer age is not guaranteed to be synchronized
+ across the processes. Binding and unbinding a surface to and
+ from one or more contexts in the same address space will not
+ affect the ages of any buffers in that surface.
+
+ Add the following text to last paragraph of the subsection titled
+ "Surface Attributes" in the description for eglQuerySurface
+ errors.
+
+ If querying EGL_BUFFER_AGE_EXT and <surface> is not bound as
+ the draw surface to the calling threads current context
+ an EGL_BAD_SURFACE error is generated.
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+ 1) What are the semantics if EGL_BUFFER_PRESERVED is in use
+
+ RESOLVED: The age will always be 1 in this case. More
+ clarification about this was added along with the
+ recommendation to use the buffer age to reuse buffers instead
+ of EGL_BUFFER_PRESERVED when possible to avoid the
+ in-efficiencies of introducing a dependency for each frame on
+ the previous frame.
+
+ 2) How can an application know that all pixels of a re-usable
+ buffer were originally owned by the current context?
+
+ RESOLVED: It is up to the application to track pixel ownership
+ using existing window system specific events, such as X11
+ expose or configure notify events.
+
+ 3) What are the semantics if the buffer age attribute is queried for
+ a surface that isn't bound to the calling thread's context as the
+ draw surface?
+
+ RESOLVED: we report an EGL_BAD_SURFACE error as is similarly
+ done when calling eglSwapBuffers for such a surface.
+
+ 4) What is the buffer age of a single buffered surface?
+
+ RESOLVED: 0. This falls out implicitly from the buffer age
+ calculations, which dictate that a buffer's age starts at 0,
+ and is only incremented by frame boundaries. Since frame
+ boundary functions do not affect single buffered surfaces,
+ their age will always be 0.
+
+ 5) What guarantees are provided after querying the buffer age?
+
+ RESOLVED: The buffer age of pixels which continue to pass the
+ pixel ownership test must remain valid until the next frame
+ boundary otherwise applications can't be absolutely sure of
+ the consistency of their rendered content. Implementations
+ may reset the queryable age of the buffer when pixel ownership
+ changes occur. This is further clarified in section 3.5
+
+Revision History
+
+ Version 1, 25/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarified semantics for using EGL_BUFFER_PRESERVED
+ Version 3, 01/09/2011
+ - Fixed a prototype inconsistency
+ Version 4, 03/11/2011
+ - Split out the buffer age parts from EGL_INTEL_start_frame
+ Version 5, 20/03/2012
+ - Document that once the age is queried it remains valid until
+ the end of the frame so we can remove the need for a separate
+ EGL_EXT_start_frame extension.
+ Version 6, 20/03/2012
+ - Clarify that only buffers who's contents were fully owned by
+ the context are tracked.
+ Version 7, 20/03/2012
+ - Document that an error will be generated if querying the age
+ for a surface not bound to the current context.
+ Version 8, 25/08/2012
+ - Update in line with changes made to the GLX_EXT_buffer_age draft spec
+ including more relaxed pixel ownership requirements and explicit
+ clarification of the buffer age calculation.
+ Version 9 20/09/2012
+ - Update in line with changes made to the EGL_EXT_buffer age
+ draft space
+ Version 10 29/11/2012
+ - Add pixel ownership test section and other minor
+ clarifications
+ Version 11 13/12/2012
+ - Allocated enumerant and marked complete.
+ Version 12, 13/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 13, 14/10/2021, Guanzhong Chen
+ - Fix an incorrect token name
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt
new file mode 100644
index 0000000..8e24447
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt
@@ -0,0 +1,408 @@
+Name
+
+ EXT_client_extensions
+
+Name Strings
+
+ EGL_EXT_client_extensions
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Ian Romanick <ian.d.romanick@intel.com>
+ Jakob Bornecrantz <jakob@vmware.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 11, 2013.10.10
+
+Number
+
+ EGL Extension #58
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension introduces the concept of *extension type*, requires that
+ each EGL extension belong to exactly one type, and defines two types:
+ display and client. It also provides a method to query, without
+ initializing a display, the set of supported client extensions.
+
+ A display extension adds functionality to an individual EGLDisplay. This
+ type of extension has always existed but, until EGL_EXT_client_extensions,
+ lacked an identifying name.
+
+ A client extension adds functionality that is independent of any display.
+ In other words, it adds functionality to the EGL client library itself. This
+ is a new type of extension defined by EGL_EXT_client_extensions.
+ EGL_EXT_client_extensions is itself a client extension.
+
+ We suggest that each future extension clearly state its type by including
+ the following toplevel section in its extension specification, preceding the
+ Dependencies section. For client extensions, this suggestion is
+ a requirement.
+
+ Extension Type
+
+ <Either "EGL display extension" or "EGL client extension" or
+ a future extension type.>
+
+ By cleanly separating display extensions from client extensions,
+ EGL_EXT_client_extensions solves a bootstrap problem for future EGL
+ extensions that will modify display initialization. To query for such
+ extensions without EGL_EXT_client_extensions, an EGL client would need to
+ initialize a throw-away EGLDisplay solely to query its extension string.
+ Initialization of the throw-away display may have undesired side-effects
+ (discussed in the issues section below) for EGL clients that wish to use the
+ new methods of display initialization.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.4 Specification:
+
+
+ Add the following section to Chapter 2 "EGL Operation":
+
+ "2.n Extensions
+
+ EGL implementations may expose additional functionality beyond that
+ described by this specification. Additional functionality may include new
+ functions, new enumerant values, and extended behavior for existing
+ functions. Implementations advertise such extensions to EGL by exposing
+ *extension strings*, which are queryable with eglQueryString.
+
+ Each EGL extension belongs to exactly one of the following types:
+
+ Display Extensions
+ A *display extension* adds functionality to an individual
+ EGLDisplay. Different instances of EGLDisplay may support different
+ sets of display extensions.
+
+ Client Extensions
+ A *client extension* adds functionality that is independent of any
+ display. In other words, it adds functionality to the EGL client
+ library itself. In a given process, there exists exactly one set,
+ possibly empty, of supported client extensions. When the client
+ extension string is first queried, that set becomes immutable."
+
+ Replace the paragraph in section 3.3 "EGL Versioning" that begins "The
+ EGL_EXTENSIONS string" with the following text:
+
+ "The EGL_EXTENSIONS string describes which set of EGL extensions are
+ supported. The string is zero-terminated and contains a space-separated
+ list of extension names; extension names themselves do not contain spaces.
+ If there are no extensions to EGL, then the empty string is returned.
+
+ If <dpy> is EGL_NO_DISPLAY, then the EGL_EXTENSIONS string describes the set
+ of supported client extensions. If <dpy> is a valid, initialized display,
+ then the EGL_EXTENSIONS string describes the set of display extensions
+ supported by the given display. The set of supported client extensions is
+ disjoint from the set of extensions supported by any given display [fn].
+
+ [fn] This is a consequence of the requirement in Section 2.n Extensions that
+ each extension belong to exactly one extension type."
+
+ Replace the last paragraph of section 3.3 "EGL Versioning" with:
+
+ "On failure, NULL is returned. An EGL_BAD_DISPLAY error is generated if
+ <dpy> is not a valid display, unless <dpy> is EGL_NO_DISPLAY and <name> is
+ EGL_EXTENSIONS. An EGL_NOT_INITIALIZED error is generated if <dpy> is
+ a valid but uninitialized display. An EGL_BAD_PARAMETER error is generated
+ if <name> is not one of the values described above."
+
+Conformance Tests
+
+ 1. Before any call to eglGetDisplay, call `eglQueryString(EGL_NO_DISPLAY,
+ EGL_EXTENSIONS)`. Verify that either
+
+ a. The call returns NULL and generates EGL_BAD_DISPLAY.
+ b. The call returns an extension string that contains, at a minimum,
+ this extension and generates no error.
+
+ 2. Obtain a display with eglGetDisplay but do not initialize it. Verity
+ that passing the uninitialized display to `eglQueryString(dpy,
+ EGL_EXTENSIONS)` returns NULL and generates EGL_NOT_INITIALIZED.
+
+ 3. Obtain a list of display extensions by calling `eglQueryString(dpy,
+ EGL_EXTENSIONS)` on an initialized display. Obtain the list of client
+ extensions by calling `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)`.
+ If both calls succeed, verify the two lists are disjoint.
+
+Issues
+
+ 1. How should clients detect if this extension is supported?
+
+ RESOLVED: If an EGL implementation supports this extension, then
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)` returns
+ a well-formed extension string and generates no error. Otherwise, it
+ returns NULL and generates EGL_BAD_DISPLAY.
+
+ 2. On EGL platforms that define EGL_NO_DISPLAY as NULL, does not calling
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)` risk a null pointer
+ dereference? Therefore, how is it possible on such platforms for
+ a client to safely detect if this extension is supported?
+
+ RESOLVED: According to the EGL 1.4 specification, calling
+ `eglQueryString(EGL_NO_DISPLAY, name)` returns NULL and generates
+ EGL_BAD_DISPLAY. No null pointer dereference occurs even if the
+ platform defines EGL_NO_DISPLAY as NULL.
+
+ 3. What existing extensions should returned by
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)`?
+
+ RESOLVED: Possibly EGL_NV_system_time.
+
+ 4. What should be the relationship between the extension string of
+ EGL_NO_DISPLAY and the extension string of a valid display? That is,
+ should the former be a subset of the latter? Should the two be
+ disjoint? Should the relationship remain undefined?
+
+ Another phrasing of this issue is: When, if ever, should client
+ extensions appear in a display's extension string?
+
+ RESOLVED: The extension string of EGL_NO_DISPLAY must be disjoint
+ from the extension string of any valid display. That is, EGL_NO_DISPLAY
+ must advertise only client extensions, and valid displays must not
+ advertise client extensions. By defining a clear relationship between
+ the two types of extension strings, we enforce consistent behavior among
+ implementations, thus preventing possible confusion from application
+ developers.
+
+ DISCUSSION: This resolution has special implications for systems where
+ libEGL is a vendor-independent library that loads and then dispatches
+ to the appropriate vendor-provided EGL library. The resolution requires
+ that client extensions, as well the construction of extension strings,
+ be at least partially implemented in the vendor-independent library.
+
+ The alternative resolution of mandating the 'superset' relation (that
+ is, that the extension string of a valid display must be a superset of
+ that of EGL_NO_DISPLAY) was rejected due to potential confusion on
+ behalf of the application developer as well as the driver implementer.
+ What follows is an example of each.
+
+ a) Suppose an EGL implementation supported creation of
+ a software-renderer EGLDisplay through a client extension named
+ EGL_XYZ_platform_software_renderer. If the 'superset' relation were
+ mandated, then each display, whether it were hardware-accelerated or
+ software-only, would advertise the EGL_XYZ_platform_software_renderer
+ extension string. This would likely confuse application developers.
+
+ b) If the 'superset' relation were mandated, then the possibility
+ exists that a vendor would ship a hybrid extension that is both
+ a client extension and a display extension. Such a hybrid extension
+ poses subtle difficulties for systems where libEGL is
+ a vendor-independent library that dispatches to the appropriate
+ vendor-provided EGL driver. On such a system, the extension's hybrid
+ nature may require that each vendor-provided EGL driver support the
+ extension before the vendor-independent EGL library could safely
+ expose the extension. By choosing the 'disjoint' relation rather
+ than 'superset', we prevent this problematic situation from
+ occuring.
+
+ 5. Should client extension specifications explicitly state they are
+ returned in the extension string of EGL_NO_DISPLAY?
+
+ RESOLVED: Yes. Enforce this by requiring that client extension
+ specifications contain the toplevel section "Extension Type".
+
+ 6. As explained in the overview section, this "extension solves
+ a bootstrap problem for future EGL extensions that modify display
+ initialization". What solutions to the bootstrap problem were
+ considered? Why was EGL_EXT_client_extensions chosen as the best
+ solution?
+
+ DISCUSSION: First let's discuss the exact nature of the bootstrap
+ problem and of the future EGL extensions that modify display
+ initialization.
+
+ Mesa's EGL implementation supports multiple native platforms (such as
+ Wayland, GBM, and X11) at runtime, and we expect that more
+ implementations will do so in the future. The EGL API is deficient for
+ such implementations because it does not yet provide a way for clients
+ to query the set of supported native platforms. Also, EGL provides no
+ way for clients to specify to which platform the native display belongs
+ during display initialization. (That is, eglGetDisplay has a native
+ display parameter, but no parameter specifying the native platform).
+
+ Future EGL extensions, currently under progress, will solve these
+ deficiencies in the EGL API by (1) adding a variant of eglGetDisplay
+ that allows specification of the platform to which the native display
+ belongs and (2) by advertising the set of native platforms supported by
+ the implementation.
+
+ However, there exists a bootstrap problem here. To query if a given
+ native platform is supported, the EGL client must initialize an
+ EGLDisplay to query its extension string. But, not yet knowing which
+ native platforms the EGL implementation supports, the client cannot
+ safely pass any native display to eglGetDisplay, and therefore cannot
+ obtain an extension string.
+
+ The following solutions to this bootstrap problem have been considered.
+ For conciseness, let's refer to the future EGL extensions that modify
+ display initialization as "client extensions".
+
+ 1. PROPOSED SOLUTION: To determine if an EGL implementation supports
+ a given client extension, require that the EGL client call
+ eglGetProcAddress on some function defined by the extension. If
+ eglGetProcAddress returns non-null, then the implementation
+ supports the extension.
+
+ ANALYSIS: The EGL 1.4 spec permits eglGetProcAddress to return
+ non-null for unrecognized function names. Therefore, this
+ solution's method may produce false positives on some
+ implementations.
+
+ Also, this solution does not permit detection of client extensions
+ that add no new functions.
+
+ 2. PROPOSED SOLUTION: To determine if an EGL implementation supports
+ a given client extension, the EGL client should examine the
+ extension string of EGL_DEFAULT_DISPLAY. Querying
+ EGL_DEFAULT_DISPLAY is a failsafe mechanism by which the EGL
+ client can obtain an extension string, because EGL_DEFAULT_DISPLAY
+ is a valid input to eglGetDisplay regardless of which platforms
+ the EGL implementation supports.
+
+ ANALYSIS: This solution is awkward. It requires that the client
+ initialize a throw-away EGLDisplay solely to query its extension
+ string, even though the desired extension is not a property of any
+ display but of the EGL library itself.
+
+ This solution also has a subtle fatal problem. It is not backwards
+ compatible with Mesa. As of 2013-06-07, Mesa's EGL implementation
+ stores at runtime a user-chosen native platform in global
+ write-once state. Calling eglGetDisplay is one action that
+ results in writing to that state. Therefore, if a client process
+ running on such a problematic version of Mesa initialized
+ EGL_DEFAULT_DISPLAY solely to detect some client extension, then
+ the client process would be confined for its lifetime to use only
+ that platform to which EGL_DEFAULT_DISPLAY belongs. This
+ confinement may be fatal if the process had wanted to use
+ a different platform.
+
+ 3. PROPOSED SOLUTION: Abandon the concept of client extensions.
+ Instead, in implementations that support multiple window systems
+ at runtime, eglGetDisplay should autodetect the platform to which
+ the native display belongs. A suitable error should be generated
+ if an unsupported native display is passed to eglGetDisplay.
+
+ ANALYSIS: For some native platforms, the display type is opaque
+ with no defined ABI. (For example, in libX11 the 'Display' type is
+ an opaque typedef). There exists no method by which eglGetDisplay
+ could reliably detect that the given native display belongs to
+ such a platform.
+
+ This solution also has a subtle fatal problem. The client
+ extensions will likely specify that an EGL client may create EGL
+ resources from multiple platforms in the same process. But, Mesa's
+ global write-once state, mentioned above, prevents using multiple
+ platforms in one process. Therefore, under this proposed solution
+ and on a system where a problematic version of Mesa is installed,
+ the client would be unable to detect if EGL supported multiple
+ platforms per process without committing to the platform to which
+ the first initialized display belonged.
+
+ 4. ACCEPTED SOLUTION: Allow the EGL client to query the extension
+ string of EGL_NO_DISPLAY, which would contain the client
+ extensions.
+
+ ANALYSIS: This solution does not require the initialization of
+ a throw-away EGLDisplay, nor does it require that native display
+ types have a fixed ABI.
+
+ This is the solution described by this extension specification,
+ EGL_EXT_client_extensions.
+
+Revision History
+
+ Version 11, 2013.10.10 (Chad Versace)
+ - Fix conformance test #3. It should require that the display extension
+ list be disjoint to rather than a superset of the client extension
+ list. (The 'superset' requirement was changed pre-publication to
+ 'disjoint' in version 8).
+
+ Version 10, 2013.07.03 (Chad Versace)
+ - Version 9 and 10 are identical due to a versioning error.
+
+ Version 9, 2013.07.03 (Chad Versace)
+ - Define the concept of *extension type*, require require that each EGL
+ extension belong to exactly one type, and define two types: display
+ and client.
+ - Suggest new section "Extension Type" for future extension
+ specifications.
+ - Add new section 2.n Extensions.
+ - Simplify modifications to section 3.3 by using the new extension type
+ terminology.
+
+ Version 8, 2013.07.01 (Chad Versace)
+ - Change resolution of Issue 4 from the 'superset' relation to the
+ 'disjoint' relation, according to discussion with Jakob Bornecrantz.
+ Acked by James Jones.
+
+ Version 7, 2013.06.10 (Chad Versace)
+ - Fix typos.
+ s/unitialized/uninitialized/
+ s/EGL_NO_EXTENSIONS/EGL_EXTENSIONS/
+
+ Version 6, 2013.06.07 (Chad Versace)
+ - Remove the Motivation section, merging its content into the Overview
+ section and Issue 6.
+
+ Version 5, 2013.06.07 (Chad Versace)
+ - Resolve issue 3 regarding classifying currently published extensions
+ as client extensions.
+ - Resolve issue 4 regarding the relationship among client and display
+ extension strings.
+ - Add and resolve issue 5, requiring client extension specifications
+ to contain language about the EGL_NO_DISPLAY extension string.
+
+ Version 4, 2013.05.14 (Chad Versace)
+ - Add issue 4.
+
+ Version 3, 2013.03.24 (Chad Versace)
+ - Fix conformance test condition 1.b. The returned extension string
+ should list, at a minimum, this extension. [Found by Ian Romanick].
+ - Add section "Movivation". [Requested by Ian Romanick].
+
+ Version 2, 2013.03.06 (Chad Versace)
+ - Remove enum EGL_CLIENT_EXTENSIONS_EXT. Reuse EGL_EXTENSIONS for that
+ purpose.
+ - To obtain client extensions, require the eglQueryString be called
+ with dpy=EGL_NO_DISPLAY rather than dpy=NULL. [Suggested by James
+ Jones].
+ - Add descriptions of conformance tests. [Suggested by Ian Romanick].
+ - Add sections "Overview" and "Issues".
+
+ Version 1, 2013.03.06 (Chad Versace)
+ - First draft
+
+# vim: filetype=text expandtab autoindent shiftwidth=4 textwidth=80:
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt
new file mode 100644
index 0000000..1868feb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt
@@ -0,0 +1,146 @@
+Name
+
+ EXT_client_sync
+
+Name Strings
+
+ EGL_EXT_client_sync
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, April 20, 2018
+
+Number
+
+ EGL Extension #129
+
+Extension type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_EXT_sync_reuse
+
+Overview
+
+ The EGL_KHR_reusable_sync extension defines an EGL_SYNC_REUSABLE_KHR
+ EGLSync type which is signaled and unsignaled by client events. The
+ EGL_EXT_sync_reuse extension allows all EGLSyncs to become reusable.
+ The signaling behavior associated with EGL_SYNC_REUSABLE_KHR is
+ still desirable, but the name becomes misleading if all EGLSyncs can
+ be reused. This extension defines an EGLSync type with equivalent
+ behavior, separating the signaling mechanism from the reusability.
+
+New Procedures and Functions
+
+ EGLBoolean eglClientSignalSyncEXT(
+ EGLDisplay dpy,
+ EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+New Types
+
+ None
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSync, and returned
+ in <value> when eglGetSyncAttrib is called with <attribute>
+ EGL_SYNC_TYPE:
+
+ EGL_SYNC_CLIENT_EXT 0x3364
+
+ Returned in <value> when eglGetSyncAttrib is called with attribute
+ EGL_SYNC_CONDITION:
+
+ EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+
+Add to the list of sync object decriptions in 3.8.1 Sync Objects
+
+ A <client sync object> reflects the readiness of some client-side
+ state. Sync objects of this type are not visible to API contexts and
+ may not be used with eglWaitSync. They may be waited for with
+ eglClientWaitSync or polled with eglGetSyncAttrib as other sync
+ types.
+
+Add to the end of 3.8.1 Sync Objects
+
+ The command
+
+ EGLBoolean eglClientSignalSyncEXT(EGLDisplay dpy, EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+ may be called to switch sync objects which support it to the
+ signaled state. Currently only sync objects with type
+ EGL_SYNC_CLIENT_EXT provide this support. The attribute list may be
+ used to provide additional information to the signaling operation,
+ as defined for the sync type.
+
+ Errors
+
+ eglClientSignalSyncEXT returns EGL_FALSE on failure, and has no
+ effect on <sync>.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <sync> is not a valid sync object associated with <dpy>, an
+ EGL_BAD_PARAMETER error is generated.
+ If <attrib_list> contains an attribute name not defined for the
+ type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
+ If <sync>'s type does not support this direct signaling, an
+ EGL_BAD_ACCESS error is generated.
+
+Insert new subsection in 3.8.1 Sync Objects
+
+ 3.8.1.x Creating and Signaling Client Sync Objects
+
+ If type is EGL_SYNC_CLIENT_EXT, a client sync object is created. The
+ EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
+ or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
+ attributes may be specified for a client sync object. The value of
+ EGL_SYNC_CONDITION will be set to EGL_SYNC_CLIENT_SIGNAL_EXT.
+
+ A client sync object in the unsignaled state will switch to the
+ signaled state when eglClientSignalSyncEXT is called. No attributes
+ are supported for signaling a sync object of this type. Signaling a
+ client sync object which is already in the signaled state will have
+ no effect.
+
+ A client sync object which is in the signaled state may be switched
+ back to the unsignaled state with eglUnsignalSyncEXT. No attributes
+ are supported for unsignaling a sync object of this type.
+
+Add to the error list for eglWaitSync in 3.8.1.3 Waiting for Sync
+Objects
+
+ If <sync> is of type EGL_SYNC_CLIENT_EXT, an EGL_BAD_ACCESS error is
+ generated.
+
+Issues
+
+ None
+
+Revision History
+
+ #2 (April 20, 2018) Daniel Kartch
+ - Renamed to EXT
+ - Fixed missing attrib_list in New Functions section
+ - Eliminated condition as an allowed attribute at creation. This
+ is inconsistent with other sync extensions, and there is no
+ need to make it configurable at this time. Future extensions
+ can make the condition configurable if desired.
+
+ #1 (Feburary 22, 2018) Daniel Kartch
+ - Initial draft as XXX
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt
new file mode 100644
index 0000000..6e98428
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt
@@ -0,0 +1,400 @@
+Name
+
+ EXT_compositor
+
+Name Strings
+
+ EGL_EXT_compositor
+
+Contributors
+
+ Marc Moody
+ Daniel Herring
+
+Contacts
+
+ Marc Moody, Boeing Inc., marc dot d dot moody at boeing dot com
+ Daniel Herring, Core Avionics & Industrial Inc., daniel dot herring at ch1group dot com
+
+Status
+
+ Complete
+
+Version
+ Version 1.0, February 3, 2017
+
+Number
+
+ EGL Extension #116
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification - April 6, 2011, but may be implemented against earlier
+ versions.
+
+Overview
+
+ This extension allows for the composition of multiple windows within
+ a multi-partition EGL system. The extension allows a primary EGLContext and
+ window to be created for each display. All other windows are created using
+ non-displayable surfaces. A handle to each off-screen window is provided
+ to the primary EGLContext to allow the composition of all non-displayable windows
+ on a single display.
+
+ For each display, there is one EGLContext which has access to create on screen
+ windows, this is call the primary context for this display. All other EGLContexts
+ are referred to as secondary contexts.
+
+ This extension requires a multi-partition EGL driver to support asynchronous
+ rendering of off screen surfaces.
+
+ Information assurance is provided by preventing context and surface creation by
+ unregistered contexts and by preventing the non-primary contexts and surfaces
+ from rendering to the display.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglCompositorSetContextListEXT (const EGLint *external_ref_ids,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id,
+ const EGLint *context_attributes,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id,
+ const EGLint *external_win_ids,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id,
+ const EGLint *window_attributes,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id);
+
+ EGLBoolean eglCompositorSetSizeEXT (EGLint external_win_id,
+ EGLint width, EGLint height);
+
+ EGLBoolean eglCompositorSwapPolicyEXT (EGLint external_win_id,
+ EGLint policy);
+
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext:
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext and eglCreateWindowSurface:
+
+ EGL_EXTERNAL_REF_ID_EXT 0x3461
+
+ New attributes accepted by the <policy> argument of
+ eglCompositorSwapPolicyHint:
+
+ EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+
+ EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+
+Modify Section 3.7.1 of the EGL 1.4 Specification, paragraph 2
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ If eglCreateContext succeeds, it initializes the context to the initial state defined
+ for the current rendering API, and returns a handle to it. The context can be
+ used to render to any compatible EGLSurface.
+
+ To:
+ If eglCreateContext succeeds, it initializes the context to the initial state defined
+ for the current rendering API, and returns a handle to it. The context can be
+ used to render to any compatible off-screen rendering surface (Sections 3.5.2
+ and 3.5.4). A secondary context can be used to render to compatible window surfaces
+ which have been associated with the context using eglCompositorSetWindowListEXT. A
+ non-secondary context can be used to render to any compatible EGLSurface.
+
+Modify Section 3.7.1 of EGL 1.4 Specification, paragraph 5
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ attrib_list specifies a list of attributes for the context. The list has the same
+ structure as described for eglChooseConfig. The only attribute that can be specified
+ in attrib_list is EGL_CONTEXT_CLIENT_VERSION, and this attribute may only
+ be specified when creating a OpenGL ES context (e.g. when the current rendering
+ API is EGL_OPENGL_ES_API).
+
+ To:
+ attrib_list specifies a list of attributes for the context. The list has the same
+ structure as described for eglChooseConfig. The attributes that can be specified
+ in attrib_list are EGL_CONTEXT_CLIENT_VERSION, EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT,
+ EGL_EXTERNAL_REF_ID_EXT.
+
+Modify Section 3.7.1 of EGL 1.4 Specification, paragraph 7
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation of an OpenGL ES
+ 1.x context. An attribute value of 2 specifies creation of an OpenGL ES 2.x context.
+ The default value for EGL_CONTEXT_CLIENT_VERSION is 1.
+
+ To:
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation of an OpenGL ES
+ 1.x context. An attribute value of 2 specifies creation of an OpenGL ES 2.x context.
+ The default value for EGL_CONTEXT_CLIENT_VERSION is 1. EGL_CONTEXT_CLIENT_VERSION
+ may only be specified when creating a OpenGL ES context (e.g. when the current
+ rendering API is EGL_OPENGL_ES_API).
+
+Additions to Section 3.7.1 of the EGL 1.4 Specification (Creating Rendering Contexts).
+
+ The first call to eglCreateContext with EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT
+ set as EGL_TRUE in the <attrib-list> returns an EGLContext handle which will
+ act as the primary context for the specified EGLDisplay. This shall be the
+ only context on this EGLDisplay which is able to be bound to an on-screen window
+ on the EGLDisplay. Subsequent calls to eglCreateContext, for the same display,
+ in any address space with EGL_PRIMIARY_COMPOSITOR_CONTEXT_EXT set as EGL_TRUE
+ shall return EGL_NO_CONTEXT.
+ Subsequent calls, in any address space for the same display, to eglCreateContext
+ which do not use EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT should use the the attribute
+ EGL_EXTERNAL_REF_ID_EXT and an external reference identifier to create a valid
+ EGLContext.
+ Subsequent calls, in any address space for the same display, to eglCreateContext
+ which do not use EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT and do not use
+ EGL_EXTERNAL_REF_ID_EXT shall not create a context and shall return
+ EGL_NO_CONTEXT and set the error EGL_BAD_ACCESS.
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT notifies EGL that this context is the only
+ context allowed to render to a on screen window surface for this display. This
+ attribute is followed in the attribute list by either EGL_TRUE or EGL_FALSE.
+ EGL_EXTERNAL_REF_ID_EXT is followed by an external reference identifier which
+ associates this context with the list of allowed contexts set by
+ eglCompositorSetContextListEXT. If the reference identifier has already been
+ used to initiate another call to eglCreateContext in any address space, this
+ call shall fail and set the error EGL_BAD_ATTRIBUTE. IF the external reference
+ identifier is not a valid identifier the error EGL_BAD_ATTRIBUTE shall be set
+ and the call shall fail. If this attribute is set and the primary context has
+ not yet been created then the error EGL_BAD_MATCH and the call shall fail.
+
+ Only when the attributes specified via attrib_list and those specified for this
+ context using eglCompositorSetContextAttributesEXT are compatible will the
+ context be successfully created.
+
+Modify the list of parameters supported by eglCreateWindowSurface in section 3.5.1
+ (Creating On-Screen Rendering Surfaces) on p. 27:
+
+ An external window identifier (EGLuint external_win_id) is associated with
+ each off screen window. EGLNativeWindowType shall be EGLint and the
+ external window identifier shall be used as the value for the <win> parameter.
+ EGL_EXTERNAL_REF_ID_EXT with the context external reference id shall be in the
+ attrib_list. If the external window identifier and the external reference identifier
+ do not match a pair set using eglCompositorSetWindowListEXT window creation shall
+ fail.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetContextListEXT(const EGLint *external_ref_ids,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish the set of
+ all allowable secondary contexts by defining the set of external reference
+ identifiers. Secondary contexts shall identify their external reference
+ identifier by setting the EGL_EXTERNAL_REF_ID_EXT attribute when calling
+ eglCreateContext.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of external reference identifiers
+ with the active display.
+ This function shall only be called once per primary context. Subsequent calls
+ shall return EGL_FALSE and do nothing.
+
+ external_ref_ids shall be an array of user generated integers greater than 1.
+ num_entries shall specify the number of external_ref_ids.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id,
+ const EGLint *context_attributes,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish a list of compatible
+ context attributes.
+ Calls to this function when the primary context for the display is not active
+ shall return EGL_FALSE and do nothing. When the function is successful it shall
+ return EGL_TRUE and associate the given attributes to the subsequent
+ eglCreateContext call using the given external reference id.
+ The list of acceptable context_attributes is the same as the list for
+ eglCreateContext. Only when this list of attributes is compatible with those
+ used during context creation will the secondary context be created.
+ This function shall only be called once per secondary context, and must be called
+ before the secondary context is able to be created. Subsequent calls shall
+ return EGL_FALSE and do nothing.
+
+ num_entries shall specify the number of attributes in the list. This number
+ shall prevent accessing memory outside the attribute list, even if EGL_NONE is
+ not yet found in the list. If EGL_NONE is found sooner than this number of
+ attributes list parsing shall stop.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id,
+ const EGLint *external_win_ids,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish the set of
+ all allowable windows associated with a specific secondary context by defining
+ the set of external window identifiers. Window surface creation within secondary
+ contexts use the external window identifier as the native window handle parameter
+ of eglCreateWindowSurface and supply an external reference id as a window creation
+ attribute.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of external window identifiers
+ with the specified secondary context (external_ref_ids).
+
+ external_win_ids shall be an array of user generated integers greater than 1.
+ external window identifiers are unique within the primary EGLContext. Any
+ external window identifier may be associated with multiple secondary contexts
+ however only the first context which calls eglCreateWindowSurface shall
+ successfully create a window surface for the given window.
+ num_entries shall specify the number of external_ref_ids.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id,
+ const EGLint *window_attributes,
+ EGLint num_entries);
+
+ This function is called by the primary context to set window specific attributes
+ for the specified external window id.
+
+ The list of valid attributes are: EGL_WIDTH, EGL_HEIGHT, EGL_VERTICAL_RESOLUTION,
+ EGL_HORIZONRAL_RESOLUTION, EGL_PIXEL_ASPECT_RATIO.
+ EGL_WIDTH and EGL_HEIGHT shall set the maximum width and height the secondary
+ context is able to create a window surface with.
+ EGL_VERTICAL_RESOLUTION, EGL_HORIZONTAL_RESOLUTION, and EGL_PIXEL_ASPECT_RATIO
+ shall set the values of these used by the secondary context.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of attributes with the off screen
+ window ID (external_win_id).
+ This function shall only be called once per window, and must be called before
+ the secondary context is able to create the window surface. Subsequent calls
+ shall return EGL_FALSE and do nothing.
+
+ num_entries shall specify the number of attributes in the list. This number
+ shall prevent accessing memory outside the attribute list, even if EGL_NONE is
+ not yet found in the list. If EGL_NONE is found sooner than this number of
+ attributes list parsing shall stop.
+
+Add the function:
+
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id);
+
+ This function is similar to eglBindTexImage in that it binds the windows
+ color buffers to a texture object which can then be composited on the native
+ window by the primary context. This function shall only be callable within
+ the primary context while there is a texture object actively bound by the
+ native rendering API. The function shall return EGL_TRUE if the window is
+ successfully bound to the active texture object. The function shall return
+ EGL_FALSE if binding fails, the context is not the primary context, or the
+ external_win_id is not a valid external window reference as set using
+ eglCompositorSetWindowListEXT.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetSizeEXT(EGLint external_win_id,
+ EGLint width, EGLint height);
+
+ This function shall be called by the primary context to set the width and
+ height of the window. This function returns EGL_FALSE when called by a context
+ other than the primary context. This function will also return EGL_FALSE if
+ the new width and height are larger than the maximums set by
+ eglCompositorSetWindowAttributesEXT. Upon successful window resizing the function
+ shall return EGL_TRUE.
+ Secondary contexts may use EGL to query the windows width and height at runtime
+ to detect window resize events. The window buffer resizing shall be applied
+ to the newly active buffer after the secondary context calls eglSwapBuffers.
+ This will leave an average of 2 buffers which will have to be scaled by the
+ native rendering API to the new resolution.
+
+Add the function:
+
+ EGLBoolean eglCompositorSwapPolicyEXT(EGLint external_win_id,
+ EGLint policy);
+
+ This function shall be called by the primary context to specify the handling
+ of buffer swaps of the context specified by external_ref_id.
+
+ When the policy is set to EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT, and the
+ secondary context completes a frame by calling eglSwapbuffers, and the
+ primary context is actively reading from the front buffer associated with
+ the external window ID, then the just completed frame is dropped, no buffer
+ swap occurs, and eglSwapBuffers will return EGL_TRUE.
+ If EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT is specified and the primary context
+ is actively reading from the front buffer associated with the external window
+ ID then the secondary context's call to eglSwapBuffers will return EGL_FALSE.
+ eglSwapBuffers will continue to return EGL_FALSE as long as the primary context
+ is actively reading from the front buffer. Once the primary context finishes
+ reading from the front buffer the next call to eglSwapBuffers will
+ return EGL_TRUE. It is up to the application to decide if it will wait until
+ eglSwapBuffers returns EGL_TRUE before rendering again. If the secondary
+ context continues to render after eglSwapBuffers returns EGL_FALSE then it will
+ be as if the swap policy was EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT.
+
+
+Revision History
+ Version 0.1, 30/08/2014 - first draft.
+ Version 0.2, 24/09/2014 second draft.
+ Version 0.3, 21/12/2016
+ Khronos vendor extension clean-up.
+ Version 0.4, 05/01/2016
+ - Change from context and display limitation to context and window limitations
+ - Added additional functions related to external window ids contexts.
+ Version 1.0, 03/02/2017
+ - Fixed misc issues related to parameter names and types.
+
+Question: How are external reference and window IDs assigned and managed? Are they
+ reserved somehow within a new EGL C header file?
+Answer: External IDs are assigned from the software component with the primary
+ context during an EGL initialization stage using eglCompositorSet*ListEXT.
+ The secondary contexts are provided the appropriate external reference ID
+ during end system integration. It is recommended that these values be able
+ to be set via a configuration parameter to the application, to ease
+ integration of multiple programs.
+
+Question: What happens when the secondary contexts render faster than the
+ primary context?
+Answer: This is based on the swap policy set by the compositor, and the rate
+ difference between the render and the compositor. Secondary contexts
+ will be notified by EGL_FALSE being returned if the windows front buffer
+ is currently being read by the compositor. However, if the compositor is
+ not currently reading the front buffer the swap will succeed and the
+ secondary contexts latest rendered frame will now be in the front buffer
+ to be composited.
+
+Question: What happens when the primary context renders faster than the
+ secondary context(s)?
+Answer: The contents of the windows front buffer will be repeated.
+
+Question: Does this infer any Z-ordering for the off-screen surfaces?
+Answer: No, the Z-order is applied by the compositor when doing the final on
+ screen rendering of the off-screen surfaces. Or may be set if a Z-ordering
+ extension is applied to the attribute list of the window using
+ eglCompositorSetWindowAttributesEXT
+
+Comments:
+
+The driver should also have to have enough protection in it to prevent a random
+software component from passing random buffer handles to the driver to prevent
+access to other software components.
+
+The driver may force use of double buffering event if the window surface was created
+using an EGL_RENDER_BUFFER attribute set to EGL_SINGLE_BUFFER.
+
+If EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT is not used to create a context for a specified
+display then EGL will act as though this extension is not enabled.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt
new file mode 100644
index 0000000..9721195
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt
@@ -0,0 +1,111 @@
+Name
+
+ EGL_EXT_config_select_group
+
+Name Strings
+
+ EGL_EXT_config_select_group
+
+Contributors
+
+ Hal Gentz <zegentzy@protonmail.com>
+ Adam Jackson <ajax@redhat.com>
+ Robert Mader <robert.mader@posteo.de>
+
+Contacts
+
+ Hal Gentz <zegentzy@protonmail.com>
+
+Status
+
+ Draft
+
+Version
+
+ Version 4, 2021-06-24
+
+Number
+
+ EGL Extension #145
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ This extension is written against the wording of the 2014.08.27 revision
+ of the EGL 1.5 Specification.
+
+Overview
+
+ This extension provides a mechanism to lower the config selection priority
+ of the configs returned by eglChooseConfig. A new config attribute is
+ introduced, providing a way for the implementation to group configs into
+ different config selection categories. The config selection priorities of
+ all the configs in one category may be higher or lower than the ones in
+ other categories. The config selection priorities in one category follow
+ the rules of eglChooseConfig. See also GLX_SGIX_visual_select_group.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a new EGLConfig attribute:
+
+ EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+
+Additions to the EGL 1.5 Specification
+
+ In section 3.4 "Configuration Management", under the "Buffer Descriptions
+ and Attributes" heading, append to table 3.1 the following:
+
+ "EGL_CONFIG_SELECT_GROUP_EXT | integer | the config select group"
+
+ In section 3.4 "Configuration Management", under the "Other EGLConfig
+ Attribute Descriptions" heading, append to the end the following:
+
+ "The attribute EGL_CONFIG_SELECT_GROUP_EXT is used to specify the config
+ selection category of the config. Configs in the i-th category have a higher
+ config selection priority than those found in the (i+1)-th category.
+
+ "The attribute EGL_CONFIG_SELECT_GROUP_EXT is used by the implementation to
+ override the default sorting rules, by collecting configurations into
+ groups. It is not accepted by the <attrib_list> parameter of
+ eglChooseConfig, but it is accepted as the <attribute> in
+ eglGetConfigAtrrib."
+
+ In section 3.4 "Configuration Management", under the "Sorting of EGLConfigs"
+ heading, append to table 3.4 the following:
+
+ "EGL_CONFIG_SELECT_GROUP_EXT | 0 | Ignore | Smaller | 0"
+
+ In section 3.4 "Configuration Management", under the "Sorting of EGLConfigs"
+ heading, append before the list entry which starts with "1. Special: by
+ EGL_CONFIG_CAVEAT" the following entry:
+
+ "0. Smaller EGL_CONFIG_SELECT_GROUP_EXT."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 4, 2021-06-24 (Robert Mader)
+ - Moved to EXT, changed enum value to 0x34C0.
+
+ Version 3, 2020-04-06 (Robert Mader)
+ - Changed enum value to 0x31DF, added contributors.
+
+ Version 2, 2019-07-11 (Hal Gentz)
+ - Resolved issues pointed out by Adam Jackson.
+
+ Version 1, 2019-06-21 (Hal Gentz)
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt
new file mode 100644
index 0000000..a78f878
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt
@@ -0,0 +1,169 @@
+Name
+
+ EXT_create_context_robustness
+
+Name Strings
+
+ EGL_EXT_create_context_robustness
+
+Contributors
+
+ Daniel Koch, TransGaming
+ Contributors to EGL_KHR_create_context
+
+Contact
+
+ Greg Roth (groth 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 3, 2011/10/31
+
+Number
+
+ EGL Extension #37
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+ An OpenGL implementation supporting GL_ARB_robustness, an OpenGL ES
+ implementation supporting GL_EXT_robustness, or an implementation
+ supporting equivalent functionality is required.
+
+Overview
+
+ This extension allows creating an OpenGL or OpenGL ES context
+ supporting robust buffer access behavior and a specified graphics
+ reset notification behavior.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument to
+ eglCreateContext:
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+
+ Accepted as an attribute value for EGL_CONTEXT_RESET_NOTIFICATION_-
+ STRATEGY_EXT in the <*attrib_list> argument to eglCreateContext:
+
+ EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+
+Additions to the EGL 1.4 Specification
+
+ Replace section 3.7.1 "Creating Rendering Contexts" from the
+ fifth paragraph through the seventh paragraph:
+
+ <attrib_list> specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig. If an
+ attribute is not specified in <attrib_list>, then the default value
+ specified below is used instead. <attrib_list> may be NULL or empty
+ (first attribute is EGL_NONE), in which case attributes assume their
+ default values as described below. Most attributes are only meaningful
+ for specific client APIs, and will generate an EGL_BAD_ATTRIBUTE
+ error when specified to create for another client API context.
+
+ Context Versions
+ ----------------
+
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL ES
+ context to create. This attribute may only be specified when creating
+ an OpenGL ES context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API). An attribute value of 1 specifies creation of an
+ OpenGL ES 1.x context. An attribute value of 2 specifies creation of an
+ Open GL ES 2.x context. The default value for EGL_CONTEXT_CLIENT_VERSION
+ is 1.
+
+ Context Robust Access
+ -------------
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT indicates whether <robust buffer
+ access> should be enabled for the OpenGL ES context. Robust buffer
+ access is defined in the GL_EXT_robustness extension specification,
+ and the resulting context must support GL_EXT_robustness and robust
+ buffer access as described therein. The default value of
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT is EGL_FALSE.
+
+ Context Reset Notification
+ --------------------------
+
+ The attribute name EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_-
+ EXT specifies the <reset notification behavior> of the rendering
+ context. This attribute is only meaningful for OpenGL ES contexts,
+ and specifying it for other types of contexts will generate an
+ EGL_BAD_ATTRIBUTE error.
+
+ Reset notification behavior is defined in the GL_EXT_robustness
+ extension for OpenGL ES, and the resulting context must support
+ GL_EXT_robustness and the specified reset strategy. The attribute
+ value may be either EGL_NO_RESET_NOTIFICATION_EXT or EGL_LOSE_-
+ CONTEXT_ON_RESET_EXT, which respectively result in disabling
+ delivery of reset notifications or the loss of all context state
+ upon reset notification as described by the GL_EXT_robustness. The
+ default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT
+ is EGL_NO_RESET_NOTIFICATION_EXT.
+
+ Add to the eglCreateContext context creation errors:
+
+ * If <config> does not support a client API context compatible
+ with the requested context flags and context reset notification
+ behavior (for client API types where these attributes are
+ supported), then an EGL_BAD_CONFIG error is generated.
+
+ * If the reset notification behavior of <share_context> and the
+ newly created context are different then an EGL_BAD_MATCH error is
+ generated.
+
+
+Errors
+
+ EGL_BAD_CONFIG is generated if EGL_CONTEXT_OPENGL_ROBUST_ACCESS_-
+ EXT is set to EGL_TRUE and no GL context supporting the GL_EXT_-
+ robustness extension and robust access as described therein can be
+ created.
+
+ EGL_BAD_CONFIG is generated if no GL context supporting the
+ GL_EXT_robustness extension and the specified reset notification
+ behavior (the value of attribute EGL_CONTEXT_RESET_NOTIFICATION_-
+ STRATEGY_EXT) can be created.
+
+ BAD_MATCH is generated if the reset notification behavior of
+ <share_context> does not match the reset notification behavior of
+ the context being created.
+
+New State
+
+ None
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ None
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------ --------- ----------------------------------------
+ 3 31 Oct 2011 groth Reverted to attribute for robust access. Now it's a
+ companion to rather than subset of KHR_create_context
+ 2 11 Oct 2011 groth Merged ANGLE and NV extensions.
+ 1 15 July 2011 groth Initial version
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt
new file mode 100644
index 0000000..aece774
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt
@@ -0,0 +1,243 @@
+Name
+
+ EXT_device_base
+
+Name Strings
+
+ EGL_EXT_device_base
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+ Jamie Madill
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+
+ Rewritten in terms of split functionality in EXT_dispay_device and
+ EXT_device_enumeration.
+
+Version
+
+ Version 9 - March 24th, 2015
+
+Number
+
+ EGL Extension #72
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ The specifications of EGL_EXT_device_query and
+ EGL_EXT_device_enumeration are required to determine the
+ specification of this extension, although those extensions may not
+ be supported.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines the first step of this bootstrapping
+ process: Device enumeration.
+
+New Types
+
+ As defined by EGL_EXT_device_query.
+
+New Functions
+
+ As defined by EGL_EXT_device_query and EGL_EXT_device_enumeration.
+
+New Tokens
+
+ As defined by EGL_EXT_device_query.
+
+Add to section "3.2 Devices"
+
+ "EGL_EXT_device_base is equivalent to the combination of the
+ functionality defined by EGL_EXT_device_query and
+ EGL_EXT_device_enumeration."
+
+Issues
+
+ 1. Should there be a mechanism (such as an attribute list) to
+ filter devices in eglQueryDevicesEXT()?
+
+ RESOLVED: No. This could develop too much complexity, like
+ the EGLConfig mechanism. Instead, force applications to query
+ all devices and implement any desired filtering themselves.
+
+ 2. Should there be an eglSetDeviceAttribEXT()?
+
+ RESOLVED: No. Device properties are immutable.
+
+ 3. Should a device file descriptor attribute be included in the
+ base specification?
+
+ RESOLVED: No. It seems like an arbitrary attribute to include
+ in the base extension. Other extensions can easily be added
+ if this or other device attributes are needed.
+
+ 4. Should EGLDeviceEXT handles be opaque pointers or 32-bit
+ values?
+
+ RESOLVED: Opaque pointers. The trend seems to be to use
+ opaque pointers for object handles, and opaque pointers allow
+ more implementation flexibility than 32-bit values.
+ Additionally, the introduction of the EGLAttrib type allows
+ inclusion of pointer-sized types in attribute lists, which was
+ the only major advantage of 32-bit types.
+
+ 5. Should eglQueryDisplayAttribEXT be defined as part of this
+ extension?
+
+ RESOLVED: Yes. There are no other known uses for this
+ function, so it should be defined here. If other uses are
+ found, future extension specifications can reference this
+ extension or retroactively move it to a separate extension.
+
+ 6. How should bonded GPU configurations, such as SLI or Crossfire
+ be enumerated? What about other hybrid rendering solutions?
+
+ RESOLVED: Bonded GPUs should appear as one device in this API,
+ since the client APIs generally treat them as one device.
+ Further queries can be added to distinguish the lower-level
+ hardware within these bonded devices.
+
+ Hybrid GPUs, which behave independently but are switched
+ between in a manner transparent to the user, should be
+ enumerated separately. This extension is intended to be used
+ at a level of the software stack below this type of automatic
+ switching or output sharing.
+
+ 7. Should this extension require all displays to have an
+ associated, queryable device handle?
+
+ RESOLVED: Yes. This allows creating new namespace containers
+ that all displays can be grouped in to and allows existing
+ applications with display-based initialization code to easily
+ add device-level functionality. Future extensions are
+ expected to expose methods to correlate EGL devices and native
+ devices, and to use devices as namespaces for future objects
+ and operations, such as cross-display EGL streams.
+
+ 8. Are device handles returned by EGL valid in other processes?
+
+ RESOLVED: No. Another level of indirection is required to
+ correlate two EGL devices in separate processes.
+
+ 9. Is a general display pointer query mechanism needed, or should
+ an eglGetDevice call be added to query a display's associated
+ device?
+
+ RESOLVED: A general mechanism is better. It may have other
+ uses in the future.
+
+ 10. Should a new type of extension be introduced to query device-
+ specific extensions?
+
+ RESOLVED: Yes. Without this mechanism, it is likely that most
+ device extensions would require a separate mechanism to
+ determine which devices actually support them. Further,
+ requiring all device-level extensions to be listed as client
+ extensions forces them to be implemented in the EGL client
+ library, or "ICD". This is unfortunate since vendors will
+ likely wish to expose vendor-specific device extensions.
+
+ These advantages were weighed against the one known
+ disadvantage of a separate extension type: Increasing the
+ complexity of this extension and the EGL extension mechanism
+ in general.
+
+ 11. Is eglQueryDeviceStringEXT necessary, or should the device
+ extension string be queried using eglQueryDeviceAttribEXT?
+
+ RESOLVED: Using a separate query seems more consistent with
+ how the current extension strings are queried.
+
+ 12. Should this extension contain both device enumeration and
+ the ability to query the device backing an EGLDisplay?
+
+ RESOLVED: This extension initially included both of these
+ abilities. To allow simpler implementations to add only the
+ ability to query the device of an existing EGLDisplay, this
+ extension was split into two separate extensions:
+
+ EGL_EXT_device_query
+ EGL_EXT_device_enumeration
+
+ The presence of this extension now only indicates support
+ for both of the above extensions.
+
+Revision History:
+
+ #9 (March 24th, 2015) James Jones
+ - Split the extension into two child extensions:
+ EGL_EXT_device_query
+ EGL_EXT_device_enumeration
+
+ #8 (May 16th, 2014) James Jones
+ - Marked the extension complete.
+ - Marked all issues resolved.
+
+ #7 (April 8th, 2014) James Jones
+ - Renamed eglGetDisplayAttribEXT back to
+ eglQueryDisplayAttribEXT.
+ - Update wording based on the EGL 1.5 specification.
+ - Use EGLAttrib instead of EGLAttribEXT.
+ - Assigned values to tokens.
+
+ #6 (November 6th, 2013) James Jones
+ - Added EGL_BAD_DEVICE_EXT error code.
+ - Renamed some functions for consistency with the core spec
+
+ #5 (November 6th, 2013) James Jones
+ - Specified this is a client extension
+ - Renamed eglQueryDisplayPointerEXT eglGetDisplayAttribEXT
+ and modified it to use the new EGLAttribEXT type rather than
+ a void pointer
+ - Introduced the "device" extension type.
+ - Added eglQueryDeviceStringEXT to query device extension
+ strings
+ - Removed issues 5, 10, and 12 as they are no longer relevant
+ - Added issues 10 and 11.
+
+ #4 (May 14th, 2013) James Jones
+ - Merged in EGL_EXT_display_attributes
+ - Changed eglGetDisplayPointerEXT to eglQueryDisplayPointerEXT
+ - Remove eglGetDisplayAttribEXT since it has no known use case
+
+ #3 (April 23rd, 2013) James Jones
+ - Include EGL_NO_DEVICE_EXT
+ - Added issues 8 and 9
+
+ #2 (April 18th, 2013) James Jones
+ - Reworded issue 3 and flipped the resolution
+ - Added issues 5, 6, and 7
+ - Filled in the actual spec language modifications
+ - Renamed from EGL_EXT_device to EGL_EXT_device_base
+ - Fixed some typos
+
+ #1 (April 16th, 2013) James Jones
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt
new file mode 100644
index 0000000..fa125fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt
@@ -0,0 +1,223 @@
+Name
+
+ EXT_device_drm
+ EXT_output_drm
+
+Name Strings
+
+ EGL_EXT_device_drm
+ EGL_EXT_output_drm
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - December 28th, 2015
+
+Number
+
+ EGL Extension #79
+
+Extension Type
+
+ EGL device extension for EGL_EXT_device_drm
+
+ EGL display extension for EGL_EXT_output_drm
+
+Dependencies
+
+ EGL_EXT_device_drm requires EGL_EXT_device_base.
+
+ EGL_EXT_device_drm interacts with EGL_EXT_platform_device
+
+ EGL_EXT_device_drm requires a DRM driver.
+
+ EGL_EXT_output_drm requires EGL_EXT_output_base.
+
+ EGL_EXT_output_drm requires a DRM driver which supports KMS.
+
+ An EGLDisplay supporting EGL_EXT_output_drm must be associated
+ with an EGLDevice supporting EGL_EXT_device_drm.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ These extensions define how to map device and output handles between
+ EGL and DRM/KMS. An EGL implementation which provides these
+ extensions must have access to sufficient knowledge of the DRM
+ implementation to be able to perform these mappings. No requirements
+ are imposed on how this information is obtained, nor does this
+ support have any implications for how EGL devices and outputs are
+ implemented. Among the possibilities, support may be implemented in
+ a generic fashion by layering on top of DRM, or EGL and DRM backends
+ may be provided by the same vendor and share privileged lower level
+ resources. An implementation which supports these extensions may
+ support other low level device interfaces, such as OpenWF Display,
+ as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by EXT_device_drm:
+
+ Accepted as the <name> parameter of eglQueryDeviceStringEXT
+
+ EGL_DRM_DEVICE_FILE_EXT 0x3233
+
+ If EGL_EXT_platform_device is present, the following is accepted
+ in the <attrib_list> of eglGetPlatformDisplayEXT().
+
+ EGL_DRM_MASTER_FD_EXT 0x333C
+
+ Added by EXT_output_drm:
+
+ Accepted in the <attrib_list> of eglGetOutputLayersEXT and as
+ the <attribute> parameter of eglQueryOutputLayerAttribEXT
+
+ EGL_DRM_CRTC_EXT 0x3234
+ EGL_DRM_PLANE_EXT 0x3235
+
+ Accepted in the <attrib_list> of eglGetOutputPortsEXT and as
+ the <attribute> parameter of eglQueryOutputPortAttribEXT
+
+ EGL_DRM_CONNECTOR_EXT 0x3236
+
+New Behavior for EXT_device_drm
+
+ EGLDeviceEXTs may be mapped to DRM device files.
+
+ To obtain a DRM device file for an EGLDeviceEXT, call
+ eglQueryDeviceStringEXT with <name> set to EGL_DRM_DEVICE_FILE_EXT.
+ The function will return a pointer to a string containing the name
+ of the device file (e.g. "/dev/dri/cardN").
+
+If EGL_EXT_platform_device is present, replace the last sentence of the
+third paragraph in section 3.2 "Initialization" with the following:
+
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, the only valid attribute
+ name is EGL_DRM_MASTER_FD_EXT. If specified, the value must be a file
+ descriptor with DRM master permissions on the DRM device associated
+ with the specified EGLDevice, as determined by EGL_DRM_DEVICE_FILE_EXT.
+ If the file descriptor does not refer to the correct DRM device or
+ does not have master permissions, the behavior is undefined. Calls to
+ eglGetPlatformDeviceEXT() with the same values for <platform> and
+ <native_display> but distinct EGL_DRM_MASTER_FD_EXT values will return
+ separate EGLDisplays.
+
+ If EGL requires the use of the DRM file descriptor beyond the duration
+ of the call to eglGetPlatformDispay(), it will duplicate it. If no
+ file descriptor is specified and EGL requires one, it will attempt to
+ open the device itself. Applications should only need to specify a
+ file descriptor in situations where EGL may fail to open a file
+ descriptor itself, generally due to lack of permissions, or when EGL
+ will fail to acquire DRM master permissions due to conflicts with an
+ existing DRM client. DRM master permissions are only required when EGL
+ must modify output attributes. This extension does not define any
+ situations in which output attributes will be modified.
+
+New Behavior for EXT_output_drm
+
+ KMS CRTC, plane, and connector IDs may be used to restrict EGL
+ output handle searches and may be queried from EGL output handles.
+
+ Add to Table 3.10.3.1 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_DRM_CRTC_EXT integer S|R
+ EGL_DRM_PLANE_EXT integer S|R
+
+ Add to Table 3.10.3.2 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_DRM_CONNECTOR_EXT integer S|R
+
+ Add to description of eglOutputLayerAttribEXT:
+
+ If <layer> corresponds to a KMS CRTC and <attribute> is
+ EGL_DRM_PLANE_EXT, or if <layer> corresponds to a KMS plane and
+ <attribute> is EGL_DRM_CRTC_EXT, an EGL_BAD_MATCH error is
+ generated.
+
+Issues
+
+ 1) Should different values of EGL_DRM_MASTER_FD_EXT result in separate
+ EGLDisplays?
+
+ RESOLVED: Yes. Consider an application made up of two independent
+ modules running in two independently scheduled threads. Each
+ module calls eglGetPlatformDisplayEXT():
+
+ int fd = open("/dev/dri/card0", O_RDWR);
+ int attr1[] = { EGL_DRM_MASTER_FD_EXT, fd };
+ dpy1 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ attr1);
+
+ ...
+
+ dpy2 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ NULL);
+
+ Presumably, if dpy1 == dpy2, they would both be using the same DRM
+ fd for output operations internally. That would mean display
+ attribute updates would likely fail if dpy2 happened to be created
+ before dpy1. This would be painful to debug. If dpy2 != dpy1,
+ failure for dpy2 would be consistent and obvious. The application
+ author would be required to work out a scheme to share the master
+ FD between modules before creating EGL displays.
+
+Revision History:
+
+ #5 (December 28th, 2015) James Jones
+ - Added EGL_DRM_MASTER_FD_EXT and associated
+ language.
+ - Added issue 1.
+
+ #4 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Listed Daniel as the contact.
+
+ #3 (June 5th, 2014) Daniel Kartch
+ - Assigned enumerated values for constants.
+
+ #2 (May 28th, 2014) Daniel Kartch
+ - Simplified description of new behavior based on refinements
+ to EGL_EXT_output_base.
+
+ #1 (January 31st, 2014) Daniel Kartch
+ - Initial draft, representing a signficant reworking of
+ functionality previously proposed in
+ EGL_EXT_native_device_drm.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt
new file mode 100644
index 0000000..4c08844
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt
@@ -0,0 +1,106 @@
+Name
+
+ EXT_device_drm_render_node
+
+Name Strings
+
+ EXT_device_drm_render_node
+
+Contributors
+
+ James Jones
+ Simon Ser
+ Daniel Stone
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - June 4th, 2021
+
+Number
+
+ EGL Extension #144
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+ EGL_EXT_device_drm interacts with this extension.
+
+Overview
+
+ The EGL_EXT_device_drm extension provided a method for applications
+ to query the DRM device node file associated with a given
+ EGLDeviceEXT object. However, it was not clear whether it referred to
+ the primary or render device node. This extension adds an enum to
+ refer explicitly to the render device node and defines the existing
+ EGL_DRM_DEVICE_FILE_EXT as explicitly refering to the primary device
+ node.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <name> parameter of eglQueryDeviceStringEXT
+
+ EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+
+Changes to section 3.2 (Devices)
+
+ Add the following paragraph to the description of
+ eglQueryDeviceStringEXT:
+
+ "To obtain a DRM device file for the render node associated with an
+ EGLDeviceEXT, call eglQueryDeviceStringEXT with <name> set to
+ EGL_DRM_RENDER_NODE_FILE_EXT. The function will return a pointer to
+ a string containing the name of the device file (e.g.
+ "/dev/dri/renderDN"), or NULL if the device has no associated DRM
+ render node."
+
+ If EGL_EXT_device_drm is present, append the following to the
+ paragraph in the same section describing EGL_DRM_DEVICE_FILE_EXT:
+
+ "If the EGL_EXT_device_drm_render_node extension is supported, the
+ value returned will refer to a primary device node, and will be NULL
+ if the device has no associated DRM primary node. If
+ EGL_EXT_device_drm_render_node is not supported, the value returned
+ will refer to a primary device node if there exists one associated
+ with the device. Otherwise, it will refer to a render device node if
+ there exists one associated with the device. If neither exists, NULL
+ is returned."
+
+Issues
+
+ 1) Should this extension clarify that EGL_DRM_DEVICE_FILE_EXT refers
+ only to primary device nodes?
+
+ RESOLVED: Yes, but only when this extension is supported. Existing
+ implementations return render node paths for that string when no
+ suitable primary node is available.
+
+Revision History:
+
+ #2 (June 8th, 2021) James Jones
+ - Added issue #1 and related spec changes.
+
+ #1 (June 4th, 2021) James Jones
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt
new file mode 100644
index 0000000..c7920eb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt
@@ -0,0 +1,111 @@
+Name
+
+ EXT_device_enumeration
+
+Name Strings
+
+ EGL_EXT_device_enumeration
+
+Contributors
+
+ James Jones
+ Jamie Madill
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - March 24th, 2015
+
+Number
+
+ EGL Extension #88
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ Requires EGL 1.5 or an earlier verison of EGL with the
+ EGL_EXT_client_extensions extension.
+
+ Requires the EGL_EXT_device_query extension.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ The original EGL_EXT_device_base extension combined the conceptually
+ separate operations of querying the underlying device used by a
+ given EGLDisplay and enumerating devices from scratch. It was later
+ identified that the former is useful even in EGL implementations
+ that have no need or ability to allow enumerating all the devices
+ available on a system. To accommodate this, the extension was
+ split in two.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
+ EGLDeviceEXT *devices,
+ EGLint *num_devices);
+
+Add the following at the beginning of section "3.2 Devices"
+
+ "EGL devices can be enumerated before EGL is initialized. Use:
+
+ EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
+ EGLDeviceEXT *devices,
+ EGLint *num_devices);
+
+ "to obtain a list of all supported devices in the system. On
+ success, EGL_TRUE is returned, and <num_devices> devices are
+ stored in the array pointed to by <devices>. <num_devices> will
+ be less than or equal to <max_devices>. If <devices> is NULL,
+ then <max_devices> will be ignored, no devices will be returned in
+ <devices>, and <num_devices> will be set to the number of
+ supported devices in the system. All implementations must support
+ at least one device.
+
+ "On failure, EGL_FALSE is returned. An EGL_BAD_PARAMETER error is
+ generated if <max_devices> is less than or equal to zero unless
+ <devices> is NULL, or if <num_devices> is NULL."
+
+Remove the following paragraph from section "3.4 Display Attributes"
+
+ "Because the EGLDeviceEXT is a property of <dpy>, any use of an
+ associated EGLDeviceEXT after <dpy> has been terminated gives
+ undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a
+ call to eglTerminate() (and subsequent re-initialization) may
+ return a different value."
+
+Issues
+
+ None
+
+Revision History:
+
+ #1 (March 24th, 2015) James Jones
+ - Initial branch from EGL_EXT_device_base version #8
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt
new file mode 100644
index 0000000..2fb4d3b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt
@@ -0,0 +1,230 @@
+Name
+
+ EXT_device_openwf
+ EXT_output_openwf
+
+Name Strings
+
+ EGL_EXT_device_openwf
+ EGL_EXT_output_openwf
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - January 21, 2016
+
+Number
+
+ EGL Extension #80
+
+Extension Type
+
+ EGL device extension for EGL_EXT_device_openwf
+
+ EGL display extension for EGL_EXT_output_openwf
+
+Dependencies
+
+ EGL_EXT_device_openwf requires EGL_EXT_device_base.
+
+ EGL_EXT_output_openwf requires EGL_EXT_output_base.
+
+ Both require OpenWF Display
+
+ EGL_EXT_device_openwf interacts with EGL_EXT_platform_device
+
+ An EGLDisplay supporting EGL_EXT_output_openwf must be associated
+ with an EGLDevice supporting EGL_EXT_device_openwf.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ These extensions define how to map device and output handles between
+ EGL and OpenWF Display. An EGL implementation which provides these
+ extensions must have access to sufficient knowledge of the OpenWF
+ implementation to be able to perform these mappings. No requirements
+ are imposed on how this information is obtained, nor does this
+ support have any implications for how EGL devices and outputs are
+ implemented. An implementation which supports these extensions may
+ support other low level device interfaces, such as DRM/KMS, as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by EXT_device_openwf:
+
+ Accepted as the <attribute> parameter of eglQueryDeviceAttribEXT
+
+ EGL_OPENWF_DEVICE_ID_EXT 0x3237
+
+ If EGL_EXT_platform_device is present, the following is accepted
+ in the <attrib_list> of eglGetPlatformDisplayEXT().
+
+ EGL_OPENWF_DEVICE_EXT 0x333D
+
+ Added by EXT_output_openwf:
+
+ Accepted in the <attrib_list> of eglGetOutputLayersEXT and as
+ the <attribute> parameter of eglQueryOutputLayerAttribEXT
+
+ EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+
+ Accepted in the <attrib_list> of eglGetOutputPortsEXT and as
+ the <attribute> parameter of eglQueryOutputPortAttribEXT
+
+ EGL_OPENWF_PORT_ID_EXT 0x3239
+
+New Behavior for EXT_device_openwf
+
+ EGLDeviceEXTs may be mapped to OpenWF Display devices.
+
+ To obtain a WFD_DEVICE_ID for an EGLDeviceEXT, call
+ eglQueryDeviceAtribEXT with <attribute> set to
+ EGL_OPENWF_DEVICE_ID_EXT.
+
+If EGL_EXT_platform_device is present, replace the last sentence of the
+third paragraph in section 3.2 "Initialization" with the following:
+
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, the only valid attribute
+ name is EGL_OPENWF_DEVICE_EXT. If specified, the value must be a
+ WFDDevice created with the device ID returned by querying
+ EGL_OPENWF_DEVICE_ID_EXT from the specified EGLDevice. If the device
+ handle does not refer to the correct OpenWF device the behavior is
+ undefined. Calls to eglGetPlatformDeviceEXT() with the same values
+ for <platform> and <native_display> but distinct EGL_OPENWF_DEVICE_EXT
+ values will return separate EGLDisplays.
+
+ EGL may require the use of the OpenWF device beyond the duration of
+ the call to eglGetPlatformDisplayEXT(). The application must ensure
+ the device handle remains valid for the lifetime of the display
+ returned. If no OpenWF device handle is specified and EGL requires
+ one, it will attempt to create the device itself. Applications
+ should only need to specify an OpenWF device in situations where EGL
+ may fail to create one itself due to an existing instance of the same
+ underlying device in the process.
+
+New Behavior for EXT_output_openwf
+
+ OpenWF pipeline and port IDs may be used to restrict EGL output
+ handle searches and may be queried from EGL output handles.
+
+ Add to Table 3.10.3.1 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ -------------------------- ------- ------
+ EGL_OPENWF_PIPELINE_ID_EXT integer S|R
+
+ Add to Table 3.10.3.2 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ -------------------------- ------- ------
+ EGL_OPENWF_PORT_ID_EXT integer S|R
+
+Issues
+
+ 1. Although the overview says that we do not impose any
+ restrictions on how the features are implemented, restrictions
+ in the OpenWF specification combined with the chosen interface
+ here do implicitly impose limitations. Specifically, the
+ wfdCreate* functions can only be called once to obtain OpenWF
+ handles. This means that an EGLDevice/Output implementation
+ cannot be layered on top of OpenWF without preventing the
+ application from calling these functions. So we must assume that
+ the implementation instead has some backdoor into OpenWF to
+ obtain the object IDs. Possible resolutions include:
+ a) Keep the access model as is. This assumption is a reasonable
+ one.
+ b) Flip the requirement. The EGL device/output implementation
+ should always create the OpenWF handles itself. We can add
+ queries so that the application can get these handles from
+ EGL.
+ c) Generalize this extension to support both models. The
+ application would have to first query EGL to determine
+ whether or not it owns the handles, and then be prepared to
+ either query them from EGL or create them itself.
+ d) Require the application to provide its OpenWF device handle
+ if it has one.
+
+ RESOLVED: (d), though implementations are free to use (a) when
+ possible.
+
+ 2. Should different values of EGL_OPENWF_DEVICE_EXT result in separate
+ EGLDisplays?
+
+ RESOLVED: Yes. Consider an application made up of two independent
+ modules running in two independently scheduled threads. Each
+ module calls eglGetPlatformDisplayEXT():
+
+ WFDDevice wfdDev = wfdCreateDevice(WFD_DEFAULT_DEVICE_ID, NULL);
+ int attr1[] = { EGL_OPENWF_DEVICE_EXT, wfdDev };
+ dpy1 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ attr1);
+
+ ...
+
+ dpy2 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ NULL);
+
+ Presumably, if dpy1 == dpy2, they would both be using the same
+ WFDDevice for output operations internally. That would mean
+ output operations would likely fail if dpy2 happened to be created
+ before dpy1. This would be painful to debug. If dpy2 != dpy1,
+ failure for dpy2 would be consistent and obvious. The application
+ author would be required to work out a scheme to share the WFDDevice
+ between modules before creating EGL displays.
+
+Revision History:
+
+ #5 (January 21st, 2016) James Jones
+ - Add EGL_OPENWF_DEVICE_EXT to resolve issue 1.
+ - Added possible solution (d) to issue 1, and resolve to use it.
+ - Added issue 2.
+
+ #4 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Listed Daniel as the contact.
+
+ #3 (June 5th, 2014) Daniel Kartch
+ - Assign enumerated values for constants.
+
+ #2 (May 28th, 2014) Daniel Kartch
+ - Simplified description of new behavior based on refinements
+ to EGL_EXT_output_base.
+
+ #1 (January 31st, 2014) Daniel Kartch
+ - Initial draft, representing a signficant reworking of
+ functionality previously proposed in
+ EGL_EXT_native_device_openwf.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt
new file mode 100644
index 0000000..081a6d1
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt
@@ -0,0 +1,202 @@
+Name
+
+ EXT_device_persistent_id
+
+Name Strings
+
+ EGL_EXT_device_persistent_id
+
+Contributors
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Contact
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Version
+
+ Version 1 - April 19, 2021
+
+Number
+
+ EGL Extension #142
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ Applications can query a list of EGLDeviceEXT handles, but those
+ handles are only valid within the process that queried them. An
+ application has no way, for example, to record its selection and
+ select the same device when run again later.
+
+ This extension provides a vendor name and a set of UUID's, which
+ provide a unique, persistent identifier for EGLDeviceEXT handles.
+ This allows applications to find the EGLDeviceEXT for the same
+ device across multiple processes, and across multiple APIs.
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryDeviceBinaryEXT(EGLDeviceEXT device,
+ EGLint name,
+ EGLint max_size,
+ void *value,
+ EGLint *size);
+
+New Tokens
+
+ Accepted by the <name> parameter of eglQueryDeviceStringEXT:
+
+ EGL_DRIVER_NAME_EXT 0x335E
+
+ Accepted by the <name> parameter of eglQueryDeviceBinaryEXT:
+
+ EGL_DEVICE_UUID_EXT 0x335C
+ EGL_DRIVER_UUID_EXT 0x335D
+
+Changes to section 3.2 (Devices)
+
+ Add the following paragraph to the description of
+ eglQueryDeviceStringEXT:
+
+ EGL_DRIVER_NAME_EXT returns a string which identifies the driver
+ that controls the device. This string remains persistent across
+ multiple versions of a driver, and an application can use strcmp(3)
+ to compare the strings for equality. Otherwise, the contents are
+ implementation-defined.
+
+
+ Add to the end of section 3.2:
+
+ To query a binary attribute for a device, use:
+
+ EGLBoolean eglQueryDeviceBinaryEXT(EGLDeviceEXT device,
+ EGLint name,
+ EGLint max_size,
+ void *value,
+ EGLint *size);
+
+ On success, EGL_TRUE is returned. If <value> is NULL, then
+ <max_size> is ignored, and the size of the attribute in bytes is
+ returned in <size>.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_ATTRIBUTE error is
+ generated if <name> is not a valid attribute. An EGL_BAD_DEVICE_EXT
+ error is generated if <device> is not a valid EGLDeviceEXT.
+
+ If <value> is not NULL, then the attribute value is returned in
+ <value>. At most <max_size> bytes are written. <size> returns the
+ number of bytes that were actually written.
+
+ Note that the EGL_DEVICE_UUID_EXT and EGL_DRIVER_UUID_EXT attributes
+ are always 16-byte values, and so the application can simply use a
+ 16-byte buffer without needing to query the size beforehand. Future
+ extensions may add variable-length attributes.
+
+
+ EGL_DEVICE_UUID_EXT is a UUID that identifies a physical device,
+ returned as a 16-byte binary value. The device UUID uniquely
+ identifies a physical device, and is persistent across reboots,
+ processes, APIs, and (to the extent possible) driver versions.
+
+ EGL_DEVICE_UUID_EXT may or may not be persistent across changes in
+ hardware configuration. Similarly, it is not guaranteed to be unique
+ or persistent across different (physical or virtual) computers.
+
+ Note that EGL_DEVICE_UUID_EXT alone is not guaranteed to be unique
+ across all EGLDeviceEXT handles. If an EGL implementation supports
+ multiple drivers, and two drivers can use the same physical device,
+ then there will be a separate EGLDeviceEXT handle from each driver.
+ Both EGLDeviceEXT handles may use the same device UUID.
+
+ In that case, an application must use EGL_DRIVER_NAME_EXT or
+ EGL_DRIVER_UUID_EXT to distinguish between the two EGLDeviceEXT
+ handles.
+
+
+ EGL_DRIVER_UUID_EXT is a UUID that identifies a driver build
+ in use for a device. The driver UUID is persistent across reboots,
+ processes, and APIs, but is not persistent across driver versions.
+
+Issues
+
+ 1. Should we use UUID's or strings to identify devices?
+
+ RESOLVED: Use UUID's for devices, plus a vendor name string to
+ disambiguate devices that are supported by multiple drivers.
+
+ A device UUID and driver UUID allow an application to correlate
+ an EGLDeviceEXT with the same device in other APIs, such as a
+ VkPhysicalDevice in Vulkan.
+
+ A UUID does not impose any additional requirements on an EGL
+ implementation compared to a string: If an EGL implementation
+ could generate a string identifier, then the implementation can
+ simply hash that string to generate a UUID value.
+
+ 2. Can two EGLDeviceEXT handles have the same EGL_DEVICE_UUID_EXT?
+
+ RESOLVED: Yes, if they correspond to the same physical device.
+
+ The semantics of the device and driver UUID's are inherited from
+ Vulkan, which only requires that a device UUID be unique to a
+ physical device, not unique across VkPhysicalDevice handles.
+
+ 3. Do we need the EGL_DRIVER_NAME_EXT string?
+
+ RESOLVED: Yes, because the EGL_DEVICE_UUID_EXT alone is not
+ unique, and EGL_DRIVER_UUID_EXT is not persistent.
+
+ A (EGL_DRIVER_NAME_EXT, EGL_DEVICE_UUID_EXT) pair provides a
+ unique, persistent identifier.
+
+ In addition, on systems that use libglvnd, applications could
+ use EGL_DRIVER_NAME_EXT to match the vendor names from
+ GLX_EXT_libglvnd.
+
+ 4. What happens if an application stores a device UUID, and the
+ hardware configuration or driver version changes?
+
+ RESOLVED: The device UUID may become invalid, and the
+ application should select a new device.
+
+ If a device is removed from a system, then there will be no
+ EGLDeviceEXT handle for it, and thus no device UUID for it.
+
+ Similarly, if a device is moved within a system (e.g., plugged
+ into a different PCI slot), then a driver may not be able to
+ identify it as the same device, and so the device might get a
+ different UUID.
+
+ While not a requirement, drivers should still try to keep device
+ UUID's persistent whenever possible, to avoid invalidating
+ config files. Similarly, if a device is removed or replaced,
+ then a driver should try to ensure that the same device UUID
+ does not refer to a different device.
+
+ As an example, a driver could derive a UUID based on a PCI
+ vendor and device number, plus the PCI domain, bus, slot, and
+ function numbers:
+
+ * The PCI device number ensures that replacing a GPU with a
+ different model in the same PCI slot produces a different
+ device UUID string.
+ * Using the PCI bus numbers ensures that two identical
+ GPU's in the same system have unique UUID's.
+ * The whole tuple can easily stay persistent across driver
+ versions.
+
+Revision History
+
+ #1 (April 19, 2021) Kyle Brenneman
+
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt
new file mode 100644
index 0000000..b976aa9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt
@@ -0,0 +1,188 @@
+Name
+
+ EXT_device_query
+
+Name Strings
+
+ EGL_EXT_device_query
+
+Contributors
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+ Jamie Madill, Google (jmadill 'at' google.com)
+
+Contacts
+
+ Jamie Madill, Google (jmadill 'at' google.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - Mar 25rd, 2015
+
+Number
+
+ EGL Extension #89
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ Requires EGL 1.5 or an earlier verison of EGL with the
+ EGL_EXT_client_extensions extension.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to access native GPU or device objects directly
+ rather than calling EGL or GL entry points.
+
+ This extension defines the method for an application to query
+ native device objects from an EGL Display.
+
+New Types
+
+ This is the type of a handle that represents an EGLDeviceEXT
+ object.
+
+ typedef void* EGLDeviceEXT;
+
+ If EGL 1.5 is not supported, the following type is added, as
+ defined in the EGL 1.5 specification:
+
+ typedef intptr_t EGLAttrib;
+
+New Functions
+
+ EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char *eglQueryDeviceStringEXT(EGLDeviceEXT device,
+ EGLint name);
+
+ EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib *value);
+
+New Tokens
+
+ Functions with a return type of EGLDeviceEXT will return this
+ value on failure:
+
+ EGL_NO_DEVICE_EXT ((EGLDeviceEXT)0)
+
+ This error value will be generated by functions that take an
+ EGLDeviceEXT object as a parameter:
+
+ EGL_BAD_DEVICE_EXT 0x322B
+
+ Accepted by the <attribute> parameter of
+ eglQueryDisplayAttribEXT:
+
+ EGL_DEVICE_EXT 0x322C
+
+Add a new section "2.1.2 Devices" after "2.1.1 Scalar Types"
+
+ All EGL operations occur on an EGLDeviceEXT. However, devices
+ themselves expose no functionality. They are simple abstract
+ objects that exist only for the sake of enumeration and
+ defining a namespace.
+
+Modify the last sentence of section "2.1.3" Displays" to read:
+
+ Besides devices, objects are always specified by the combination
+ of an EGLDisplay parameter with a parameter representing the
+ handle of the object.
+
+Add a new extension type to the list in section "2.8 Extensions"
+
+ Device Extensions
+ A *device extension* adds functionality to an individual
+ EGLDeviceEXT. Different instances of EGLDeviceEXT may support
+ different sets of device extensions
+
+Add a new error to section "3.1 Errors"
+
+ EGL_BAD_DEVICE_EXT
+ An EGLDeviceEXT argument does not refer to a valid
+ EGLDeviceEXT. Any command taking an EGLDeviceEXT parameter
+ may generate this error.
+
+Add a section "3.2 Devices" after "3.1 Errors"
+
+ To query the properties of a device, use:
+
+ EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned and the requested attribute value
+ is returned in <value>. Currently there are no valid values of
+ <attribute> defined.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_ATTRIBUTE error is
+ generated if <attribute> is not a valid attribute. An
+ EGL_BAD_DEVICE_EXT error is generated if <device> is not a valid
+ EGLDeviceEXT.
+
+ const char *eglQueryDeviceStringEXT(EGLDeviceEXT device,
+ EGLint name);
+
+ returns a pointer to a static, zero-terminated string describing
+ some aspect of the specified EGLDeviceEXT. <name> must be
+ EGL_EXTENSIONS.
+
+ The EGL_EXTENSIONS string describes which device extensions are
+ supported by <device>. The string is of the same format specified
+ for display and client extension strings in section 3.4. Note that
+ device extensions are properties of the device, and are distinct
+ from other extension strings.
+
+ On failure, NULL is returned. An EGL_BAD_DEVICE_EXT error is
+ generated if <device> is not a valid EGLDeviceEXT. An
+ EGL_BAD_PARAMETER error is generated if <name> is not one of the
+ values described above.
+
+Add a section "3.4 Display Attributes" after "3.3 EGL Versioning"
+
+ To query attributes of an initialized display, use:
+
+ EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned. If <name> is EGL_DEVICE_EXT,
+ the EGLDeviceEXT associated with <dpy> is returned in <value>.
+ All displays have an associated EGLDeviceEXT, regardless of how
+ they were created. A successful query of EGL_DEVICE_EXT will
+ never return EGL_NO_DEVICE_EXT.
+
+ On failure, EGL_FALSE is returned. An EGL_NOT_INITIALIZED error
+ is generated if EGL is not initialized for <dpy>. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ value.
+
+ Because the EGLDeviceEXT is a property of <dpy>, any use of an
+ associated EGLDeviceEXT after <dpy> has been terminated gives
+ undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a
+ call to eglTerminate() (and subsequent re-initialization) may
+ return a different value.
+
+Issues
+
+ None.
+
+Revision History:
+
+ #1 (Mar 25rd, 2015) Jamie Madill
+ - Initial Draft based on EGL_EXT_device_base
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt
new file mode 100644
index 0000000..bb2be91
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt
@@ -0,0 +1,104 @@
+Name
+
+ EXT_device_query_name
+
+Name Strings
+
+ EGL_EXT_device_query_name
+
+Contributors
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Contact
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - June 12, 2020
+
+Number
+
+ EGL Extension #140
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ The EGL_EXT_device_enumeration and EGL_EXT_device_query extensions
+ provide a list of devices and a list of extensions, but lacks a way
+ to find a name for a device that an application can present to a
+ user.
+
+ This extension adds two new strings that an application can query to
+ find human-readable names.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <name> parameter of eglQueryDeviceStringEXT:
+
+ EGL_RENDERER_EXT 0x335F
+
+New Device Queries
+
+ eglQueryDeviceStringEXT accepts two new attributes.
+
+ EGL_VENDOR and EGL_RENDERER_EXT return a human-readable name for the
+ vendor and device, respectively.
+
+ The format of the EGL_VENDOR and EGL_RENDERER strings is
+ implementation-dependent.
+
+ The EGL_VENDOR string for an EGLDeviceEXT is not required to match
+ the EGL_VENDOR string for an EGLDisplay or the GL_VENDOR string for
+ a context. Similarly, the EGL_RENDERER string is not required to
+ match the GL_RENDERER string for a context.
+
+Issues
+
+ 1. Do we need a device query, instead of just creating an
+ EGLDisplay and calling eglQueryString?
+
+ RESOLVED: Yes, a device-level query is useful, because some
+ devices might not be usable with EGL_EXT_platform_device. This
+ is especially true on systems where different devices are
+ handled by different drivers.
+
+ 2. If an application creates an EGLDisplay from an EGLDevice,
+ are the EGL_VENDOR strings required to match?
+
+ RESOLVED: No. Some implementations might not load a driver until
+ eglInitialize, and so might have a different or more specific
+ EGL_VENDOR string associated with an EGLDisplay than with an
+ EGLDeviceEXT. In addition, an implementation might select a
+ driver to use based on other parameters in
+ eglGetPlatformDisplay.
+
+Revision History
+
+ #1 (June 12, 2020) Kyle Brenneman
+
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt
new file mode 100644
index 0000000..2ba8834
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_explicit_device
+
+Name Strings
+
+ EGL_EXT_explicit_device
+
+Contributors
+
+ Adam Jackson
+ Nicolai Haehnle
+ Daniel Stone
+ Kyle Brenneman
+
+Contacts
+
+ Adam Jackson <ajax@redhat.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, 2022-04-21
+
+Number
+
+ EGL Extension #148
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_platform_base and EGL_EXT_device_enumeration.
+
+ EGL_EXT_platform_device trivially interacts with this extension.
+
+ This extension is written against the EGL 1.5 Specification.
+
+Overview
+
+ A system may support rendering with multiple devices for the same
+ windowing system. In that case, an EGL implementation must select a
+ default device based on the native display.
+
+ This extension allows an application to explicitly request a device
+ to use for rendering instead of the implementation's default.
+
+ This differs from EGL_EXT_platform_device in that
+ EGL_EXT_platform_device uses an EGLDeviceEXT instead of a native
+ display. Thus, EGL_EXT_platform_device allows offscreen rendering
+ to a pbuffer or FBO, but it does not require or use a windowing
+ system, and thus does not allow pixmap or window surfaces.
+
+ Using EGL_EXT_explicit_device with EGL_MESA_platform_surfaceless is
+ functionally identical to EGL_EXT_platform_device.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL Specification
+
+ None
+
+New Behavior
+
+ If EGL_DEVICE_EXT is specified as an attribute for
+ eglGetPlatformDisplay, the value of the attribute is interpreted as
+ an EGLDeviceEXT as returned by eglQueryDevicesEXT.
+
+ If the EGL_DEVICE_EXT attribute is EGL_NO_DEVICE_EXT, then the
+ implementation will select a device automatically, as it would
+ normally.
+
+ If the EGL_DEVICE_EXT attribute is not EGL_NO_DEVICE_EXT, then the
+ implementation will use the specified device for rendering. If the
+ EGL_DEVICE_EXT attribute does not name a valid EGLDeviceEXT, then
+ EGL_BAD_DEVICE_EXT is generated.
+
+ An implementation might not support all devices for all native
+ displays. If the device and native display are not compatible for
+ any reason, then EGL_BAD_MATCH is generated.
+
+ If EGL_EXT_platform_device is supported, passing EGL_DEVICE_EXT as an
+ attribute to eglGetPlatformDisplay(EGL_PLATFORM_DEVICE_EXT) generates
+ EGL_BAD_ATTRIBUTE.
+
+Issues
+
+ 1. Should we have a separate function to query whether a device is
+ compatible with a native display?
+
+ RESOLVED: No. A separate query might require duplicating a lot of
+ the work that eglGetPlatformDisplay and eglInitialize would do,
+ which could be very slow.
+
+ 2. If an implementation can't support a device with a particular
+ native display, then should it fail in eglGetPlatformDisplay, or
+ can it defer any compatibility checks until eglInitialize?
+
+ RESOLVED: eglGetPlatformDisplay must check for compatibility and
+ should fail if the device and native display are not supported.
+
+ Without a separate function to check for compatibility, the only
+ way for an application to know which devices can work with a
+ native display is to try to use each device and see if it gets an
+ error. If the error is in eglInitialize, then an application
+ would have to create (and leak) a bunch of EGLDisplay handles
+ that it never intends to use.
+
+Revision History
+
+ Version 3, 2022-04-21 (Kyle Brenneman)
+ - Require eglGetPlatformDisplay (instead of eglInitialize) check
+ whether the device is supported with the native display.
+
+ Version 2, 2017-08-08 (Adam Jackson)
+ - Renamed from MESA_platform_device to EXT_explicit_device
+ - Make it an error to use this new attribute in conjunction with
+ EGL_EXT_platform_device
+
+ Version 1, 2017-07-14 (Adam Jackson)
+ - Initial version
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
new file mode 100644
index 0000000..37eb6ba
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
@@ -0,0 +1,175 @@
+Name
+
+ EXT_gl_colorspace_bt2020
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_bt2020_linear
+ EGL_EXT_gl_colorspace_bt2020_pq
+
+Contributors
+
+ Tom Cooksey
+ Andrew Garrard
+ Jesse Hall
+ Mathias Heyer
+ Lauri Hyvarinen
+ Adam Jackson
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Weiwan Liu
+ Jeff Vigil
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 7 - Nov 22, 2016
+
+Number
+
+ EGL Extension #107
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ These extensions require EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications may wish to take advantage of a larger color gamut in the
+ BT.2020 (ITU-R Recommendation BT.2020) color space. These extensions allow
+ applications to do so by communicating to the platform the color space the
+ framebuffer data is in, i.e. BT.2020 color space, as well as the encoding
+ of the framebuffer data, which can be either linear or PQ (Dolby Perceptual
+ Quantizer - SMPTE ST 2084) encoding. Applications are expected to prepare
+ the framebuffer data properly.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_BT2020_LINEAR_EXT, then a linear BT.2020
+ color space is assumed, with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR.
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_BT2020_PQ_EXT, then a non-linear, PQ
+ encoded BT.2020 color space is assumed, with a corresponding GL_FRAMEBUFFER-
+ _ATTACHMENT_COLOR_ENCODING value of GL_LINEAR, as neither OpenGL nor OpenGL
+ ES supports PQ framebuffers. Applications utilizing this option need to
+ ensure that PQ encoding is performed on the application side.
+
+ Modify the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_SRGB attribute is used only by OpenGL and
+ OpenGL ES contexts supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the "sRGB Conversion"
+ sections of the OpenGL 4.4 and OpenGL ES 3.0 specifications for more
+ information.
+
+ Add a paragraph after the 4th paragraph above:
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_BT2020_-
+ LINEAR_EXT, the output values in the display-referred range of [0.0, 1.0]
+ correspond to a luminance range of 0 to 80 nits, which is the same luminance
+ range for sRGB. To achieve a larger dynamic range of 0 to 10000 nits, which
+ is the same range for PQ, the display-referred output values can go beyond
+ 1.0 and to a range of [0.0, 125.0], where 0.0 corresponds to 0 nit and 125.0
+ corresponds to 10000 nits.
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_BT2020_PQ_-
+ EXT, to achieve the luminance range of 0 to 10000 nits (candela per square
+ meter) as defined by the SMPTE 2084 standard, applications can output values
+ in a display-referred range of [0.0, 1.0], where 0.0 corresponds to 0 nit
+ and 1.0 corresponds to 10000 nits.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+Revision History
+
+ Version 1, 2016/04/27
+ - Internal revisions
+
+ Version 2, 2016/05/20
+ - Rename to EXT
+
+ Version 3, 2016/05/25
+ - Add issues
+
+ Version 4, 2016/06/06
+ - Split up the extension and put each colorspace option into an individual
+ extension
+
+ Version 5, 2016/06/17
+ - Correct the meaning of the data from scene-referred to display-referred
+
+ Version 6, 2016/10/27
+ - Mark issue #1 as "RESOLVED" and add an error case
+
+ Version 7, 2016/11/22
+ - Change status to complete
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt
new file mode 100644
index 0000000..32e7ebc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt
@@ -0,0 +1,137 @@
+Name
+
+ EXT_gl_colorspace_display_p3
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_display_p3_linear
+ EGL_EXT_gl_colorspace_display_p3
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Jesse Hall
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 2 - Oct 4, 2018
+
+Number
+
+ EGL Extension #118
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ These extensions require EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications that want to use the Display-P3 color space (DCI-P3 primaries
+ and linear or sRGB-like transfer function) can use this extension to
+ communicate to the platform that framebuffer contents represent colors in
+ the Display-P3 color space.
+ The application is responsible for producing appropriate framebuffer
+ contents, but will typically use built-in sRGB encoding in OpenGL and OpenGL
+ ES to accomplish this.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+
+ [[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT, then a linear
+ Display-P3 color space is assumed, with a corresponding
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_LINEAR.
+
+ [[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_EXT, then a non-linear, sRGB
+ encoded Display-P3 color space is assumed, with a corresponding GL_FRAME-
+ BUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB.
+ Only OpenGL and OpenGL ES contexts which support sRGB rendering must
+ respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and only to sRGB
+ formats supported by the context (normally just SRGB8).
+
+ Modify the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_SRGB attribute is used only by OpenGL and
+ OpenGL ES contexts supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the "sRGB Conversion"
+ sections of the OpenGL 4.4 and OpenGL ES 3.0 specifications for more
+ information.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. Removed section talking about HDR features, e.g. luminance > 80nits.
+ Do we want to keep that here in anticipation of HDR support in the future?
+
+ 2. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+Revision History
+
+ Version 1, 2017/03/22
+ - Internal revisions
+
+ Version 2, 2018/10/04
+ - Fix typo to correct extension reference
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
new file mode 100644
index 0000000..f0223a6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
@@ -0,0 +1,139 @@
+Name
+
+ EXT_gl_colorspace_display_p3_passthrough
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_display_p3_passthrough
+
+Contributors
+
+ Chris Forbes
+ Courtney Goeltzenleuchter
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - Dec 4, 2018
+
+Number
+
+ EGL Extension #130
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications that want to use the Display-P3 color space (DCI-P3 primaries
+ with sRGB-like transfer function) can use this extension to
+ communicate to the platform that framebuffer contents represent colors in
+ the non-linear Display-P3 color space.
+ The application is responsible for producing appropriate framebuffer
+ contents. An application would want to use this extension rather than
+ EGL_EXT_gl_colorspace_display_p3 if they apply the sRGB transfer function
+ themselves and do not need the HW to do it.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_passthrough is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT, then a
+ non-linear, sRGB encoded Display-P3 color space is assumed, with a
+ corresponding GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_LINEAR.
+ The application is responsible for applying the appropriate transfer
+ function when writing and reading pixels.
+
+ Insert below text after the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT attribute
+ indicates that a colorspace of Display P3 will be communicated to the
+ Window system. While EGL itself is color space agnostic, the surface
+ will eventually be presented to a display device with specific color
+ reproduction characteristics. If any color space transformations are
+ necessary before an image can be displayed, the color space of the
+ presented image must be known to the window system.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+ 2. Why the new enum instead of DISPLAY_P3_EXT + EXT_srgb_write_control?
+
+ RESOLVED:
+ We want to rely on "surface state" rather than a "context state", e.g.
+ EXT_srgb_write_control is global where we only want behavior to apply to
+ specific surface.
+
+ 3. Should sRGB framebuffer support affect the pixel path?
+
+ RESOLVED: No.
+
+ sRGB rendering is defined by GL/GLES. Specifically, glReadPixels and
+ other pixel paths operations are not affected by sRGB rendering. But
+ glBlitFramebuffer is. Though, of course, if this extension were to
+ apply it would be a no-op.
+
+Revision History
+
+ Version 1, 2018/12/04
+ - Internal revisions
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
new file mode 100644
index 0000000..708fb17
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
@@ -0,0 +1,130 @@
+Name
+
+ EXT_gl_colorspace_scrgb
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_scrgb
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Lauri Hyvarinen
+ Weiwan Liu
+ Arun Swain
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 2 - August 25, 2017
+
+Number
+
+ EGL Extension #119
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace and EGL_EXT_pixel_format_-
+ float, and interacts with EGL_EXT_surface_SMPTE2086_metadata. This extension
+ is closely related to EGL_EXT_gl_colorspace_scrgb_linear.
+
+Overview
+
+ This extension provides an extended sRGB (also called scRGB) color
+ space option for applications to choose from when creating an EGLSurface.
+ This extension defines the non-linear display referred scRGB color space.
+ It has the same white point and color primaries as sRGB, and thus is
+ backward-compatible with sRGB. Refer to the IEC 61966-2-2:2003 standard
+ for details on scRGB color space.
+
+ This extension chooses to use floating-point formats for scRGB color space.
+ For each color channel, the floating-point values of 0.0 and 1.0 still
+ correspond to sRGB chromaticities and luminance levels. However, scRGB
+ space allows for color values beyond the range of [0.0, 1.0], and can thus
+ achieve a larger color volume than that of sRGB. As it is display referred,
+ scRGB space makes assumptions of how the floating-point color values should
+ map to luminance levels by the underlying display pipeline. The expected
+ mapping is such that a color value of (1.0, 1.0, 1.0) corresponds to a
+ luminance level of 80 nits on a standardized studio monitor. As the color
+ value per channel goes beyond 1.0 and up to ~7.83, the corresponding
+ luminance levels also increase to a maximum of 10000 nits.
+
+ The application is responsible for applying the extended sRGB transfer
+ function to color values written to or read from a surface with a
+ colorspace of EGL_EXT_gl_colorspace_scrgb.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces", before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_scrgb is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_SCRGB_EXT, then a non-linear scRGB
+ color space is assumed. with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR as neither OpenGL nor OpenGL ES
+ supports framebuffers using an scRGB transfer function.
+ The application is responsible for applying the appropriate extended
+ sRGB transfer function when reading or writing to this buffer.
+ scRGB is defined to use the same primaries and white-point as sRGB.
+ See IEC 61966-2-2:2003 for details.
+
+ Add two paragraphs after the 4th paragraph above:
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_EXT,
+ the display-referred values in the range of (0.0, 0.0, 0.0) to
+ (1.0, 1.0, 1.0) correspond to a luminance range of 0 to 80 nits, which is
+ the same luminance range for sRGB. To achieve a larger dynamic range of up
+ to 10000 nits, the output values can go beyond 1.0 and to a range of
+ [0.0, ~7.83] for each channel.
+
+ The effective color gamut and luminance range of the content that extend
+ beyond those of sRGB may be described via EGL_EXT_surface_SMPTE2086_metadata.
+ It is highly recommended to supply such metadata, so the display pipeline
+ may use this information to transform the the colors in a manner that
+ attempts to preserve the creative intent of the color data.
+
+ In the "Errors" section on page 34 in 3.5.1 "Creating On Screen Rendering
+ Surfaces", change the 3rd error definition to:
+
+ * If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for
+ eglCreatePlatformWindowSurface), an EGL_BAD_MATCH error is generated.
+
+Issues
+
+ * Clarifications on the scRGB colorspace extensions
+
+Revision History
+
+ Version 1, 2017/06/21
+ - Initial draft
+
+ Version 2, 2017/08/25
+ - Clarify definition of color space
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
new file mode 100644
index 0000000..084f4a0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
@@ -0,0 +1,127 @@
+Name
+
+ EXT_gl_colorspace_scrgb_linear
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_scrgb_linear
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Lauri Hyvarinen
+ Weiwan Liu
+ Arun Swain
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - August 25, 2017
+
+Number
+
+ EGL Extension #108
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace and EGL_EXT_pixel_format_-
+ float, and interacts with EGL_EXT_surface_SMPTE2086_metadata. This extension
+ is closely related to the EGL_EXT_gl_colorspace_scrgb.
+
+Overview
+
+ This extension provides an extended sRGB (also called scRGB) color
+ space option for applications to choose from when creating an EGLSurface.
+ This extension defines the linear display referred scRGB color space.
+ It has the same white point and color primaries as sRGB, and thus is
+ backward-compatible with sRGB. Refer to the IEC 61966-2-2:2003 standard
+ for details on scRGB color space.
+
+ This extension chooses to use floating-point formats for scRGB color space.
+ For each color channel, the floating-point values of 0.0 and 1.0 still
+ correspond to sRGB chromaticities and luminance levels. However, scRGB
+ space allows for color values beyond the range of [0.0, 1.0], and can thus
+ achieve a larger color volume than that of sRGB. As it is display referred,
+ scRGB space makes assumptions of how the floating-point color values should
+ map to luminance levels by the underlying display pipeline. The expected
+ mapping is such that a color value of (1.0, 1.0, 1.0) corresponds to a
+ luminance level of 80 nits on a standardized studio monitor. As the color
+ value per channel goes beyond 1.0 and up to 125.0, the corresponding
+ luminance levels also increase linearly to a maximum of 10000 nits.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces", before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ If its value is EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT, then a linear scRGB
+ color space is assumed, with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR. scRGB is defined to use the same
+ primaries and white-point as sRGB. See IEC 61966-2-2:2003 for details.
+
+ Add two paragraphs after the 4th paragraph above:
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_-
+ LINEAR_EXT, the display-referred values in the range of (0.0, 0.0, 0.0) to
+ (1.0, 1.0, 1.0) correspond to a luminance range of 0 to 80 nits, which is
+ the same luminance range for sRGB. To achieve a larger dynamic range of up
+ to 10000 nits, the output values can go beyond 1.0 and to a range of
+ [0.0, 125.0] for each channel.
+
+ The effective color gamut and luminance range of the content that extend
+ beyond those of sRGB may be described via EGL_EXT_surface_SMPTE2086_metadata.
+ It is highly recommended to supply such metadata, so the display pipeline
+ may use this information to transform the colors in a manner that
+ attempts to preserve the creative intent of the color data.
+
+ In the "Errors" section on page 34 in 3.5.1 "Creating On Screen Rendering
+ Surfaces", change the 3rd error definition to:
+
+ * If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for
+ eglCreatePlatformWindowSurface), an EGL_BAD_MATCH error is generated.
+
+Issues
+
+ * Clarifications on the scRGB colorspace extensions
+
+Revision History
+
+ Version 1, 2016/10/21
+ - Initial draft
+
+ Version 2, 2016/11/18
+ - Add reference to IEC 61966-2-2:2003 standard and minor wording changes
+
+ Version 3, 2016/11/22
+ - Change status to complete
+
+ Version 4, 2017/08/25
+ - Clarifications on the definition of scRGB colorspace
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
new file mode 100644
index 0000000..17350d7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
@@ -0,0 +1,428 @@
+Name
+
+ EXT_image_dma_buf_import
+
+Name Strings
+
+ EGL_EXT_image_dma_buf_import
+
+Contributors
+
+ Jesse Barker
+ Rob Clark
+ Tom Cooksey
+
+Contacts
+
+ Jesse Barker (jesse 'dot' barker 'at' linaro 'dot' org)
+ Tom Cooksey (tom 'dot' cooksey 'at' arm 'dot' com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 7, December 13, 2013
+
+Number
+
+ EGL Extension #53
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+Overview
+
+ This extension allows creating an EGLImage from a Linux dma_buf file
+ descriptor or multiple file descriptors in the case of multi-plane YUV
+ images.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_LINUX_DMA_BUF_EXT 0x3270
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_LINUX_DRM_FOURCC_EXT 0x3271
+ EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+ EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+ EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+ EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+ EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+ EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+ EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+ EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+ EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+ EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+ EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+
+ Accepted as the value for the EGL_YUV_COLOR_SPACE_HINT_EXT attribute:
+
+ EGL_ITU_REC601_EXT 0x327F
+ EGL_ITU_REC709_EXT 0x3280
+ EGL_ITU_REC2020_EXT 0x3281
+
+ Accepted as the value for the EGL_SAMPLE_RANGE_HINT_EXT attribute:
+
+ EGL_YUV_FULL_RANGE_EXT 0x3282
+ EGL_YUV_NARROW_RANGE_EXT 0x3283
+
+ Accepted as the value for the EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT attributes:
+
+ EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+ EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ | EGL_LINUX_DMA_BUF_EXT | Used for EGLImages imported from Linux |
+ | | dma_buf file descriptors |
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_LINUX_DMA_BUF_EXT, <dpy> must be a valid display, <ctx>
+ must be EGL_NO_CONTEXT, and <buffer> must be NULL, cast into the type
+ EGLClientBuffer. The details of the image is specified by the attributes
+ passed into eglCreateImageKHR. Required attributes and their values are as
+ follows:
+
+ * EGL_WIDTH & EGL_HEIGHT: The logical dimensions of the buffer in pixels
+
+ * EGL_LINUX_DRM_FOURCC_EXT: The pixel format of the buffer, as specified
+ by drm_fourcc.h and used as the pixel_format parameter of the
+ drm_mode_fb_cmd2 ioctl.
+
+ * EGL_DMA_BUF_PLANE0_FD_EXT: The dma_buf file descriptor of plane 0 of
+ the image.
+
+ * EGL_DMA_BUF_PLANE0_OFFSET_EXT: The offset from the start of the
+ dma_buf of the first sample in plane 0, in bytes.
+
+ * EGL_DMA_BUF_PLANE0_PITCH_EXT: The number of bytes between the start of
+ subsequent rows of samples in plane 0. May have special meaning for
+ non-linear formats.
+
+ For images in an RGB color-space or those using a single-plane YUV format,
+ only the first plane's file descriptor, offset & pitch should be specified.
+ For semi-planar YUV formats, that first plane (plane 0) holds only the luma
+ samples and chroma samples are stored interleaved in a second plane (plane
+ 1). For fully planar YUV formats, the first plane (plane 0) continues to
+ hold the luma samples however the chroma samples are stored seperately in
+ two additional planes (plane 1 & plane 2). If present, planes 1 & 2 are
+ specified by the following attributes, which have the same meanings as
+ defined above for plane 0:
+
+ * EGL_DMA_BUF_PLANE1_FD_EXT
+ * EGL_DMA_BUF_PLANE1_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE1_PITCH_EXT
+ * EGL_DMA_BUF_PLANE2_FD_EXT
+ * EGL_DMA_BUF_PLANE2_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE2_PITCH_EXT
+
+ The ordering of samples within a plane is taken from the drm_fourcc
+ pixel_format specified for EGL_LINUX_DRM_FOURCC_EXT. For example, if
+ EGL_LINUX_DRM_FOURCC_EXT is set to DRM_FORMAT_NV12, the chroma plane
+ specified by EGL_DMA_BUF_PLANE1* contains samples in the order V, U,
+ whereas if EGL_LINUX_DRM_FOURCC_EXT is DRM_FORMAT_NV21, the order is U,
+ V. Similarly, the ordering of planes for fully-planar formats is also taken
+ from the pixel_format specified as EGL_LINUX_DRM_FOURCC_EXT. For example,
+ if EGL_LINUX_DRM_FOURCC_EXT is set to DRM_FORMAT_YUV410, the luma plane is
+ specified by EGL_DMA_BUF_PLANE0*, the plane containing U-samples is
+ specified by EGL_DMA_BUF_PLANE1* and the plane containing the V-samples is
+ specified by EGL_DMA_BUF_PLANE2*, whereas if EGL_LINUX_DRM_FOURCC_EXT is
+ set to DRM_FORMAT_YVU410, plane 1 contains the V-samples and plane 2
+ contains the U-samples.
+
+ In addition to the above required attributes, the application may also
+ provide hints as to how the data should be interpreted by the GL. If any of
+ these hints are not specified, the GL will guess based on the pixel format
+ passed as the EGL_LINUX_DRM_FOURCC_EXT attribute or may fall-back to some
+ default value. Not all GLs will be able to support all combinations of
+ these hints and are free to use whatever settings they choose to achieve
+ the closest possible match.
+
+ * EGL_YUV_COLOR_SPACE_HINT_EXT: The color-space the data is in. Only
+ relevant for images in a YUV format, ignored when specified for an
+ image in an RGB format. Accepted values are:
+ EGL_ITU_REC601_EXT, EGL_ITU_REC709_EXT & EGL_ITU_REC2020_EXT.
+
+ * EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT: Where chroma samples are
+ sited relative to luma samples when the image is in a sub-sampled
+ format. When the image is not using chroma sub-sampling, the luma and
+ chroma samples are assumed to be co-sited. Siting is split into the
+ vertical and horizontal and is in a fixed range. A siting of zero
+ means the first luma sample is taken from the same position in that
+ dimension as the chroma sample. This is best illustrated in the
+ diagram below:
+
+ (0.5, 0.5) (0.0, 0.5) (0.0, 0.0)
+ + + + + + + + + * + * +
+ x x x x
+ + + + + + + + + + + + +
+
+ + + + + + + + + * + * +
+ x x x x
+ + + + + + + + + + + + +
+
+ Luma samples (+), Chroma samples (x) Chrome & Luma samples (*)
+
+ Note this attribute is ignored for RGB images and non sub-sampled
+ YUV images. Accepted values are: EGL_YUV_CHROMA_SITING_0_EXT (0.0)
+ & EGL_YUV_CHROMA_SITING_0_5_EXT (0.5)
+
+ * EGL_SAMPLE_RANGE_HINT_EXT: The numerical range of samples. Only
+ relevant for images in a YUV format, ignored when specified for
+ images in an RGB format. Accepted values are: EGL_YUV_FULL_RANGE_EXT
+ (0-256) & EGL_YUV_NARROW_RANGE_EXT (16-235).
+
+
+ If eglCreateImageKHR is successful for a EGL_LINUX_DMA_BUF_EXT target, the
+ EGL will take a reference to the dma_buf(s) which it will release at any
+ time while the EGLDisplay is initialized. It is the responsibility of the
+ application to close the dma_buf file descriptors."
+
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_LINUX_DMA_BUF_EXT and <buffer> is not NULL, the
+ error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the list of attributes is
+ incomplete, EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the EGL_LINUX_DRM_FOURCC_EXT
+ attribute is set to a format not supported by the EGL, EGL_BAD_MATCH
+ is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the EGL_LINUX_DRM_FOURCC_EXT
+ attribute indicates a single-plane format, EGL_BAD_ATTRIBUTE is
+ generated if any of the EGL_DMA_BUF_PLANE1_* or EGL_DMA_BUF_PLANE2_*
+ attributes are specified.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_YUV_COLOR_SPACE_HINT_EXT is not EGL_ITU_REC601_EXT,
+ EGL_ITU_REC709_EXT or EGL_ITU_REC2020_EXT, EGL_BAD_ATTRIBUTE is
+ generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_SAMPLE_RANGE_HINT_EXT is not EGL_YUV_FULL_RANGE_EXT or
+ EGL_YUV_NARROW_RANGE_EXT, EGL_BAD_ATTRIBUTE is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT or
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT is not
+ EGL_YUV_CHROMA_SITING_0_EXT or EGL_YUV_CHROMA_SITING_0_5_EXT,
+ EGL_BAD_ATTRIBUTE is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and one or more of the values
+ specified for a plane's pitch or offset isn't supported by EGL,
+ EGL_BAD_ACCESS is generated.
+
+
+Issues
+
+ 1. Should this be a KHR or EXT extension?
+
+ ANSWER: EXT. Khronos EGL working group not keen on this extension as it is
+ seen as contradicting the EGLStream direction the specification is going in.
+ The working group recommends creating additional specs to allow an EGLStream
+ producer/consumer connected to v4l2/DRM or any other Linux interface.
+
+ 2. Should this be a generic any platform extension, or a Linux-only
+ extension which explicitly states the handles are dma_buf fds?
+
+ ANSWER: There's currently no intention to port this extension to any OS not
+ based on the Linux kernel. Consequently, this spec can be explicitly written
+ against Linux and the dma_buf API.
+
+ 3. Does ownership of the file descriptor pass to the EGL library?
+
+ ANSWER: No, EGL does not take ownership of the file descriptors. It is the
+ responsibility of the application to close the file descriptors on success
+ and failure.
+
+ 4. How are the different YUV color spaces handled (BT.709/BT.601)?
+
+ ANSWER: The pixel formats defined in drm_fourcc.h only specify how the data
+ is laid out in memory. It does not define how that data should be
+ interpreted. Added a new EGL_YUV_COLOR_SPACE_HINT_EXT attribute to allow the
+ application to specify which color space the data is in to allow the GL to
+ choose an appropriate set of co-efficients if it needs to convert that data
+ to RGB for example.
+
+ 5. What chroma-siting is used for sub-sampled YUV formats?
+
+ ANSWER: The chroma siting is not specified by either the v4l2 or DRM APIs.
+ This is similar to the color-space issue (4) in that the chroma siting
+ doesn't affect how the data is stored in memory. However, the GL will need
+ to know the siting in order to filter the image correctly. While the visual
+ impact of getting the siting wrong is minor, provision should be made to
+ allow an application to specify the siting if desired. Added additional
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT attributes to allow the siting to
+ be specified using a set of pre-defined values (0 or 0.5).
+
+ 6. How can an application query which formats the EGL implementation
+ supports?
+
+ PROPOSAL: Don't provide a query mechanism but instead add an error condition
+ that EGL_BAD_MATCH is raised if the EGL implementation doesn't support that
+ particular format.
+
+ 7. Which image formats should be supported and how is format specified?
+
+ Seem to be two options 1) specify a new enum in this specification and
+ enumerate all possible formats. 2) Use an existing enum already in Linux,
+ either v4l2_mbus_pixelcode and/or those formats listed in drm_fourcc.h?
+
+ ANSWER: Go for option 2) and just use values defined in drm_fourcc.h.
+
+ 8. How can AYUV images be handled?
+
+ ANSWER: At least on fourcc.org and in drm_fourcc.h, there only seems to be
+ a single AYUV format and that is a packed format, so everything, including
+ the alpha component would be in the first plane.
+
+ 9. How can you import interlaced images?
+
+ ANSWER: Interlaced frames are usually stored with the top & bottom fields
+ interleaved in a single buffer. As the fields would need to be displayed as
+ at different times, the application would create two EGLImages from the same
+ buffer, one for the top field and another for the bottom. Both EGLImages
+ would set the pitch to 2x the buffer width and the second EGLImage would use
+ a suitable offset to indicate it started on the second line of the buffer.
+ This should work regardless of whether the data is packed in a single plane,
+ semi-planar or multi-planar.
+
+ If each interlaced field is stored in a separate buffer then it should be
+ trivial to create two EGLImages, one for each field's buffer.
+
+ 10. How are semi-planar/planar formats handled that have a different
+ width/height for Y' and CbCr such as YUV420?
+
+ ANSWER: The spec says EGL_WIDTH & EGL_HEIGHT specify the *logical* width and
+ height of the buffer in pixels. For pixel formats with sub-sampled Chroma
+ values, it should be trivial for the EGL implementation to calculate the
+ width/height of the Chroma sample buffers using the logical width & height
+ and by inspecting the pixel format passed as the EGL_LINUX_DRM_FOURCC_EXT
+ attribute. I.e. If the pixel format says it's YUV420, the Chroma buffer's
+ width = EGL_WIDTH/2 & height =EGL_HEIGHT/2.
+
+ 11. How are Bayer formats handled?
+
+ ANSWER: As of Linux 2.6.34, drm_fourcc.h does not include any Bayer formats.
+ However, future kernel versions may add such formats in which case they
+ would be handled in the same way as any other format.
+
+ 12. Should the spec support buffers which have samples in a "narrow range"?
+
+ Content sampled from older analogue sources typically don't use the full
+ (0-256) range of the data type storing the sample and instead use a narrow
+ (16-235) range to allow some headroom & toeroom in the signals to avoid
+ clipping signals which overshoot slightly during processing. This is
+ sometimes known as signals using "studio swing".
+
+ ANSWER: Add a new attribute to define if the samples use a narrow 16-235
+ range or the full 0-256 range.
+
+ 13. Specifying the color space and range seems cumbersome, why not just
+ allow the application to specify the full YUV->RGB color conversion matrix?
+
+ ANSWER: Some hardware may not be able to use an arbitrary conversion matrix
+ and needs to select an appropriate pre-defined matrix based on the color
+ space and the sample range.
+
+ 14. How do you handle EGL implementations which have restrictions on pitch
+ and/or offset?
+
+ ANSWER: Buffers being imported using dma_buf pretty much have to be
+ allocated by a kernel-space driver. As such, it is expected that a system
+ integrator would make sure all devices which allocate buffers suitable for
+ exporting make sure they use a pitch supported by all possible importers.
+ However, it is still possible eglCreateImageKHR can fail due to an
+ unsupported pitch. Added a new error to the list indicating this.
+
+ 15. Should this specification also describe how to export an existing
+ EGLImage as a dma_buf file descriptor?
+
+ ANSWER: No. Importing and exporting buffers are two separate operations and
+ importing an existing dma_buf fd into an EGLImage is useful functionality in
+ itself. Agree that exporting an EGLImage as a dma_buf fd is useful, E.g. it
+ could be used by an OpenMAX IL implementation's OMX_UseEGLImage function to
+ give access to the buffer backing an EGLImage to video hardware. However,
+ exporting can be split into a separate extension specification.
+
+
+Revision History
+
+#7 (Kristian H. Kristensen, December 13, 2017)
+ - Clarify plane ordering to match Linux FOURCC conventions (Bug 16017).
+
+#6 (David Garbett, December 05, 2013)
+ - Application now retains ownership of dma_buf file descriptors.
+
+#5 (Tom Cooksey, February 19, 2013)
+ - Assigned enum values
+ - Moved out of drafts
+
+#4 (Tom Cooksey, October 04, 2012)
+ - Fixed issue numbering!
+ - Added issues 8 - 15.
+ - Promoted proposal for Issue 3 to be the answer.
+ - Added an additional attribute to allow an application to specify the color
+ space as a hint which should address issue 4.
+ - Added an additional attribute to allow an application to specify the chroma
+ siting as a hint which should address issue 5.
+ - Added an additional attribute to allow an application to specify the sample
+ range as a hint which should address the new issue 12.
+ - Added language to end of error section clarifying who owns the fd passed
+ to eglCreateImageKHR if an error is generated.
+
+#3 (Tom Cooksey, August 16, 2012)
+ - Changed name from EGL_EXT_image_external and re-written language to
+ explicitly state this for use with Linux & dma_buf.
+ - Added a list of issues, including some still open ones.
+
+#2 (Jesse Barker, May 30, 2012)
+ - Revision to split eglCreateImageKHR functionality from export
+ Functionality.
+ - Update definition of EGLNativeBufferType to be a struct containing a list
+ of handles to support multi-buffer/multi-planar formats.
+
+#1 (Jesse Barker, March 20, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
new file mode 100644
index 0000000..41b91c0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
@@ -0,0 +1,244 @@
+Name
+
+ EXT_image_dma_buf_import_modifiers
+
+Name Strings
+
+ EGL_EXT_image_dma_buf_import_modifiers
+
+Contributors
+
+ Pekka Paalanen, Collabora Ltd.
+ Louis-Francis Ratté-Boulianne
+ Daniel Stone, Collabora Ltd.
+ Kristian Høgsberg
+
+Contacts
+
+ Pekka Paalanen (pq 'at' collabora 'dot' com)
+ Daniel Stone (daniels 'at' collabora 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5, March 12, 2019
+
+Number
+
+ EGL Extension #105
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+ EGL_EXT_image_dma_buf_import is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+ In order to support imports for the GL_TEXTURE_EXTERNAL_OES target, a
+ compatible OpenGL ES implementation supporting GL_OES_EGL_image_external
+ must be present.
+
+Overview
+
+ This extension builds on EGL_EXT_image_dma_buf_import, in order to support
+ format modifiers used for tiling, compression, and additional non-linear
+ modes. It also adds support for a fourth auxiliary plane, and queries for
+ the implementation-supported types.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryDmaBufFormatsEXT(
+ EGLDisplay dpy,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats)
+
+
+ EGLBoolean eglQueryDmaBufModifiersEXT(
+ EGLDisplay dpy,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers)
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+ EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+ EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+ EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+ EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+ EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+
+New Types
+
+ This extension uses the 64-bit unsigned integer type EGLuint64KHR
+ first introduced by the EGL_KHR_stream extension, but does not
+ depend on that extension. The typedef may be reproduced separately
+ for this extension, if not already present in eglext.h.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ If <target> is EGL_LINUX_DMA_BUF_EXT, both or neither of the following
+ attribute values may be given. These attribute values together form an
+ unsigned 64-bit value called a format modifier. Format modifiers are
+ specified by drm_fourcc.h and used as the modifier parameter of the
+ drm_mode_fb_cmd2 ioctl. If neither of the two attributes are given, or
+ if the modifier is explicitly declared to be DRM_FORMAT_MOD_INVALID, the
+ effective format modifier is implementation-defined. The two attributes
+ are:
+
+ * EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT: The lowest 32 bits of the
+ 64-bit format modifier.
+
+ * EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT: The highest 32 bits of the
+ 64-bit format modifier.
+
+ For semi-planar and planar YUV formats, or other formats which require
+ multiple memory planes, planes 1, 2 and 3 are specified by the following
+ attributes, which have the same meanings as defined above for plane 0:
+
+ * EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT
+ * EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT
+ * EGL_DMA_BUF_PLANE3_FD_EXT
+ * EGL_DMA_BUF_PLANE3_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE3_PITCH_EXT
+ * EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT
+
+ Modifiers may modify any attribute of a buffer import, including but not
+ limited to adding extra planes to a format which otherwise does not have
+ those planes. As an example, a modifier may add a plane for an external
+ compression buffer to a single-plane format. The exact meaning and effect
+ of any modifier is canonically defined by drm_fourcc.h, not as part of this
+ extension.
+
+ Implementations are required to validate the full combination of base
+ format and per-plane modifiers, and reject any combination which is not
+ explicitly supported.
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the list of attributes
+ contains EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT but not
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT or vice versa, EGL_BAD_PARAMETER
+ is generated. This applies similarly for planes 1, 2, and 3 also.
+
+ Add section 2.5.3 "EGLImage dma_buf formats and modifiers"
+
+ The command
+
+ EGLBoolean eglQueryDmaBufFormatsEXT(
+ EGLDisplay dpy,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats)
+
+ is used to query the dma_buf formats supported by <dpy>. Each format is
+ returned using its FourCC format as defined in the drm_fourcc.h header file.
+ EGL_TRUE is returned if QueryDmaBufFormatsEXT succeeds, EGL_FALSE indicates
+ failure to query.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <max_formats> is 0, no formats are returned, but the total number
+ of formats is returned in <num_formats>, and no error is generated.
+
+ * If <max_formats> has a negative value, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <max_formats> is a positive integer but <formats> is NULL, the error
+ EGL_BAD_PARAMETER is generated.
+
+ The command
+
+ EGLBoolean eglQueryDmaBufModifiersEXT(
+ EGLDisplay dpy,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers)
+
+ is used to query the dma_buf format modifiers supported by <dpy> for the
+ given format. The format must be one of those returned by the
+ eglQueryDmaBufFormatsEXT command. The returned modifiers should be
+ defined in the canonical drm_fourcc.h header file. If the user also
+ passes an array for <external_only>, this will be populated with whether
+ the requested format and modifier combination is only supported for use
+ with the GL_TEXTURE_EXTERNAL_OES texture target. If <dpy> cannot support
+ any context with GL_OES_EGL_image_external, the array will be populated with
+ EGL_FALSE. EGL_TRUE is returned if QueryDmaBufModifiersEXT succeeds,
+ EGL_FALSE indicates failure.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <max_modifiers> is 0, no modifiers are returned, but the total
+ number of modifiers is returned in <num_modifiers>, and no error is
+ generated.
+
+ * If <max_modifiers> has a negative value, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <max_modifiers> is a positive integer but <modifiers> is NULL, the
+ error EGL_BAD_PARAMETER is generated.
+
+ * If <format> is not one of the formats advertised by
+ QueryDmaBufFormatsEXT for the same <dpy>, the error EGL_BAD_PARAMETER
+ is generated.
+
+
+Revision History
+
+#5 (Daniel Stone, March 12, 2019)
+ - Correct description of behaviour when a modifier is not explicitly given;
+ zero is not correct as it is an explicit modifier itself (linear).
+
+#4 (Daniel Stone, October 20, 2016)
+ - Switch to EGLuint64KHR for modifier types.
+
+#3 (Daniel Stone, October 20, 2016)
+ - Clarify that the effect that modifiers can have.
+ - Disambiguate references to displays.
+ - Explicitly refer to max_formats/max_modifiers behaviour when zero.
+
+#2 (Daniel Stone, September 29, 2016)
+ - Add missing tokens for plane 3 FD/offset/pitch.
+ - Fix description.
+ - Allow max_formats/max_modifiers to be zero, to get the counter.
+ - Add external_only to modifiers query.
+
+#1 (Pekka Paalanen, October 14, 2015)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt
new file mode 100644
index 0000000..ab53660
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_image_gl_colorspace
+
+Name Strings
+
+ EGL_EXT_image_gl_colorspace
+
+Contributors
+
+ Jesse Hall, Google
+ Philip Rideout, Google
+ Mohan Maiya, Qualcomm
+ Jan-Harald Fredriksen, ARM
+
+Contact
+
+ Krzysztof Kosiński, Google (krzysio 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, February 26, 2018
+
+Number
+
+ EGL Extension #125
+
+Dependencies
+
+ Written against the EGL 1.5 specification.
+
+ Can be supported on EGL 1.4 provided that EGL_KHR_gl_colorspace is
+ implemented, as well as either EGL_KHR_image or EGL_KHR_image_base.
+
+ Interacts with the GL_OES_EGL_image_external specification.
+
+Overview
+
+ This extension relaxes the restriction that only the eglCreate*Surface
+ functions can accept the EGL_GL_COLORSPACE attribute. With this change,
+ eglCreateImage can also accept this attribute.
+
+New Tokens
+
+ EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+
+New Procedures and Functions
+
+ None.
+
+Additions to the EGL 1.5 Specification
+
+ Add to table 3.11 on page 75:
+
+ "Attribute Type Description
+ -------------------- ---- -----------
+ EGL_GL_COLORSPACE enum Color space for OpenGL and OpenGL ES"
+
+
+ Add the following paragraph to the end of section 3.9, "EGLImage
+ Specification and Management" on page 77:
+
+ "EGL_GL_COLORSPACE specifies the color space used by OpenGL and OpenGL
+ ES when rendering to the image, or sampling from the image. It has the
+ same meaning as when used with eglCreatePlatformWindowSurface, with the
+ exception that its default value is EGL_GL_COLORSPACE_DEFAULT_EXT. This
+ means that the color space should not be overriden. For example, if an
+ image is created from an existing OpenGL texture, then
+ GL_COLORSPACE_DEFAULT_EXT means that the original color space should be
+ preserved."
+
+
+ Add the following paragraphs to the "Errors" subsection in section 3.9
+ on page 76:
+
+ "If EGL_GL_COLORSPACE is not one of the legal values, the error
+ EGL_BAD_PARAMETER is generated."
+
+ "If ctx specifies a GL context that does not support creating an EGLImage
+ with the given value for EGL_GL_COLORSPACE, EGL_BAD_MATCH error is
+ generated."
+
+
+Interaction with OES_EGL_image_external:
+
+ The first sentence in the second to last paragraph in section 3.7.14
+ should be changed from:
+
+ "Sampling an external texture will return an RGBA vector in the same
+ colorspace as the source image."
+
+ to:
+
+ "Sampling an external texture will return an RGBA vector in the same color
+ space as the source image, unless the image's EGL_GL_COLORSPACE attribute
+ results in sRGB encoding as described in EGL_EXT_image_gl_colorspace."
+
+ The three parenthetical sentences in this same paragraph should be
+ simplified since they partially conflict with existing language in the
+ ES30 specification. Change them from:
+
+ "(But these RGB values will be in the same colorspace as the
+ original image. Colorspace here includes the linear or non-linear
+ encoding of the samples. For example, if the original image is in the
+ sRGB color space then the RGB value returned by the sampler will also
+ be sRGB, and if the original image is stored in ITU-R Rec. 601 YV12
+ then the RGB value returned by the sampler will be an RGB value in the
+ ITU-R Rec. 601 colorspace.)"
+
+ to:
+
+ "(For example, if the original image is stored in ITU-R Rec. 601 YV12
+ then the RGB value returned by the sampler will be an RGB value in the
+ ITU-R Rec. 601 colorspace.)"
+
+
+Issues
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- -----------------------------------------
+ 1 11/22/17 philip Initial draft
+ 2 12/8/17 philip Add note about OES_EGL_image_external
+ 3 12/11/17 philip Changed from KHR to EXT.
+ 4 12/15/17 philip Add diffs against the EGL 1.5 specification.
+ 5 12/20/17 philip Add EGL_GL_COLORSPACE_DEFAULT_EXT.
+ 6 1/2/18 philip Updated changes to OES_EGL_image_external.
+ 7 1/2/18 philip Tweaked the changes to OES_EGL_image_external.
+ 8 2/2/18 philip Add value for EGL_GL_COLORSPACE_DEFAULT_EXT.
+ 9 2/26/18 krzysio Update contact information, finalize.
+ 9 4/20/18 krzysio Fix stray reference to KHR.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
new file mode 100644
index 0000000..5660e0a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
@@ -0,0 +1,131 @@
+Name
+
+ EXT_image_implicit_sync_control
+
+Name Strings
+
+ EGL_EXT_image_implicit_sync_control
+
+Contributors
+
+ Daniel Stone, Collabora Ltd.
+
+Contacts
+
+ Daniel Stone (daniels 'at' collabora 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, March 16, 2020
+
+Number
+
+ EGL Extension #120
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base and EGL_EXT_image_dma_buf_import are required.
+
+ The EGL implementation must be running on a Linux kernel supporting implicit
+ synchronization, as the usage is defined in the
+ EGL_ARM_implicit_external_sync extension, but does not require that extension.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+Overview
+
+ This extension allows a client to selectively use implicit or explicit
+ synchronization mechanisms when addressing externally-imported EGLImages.
+ A new token is added to EGLImage creation which allows the client to select
+ whether a platform's implicit synchronization will be in use for a buffer
+ imported into EGLImage.
+
+ Heterogeneous systems (supporting multiple APIs, mixed legacy/updated
+ clients, etc) already supporting implicit synchronization, may not be able
+ to change to explict synchronization in a single switch. This extension
+ allows synchronization to be controlled on a per-buffer basis, so explicit
+ synchronization can be enabled for a complete pipeline which supports it,
+ or implicit synchronization used otherwise.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+
+ Accepted as the value for the EGL_IMPORT_SYNC_TYPE_EXT attribute:
+
+ EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+ EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+
+New Types
+
+ None.
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | Attribute | Description | Valid <target>s | Default Value |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | EGL_IMPORT_SYNC_TYPE_EXT | The type of | EGL_LINUX_DMA_BUF_EXT | EGL_IMPORT_ |
+ | | synchronization to | | IMPLICT_SYNC_ |
+ | | apply to previously | | EXT |
+ | | submitted rendering on | | |
+ | | the platform buffer | | |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ ...
+
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ The behaviour of the imported buffer with regard to commands previously
+ submitted (including via other APIs and from other clients) is controlled
+ by the EGL_IMPORT_SYNC_TYPE_EXT attribute. If the default value of
+ implicit synchronization is used, the platform may synchronize any access
+ to the imported buffer, against accesses previously made (including by
+ other clients or APIs) to that same buffer. If explicit synchronization
+ is specified, the platform will not synchronize access to that buffer
+ against other accesses; the client must use another synchronization
+ mechanism if it wishes to order its accesses with respect to others.
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ * If <attrib_list> contains the EGL_IMPORT_SYNC_TYPE_EXT name, but the
+ value is not one of EGL_IMPORT_IMPLICIT_SYNC_EXT or
+ EGL_IMPORT_EXPLICIT_SYNC_EXT, EGL_BAD_ATTRIBUTE is generated.
+
+
+Revision History
+
+#1 (Daniel Stone, May 15, 2017)
+ - Initial revision.
+
+#2 (Eric Engestrom, March 16, 2020)
+ - Change "bad attribute value" error from EGL_BAD_PARAMETER to
+ EGL_BAD_ATTRIBUTE to follow the EGL convention.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt
new file mode 100644
index 0000000..9cf0ff6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt
@@ -0,0 +1,126 @@
+Name
+
+ EXT_multiview_window
+
+Name Strings
+
+ EGL_EXT_multiview_window
+
+Contributors
+
+ Acorn Pooley
+ Greg Roth
+
+Contacts
+
+ Greg Roth (groth 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, Sept 03, 2011
+
+Number
+
+ EGL Extension #42
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+Overview
+
+ Adds support for creating an onscreen EGLSurface containing
+ multiple color buffers.
+
+ EXT_multi_draw_buffers can be used with this extension to
+ render and display multiple color buffers to a supported
+ device.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ CreateWindowSurface:
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+
+Additions to Chapter 3 of the EGL 1.2 Specification:
+
+ Additions to section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ Alter the end of the second paragraph:
+
+ Attributes that can be specified in <attrib_list> include
+ EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT, and
+ EGL_MULTIVIEW_VIEW_COUNT_EXT.
+
+ Add before the last paragraph of section 3.5.1:
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT specifies how many multiview color
+ buffers should be created for the surface. Each color buffer has
+ the same properties as the primary color buffer as specified by
+ window and surface attributes. The default value of
+ EGL_MULTIVIEW_VIEW_COUNT_EXT is one.
+
+ EGL may not be able to create as many multiview color buffers as
+ EGL_MULTIVIEW_VIEW_COUNT_EXT specifies. To determine the number
+ of multiview color buffers created by a context, call
+ eglQueryContext (see section 3.7.4).
+
+ Add to the last paragraph of section 3.5.1:
+
+ If the value specified for EGL_MULTIVIEW_VIEW_COUNT_EXT is less
+ than one, an EGL_BAD_PARAMETER error is generated. If the value
+ specified for EGL_MULTIVIEW_VIEW_COUNT_EXT is greater than one
+ and the <config> does not support multiple multiview color
+ buffers, an EGL_BAD_MATCH error is generated.
+
+ Additions to section 3.5.6 (Surface Attributes)
+
+ Add to table 3.5, "Queryable surface attributes and types"
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_MULTIVIEW_VIEW_COUNT_EXT integer Requested multiview
+ color buffers
+
+ Add before the last paragraph describing eglQuerySurface:
+
+ Querying EGL_MULTIVIEW_VIEW_COUNT_EXT for a window surface
+ returns the number of multiview color buffers requested. For a
+ pbuffer or pixmap surface, the contents of <value> are not
+ modified. To determine the actual number of multiview color
+ buffers created by a context, call eglQueryContext (see
+ section 3.7.4).
+
+
+ Additions to section 3.7.4 (Context Queries)
+
+ Add before the last paragraph describing eglQueryContext:
+
+ Querying EGL_MULTIVIEW_VIEW_COUNT_EXT returns the number of
+ multiview color buffers created. The value returned depends on
+ properties of both the context, and the surface to which the
+ context is bound.
+
+Issues
+
+ None
+
+Revision History
+ Version 3, 03 Sept 2011 EXTify add support for multiple or single depth buffer.
+ Version 2, 02 Aug 2011 Responses to feedback.
+ Version 1, 14 April 2011 First draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt
new file mode 100644
index 0000000..1cbd112
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt
@@ -0,0 +1,564 @@
+Name
+
+ EXT_output_base
+
+Name Strings
+
+ EGL_EXT_output_base
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 9 - August 22, 2014
+
+Number
+
+ EGL Extension #78
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5, plus the EGL_EXT_device_base
+ specification.
+
+ Requires EGL_EXT_device_base
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines new EGL resource types for referencing
+ display control hardware associated with an EGL device. Its purpose
+ is to allow rendering to be directed to a screen in the absence of
+ (or bypassing) a window system. Because the use models for these
+ resources are potentially diverse, only the objects themselves and
+ basic functions to acquire and query them are defined here. More
+ detailed functions and enumerants required to operate on outputs
+ are provided by separate extensions.
+
+New Types
+
+ A handle representing a portion of display control hardware which
+ accepts a single image as input and processes it for output on a
+ display device:
+
+ typedef void* EGLOutputLayerEXT;
+
+ A handle representing a portion of display control hardware which
+ transmits a signal to a display device:
+
+ typedef void* EGLOutputPortEXT;
+
+New Functions
+
+ EGLBoolean eglGetOutputLayersEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputLayerEXT *layers,
+ EGLint max_layers,
+ EGLint *num_layers);
+
+ EGLBoolean eglGetOutputPortsEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputPortEXT *ports,
+ EGLint max_ports,
+ EGLint *num_ports);
+
+ EGLBoolean eglOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char* eglQueryOutputLayerStringEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint name);
+
+ EGLBoolean eglOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char* eglQueryOutputPortStringEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint name);
+
+New Tokens
+
+ Functions with a return type of EGLOutputLayerEXT will return this
+ value on failure:
+
+ EGL_NO_OUTPUT_LAYER_EXT ((EGLOutputLayerEXT)0)
+
+ Functions with a return type of EGLOutputPortEXT will return this
+ value on failure:
+
+ EGL_NO_OUTPUT_PORT_EXT ((EGLOutputPortEXT)0)
+
+ Functions which fail due to a bad EGLOutputLayerEXT handle will set
+ this error code:
+
+ EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+
+ Functions which fail due to a bad EGLOutputPortEXT handle will set
+ this error code:
+
+ EGL_BAD_OUTPUT_PORT_EXT 0x322E
+
+ Functions which set or query the swap interval use this attribute
+ name:
+
+ EGL_SWAP_INTERVAL_EXT 0x322F
+
+Add a new section "2.1.4 Outputs" after "2.1.3 Displays":
+
+ An EGLDisplay may have zero or more associated EGLOutputLayerEXT
+ and EGLOutputPortEXT objects. These represent, respectively, the
+ inputs and outputs of display control hardware.
+
+ An EGLOutputLayerEXT is an abstract handle representing an element
+ of display control hardware which receives image data and processes
+ it for display. This processing is hardware-dependent, and may
+ include, but is not limited to, color space transformation, scaling
+ and rotation, and composition/blending with images from other
+ EGLOutputLayerEXTs.
+
+ An EGLOutputPortEXT is an abstract handle representing an element of
+ display control hardware which sends a signal to drive a display
+ screen. In general, this signal is the result of the processing of
+ one or more EGLOutputLayerEXTs.
+
+Add new entries to section "3.1 Errors":
+
+ EGL_BAD_OUTPUT_LAYER_EXT
+ An EGLOutputLayerEXT argument does not name a valid
+ EGLOutputLayerEXT. Any command taking an EGLOutputLayerEXT
+ parameter may generate this error.
+
+ EGL_BAD_OUTPUT_PORT_EXT
+ An EGLOutputPortEXT argument does not name a valid
+ EGLOutputPortEXT. Any command taking an EGLOutputPortEXT
+ parameter may generate this error.
+
+Add a new section "3.10 Device Outputs" after "3.9 Posting the Color Buffer":
+
+ 3.10 Device Outputs
+
+ A simple platform running a custom software suite may not require a
+ formal window system. Instead, individual applications or a
+ compositor may send rendering results directly to display control
+ hardware, represented by EGLOutputLayerEXT and EGLOutputPortEXT
+ handles.
+
+ As with other EGL resources, EGLOutputLayerEXT and EGLOutputPortEXT
+ handles are owned by an EGLDisplay, but not all EGLDisplays are
+ required to support these objects. In general, they will only be
+ available for EGLDisplays obtained from platforms which allow direct
+ manipulation of display devices.
+
+ 3.10.1 Acquiring Outputs
+
+ To obtain EGLOutputLayerEXT handles associated with a display which
+ match a list of attributes, use
+
+ EGLBoolean eglGetOutputLayersEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputLayerEXT *layers,
+ EGLint max_layers,
+ EGLint *num_layers)
+
+ On success, EGL_TRUE is returned. If <layers> is NULL, <max_layers>
+ is ignored and the number of output layers which match <attrib_list>
+ is returned in <num_layers>. Otherwise, up to <max_layers> matching
+ layers will be returned in <layers> and <num_layers> will be set to
+ the number of layer handles returned. The states of the output
+ layers are not altered by this query, and output layer handles can
+ be retrieved by multiple calls to this function.
+
+ <attrib_list> may be NULL or a list of name/value pairs terminated
+ by EGL_NONE. If no attributes are provided, all output layers
+ associated with <dpy> will match. Otherwise, only those layers
+ matching all attributes provided in the list will be returned,
+ unless the value specified is EGL_DONT_CARE. If there are no
+ matching layers but all parameters are otherwise valid, success is
+ returned but num_layers is set to 0.
+
+ On failure, EGL_FALSE will be returned and the memory referenced by
+ <layers> and <num_layers> will be unaffected. If <dpy> is not a
+ valid, initialized EGLDisplay, an EGL_BAD_DISPLAY error is
+ generated. If any name in <attrib_list> is not a valid layer
+ attribute name defined in Table 3.10.3.1, an EGL_BAD_ATTRIBUTE error
+ is generated. If any name in <attrib_list> does not allow search
+ access, an EGL_BAD_ACCESS error is generated.
+
+ To obtain EGLOutputPortEXT handles associated with a display which
+ match a list of attributes, use
+
+ EGLBoolean eglGetOutputPortsEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputPortEXT *ports,
+ EGLint max_ports,
+ EGLint *num_ports)
+
+ On success, EGL_TRUE is returned. If <ports> is NULL, <max_ports> is
+ ignored and the number of output ports which match <attrib_list> is
+ returned in <num_ports>. Otherwise, up to <max_ports> matching
+ layers will be returned in <ports> and <num_ports> will be set to
+ the number of port handles returned. The states of the output ports
+ are not altered by this query, and output port handles can be
+ retrieved by multiple calls to this function.
+
+ <attrib_list> may be NULL or a list of name/value pairs terminated
+ by EGL_NONE. If no attributes are provided, all output ports
+ associated with <dpy> will match. Otherwise, only those ports
+ matching all attributes provided in the list will be returned,
+ unless the value specified is EGL_DONT_CARE. If there are no
+ matching ports but all parameters are otherwise valid, success is
+ returned but num_ports is set to 0.
+
+ On failure, EGL_FALSE will be returned and the memory referenced by
+ <ports> and <num_ports> will be unaffected. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ any name in <attrib_list> is not a valid port attribute name defined
+ in Table 3.10.3.2, an EGL_BAD_ATTRIBUTE error is generated. If any
+ name in <attrib_list> does not allow search access, an
+ EGL_BAD_ACCESS error is generated.
+
+ 3.10.2 Lifetime of Output Handles
+
+ An initialized EGLDisplay has a fixed set of output layer and port
+ resources available. Implementations may defer creation of handles
+ and allocation of data structions for these objects until they are
+ first requested. However, once acquired, they remain valid as long
+ as the EGLDisplay is not terminated.
+
+ 3.10.3 Output Attributes
+
+ Valid attributes associated with output layers and ports are listed
+ in Tables 3.10.3.1 and 3.10.3.2, respectively. Additional attributes
+ may be defined by other extensions. The Access columns contain one
+ or more of the letters "S", "R", and W". A value of "S" indicates
+ the attribute may be used to restrict the search when obtaining a
+ list of output handles. A value of "R" indicates the value may be
+ queried from an output handle. A value of "W" indicates the value
+ may be modified using an output handle.
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_SWAP_INTERVAL_EXT integer R|W
+ EGL_MIN_SWAP_INTERVAL integer R
+ EGL_MAX_SWAP_INTERVAL integer R
+
+ Table 3.10.3.1 Output layer attributes
+
+ Attribute Type Access
+ --------------------- ------- ------
+ [no attributes supported]
+
+ Table 3.10.3.2 Output port attributes
+
+ 3.10.3.1 Querying Output Attributes
+
+ To query attributes of an EGLOutputLayerEXT, use
+
+ EGLBoolean eglQueryOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib *value)
+
+ On success, this function returns EGL_TRUE and stores the value of
+ <attribute> in <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <layer> is not a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <attribute> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query string properties of an EGLOutputLayerEXT, use
+
+ const char* eglQueryOutputLayerStringEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute)
+
+ On success, this function returns a zero-terminated string
+ containing the value associated with <name>.
+
+ On failure, NULL is returned. If <dpy> is not a valid, initialized
+ EGLDisplay, an EGL_BAD_DISPLAY error is generated. If <layer> is not
+ a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <name> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has non-string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query attributes of an EGLOutputPortEXT, use
+
+ EGLBoolean eglQueryOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib *value)
+
+ On success, this function returns EGL_TRUE and stores the value of
+ <attribute> in <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <port> is not a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <attribute> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query string properties of an EGLOutputPortEXT, use
+
+ const char* eglQueryOutputPortStringEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute)
+
+ On success, this function returns a zero-terminated string
+ containing the value associated with <name>.
+
+ On failure, NULL is returned. If <dpy> is not a valid, initialized
+ EGLDisplay, an EGL_BAD_DISPLAY error is generated. If <port> is not
+ a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <name> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has non-string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ 3.10.3.2 Setting Output Attributes
+
+ To set attributes of an EGLOutputLayerEXT, use
+
+ EGLBoolean eglOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib value)
+
+ On success, this function returns EGL_TRUE and sets the value of
+ <attribute> to <value>.
+
+ If <attribute> is EGL_SWAP_INTERVAL_EXT, the value provided will be
+ silently clamped to the range specified by the layer's
+ EGL_MIN_SWAP_INTERVAL and EGL_MAX_SWAP_INTERVAL values.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <layer> is not a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <attribute> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> does not
+ allow write access, an EGL_BAD_ACCESS error is generated.
+
+ To set attributes of an EGLOutputPortEXT, use
+
+ EGLBoolean eglOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib value)
+
+ On success, this function returns EGL_TRUE and sets the value of
+ <attribute> to <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <port> is not a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <attribute> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> does not
+ allow write access, an EGL_BAD_ACCESS error is generated.
+
+ 3.10.4 Setting Output Modes
+
+ EGL does not currently define any mechanims to adjust display
+ modes through EGLOutputPortEXTs. These may be added via additional
+ extensions.
+
+ 3.10.5 Posting to Outputs
+
+ EGL does not currently define any mechanisms to post rendering
+ results to EGLOutputsLayerEXTs. These may be added via additional
+ extensions. However, unless otherwise specified, such mechanims
+ will respect the layer's EGL_SWAP_INTERVAL_EXT value, which
+ specifies the minimum number of video frame periods for which the
+ frames should be displayed, in a manner analogous to using
+ eglSwapInterval for the current draw surface. The default value of
+ EGL_SWAP_INTERVAL_EXT is 1, clamped to the layer's
+ EGL_MIN_SWAP_INTERVAL and EGL_MAX_SWAP_INTERVAL values.
+
+ (Example: See extension specification
+ EGL_EXT_stream_consumer_egloutput)
+
+Issues
+
+ 1. Should this extension provide a mechanism to enumerate outputs
+ associated with an EGLDevice and set their modes?
+
+ RESOLVED: No. On many operating systems there already exist
+ standardized and/or widely accepted low level mechanisms for
+ performing these tasks. Duplicating this support in EGL would
+ impose an undesirable implementation burden where output handles
+ are only required as a means to direct rendering to a display
+ screen. Functions for enumerating screens or obtaining them from
+ platform-dependent representations will be provided by other
+ extensions.
+
+ 2. Should output layer and port handles be associated with an
+ EGLDisplay, or vice versa?
+
+ RESOLVED: Yes. Furthermore, it may only be possible to obtain
+ output handles from some EGLDisplays. The primary intended use
+ case is the EGLDisplay associated with an EGLDevice, through the
+ platform defined by EGL_EXT_platform_device. This represents raw
+ device access available in the absence of a window system.
+ EGLDisplays associated with other platforms typically represent
+ handles provided by window systems, which may not allow direct
+ access to the display control hardware.
+
+ 3. Can the EGLDeviceEXT handle be returned by a query function
+ which returns integer attributes?
+
+ RESOLVED: Yes. Function definition has been updated to use
+ EGLAttribEXT, which is compatible with EGL handles.
+
+ 4. What display mode properties should be queriable by the base
+ extension? Does the application require width/height/refresh or
+ should those be left to other mechanisms or additional
+ extensions? If hardware supports selecting a portion of the
+ image for display, or restricting an image to a portion of the
+ screen, or scaling an image to a different resolution for
+ display, should all these settings be queriable?
+
+ RESOLVED: The base extension will not define any display
+ properties. These will be left to future extensions if required.
+
+ 5. How should stereo/multiview displays be handled? Should all
+ views share a single output or does each one have its own?
+
+ UNRESOLVED. Left for a future extension to define.
+
+ 6. This extension is currently focused on individual display layers
+ for the purpose of directing rendering output. An API covering
+ all hardware would associate one or more of those layers with a
+ display port. Do we need to abstract both?
+
+ RESOLVED: Yes. Extension has been modified to abstract both
+ inputs (layers) and outputs (ports) of display control hardware.
+ An implementation is not required to return any ports in the
+ query function if it provides no means to operate on them.
+
+Revision History:
+
+ #9 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Added minor coments to issue 5.
+ - Listed Daniel as the contact.
+
+ #8 (June 10th, 2014) Daniel Kartch
+ - Fixed prototypes for layer/port attribute setting functions.
+
+ #7 (June 5th, 2014) Daniel Kartch
+ - Assigned enumerated values for constants.
+ - Indicated default swap interval value.
+
+ #6 (May 28th, 2014) Daniel Kartch
+ - Updated wording based on EGL 1.5 specification, using
+ EGLAttrib instead of EGLAttribEXT.
+ - Added functions to set layer and port attributes.
+ - Added table of valid attributes, with min/max/current swap
+ interval values, and adjusted function descriptions
+ accordingly.
+ - Refined description for output enumeration functions to better
+ indicate the effect of attribute list.
+ - Added effect of swap interval in posting section.
+
+ #5 (January 31st, 2014) Daniel Kartch
+ - Added eglGetOutput* functions, folding in and generalizing
+ functionality previously provided by EXT_native_output
+ extension.
+ - Separated descriptions for layer and port query functions for
+ clarity.
+
+ #4 (January 22nd, 2014) Daniel Kartch
+ - Added section clarifying that this extension provides no means
+ to use output ports to set display modes, but future
+ extensions may.
+
+ #3 (January 17th, 2014) Daniel Kartch
+ - Updated names of example extension for obtaining and using
+ output handles.
+ - Fixed typos.
+
+ #2 (November 12th, 2013) Daniel Kartch
+ - Replaced EGLOutput with EGLOutputLayer and added
+ EGLOutputPort (and modified/added corresponding functions), to
+ allow both inputs and outputs of display control hardware to
+ be abstracted.
+ - Modified attribute query functions to use EGLAttribEXT and
+ added string query functions.
+ - Removed display mode attributes. These can be defined by a
+ separate extension if desired.
+ - Removed destructor function for outputs and added section on
+ lifetime, as well as language describing their relationship to
+ EGLDisplays.
+
+ #1 (October 25nd, 2013) Daniel Kartch
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt
new file mode 100644
index 0000000..a14adcb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_pixel_format_float
+
+Name Strings
+
+ EGL_EXT_pixel_format_float
+
+Contributors
+
+ Tom Cooksey
+ Jesse Hall
+ Mathias Heyer
+ Adam Jackson
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Weiwan Liu
+ Jeff Vigil
+
+Contact
+
+ Weiwan Liu, NVIDIA (weiwliu 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - Nov 22, 2016
+
+Number
+
+ EGL Extension #106
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extensions aims to provide similar functionality as GL_ARB_color_-
+ buffer_float, WGL_ARB_pixel_format_float and GLX_ARB_fbconfig_float. This
+ extension allows exposing new EGLConfigs that support formats with
+ floating-point RGBA components. This is done by introducing a new EGLConfig
+ attribute that represents the component type, i.e. fixed-point or
+ floating-point. Such new EGLConfigs can be used to create floating-point
+ rendering surfaces and contexts.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+
+ Accepted as attribute values for the EGL_COLOR_COMPONENT_TYPE_EXT attribute
+ of eglChooseConfig:
+
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+
+ Additions to table 3.1, "EGLConfig attributes" in Section 3.4 "Configuration
+ Management":
+
+ Attribute Type Notes
+ --------- ---- ---------
+ EGL_COLOR_COMPONENT_TYPE_EXT enum color component type
+
+ Append one paragraph at the end of "The Color Buffer" section on page 21:
+
+ EGL_COLOR_COMPONENT_TYPE_EXT indicates the color buffer component type,
+ and must be either EGL_COLOR_COMPONENT_TYPE_FIXED_EXT for fixed-point
+ color buffers, or EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT for floating-point
+ color buffers.
+
+ Add one entry to Table 3.4 and increment "Sort Priority" between "2" and
+ "11" by one for existing entries:
+
+ Attribute Default
+ ----------- ------------
+ EGL_COLOR_COMPONENT_TYPE_EXT EGL_COLOR_COMPONENT_TYPE_FIXED_EXT
+
+ Selection Criteria Sort Order Priority
+ ------------------ ---------- --------
+ Exact Special 2
+
+ Insert before the entry for EGL_COLOR_BUFFER_TYPE, and increment its
+ numbering and subsequent numbering by one:
+
+ 2. Special: by EGL_COLOR_COMPONENT_TYPE_EXT where the precedence is
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT, EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT
+
+ Change footnote 8 on page 30 to:
+
+ Within the same EGL_COLOR_COMPONENT_TYPE_EXT, this rule places configs
+ with deeper color buffers first in the list returned by
+ eglChooseConfig...
+
+Issues
+
+ 1. When reading from or rendering to a floating-point EGL surface, is there
+ any clamping performed on the values?
+
+ RESOLVED: It depends on the behavior of the client API. For example, in
+ OpenGL and ES, by default no clamping will be done on the floating-point
+ values, unless the clamping behavior is changed via the client API.
+
+ 2. When rendering to a floating-point EGL surface, since values may not be
+ clamped to [0, 1], what is the range of values that applications can use
+ to get display's "darkest black" and "brightest white"?
+
+ RESOLVED: It is not in the scope of this extension to define a range of
+ values that corresponds to display's capability. Please refer to the EGL
+ specification for the chosen colorspace (EGL_GL_COLORSPACE), where such a
+ reference range may be defined.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- --------------- ------------------------------------------
+ 1 12/11/15 Weiwan Liu Initial version
+ 2 05/18/16 Weiwan Liu Rename to EXT
+ 3 05/31/16 Weiwan Liu Add issues
+ 4 11/22/16 Weiwan Liu Change status to complete
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt
new file mode 100644
index 0000000..80bd1bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt
@@ -0,0 +1,371 @@
+Name
+
+ EXT_platform_base
+
+Name Strings
+
+ EGL_EXT_platform_base
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, 2014.01.09
+
+Number
+
+ EGL Extension #57
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ This extension is written against the wording of the 2013.02.11 revision
+ of the EGL 1.4 Specification.
+
+Overview
+
+ This extension defines functionality and behavior for EGL implementations
+ that support multiple platforms at runtime. For example, on Linux an EGL
+ implementation could support X11, Wayland, GBM (Generic Buffer Manager),
+ Surface Flinger, and perhaps other platforms.
+
+ In particular, this extension defines the following:
+
+ 1. A mechanism by which an EGL client can detect which platforms the
+ EGL implementation supports.
+
+ 2. New functions that enable an EGL client to specify to which
+ platform a native resource belongs when creating an EGL resource
+ from that native resource. For example, this extension enables an
+ EGL client to specify, when creating an EGLSurface from a native
+ window, that the window belongs to X11.
+
+ 3. That an EGL client is not restricted to interacting with a single
+ platform per process. A client process can create and manage EGL
+ resources from multiple platforms.
+
+ The generic term 'platform' is used throughout this extension
+ specification rather than 'window system' because not all EGL platforms
+ are window systems. In particular, those platforms that allow headless
+ rendering without a display server, such as GBM, are not window systems.
+
+ This extension does not specify behavior specific to any platform, nor
+ does it specify the set of platforms that an EGL implementation may
+ support. Platform-specific details lie outside this extension's scope and
+ are instead described by extensions layered atop this one.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLDisplay eglGetPlatformDisplayEXT(
+ EGLenum platform,
+ void *native_display,
+ const EGLint *attrib_list);
+
+ EGLSurface eglCreatePlatformWindowSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_window,
+ const EGLint *attrib_list);
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_pixmap,
+ const EGLint *attrib_list);
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.4 Specification
+
+ Replace each occurence of the term "window system" with "platform". The
+ rationale behind this change is that not all platforms are window systems,
+ yet the EGL 1.4 specification uses the two terms interchangeably. In
+ particular, platforms that allow headless rendering without a display
+ server, such as GBM, are not window systems.
+
+ Append the following paragraph to the initial, unnamed subsection of
+ section 2.1 "Native Window System and Rendering APIs".
+
+ "This specification does not define the set of platforms that may be
+ supported by the EGL implementation, nor does it specify behavior specific
+ to any platform. The set of supported platforms and their behavior is
+ defined by extensions. To detect if a particular platform is supported,
+ clients should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
+ eglQueryString.
+
+ Replace the text of section 3.2 "Initialization", from the start of the
+ section and up to and excluding the phrase "EGL may be intialized on
+ a display", with the following:
+
+ "A display can be obtained by calling
+
+ EGLDisplay eglGetPlatformDisplayEXT(
+ EGLenum platform,
+ void *native_display,
+ const EGLint *attrib_list);
+
+ EGL considers the returned EGLDisplay as belonging to the native platform
+ specified by <platform>. This specification defines no valid value for
+ <platform>. Any specification that does define a valid value for
+ <platform> will also define requirements for the <native_display>
+ parameter. For example, an extension specification that defines support
+ for the X11 platform may require that <native_display> be a pointer to an
+ X11 Display, and an extension specification that defines support for the
+ Microsoft Windows platform may require that <native_display> be a pointer
+ to a Windows Device Context.
+
+ All attribute names in <attrib_list> are immediately followed by the
+ corresponding desired value. The list is terminated with EGL_NONE. The
+ <attrib_list> is considered empty if either <attrib_list> is NULL or if
+ its first element is EGL_NONE. This specification defines no valid
+ attribute names for <attrib_list>.
+
+ Multiple calls made to eglGetPlatformDisplayEXT with the same <platform>
+ and <native_display> will return the same EGLDisplay handle.
+
+ An EGL_BAD_PARAMETER error is generated if <platform> has an invalid value.
+ If <platform> is valid but no display matching <native_display> is
+ available, then EGL_NO_DISPLAY is returned; no error condition is raised
+ in this case.
+
+ A display can also be obtained by calling
+
+ EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id);
+
+ The behavior of eglGetDisplay is similar to that of
+ eglGetPlatformDisplayEXT, but is specifided in terms of implementation-
+ specific behavior rather than platform-specific extensions.
+ As for eglGetPlatformDisplayEXT, EGL considers the returned EGLDisplay
+ as belonging to the same platform as <display_id>. However, the set of
+ platforms to which <display_id> is permitted to belong, as well as the
+ actual type of <display_id>, are implementation-specific. If <display_id>
+ is EGL_DEFAULT_DISPLAY, a default display is returned. Multiple calls
+ made to eglGetDisplay with the same <display_id> will return the same
+ EGLDisplay handle. If no display matching <display_id> is available,
+ EGL_NO_DISPLAY is returned; no error condition is raised in this case."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", replace the
+ second paragraph, which begins with "Using the platform-specific type" and
+ ends with "render into this surface", with the following:
+
+ "Then call
+
+ EGLSurface eglCreatePlatformWindowSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_window,
+ const EGLint *attrib_list);
+
+ eglCreatePlatformWindowSurfaceEXT creates an onscreen EGLSurface and
+ returns a handle to it. Any EGL context created with a compatible
+ EGLConfig can be used to render into this surface.
+
+ <native_window> must belong to the same platform as <dpy>, and EGL
+ considers the returned EGLSurface as belonging to that same platform. The
+ extension that defines the platform to which <dpy> belongs also defines
+ the requirements for the <native_window> parameter."
+
+ In the remainder of section 3.5.1, replace each occurrence of
+ 'eglCreateWindowSurface' with 'eglCreatePlatformWindowSurfaceEXT'.
+
+ Insert the sentence below after the first sentence of the last paragraph
+ of section 3.5.1:
+
+ "If <dpy> and <native_window> do not belong to the same platform, then
+ undefined behavior occurs. [1]"
+
+ Add the following footnote to section 3.5.1:
+
+ "[1] See section 3.1.0.2 "Parameter Validation".
+
+ Append the following to section 3.5.1:
+
+ "An on-screen rendering surface may also be created by calling
+
+ EGLSurface eglCreateWindowSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativeWindowType win,
+ const EGLint *attrib_list);
+
+ The behavior of eglCreateWindowSurface is identical to that of
+ eglCreatePlatformWindowSurfaceEXT except that the set of platforms to
+ which <dpy> is permitted to belong, as well as the actual type of <win>,
+ are implementation specific.
+
+ In section 3.5.4 "Creating Native Pixmap Rendering Surfaces", replace the
+ third paragraph, which begins with "Using the platform-specific type" and
+ ends with "render into this surface", with the following:
+
+ "Then call
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_pixmap,
+ const EGLint *attrib_list);
+
+ eglCreatePlatformPixmapSurfaceEXT creates an offscreen EGLSurface and
+ returns a handle to it. Any EGL context created with a compatible
+ EGLConfig can be used to render into this surface.
+
+ <native_pixmap> must belong to the same platform as <dpy>, and EGL
+ considers the returned EGLSurface as belonging to that same platform. The
+ extension that defines the platform to which <dpy> belongs also defines
+ the requirements for the <native_pixmap> parameter."
+
+ In the remainder of section 3.5.4, replace each occurrence of
+ 'eglCreatePixmapSurface' with 'eglCreatePlatformPixmapSurfaceEXT' and each
+ occurence of 'eglCreateWindowSurface' with
+ 'eglCreatePlatformWindowSurfaceEXT'.
+
+ Insert the sentence below after the first sentence of the last paragraph
+ of section 3.5.4:
+
+ "If <dpy> and <native_pixmap> do not belong to the same platform, then
+ undefined behavior occurs. [1]"
+
+ Add the following footnote to section 3.5.3:
+
+ "[1] See section 3.1.0.2 "Parameter Validation".
+
+ Append the following to section 3.5.2:
+
+ "An offscreen rendering surface may also be created by calling
+
+ EGLSurface eglCreatePixmapSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativePixmapType pixmap,
+ const EGLint *attrib_list);
+
+ The behavior of eglCreatePixmapSurface is identical to that of
+ eglCreatePlatformPixmapSurfaceEXT except that the set of platforms to
+ which <dpy> is permitted to belong, as well as the actual type of
+ <pixmap>, are implementation specific.
+
+Issues
+
+ 1. What rules define how EGL resources are shared among displays belonging
+ to different platforms?
+
+ RESOLVED: Neither the EGL 1.4 specification nor any extension allow EGL
+ resources to be shared among displays. This extension does not remove
+ that restriction.
+
+ 2. Rather than define the new function eglGetPlatformDisplayEXT(), should
+ this extension instead define new thread-local state for the currently
+ bound platform and an associated binding function, such as
+ eglBindPlatformEXT()?
+
+ RESOLVED: No, for the following reasons.
+
+ - A current trend among the Khronos workgroups is to remove use of
+ global state by introducing bindless objects. Introducing a new
+ thread-local binding point defies that trend.
+
+ - Additional specification language would be required to define
+ the interactions between the currently bound platform and all
+ EGL functions that accept an EGLDisplay. (For example, if the
+ currently bound platform is Wayland, then what is the result of
+ calling eglCreateWindowSurface() with a display and native
+ window belonging to X11?) By choosing to not introduce the
+ notion of a "currently bound platform", we obtain a cleaner
+ extension specification and eliminate for EGL users a class of
+ potential bugs.
+
+ 3. Should this extension define the notion of a default platform?
+
+ RESOLVED: No. eglGetDisplay() can be used if a default platform is
+ needed.
+
+ 4. Rather than define the new functions
+ eglCreatePlatform{Window,Pixmap}SurfaceEXT(), should we instead
+ redefine the EGLNative* types in eglplatform.h as void*?
+
+ RESOLVED: No, this introduces problems for X11 applications.
+
+ Suppose that a 64-bit X11 application is compiled against an old EGL
+ library (where EGLNativeWindowType is a typedef for XID, which is in
+ turn a typedef for a 64-bit unsigned integer on Fedora 18) and then
+ attempts to run against a new EGL library (where EGLNativeType is
+ a typedef for void*). To preserve the ABI of eglCreateWindowSurface()
+ in this situation, the new EGL library must re-interpret the
+ <native_window> parameter as an integer.
+
+ However, this preservation of the ABI breaks source compatibility for
+ existing X11 applications. To successfully compile, each call to
+
+ eglCreateWindowSurface(dpy, window, attribs)
+
+ in existing X11 application source code would need to be replaced with
+
+ eglCreateWindowSurface(dpy, (void*) window, attribs) .
+
+ Requiring such widespread code modifications would be an unnecessary
+ burden to developers and Linux package maintainers.
+
+Revision History
+
+ Version 9, 2014.01.09 (Jon Leech)
+ - Fix typo eglGetDisplayPlatformEXT -> eglGetPlatformDisplayEXT
+
+ Version 8, 2013.07.03 (Chad Versace)
+ - Add "Extension Type" section, required by EGL_EXT_client_extensions v9.
+
+ Version 7, 2013.06.07 (Chad Versace)
+ - Fix some awkward text (s/the EGL/EGL/).
+ - Remove text "attribute names are defined by platform-specific
+ extensions".
+
+ Version 6, 2013.06.07 (Chad Versace)
+ - To "Dependencies" section, expand text that discusses
+ EGL_EXT_client_extensions.
+
+ Version 5, 2013.05.18 (Chad Versace)
+ - Removed restriction that "attribute names are defined only by
+ platform-specific extensions".
+ - Resolve issue 3 as NO.
+ - Clarified some text and fixed grammatical errors.
+
+ Version 4, 2013.05.14 (Chad Versace)
+ - Add <attrib_list> parameter to eglGetPlatformDisplayEXT, per
+ feedback at the April Khronos F2F.
+
+ Version 3, 2013.04.26 (Chad Versace)
+ - Add issues 2, 3, 4.
+
+ Version 2, 2013.03.24 (Chad Versace)
+ - Complete draft by adding text for pixmaps.
+ - The footnotes regarding undefined behavior, simplify them by
+ simply referring to section 3.1.0.2.
+ - Add issue 1 from Eric Anholt <eric@anholt.net>.
+ - Fix spelling and formatting errors.
+
+ Version 1, 2013.03.13 (Chad Versace)
+ - Incomplete draft posted for review
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt
new file mode 100644
index 0000000..45c4fe3
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt
@@ -0,0 +1,161 @@
+Name
+
+ EXT_platform_device
+
+Name Strings
+
+ EGL_EXT_platform_device
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 6 - May 16th, 2014
+
+Number
+
+ EGL Extension #73
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_device_base
+
+ Requires EGL_EXT_platform_base or EGL 1.5
+
+ Written against the wording of EGL 1.5
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines a method to create an EGLDisplay from an
+ EGLDeviceEXT by treating the EGLDeviceEXT as an EGLNativeDisplay
+ object.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <platform> parameter of eglGetPlatformDisplayEXT
+ and eglGetPlatformDisplay:
+
+ EGL_PLATFORM_DEVICE_EXT 0x313F
+
+Replace the last paragraph of section 2.1 "Native Window System and
+Rendering APIs"
+
+ "This specification defines only the EGLDeviceEXT platform, and
+ behavior specific to it. Implementations may support other
+ platforms, but their existence and behavior is defined by
+ extensions. To detect support for other platforms, clients should
+ query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
+ eglQueryString (see section 3.3).
+
+Replace the second sentence of the paragraph following the
+eglGetPlatformDisplay prototype
+
+ "The only valid value for <platform> is EGL_PLATFORM_DEVICE_EXT.
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, <native_display> must
+ be an EGLDeviceEXT object. Platform-specific extensions may
+ define other valid values for <platform>."
+
+Add the following sentence to the end of the second paragraph after
+the eglCreatePlatformWindowSurface prototype.
+
+ "There are no valid values of <native_window> when <dpy> belongs
+ to the EGL_PLATFORM_DEVICE_EXT platform."
+
+Add the following sentence to the end of the second paragraph after
+the eglCreatePlatformPixmapSurface prototype.
+
+ "There are no valid values of <native_pixmap> when <dpy> belongs
+ to the EGL_PLATFORM_DEVICE_EXT platform.
+
+Issues
+
+ 1. Do EGLDevice-backed displays support window or pixmap surfaces?
+ If so, what native objects are they associated with? If not,
+ are EGLDevice-backed displays useful in any way?
+
+ RESOLVED: This extension defines no method to create window or
+ pixmap surfaces on the EGLDeviceEXT platform. Other
+ extensions may define such functionality. Presumably, if
+ there are no other extensions that expose native window or
+ pixmap types associated with EGL devices, EGLDeviceEXT-backed
+ displays could expose EGLConfigs that only support rendering
+ to EGLStreamKHR or EGLPbuffer surfaces.
+
+ 2. Should the EGL_PLATFORM_DEVICE_EXT platform be included in the
+ EGL specification as a special "blessed" platform, or exist
+ only as an extension like other platforms?
+
+ RESOLVED: EGL devices are defined as part of the EGL
+ specification, so there's no reason to exclude their
+ associated platform from the core EGL specification. They are
+ not native objects, therefore they can not be referred to as a
+ native platform, even though they are used interchangeably
+ with native objects in this extension.
+
+Revision History:
+
+ #6 (May 16th, 2014) James Jones
+ - Marked the extension complete
+ - Marked all issues resolved
+
+ #5 (April 8th, 2014) James Jones
+ - Updated wording based on the EGL 1.5 spec
+ - Assigned values to tokens
+
+ #4 (November 6th, 2013) James Jones
+ - Specified this is a device extension
+ - Requires, rather than interacts with EGL_EXT_platform_base
+ - Removed EGL_SUPPORTS_PLATFORM_DEVICE_EXT. There is no need
+ for a separate query now that the name string is listed in
+ the per-device extension string
+
+ #3 (April 23rd, 2013) James Jones
+ - Fixed minor typos
+
+ #2 (April 18th, 2013) James Jones
+ - Moved eglGetDisplayPointerEXT to a stand-alone extension
+ - Renamed from EGL_EXT_device_display to
+ EGL_EXT_platform_device
+ - Filled in the actual spec language modifications
+ - Replaced issue 2, since the original was moved to
+ EGL_EXT_display_attributes
+ - Reworded issue 1.
+ - Fixed some typos
+
+ #1 (April 16th, 2013) James Jones
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt
new file mode 100644
index 0000000..3e5c0fa
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt
@@ -0,0 +1,135 @@
+Name
+
+ EXT_platform_wayland
+
+Name Strings
+
+ EGL_EXT_platform_wayland
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, 2014-03-10
+
+Number
+
+ EGL Extension #63
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native Wayland
+ resources using the functions defined by EGL_EXT_platform_base.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_WAYLAND_EXT 0x31D8
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay backed by a Wayland display, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_WAYLAND_EXT. The
+ <native_display> parameter specifies the Wayland display to use and must
+ either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create a new
+ wl_display structure by connecting to the default Wayland socket. The
+ manual page wl_display_connect(3) defines the location of the default
+ Wayland socket.
+
+ To obtain an on-screen rendering surface from a Wayland window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to Wayland and
+ a <native_window> that points to a `struct wl_egl_surface`.
+
+ It is not valid to call eglCreatePlatformPixmapSurfaceEXT with a <dpy>
+ that belongs to Wayland. Any such call fails and generates
+ EGL_BAD_PARAMETER.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplayEXT()?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplayEXT
+ returns a display backed by the default Wayland display.
+
+ 2. Should this extension support creation EGLPixmap resources from Wayland
+ pixmaps?
+
+ RESOLVED. No. Wayland has no pixmap type.
+
+ 3. Should the extension namespace be EXT or MESA?
+
+ The only shipping EGL implementation today (2013-04-26) that supports
+ Wayland is Mesa. However, perhaps the extension should reside in the
+ EXT namespace in expectation that other vendors will also begin
+ supporting Wayland.
+
+ RESOLVED. Use the EXT namespace because other vendors have expressed
+ interest in Wayland.
+
+Revision History
+
+ Version 4, 2014-03-10(Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplayEXT accepts EGL_DEFAULT_DISPLAY for Wayland.
+ - Explain in more detail how EGL connects to the default Wayland
+ display.
+
+ Version 3, 2013-10-16 (Chad Versace)
+ - Resolve issue #3 to use EXT namespace.
+
+ Version 2, 2013-09-12 (Chad Versace)
+ - Update to wording of version 7 of EGL_EXT_platform_base spec.
+ - Add section "Extension Type".
+ - Rephrase the discussion of how to create a Wayland EGLDisplay
+ to follow the analogous discussion in the published
+ EGL_EXT_platform_x11 spec.
+ - Change resolution of issue 1 from yes to no, because of likely type
+ mismatch between EGL_DEFAULT_DISPLAY_TYPE and void*.
+
+ Version 1, 2013-04-26 (Chad Versace)
+ - Initial draft
+
+# vim:ai:et:sw=4:ts=4:
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt
new file mode 100644
index 0000000..19bfc35
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt
@@ -0,0 +1,414 @@
+Name
+
+ EXT_platform_x11
+
+Name Strings
+
+ EGL_EXT_platform_x11
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 13, 2014-03-10
+
+Number
+
+ EGL Extension #59
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the functions defined by EGL_EXT_platform_base.
+
+ This extension defines only how to create EGL resources from Xlib
+ resources. It does not define how to do so from xcb resources. All X11
+ types discussed here are defined by the header `Xlib.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_X11_EXT 0x31D5
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ On the X11 platform, an EGLDisplay refers to a specific X11 screen rather
+ than an X11 display connection. This is the case because separate X11
+ screens, even when belonging to the same X11 display connection, may
+ reside on different GPUs and/or be driven by different drivers. Therefore,
+ different X11 screens may have different EGL capabilities.
+
+ To obtain an EGLDisplay backed by an X11 screen, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_X11_EXT. The
+ <native_display> parameter specifies the X11 display connection to use, and
+ must point to a valid X11 `Display` or be NULL. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then EGL will create [1] a connection to the default
+ X11 display. The environment variable DISPLAY determines the default X11
+ display as described in the manual page for XOpenDisplay(3). The value of
+ attribute EGL_PLATFORM_X11_SCREEN_EXT specifies the X11 screen to use. If
+ the attribute is omitted from <attrib_list>, then the display connection's
+ default screen is used. Otherwise, the attribute's value must be a valid
+ screen on the display connection. If the attribute's value is not a valid
+ screen, then an EGL_BAD_ATTRIBUTE error is generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ XOpenDisplay, xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_window> that points to an X11 Window.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an X11 Pixmap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplayEXT()?
+
+ RESOLVED. Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplayEXT
+ returns an EGLDisplay backed by the default X11 display.
+
+ 2. When given EGL_DEFAULT_DISPLAY, does eglGetPlatformDisplayEXT reuse an
+ existing X11 display connection or create a new one?
+
+ RESOLVED. eglGetPlatformDisplayEXT creates a new connection because the
+ alternative is infeasible. EGL cannot reliably detect if the client
+ process already has a X11 display connection.
+
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // If the macro USE_EGL_EXT_PLATFORM_X11 is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lX11 -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <X11/Xlib.h>
+
+ struct my_display {
+ Display *x11;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ XVisualInfo *x11;
+ Colormap colormap;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ Window x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ Pixmap x11;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_EXT_platform_x11")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ dpy.x11 = XOpenDisplay(NULL);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_X11_EXT, dpy.x11,
+ NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.x11);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl,
+ egl_config_attribs,
+ &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ XVisualInfo x11_visual_info_template;
+ if (!eglGetConfigAttrib(dpy.egl,
+ config.egl,
+ EGL_NATIVE_VISUAL_ID,
+ (EGLint*) &x11_visual_info_template.visualid)) {
+ abort();
+ }
+
+ int num_visuals;
+ config.x11 = XGetVisualInfo(dpy.x11,
+ VisualIDMask,
+ &x11_visual_info_template,
+ &num_visuals);
+ if (!config.x11) {
+ abort();
+ }
+
+ config.colormap = XCreateColormap(dpy.x11,
+ RootWindow(dpy.x11, 0),
+ config.x11->visual,
+ AllocNone);
+ if (config.colormap == None) {
+ abort();
+ }
+
+ return config;
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ XSetWindowAttributes attr;
+ unsigned long mask;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ attr.colormap = config.colormap;
+ mask = CWColormap;
+
+ window.x11 = XCreateWindow(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11), // parent
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ config.x11->depth,
+ InputOutput, // class
+ config.x11->visual,
+ mask, // valuemask
+ &attr); // attributes
+ if (!window.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl,
+ config.egl,
+ &window.x11,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.x11,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap
+ get_pixmap(struct my_config config)
+ {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = XCreatePixmap(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11),
+ 256, 256, // width, height
+ config.x11->depth);
+ if (!pixmap.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ pixmap.egl = eglCreatePlatformPixmapSurfaceEXT(config.dpy.egl,
+ config.egl,
+ &pixmap.x11,
+ NULL);
+ #else
+ pixmap.egl = eglCreatePixmapSurface(config.dpy.egl,
+ config.egl,
+ pixmap.x11,
+ NULL);
+ #endif
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 13, 2014-03-10 (Chad Versace)
+ - Update text to reflect resolution of issue #1. State that
+ <native_display> may be EGL_DEFAULT_DISPLAY.
+ - Explain in more detail how EGL connects to the default X11 display.
+ - Add and resolve issue #2.
+
+ Version 12, 2014-02-11 (Chad Versace)
+ - Fix 2nd argument to XCreatePixmap in example code.
+
+ Version 11, 2013-07-10 (Jon Leech)
+ - Fix enumerant values and assign extension number for publication
+ (Bug 10240).
+
+ Version 10, 2013-07-03 (Chad Versace)
+ - Add "Extension Type" section, required by EGL_EXT_client_extensions v9.
+
+ Version 9, 2013-06-11 (Chad Versace)
+ - Replace reference to version 5 of EGL_EXT_platform_base to version 7.
+ - Add James Jones as contributor.
+
+ Version 8, 2013-06-07 (Chad Versace)
+ - Assign enum values to new tokens.
+
+ Version 7, 2013-06-07 (Chad Versace)
+ - Explicitly require EGL_EXT_client_extensions in the Dependencies
+ section.
+
+ Version 6, 2013-06-07 (Chad Versace)
+ - Add attribute EGL_PLATFORM_X11_SCREEN_EXT.
+
+ Version 5, 2013-06-07 (Chad Versace)
+ - Rephrase against version 7 of EGL_EXT_platform_base.
+
+ Version 4, 2013-06-07 (Chad Versace)
+ - Fix compilation of example code.
+
+ Version 3, 2013-04-26 (Chad Versace)
+ - Add missing EXT suffix to new token.
+
+ Version 2, 2013-04-22 (Chad Versace)
+ - Discuss EGL_DEFAULT_DISPLAY.
+ - Fix minor typographical and grammatical errors.
+
+ Version 1, 2013.03.24 (Chad Versace)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt
new file mode 100644
index 0000000..1411db6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt
@@ -0,0 +1,382 @@
+Name
+
+ EXT_platform_xcb
+
+Name Strings
+
+ EGL_EXT_platform_xcb
+
+Contributors
+
+ Yuxuan Shui <yshuiv7@gmail.com>
+
+Contacts
+
+ Yuxuan Shui <yshuiv7@gmail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, 2020-08-28
+
+Number
+
+ EGL Extension #141
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 9 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the functions defined by EGL_EXT_platform_base.
+
+ The native X11 resources required by this extension are xcb resources.
+ All X11 types discussed here are defined by the header `xcb.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_XCB_EXT 0x31DC
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ This extension defines the same set of behaviors as EGL_EXT_platform_x11,
+ except Xlib types are replaced with xcb types.
+
+ To obtain an EGLDisplay backed by an X11 screen, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_XCB_EXT. The
+ <native_display> parameter specifies the X11 display connection to use, and
+ must point to a valid xcb `xcb_connection_t` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create [1] a
+ connection to the default X11 display. The environment variable DISPLAY
+ determines the default X11 display, and, unless overridden by the
+ EGL_PLATFORM_XCB_SCREEN_EXT attribute, the default X11 screen - as
+ described in the documentation of `xcb_connect`. If the environment
+ variable DISPLAY is not present in this case, the result is undefined. The
+ value of attribute EGL_PLATFORM_XCB_SCREEN_EXT specifies the X11 screen to
+ use. If the attribute is omitted from <attrib_list>, and <native_display>
+ is not EGL_DEFAULT_DISPLAY, then screen 0 will be used. Otherwise, the
+ attribute's value must be a valid screen on the display connection. If the
+ attribute's value is not a valid screen, then an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_window> that points to an xcb_window_t.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an xcb_pixmap_t.
+
+Issues
+
+ 1. As xcb_connection_t doesn't carry a screen number, how should a screen be
+ selected in eglGetPlatformDisplayEXT()?
+
+ RESOLVED. The screen will be chosen with the following logic:
+
+ * If EGL_PLATFORM_XCB_SCREEN_EXT is specified, it will always take
+ precedence. Whether <native_display> is EGL_DEFAULT_DISPLAY or not.
+
+ * Otherwise, if <native_display> is not EGL_DEFAULT_DISPLAY, then
+ screen 0 will be used.
+
+ * Otherwise, which is to say <native_display> is EGL_DEFAULT_DISPLAY.
+ Then the DISPLAY environment variable will be used to determine the
+ screen number. If DISPLAY contains a screen number, that will be
+ used; if not, then 0 will be used.
+
+ * If the DISPLAY environment variable is not present when
+ <native_display> is EGL_DEFAULT_DISPLAY, the result will be undefined.
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // Compile with `cc example.c -lxcb -lEGL`.
+
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
+ #include <xcb/xcb.h>
+
+ struct my_display {
+ xcb_connection_t *x11;
+ int screen;
+ int root_of_screen;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ xcb_colormap_t colormap;
+ xcb_visualid_t visualid;
+ int depth;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ xcb_window_t x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ xcb_pixmap_t x11;
+ EGLSurface egl;
+ };
+
+ static void check_extensions(void) {
+ const char *client_extensions =
+ eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_EXT_platform_xcb")) {
+ abort();
+ }
+ }
+
+ xcb_screen_t *get_screen(xcb_connection_t *c, int screen) {
+ xcb_screen_iterator_t iter;
+
+ iter = xcb_setup_roots_iterator(xcb_get_setup(c));
+ for (; iter.rem; --screen, xcb_screen_next(&iter))
+ if (screen == 0)
+ return iter.data;
+
+ return NULL;
+ }
+
+ int get_visual_depth(xcb_connection_t *c, xcb_visualid_t visual) {
+ const xcb_setup_t *setup = xcb_get_setup(c);
+ for (xcb_screen_iterator_t i = xcb_setup_roots_iterator(setup); i.rem;
+ xcb_screen_next(&i)) {
+ for (xcb_depth_iterator_t j =
+ xcb_screen_allowed_depths_iterator(i.data);
+ j.rem; xcb_depth_next(&j)) {
+ const int len = xcb_depth_visuals_length(j.data);
+ const xcb_visualtype_t *visuals = xcb_depth_visuals(j.data);
+ for (int k = 0; k < len; k++) {
+ if (visual == visuals[k].visual_id) {
+ return j.data->depth;
+ }
+ }
+ }
+ }
+ abort();
+ }
+
+ static struct my_display get_display(void) {
+ struct my_display dpy;
+
+ dpy.x11 = xcb_connect(NULL, &dpy.screen);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_XCB_EXT, dpy.x11,
+ (const EGLint[]){
+ EGL_PLATFORM_XCB_SCREEN_EXT,
+ dpy.screen,
+ EGL_NONE,
+ });
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ xcb_screen_t *screen = get_screen(dpy.x11, dpy.screen);
+ dpy.root_of_screen = screen->root;
+
+ return dpy;
+ }
+
+ static struct my_config get_config(struct my_display dpy) {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE,
+ 32,
+ EGL_RED_SIZE,
+ 8,
+ EGL_GREEN_SIZE,
+ 8,
+ EGL_BLUE_SIZE,
+ 8,
+ EGL_ALPHA_SIZE,
+ 8,
+
+ EGL_DEPTH_SIZE,
+ EGL_DONT_CARE,
+ EGL_STENCIL_SIZE,
+ EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE,
+ EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE,
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs, &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ if (!eglGetConfigAttrib(dpy.egl, config.egl, EGL_NATIVE_VISUAL_ID,
+ (EGLint *)&config.visualid)) {
+ abort();
+ }
+
+ config.colormap = xcb_generate_id(dpy.x11);
+ if (xcb_request_check(dpy.x11,
+ xcb_create_colormap_checked(
+ dpy.x11, XCB_COLORMAP_ALLOC_NONE, config.colormap,
+ dpy.root_of_screen, config.visualid))) {
+ abort();
+ }
+
+ config.depth = get_visual_depth(dpy.x11, config.visualid);
+
+ return config;
+ }
+
+ static struct my_window get_window(struct my_config config) {
+ xcb_generic_error_t *e;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.x11 = xcb_generate_id(config.dpy.x11);
+ e = xcb_request_check(
+ config.dpy.x11,
+ xcb_create_window_checked(config.dpy.x11, // connection
+ XCB_COPY_FROM_PARENT, // depth
+ window.x11, // window id
+ config.dpy.root_of_screen, // root
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, // class
+ config.visualid, // visual
+ XCB_CW_COLORMAP, // mask
+ (const int[]){
+ config.colormap,
+ XCB_NONE,
+ }));
+ if (e) {
+ abort();
+ }
+
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl, config.egl,
+ &window.x11, NULL);
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap get_pixmap(struct my_config config) {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = xcb_generate_id(config.dpy.x11);
+ if (xcb_request_check(
+ config.dpy.x11,
+ xcb_create_pixmap(config.dpy.x11, config.depth, pixmap.x11,
+ config.dpy.root_of_screen, 256, 256))) {
+ abort();
+ }
+
+ pixmap.egl = eglCreatePlatformPixmapSurfaceEXT(config.dpy.egl, config.egl,
+ &pixmap.x11, NULL);
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int main(void) {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 2, 2020.10.13 (Yuxuan Shui)
+ - Some wording changes
+ - Address the question about screen selection
+
+ Version 1, 2020.08.28 (Yuxuan Shui)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt
new file mode 100644
index 0000000..de2f6d8
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt
@@ -0,0 +1,118 @@
+Name
+
+ EXT_present_opaque
+
+Name Strings
+
+ EGL_EXT_present_opaque
+
+Contributors
+
+ Eric Engestrom
+
+Contacts
+
+ Eric Engestrom (eric 'at' engestrom.ch)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ #1, August 8, 2021
+
+Number
+
+ EGL Extension #146
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.4 and EGL_KHR_image_base extension
+
+ This extension is written against the wording of the EGL 1.4
+ specification, and EGL_KHR_image_base version 6.
+
+Overview
+
+ This extension adds a new EGL surface attribute EGL_PRESENT_OPAQUE_EXT
+ to indicate that the surface should be presented as opaque,
+ disregarding any alpha channel if present.
+ If surface attribute EGL_PRESENT_OPAQUE_EXT is EGL_TRUE, then the
+ surface will be presented as opaque.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLSurface attribute name:
+
+ EGL_PRESENT_OPAQUE_EXT 0x31DF
+
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing
+ eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
+ EGL_PRESENT_OPAQUE_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before
+ "EGL_VG_COLORSPACE specifies the color space used by OpenVG"
+ (describing eglCreateWindowSurface attrib_list):
+
+ "EGL_PRESENT_OPAQUE_EXT specifies the presentation opacity mode
+ of the window surface. If its value is EGL_TRUE, then the
+ surface's alpha channel (if any) will be ignored and considered
+ fully opaque. If its value is EGL_FALSE, then the compositor
+ doesn't change its behaviour, and considers the surface's alpha
+ channel the same way as if the extension wasn't implemented. The
+ default value of EGL_PRESENT_OPAQUE_EXT is EGL_FALSE."
+
+ Add to Table 3.5: Queryable surface attributes and types on p. 37
+
+ EGL_PRESENT_OPAQUE_EXT boolean Surface presentation opacity mode
+
+ Add following the second paragraph in section 3.6 on p. 39 (describing
+ eglQuerySurface):
+
+ "Querying EGL_PRESENT_OPAQUE_EXT returns the presentation
+ opacity mode of the surface. The presentation opacity mode of
+ window surfaces is specified in eglCreateWindowSurface. The
+ presentation opacity mode of pbuffer and pixmap surfaces is
+ always EGL_FALSE."
+
+ Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
+ p. 53 (describing eglCopyBuffers):
+
+ "If attribute EGL_PRESENT_OPAQUE_EXT of surface has value of EGL_TRUE, then
+ an EGL_BAD_ACCESS error is returned."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 2, 2021-08-17 (Eric Engestrom)
+ - Re-worded the compositor's behaviour for EGL_FALSE.
+ - Marked extension as Complete.
+
+ Version 1, 2021-08-08 (Eric Engestrom)
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt
new file mode 100644
index 0000000..2421161
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt
@@ -0,0 +1,329 @@
+Name
+
+ EXT_protected_content
+
+Name Strings
+
+ EGL_EXT_protected_content
+
+Contributors
+
+ Ramesh Viswanathan
+ Brian Ellis
+ Colin Sharp
+ Rajeev Kulkarni
+ Mohan Maiya
+ Maurice Ribble
+ Craig Donner
+ Jan-Harald Fredriksen
+ Daniel Koch
+ Michael Golds
+ Ray Smith
+
+Contacts
+
+ Maurice Ribble (mribble 'at' qti.qualcomm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete.
+
+Version
+
+ Version 13, December 6, 2021
+
+Number
+
+ EGL Extension #97
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Interactions with EGL_KHR_image_base extension.
+
+ This extension is written against the wording of the EGL 1.4.
+ Specification (12/04/2013)
+
+ This extension has interactions with EGL_EXT_protected_surface if that
+ extension is supported. The interactions are described in the main text.
+
+Overview
+
+ This extension introduces the concept of protected contexts and protected
+ resources, specifically surfaces and EGLImages. Applications can choose at
+ creation time whether a context, surface or EGLImage is protected or not.
+
+ A protected context is required to allow the GPU to operate on protected
+ resources, including protected surfaces and protected EGLImages.
+
+ An explanation of undefined behavior in this extension: Several places
+ in this extension mention undefined behavior can result, which can
+ include program termination. The reason for this is because one way
+ to handle protected content is by using a protected virtual to physical
+ memory translation layer. With this sort of solution a system may generate
+ read or write faults when a non-protected source tries to access a protected
+ buffer. Depending on the system these faults might be ignored or they might
+ cause process termination. This undefined behavior should not include
+ actually allowing a transfer of data from a protected surface to a
+ non-protected surface.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateContext, eglCreateWindowSurface, and eglCreateImageKHR;
+ and as an parameter of eglQuerySurface and eglQueryContext:
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+
+Add a new section 2.7 entitled "Protected Content" at the end of Chapter 2 (EGL
+Operation)
+
+ "The attribute EGL_PROTECTED_CONTENT_EXT can be applied to EGL contexts,
+ EGL surfaces and EGLImages. If the attribute EGL_PROTECTED_CONTENT_EXT
+ is set to EGL_TRUE by the application, then the newly created EGL object
+ is said to be protected. A protected context is required to allow the
+ GPU to operate on protected resources, including protected surfaces and
+ protected EGLImages.
+
+ GPU operations are grouped into pipeline stages. Pipeline stages can be
+ defined to be protected or not protected. Each stage defines
+ restrictions on whether it can read or write protected and unprotected
+ resources, as follows:
+
+ When a GPU stage is protected, it:
+ - Can read from protected resources
+ - Can read from unprotected resources
+ - Can write to protected resources
+ - Can NOT write to unprotected resources
+
+ When a GPU stage is not protected, it:
+ - Can NOT read from protected resources
+ - Can read from unprotected resources
+ - Can NOT write to protected resources
+ - Can write to unprotected resources
+
+ Any accesses not following these restrictions will result in undefined
+ behavior.
+
+ This extension does not specify which pipeline stages of a protected
+ context are protected or not. This is left to a client API extension to
+ define. All stages in a regular (not protected) context are not
+ protected. However, if EGL_EXT_protected_surface is also supported, a
+ regular (not protected) context will execute stages where one or more
+ protected resources is accessed as if it were a protected context.
+
+ Note that the protection state of a stage may be left implementation
+ defined by a client API extension. This means that no guarantees can be
+ made about whether the stage will be protected or not protected.
+ Practically this means that the permitted operations for such a stage
+ are the intersection of the allowed operations for protected and not
+ protected stages, i.e it:
+
+ - Can NOT read from protected resources
+ - Can read from unprotected resources
+ - Can NOT write to protected resources
+ - Can NOT write to unprotected resources
+
+ Since this is not a very useful set of operations refer to the client API
+ extension to see what operations are actually allowed.
+
+ This extension does not guarantee the implementation abides by a
+ system's digital rights management requirements. It must be verified
+ beyond the existence of this extension that the implementation of this
+ extension is trustworthy according to the requirements of a content
+ protection system."
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Contexts)
+
+ Change the fifth paragraph in section 3.7.1 Creating Rendering Contexts:
+
+ "attrib list specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig.
+ Attributes that can be specified in attrib list include
+ EGL_CONTEXT_CLIENT_VERSION and EGL_PROTECTED_CONTENT_EXT. The
+ EGL_CONTEXT_CLIENT_VERSION attribute may only be specified when
+ creating a OpenGL ES context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API)."
+
+ Add the following paragraph in section 3.7.1 on p. 44 before "attrib list
+ may be NULL or empty (first attribute is EGL_NONE), in which case
+ attributes assume their default values as described below."
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protected state of the new
+ context. If its value is EGL_TRUE, then the context is said to be
+ protected. If its value is EGL_FALSE, then the context is not
+ protected. See section 2.7 (Protected Content) for more information
+ about protected contexts.
+
+ The default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add the following paragraph in section 3.7.4 Context Queries. Add after
+ the last paragraph after eglQueryContext queries.
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the current value"
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing
+ eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include
+ EGL_RENDER_BUFFER, EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and
+ EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before
+ "EGL_VG_COLORSPACE specifies the color space used by OpenVG" (describing
+ eglCreateWindowSurface(attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protected state of the
+ window surface. If its value is EGL_TRUE, then the surface content
+ is said to be protected. If its value is EGL_FALSE, then the surface
+ content is not protected. See section 2.7 (Protected Content) for
+ more information about protected and non-protected surfaces.
+
+ Client APIs will not allow contents of protected surfaces to be
+ accessed by non-protected contexts in the system (including
+ non-secure software running on the CPU). Such operations will result
+ in undefined behavior.
+
+ Calling eglSwapBuffers on such a protected surface will succeed, but
+ the contents may or may not be posted successfully depending on
+ whether those parts of the pipeline are capable of handling
+ protected content. Any disallowed operation will fail and result in
+ undefined behavior.
+
+ The default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add the following paragraph in section 3.5.6 Surface Attributes. Add after
+ the last paragraph after eglQuerySurface attribute queries.
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the current value"
+
+Additions to EGL_KHR_image_base extension specification
+
+ Add to section 2.5.1 Table bbb:
+ +-----------------------------+-------------------------+---------------+
+ | Attribute | Description | Default Value |
+ +-----------------------------+-------------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | EGL_FALSE |
+ | | pixel data | |
+ | EGL_PROTECTED_CONTENT_EXT | Content protection | EGL_FALSE |
+ | | state | |
+ +-----------------------------+-------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list>
+ parameter
+
+ Add the following paragraph to section 2.5.1 before "Errors" (describing
+ eglCreateImageKHR):
+
+ "If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE
+ and the EGLImage sources can be guaranteed to be protected, then the
+ EGLImage is said to be protected. See section 2.7 (Protected Content)
+ for more information about protected resources including EGLImages.
+
+ If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_FALSE then:
+
+ - If EGLImage sources are not protected, the EGLImage is said to be
+ not protected. See section 2.7 (Protected Content) for more
+ information about non-protected resources including EGLImages.
+ - If EGLImage sources are protected then the EGLImage content will
+ be inaccessible to any client context irrespective of whether the
+ context is protected or not. Trying to access such an EGLImage's
+ content will result in undefined behavior."
+
+ Add the following to the Errors list in section 2.5.1
+
+ "If the value specified in <attrib_list> for EGL_PROTECTED_CONTENT_EXT
+ is EGL_TRUE, and EGL and its client is unable to make guarantees
+ regarding the protected state of the EGLImage source, the error
+ EGL_BAD_ACCESS is generated."
+
+Issues
+ 1) Can a protected context be shared with a non-protected context?
+
+ RESOLVED - Yes. The rule that protected surfaces can only be used by
+ protected contexts still applies. An example use case is where
+ someone wants to render to unprotected textures within an unprotected
+ context and then share it with a protected context to be used as a texture.
+
+ 2) Should all surfaces within a protected context be protected by default?
+
+ RESOLVED - No, several implementations have limited amounts of protected
+ memory, so the API will require opting into protected memory.
+
+ 3) Can these protected surfaces be used by stages other than fragment
+ shader stage?
+
+ RESOLVED - Some hardware can't handle this so this behavior is undefined
+ unless there is explicit working in some new spec saying the behavior is
+ defined. This is put as an issue because this is an EGL extension and
+ should not be controlling OpenGL functionality.
+
+ 4) Why is EGL_PROTECTED_CONTENT_EXT flag needed for EGLImages?
+
+ RESOLVED - A few reasons for having an explicit flag instead
+ of inferring the protected status from EGLImage sources -
+
+ 1) There are multiple EGL image extensions (EGL QCOM image, EGL
+ android image and so on) that accept buffers from external modules
+ instead of client resources or allow internally allocated memory.
+ For these use cases a protected attribute is useful, so we want to
+ keep this flag.
+ 2) An implementation might have a few non-standard setup steps that
+ need to be completed before a protected EGL image can be accessed.
+ This attribute along with a corresponding protected buffer will act
+ as a signal for the graphics driver to initiate/complete any such
+ steps.
+ 3) An application creating an image from an external resource may not
+ be aware of the fact that the resource is protected or may be unable
+ to access its content. The successful mapping of and access to a
+ protected buffer through an EGLImage will be predicated on the
+ buffer being protected, having a protected context and the intent of
+ the application to access that buffer by passing in EGL_TRUE for the
+ attribute EGL_PROTECTED_CONTENT_EXT.
+
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- ----------------------------------------------
+ 1 09/24/14 Ramesh Initial draft.
+ 2 11/20/14 Rajeev Second draft.
+ 3 03/07/16 mribble Make EXT and clean up for release.
+ 4 03/10/16 mribble Cleanup.
+ 5 03/18/16 mribble Fix issues brought up by Khronos group.
+ 6 03/24/16 mribble Resolved some small issues found by Jan-Harald.
+ 7 03/25/16 mribble Fix createContext wording.
+ 8 03/30/16 mribble Added issue 5.
+ 9 04/05/16 mribble Added issue 6 and better defined eglImage case.
+ 10 04/08/16 rsmith - Added general section on protected content.
+ Protected context, surface and image creation now
+ refer to the general protected content principles.
+ - Added explicit definition of which stages are
+ protected, including allowing for the protected
+ state of a stage to be undefined.
+ - Formalised interactions with
+ EGL_EXT_protected_surface.
+ - Removed references to the GPU protected mode,
+ including issue 3.
+ 11 04/10/16 mribble Merge and cleanup.
+ 12 04/14/16 Jon Leech Cleanup formatting, reflow paragraphs and
+ quote additions consistently. Assign extension
+ number.
+ 13 12/06/21 Jeff Vigil Add queries for protected content attribute.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt
new file mode 100644
index 0000000..ec3665a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt
@@ -0,0 +1,230 @@
+Name
+
+ EXT_protected_surface
+
+Name Strings
+
+ EGL_EXT_protected_surface
+
+Contributors
+
+ Frido Garritsen, Vivante
+ Yanjun Zhang, Vivante
+ Pontus Lidman, Marvell
+ Jesse Hall, Google
+
+Contacts
+
+ Frido Garritsen (frido 'at' vivantecorp.com)
+ Yanjun Zhang (yzhang 'at' vivantecorp.com)
+
+Notice
+
+ Copyright 2013 Vivante Corporation
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ #7, January 20, 2014
+
+Number
+
+ EGL Extension #67
+
+Dependencies
+
+ Requires EGL 1.4 and EGL_KHR_image_base extension
+
+ This extension is written against the wording of the EGL 1.4
+ Specification (12/04/2013), and EGL_KHR_image_base spec. version 6.
+
+Overview
+
+ This extension adds a new EGL surface attribute EGL_PROTECTED_CONTENT_EXT
+ to indicate if the content in the surface buffer is protected or not.
+ If surface attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE, then the
+ surface content is only accessible to secure accesses. Any attempt to access
+ the buffer content non-securely will fail and result in undefined behavior
+ up to and including program termination. Also, any copy operations from the
+ protected surface to any non-protected surface by GPU are considered illegal.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLSurface attribute name:
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
+ EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before "EGL_VG_COLORSPACE
+ specifies the color space used by OpenVG" (describing eglCreateWindowSurface
+ attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protection state of the window
+ surface. If its value is EGL_TRUE, then the surface content resides in a
+ secure memory region. Secure surfaces may be written to by client APIs
+ using any combination of protected and non-protected input data. EGL and
+ client APIs will not allow contents of protected surfaces to be accessed
+ by non-secure devices in the system (including non-secure software
+ running on the CPU). They will also not allow the contents to be copied
+ to non-protected surfaces. Copies within a protected surface, or from one
+ protected surface to another, are allowed. eglSwapBuffers is allowed for
+ protected surfaces if and only if the window system is able to maintain
+ the security of the buffer contents. Any disallowed operation will
+ fail and result in undefined behavior, up to and including program
+ termination. If EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the surface
+ content can be accessed by secure or non-secure devices and can be copied
+ to any other surfaces. The definition of secure and non-secure access is
+ up to the implementation and is out of scope of this specification. The
+ default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Change the second paragraph in section 3.5 on p. 30 (describing
+ eglCreatePbufferSurface):
+
+ "Attributes that can be specified in attrib list include EGL_WIDTH,
+ EGL_HEIGHT, EGL_LARGEST_PBUFFER, EGL_TEXTURE_FORMAT, EGL_TEXTURE_TARGET,
+ EGL_MIPMAP_TEXTURE, EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and
+ EGL_VG_ALPHA_FORMAT."
+
+ Add following the second paragraph in section 3.5 on p. 31 (describing
+ eglCreatePbufferSurface attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protection state of the pbuffer
+ surface. If its value is EGL_TRUE, then the surface content resides in a
+ secure memory region. Secure surfaces may be written to by client APIs
+ using any combination of protected and non-protected input data. EGL and
+ client APIs will not allow contents of protected surfaces to be accessed
+ by non-secure devices in the system (including non-secure software
+ running on the CPU). They will also not allow the contents to be copied
+ to non-protected surfaces. Copies within a protected surface, or from one
+ protected surface to another, are allowed. Any disallowed operation will
+ fail and result in undefined behavior, up to and including program
+ termination. If EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the surface
+ content can be accessed by secure or non-secure devices and can be copied
+ to any other surfaces. The definition of secure and non-secure access is
+ up to the implementation and is out of scope of this specification. The
+ default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add to Table 3.5: Queryable surface attributes and types on p. 37
+
+ EGL_PROTECTED_CONTENT_EXT boolean Content protection state
+
+ Add following the second paragraph in section 3.6 on p. 39 (describing
+ eglQuerySurface):
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the content protection state of
+ the surface. The protection state of window and pbuffer surfaces is specified
+ in eglCreateWindowSurface and eglCreatePbufferSurface. The protection state of
+ pixmap and client buffer (pbuffer) surfaces is always EGL_FALSE."
+
+ Add following after "if either draw or read are bound to contexts in another thread,
+ an EGL_BAD_ACCESS error is generated." in section 3.7.3 p46 (describing eglMakeCurrent
+ errors):
+
+ "If EGL_PROTECTED_CONTENT_EXT attributes of read is EGL_TRUE and
+ EGL_PROTECTED_CONTENT_EXT attributes of draw is EGL_FALSE, an
+ EGL_BAD_ACCESS error is generated."
+
+ Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
+ p. 53 (describing eglCopyBuffers):
+
+ "If attribute EGL_PROTECTED_CONTENT_EXT of surface has value of EGL_TRUE, then
+ an EGL_BAD_ACCESS error is returned."
+
+
+Additions to EGL_KHR_image_base extension specification
+
+ Add to section 2.5.1 Table bbb:
+
+ +-----------------------------+-------------------------+---------------+
+ | Attribute | Description | Default Value |
+ +-----------------------------+-------------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | EGL_FALSE |
+ | | pixel data | |
+ | EGL_PROTECTED_CONTENT_EXT | Content protection | EGL_FALSE |
+ | | state | |
+ +-----------------------------+-------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ Add the following paragraph to section 2.5.1 before "Errors" (describing
+ eglCreateImageKHR):
+
+ "If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE, then
+ image content is only accessible by secure devices in the system. A
+ complete definition of secure device is implementation-specific, but at
+ minimum a secure device must not expose the contents of a protected image
+ to non-secure devices or allow contents to be copied to non-protected
+ regions of memory. If an EGL client API cannot make such guarantees,
+ attempts to create an EGLImage sibling within that client API will fail
+ with an API-specific error.
+
+ If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the
+ surface content can be accessed by secure or non-secure devices and can be
+ copied to any other surfaces."
+
+Issues
+
+ 1. Should the spec define the behavior of secure and non-secure access?
+
+ PROPOSED: No. Different CPU and GPU architectures have different secure access
+ implementations. The behavior of secure access violation is also different. Some
+ architectures will take a CPU exeception. On other architectures, reads will get
+ zeroes and writes will have no effect. This includes DMA transactions. So it is
+ better to leave the defination of illegal operation behavior out of this
+ specification.
+
+ 2. Should the spec enumerate the legal and illegal operations in client APIs
+ such as OpenGL ES?
+
+ PROPOSED: No. Enumerating these is possible, but is likely to get out of date
+ as new extensions and client API versions are introduced. Better to state the
+ principles that determine whether an operation is legal or illegal. If a version
+ of this extension is promoted to KHR or core status, enumerating the legal
+ operations because there will be a greater expectation that future extensions
+ will consider interactions. For OpenGL ES 3.0, a non-normative list of examples
+ would be:
+ * glReadPixels is illegal when the READ framebuffer is protected,
+ * glCopyTexImage2D is illegal when the READ framebuffer is protected,
+ * glCopyTexSubImage2D is illegal when the READ framebuffer is protected, unless
+ the target texture is a protected pbuffer,
+ * glBlitFramebuffer is illegal if the READ framebuffer is protected and the
+ DRAW framebuffer is not protected.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- -------------------------------------------------
+ 7 01/20/14 Jesse Reword PROTECTED_CONTENT descriptions to be more specific
+ about legality of client API operations. Add issue #2.
+ 6 01/14/14 Yanjun Change the extension from vendor specific to EXT. Add
+ EGL_BAD_ACCESS error to eglMakeCurrent, eglCopyBuffers.
+ 5 01/13/14 Jesse Define illegal operation behavior more broadly.
+ 4 01/10/14 Pontus Update description of illegal operation behavior in
+ terms of secure memory region and secure access.
+ 3 01/03/14 Yanjun Define the GPU and CPU behavior for illegal operations.
+ 2 12/13/13 Yanjun Prohibit GPU illegal copy from the protected surface to
+ non-protected surface.
+ 1 12/11/13 Yanjun Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
new file mode 100644
index 0000000..61f3b0e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
@@ -0,0 +1,248 @@
+Name
+
+ EXT_stream_consumer_egloutput
+
+Name Strings
+
+ EGL_EXT_stream_consumer_egloutput
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 7 - December 28th, 2015
+
+Number
+
+ EGL Extension #81
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream.
+ Requires EGL_EXT_output_base.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension describes how to bind EGLOutputLayerEXTs as stream
+ consumers to send rendering directly to a display device without an
+ intervening window system.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglStreamConsumerOutputEXT(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLOutputLayerEXT layer);
+
+New Tokens
+
+ None
+
+Replace section "3.10.2.1 No way to connect consumer to EGLStream" in
+the EGL_KHR_stream extension with:
+
+ 3.10.2.1 EGLOutputLayerEXT consumer
+
+ Call
+
+ EGLBoolean eglStreamConsumerOutputEXT(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLOutputLayerEXT layer);
+
+ to connect <output> as the consumer of <stream>.
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_OUTPUT_LAYER_EXT is generated if <layer> is not a
+ valid EGLOutputLayerEXT created for <dpy>.
+
+ On success, <layer> is bound to <stream>, <stream> is placed in the
+ EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE is returned.
+ Initially, no changes occur to the image displayed on <layer>. When
+ the <stream> enters state EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR,
+ <layer> will begin displaying frames, without further action
+ required on the application's part, as they become available, taking
+ into account any timestamps, swap intervals, or other limitations
+ imposed by the stream or producer attributes.
+
+ Modifying the output layer's display mode is outside the scope of
+ EGL. If the producer does not automatically adjust it's dimensions
+ to match the consumer, then the caller is responsible for ensuring
+ that the producer's frame size and the display mode are compatible
+ before the first frame is placed in the stream. If these are not
+ compatible, the behavior is implementation dependent, but may not
+ hang or terminate. Among other possible behaviors, the
+ implementation may scale or letterbox the frames, post a blank image
+ to the display, or discard the frames without posting.
+
+ Many display mode setting APIs have a mechanism that restricts
+ which of their clients can modify output attributes. Since
+ EGLOutput stream consumers will need to modify output attributes,
+ they require access to a display mode setting API handle with the
+ appropriate capabilities. If the application fails to provide
+ access to such permissions or privileged native objects when creating
+ the EGLDisplay associated with an output stream consumer and EGL is
+ not able to acquire them, the behavior of the stream consumer will be
+ undefined. Similarly, if the application or operating system revokes
+ the output modification permissions provided to the EGLDisplay, or
+ revokes permissions from the privileged native objects provided to
+ the EGLDisplay, future behavior of the stream consumer is undefined.
+
+ If <layer> is rebound to a different stream by a subsequent call
+ to eglStreamConumerOutputEXT, then <stream> will be placed into the
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+Issues
+
+ 1. What happens to the display if the stream is destroyed while
+ still connected?
+
+ RESOLVED: The EGLOutputLayer will maintain a reference to the
+ last frame consumed from the stream until a new frame is
+ received (through connection of a new stream or some interface
+ defined by another extension) or until the EGLOutputLayer is
+ destroyed. Until one of these occurs, the output will ensure
+ that memory containing the frame remains valid, but will do no
+ further reprogramming of the display layer state. In the event
+ the EGLOutputLayer is destroyed, the reference to the frame is
+ released, and random/invalid images may subsequently be
+ displayed if the application does not take separate action to
+ reprogram or disable the display. This behavior should
+ probably be defined in the EGL_EXT_output_base extension and
+ be shared regardless of the means by which the displayed image
+ was posted.
+
+ 2. What happens to the stream if the display output is flipped to a
+ different image by a mechanism outside EGL?
+
+ RESOLVED: Using native display APIs to directly change the
+ visible framebuffer while an EGLStream is bound to an
+ EGLOutputLayer has undefined results which depend on the
+ implementation, the display capabilities, and the
+ compatibility of the competing framebuffer sizes and formats.
+ A partial list of possible outcomes includes one interface
+ overriding the other, the visible image alternating between
+ the two frames, or the visible image becoming corrupted or
+ displaying random memory.
+
+ 3. What happens if the display mode settings are not compatible
+ with the size and/or format of the incoming frames?
+
+ RESOLVED: The behavior is implementation and device dependent.
+ The display may not terminate or hang, but otherwise may modify
+ or ignore the incoming frames. Additional extensions can be
+ defined if greater control of this behavior is desired.
+
+ 4. How can changes to the display mode settings be synchronized
+ with changes in the size/format of frames generated by the
+ producer?
+
+ RESOLVED: The base specification will assume that the
+ producer's frame size and the output layer's display mode are
+ established at initialization time and do not change for the
+ life of the stream. The ability to modify these states and
+ synchronize such modifications must be provided by additional
+ extensions.
+
+ 5. The EGL_KHR_stream_producer_eglsurface extension, which is
+ likely to be used as a producer for streams directed to outputs,
+ explicitly ignores eglSwapInterval. But a swap interval is
+ desirable when directing output to a display screen. How can
+ this functionality be provided?
+
+ RESOLVED: EGL_SWAP_INTERVAL_EXT added as an attribute to output
+ layers in the EGL_EXT_output_base specification.
+
+ 6. How does EGL acquire the necessary capabilities to modify
+ display attributes from the application?
+
+ RESOLVED: The application provides EGL with the necessary
+ permissions or native object handles when creating its EGLDisplay.
+
+ 7. What is the behavior of EGLOutput stream consumers when EGL does
+ not have the necessary permissions to modify output attributes?
+
+ RESOLVED: The behavior is undefined. Other options would be to
+ block consumption of frames indefinitely until permissions are
+ acquired via unspecified or native mechanisms, or to return
+ frames to the producer immediately when consumption fails due to
+ lack of permissions. However, both of these options may rely on
+ assumptions about the behavior of the underlying mode setting
+ APIs. Future extensions may refined the behavior of streams in
+ this case.
+
+Revision History:
+
+ #7 (December 28th, 2015) James Jones
+ - Added issues 6 and 7.
+ - Added language to document the resolution of issues 6 and 7.
+
+ #6 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Marked remaining unresolved issues resolved.
+ - Added an "Extension Type" section.
+ - Listed Daniel as the contact.
+
+ #5 (June 5th, 2014) Daniel Kartch
+ - Added resolution for issues 3 and 4 and updated description
+ accordingly.
+
+ #4 (May 28th, 2014) Daniel Kartch
+ - Added Issue 5 and its resolution.
+
+ #3 (January 17th, 2014) Daniel Kartch
+ - Updated issues section with some proposed solutions and new
+ issues.
+
+ #2 (November 13th, 2013) Daniel Kartch
+ - Replaced EGLOutputEXT with EGLOutputLayerEXT, as per changes
+ to EXT_output_base.
+ - Updated possible error states to reflect requirement that
+ output handles are now associated with a particular
+ EGLDisplay.
+
+ #1 (October 28th, 2013) Daniel Kartch
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
new file mode 100644
index 0000000..50764b5
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_surface_CTA861_3_metadata
+
+Name Strings
+
+ EGL_EXT_surface_CTA861_3_metadata
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+Contributors
+
+ James Jones
+ Weiwan Liu
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - Nov 29, 2016
+
+Number
+
+ EGL Extension #117
+
+Dependencies
+
+ This extension requires EGL 1.5 and EGL_EXT_surface_SMPTE2086_metadata.
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extension adds additional EGL surface attributes for the metadata
+ defined by the CTA (Consumer Technology Association) 861.3 standard.
+ This metadata, in addition to the SMPTE 2086 metadata, is used to define the
+ color volume of the mastering display as well as the content (CTA-861.3),
+ The mastering display is the display where creative work is done and creative
+ intent is established. To preserve such creative intent as much as possible
+ and achieve consistent color reproduction on different viewing displays,
+ it is useful for the display pipeline to know the color volume of the
+ original mastering display where content is created or tuned. This avoids
+ performing unnecessary mapping of colors that are not displayable on the
+ original mastering display.
+
+ This extension adds the ability to pass the CTA-861.3 metadata via EGL,
+ from which the color volume can be derived. While the general purpose of the
+ metadata is to assist in the transformation between different color volumes
+ of different displays and help achieve better color reproduction, it is not
+ in the scope of this extension to define how exactly the metadata should be
+ used in such a process. It is up to the implementation to determine how to
+ make use of the metadata.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute by eglSurfaceAttrib and eglQuerySurface:
+
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+
+Additions to Chapter "3.5.6 Surface Attributes" of the EGL 1.5 Specification
+
+ Add the following paragraph before the "Errors" section on page 43,
+
+ If attribute is EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT or EGL_CTA861_3_-
+ MAX_FRAME_AVERAGE_LEVEL_EXT, then value indicates the corresponding
+ maximum content light level and maximum frame average level.
+ The unit of value is 1 nit (candela per square meter). The
+ floating-point luminance values should be multiplied by
+ EGL_METADATA_SCALING, a constant scaling factor of 50000, before being
+ passed into eglSurfaceAttrib as integers.
+
+ Exactly how the color volume information is used to assist the color
+ reproduction process is implementation dependant.
+
+ The initial values of EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT and
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT are EGL_DONT_CARE, which causes the
+ hints to be ignored. If value is not in the implementation's supported
+ range for attribute, a EGL_INVALID_VALUE error is generated, and some or
+ all of the metadata fields are ignored.
+
+ Change the original footnote 12 at the end of section "3.5.6 Surface
+ Attributes" on page 45 to,
+
+ [13] EGL_DISPLAY_SCALING (10000) and EGL_METADATA_SCALING_EXT (50000)
+ are used where EGL needs to take or return floating-point attribute
+ values, which would normally be smaller than 1, as integers while still
+ retaining sufficient precision to be meaningful.
+
+ Addition to Table 3.5 "Queryable surface attributes and types",
+
+ Attribute Type
+ ------------------------------------------------
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT integer
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT integer
+
+ Description
+ --------------------------------------------------------------------------------------
+ Maximum content light level in nit multiplied by EGL_METADATA_SCALING_EXT
+ Maximum frame average light level in nit multiplied by EGL_METADATA_SCALING_EXT
+
+ Add the following paragraph at the end of section "3.5.6 Surface Attributes"
+ on page 45,
+
+ Querying EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT EGL_CTA861_3_MAX_-
+ FRAME_AVERAGE_LEVEL_EXT returns respectively the maximum content light level
+ and maximum frame average level respectively. The values returned are
+ in units of 1 nit (candela per square meter), multiplied by the constant
+ value EGL_METADATA_SCALING_EXT (50000). The value of EGL_CTA861_3_MAX_-
+ CONTENT_LIGHT_LEVEL_EXT and EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT can
+ be set via eglSurfaceAttrib as described above.
+
+Errors
+
+ Described in the body text above.
+
+Issues
+
+Revision History
+
+ Version 1, 2017/02/28
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
new file mode 100644
index 0000000..2fa0b2e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
@@ -0,0 +1,247 @@
+Name
+
+ EXT_surface_SMPTE2086_metadata
+
+Name Strings
+
+ EGL_EXT_surface_SMPTE2086_metadata
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+Contributors
+
+ Tom Cooksey
+ Courtney Goeltzenleuchter
+ Mathias Heyer
+ Lauri Hyvarinen
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Sandeep Shinde
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 8 - Oct 16, 2017
+
+Number
+
+ EGL Extension #109
+
+Dependencies
+
+ This extension requires EGL 1.4.
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extension adds a new set of EGL surface attributes for the metadata
+ defined by the SMPTE (the Society of Motion Picture and Television
+ Engineers) ST 2086 standard. The SMPTE 2086 metadata includes the color
+ primaries, white point and luminance range of the mastering display, which
+ all together define the color volume that contains all the possible colors
+ the mastering display can produce. The mastering display is the display
+ where creative work is done and creative intent is established. To preserve
+ such creative intent as much as possible and achieve consistent color
+ reproduction on different viewing displays, it is useful for the display
+ pipeline to know the color volume of the original mastering display where
+ content is created or tuned. This avoids performing unnecessary mapping of
+ colors that are not displayable on the original mastering display.
+
+ This extension adds the ability to pass the SMPTE 2086 metadata via EGL,
+ from which the color volume can be derived. While the general purpose of the
+ metadata is to assist in the transformation between different color volumes
+ of different displays and help achieve better color reproduction, it is not
+ in the scope of this extension to define how exactly the metadata should be
+ used in such a process. It is up to the implementation to determine how to
+ make use of the metadata.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute by eglSurfaceAttrib and eglQuerySurface:
+
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+ EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+
+Additions to Chapter "3.5.6 Surface Attributes" of the EGL 1.5 Specification
+
+ Add the following paragraph before the "Errors" section on page 43,
+
+ If attribute is EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_SMPTE2086_-
+ DISPLAY_PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT
+ or EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, then value indicates the
+ corresponding xy chromaticity coordinate[12] of the mastering display's
+ red, green or blue color primary, as configured for the mastering
+ process. The floating-point display primary coordinates should be
+ multiplied by EGL_METADATA_SCALING_EXT (50000)[13], before being passed
+ into eglSurfaceAttrib as integers.
+
+ If attribute is EGL_SMPTE2086_WHITE_POINT_X_EXT or EGL_SMPTE2086_WHITE_-
+ POINT_Y_EXT, then value indicates the corresponding xy chromaticity
+ coordinate[12] of the mastering display's white point, as configured for
+ the mastering process. The floating-point white point chromaticity
+ coordinates should be multiplied by EGL_METADATA_SCALING_EXT (50000),
+ before being passed into eglSurfaceAttrib as integers.
+
+ If attribute is EGL_SMPTE2086_MAX_LUMINANCE_EXT or EGL_SMPTE2086_MIN_-
+ LUMINANCE_EXT, then value indicates the maximum or minimum display
+ luminance of the mastering display, as configured for the mastering
+ process. The unit of value is 1 nit (candela per square meter). The
+ floating-point luminance values should be multiplied by
+ EGL_METADATA_SCALING_EXT, a constant scaling factor of 50000, before
+ being passed into eglSurfaceAttrib as integers.
+
+ By defining the mastering display's color volume through color
+ primaries, white point, and luminance range, applications give EGL
+ and the underlying display pipeline hints as to how to reproduce colors
+ more closely to the original content when created on the mastering
+ display. Exactly how the color volume information is used to assist the
+ color reproduction process is implementation dependant.
+
+ The initial values of EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT,
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_-
+ EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, EGL_SMPTE2086_WHITE_POINT_X_-
+ EXT, EGL_SMPTE2086_WHITE_POINT_Y_EXT, EGL_SMPTE2086_MAX_LUMINANCE_EXT
+ and EGL_SMPTE2086_MIN_LUMINANCE_EXT are EGL_DONT_CARE, which causes the
+ hints to be ignored. If value is not in the implementation's supported
+ range for attribute, a EGL_BAD_PARAMETER error is generated, and some or
+ all of the metadata fields are ignored.
+
+ Add the following footnote at the end of page 43, and increment all the
+ subsequent footnote numbers in Chapter 3,
+
+ [12] Chromaticity coordinates x and y are as specified in CIE
+ 15:2004 "Calculation of chromaticity coordinates" (Section 7.3) and are
+ limited to between 0 and 1 for real colors for the mastering display.
+
+ Change the original footnote 12 at the end of section "3.5.6 Surface
+ Attributes" on page 45 to,
+
+ [13] EGL_DISPLAY_SCALING (10000) and EGL_METADATA_SCALING_EXT (50000)
+ are used where EGL needs to take or return floating-point attribute
+ values, which would normally be smaller than 1, as integers while still
+ retaining sufficient precision to be meaningful.
+
+ Addition to Table 3.5 "Queryable surface attributes and types",
+
+ Attribute Type
+ ------------------------------------------------
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT integer
+ EGL_SMPTE2086_WHITE_POINT_X_EXT integer
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT integer
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT integer
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT integer
+
+ Description
+ ------------------------------------------------------------------------------------------
+ x chromaticity coordinate for red display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for red display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for green display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for green display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for blue display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for blue display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for white point multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for white point multiplied by EGL_METADATA_SCALING_EXT
+ Maximum luminance in nit multiplied by EGL_METADATA_SCALING_EXT
+ Minimum luminance in nit multiplied by EGL_METADATA_SCALING_EXT
+
+ Add the following paragraph at the end of section "3.5.6 Surface Attributes"
+ on page 45,
+
+ Querying EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_SMPTE2086_DISPLAY_-
+ PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, EGL_SMPTE2086_-
+ DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT or EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_BY_EXT returns respectively the xy
+ chromaticity coordinate of the mastering display's red, green or blue
+ color primary, multiplied by the constant value EGL_METADATA_SCALING_EXT
+ (50000). The display primary coordinates can be set via eglSurfaceAttrib
+ as described above.
+
+ Querying EGL_SMPTE2086_WHITE_POINT_X_EXT, or EGL_SMPTE2086_WHITE_POINT_-
+ Y_EXT returns respectively the xy chromaticity coordinate of the
+ mastering display's white point, multiplied by the constant value EGL_-
+ METADATA_SCALING (50000). The white point coordinates can be set via
+ eglSurfaceAttrib as described above.
+
+ Querying EGL_SMPTE2086_MAX_LUMINANCE_EXT or EGL_SMPTE2086_MIN_-
+ LUMINANCE_EXT returns respectively the maximum and minimum display
+ luminance of the mastering display. The values returned are in units of
+ 1 nit (candela per square meter), multiplied by the constant value EGL_-
+ METADATA_SCALING (50000). The value of EGL_SMPTE2086_MAX_LUMINANCE_EXT
+ and EGL_SMPTE2086_MIN_LUMINANCE_EXT can be set via eglSurfaceAttrib as
+ described above.
+
+Errors
+
+ Described in the body text above.
+
+Issues
+
+ 1. Should this extension define a valid data range for each metadata field?
+
+ RESOLVED: No. It is not in the scope of this extension to define how the
+ metadata hints should be used in the display pipeline and, as a result,
+ what the valid data ranges are for the metadata fields. It is
+ implementation dependant, but related standards, such as SMPTE ST 2086,
+ can be used as reference. As described in the body, implemetations may
+ generate a EGL_BAD_PARAMTER error to notify applications that the input
+ metadata values are invalid or not supported.
+
+Revision History
+
+ Version 1, 2016/04/22
+ - Initial draft
+
+ Version 2, 2016/05/25
+ - Rename to EXT and introduce a new scaling factor
+
+ Version 3, 2016/10/19
+ - Add an error and revise issue 1
+
+ Version 4, 2016/11/22
+ - Change status to complete
+
+ Version 5, 2016/11/29
+ - Add token assigments
+
+ Version 6, 2017/02/28
+ - Add 'EXT' suffix to 'EGL_METADATA_SCALING'
+
+ Version 7, 2017/10/13
+ - Rename EGL_INVALID_VALUE (which doesn't exist) to EGL_FALSE
+
+ Version 8, 2017/10/16
+ - Fix v7 change to use EGL_BAD_PARAMETER as the error code
+ generated vs. EGL_FALSE which is the expected return value of
+ the function.
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt
new file mode 100644
index 0000000..6610017
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt
@@ -0,0 +1,289 @@
+Name
+
+ EXT_surface_compression
+
+Name Strings
+
+ EGL_EXT_surface_compression
+
+Contributors
+
+ Jan-Harald Fredriksen, Arm
+ Lisa Wu, Arm
+ George Liu, Arm
+ Laurie Hedge, Imagination Technologies
+
+Contact
+
+ Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - November 15, 2021
+
+Number
+
+ EGL Extension #147
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ This extension interacts with EGL_EXT_yuv_surface.
+
+Overview
+
+ Applications may wish to take advantage of framebuffer compression. Some
+ platforms may support framebuffer compression at fixed bitrates. Such
+ compression algorithms generally produce results that are visually lossless,
+ but the results are typically not bit exact when compared to a non-compressed
+ result.
+
+ This extension enables applications to opt-in to fixed-rate compression
+ for EGL window surfaces.
+
+ Compression may not be supported for all framebuffer formats. It can still
+ be requested for all formats and applications can query what level of compression
+ was actually enabled.
+
+New Procedures and Functions
+
+ EGLBoolean eglQuerySupportedCompressionRatesEXT(
+ EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list,
+ EGLint *rates, EGLint rate_size, EGLint *num_rates);
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreatePlatformWindowSurface and eglCreateWindowSurface:
+ EGL_SURFACE_COMPRESSION_EXT 0x34B0
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+
+ Accepted as attribute values for EGL_SURFACE_COMPRESSION_EXT by
+ eglCreatePlatformWindowSurface and eglCreateWindowSurface:
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+
+Modifications to the EGL 1.5 Specification
+
+ Modify section 3.5.1 "Creating On-Screen Rendering Surfaces:
+
+ Add EGL_SURFACE_COMPRESSION_EXT to the list of attributes that can
+ be specified in <attrib_list> for eglCreatePlatformWindowSurface.
+
+ Add the following paragraph:
+
+ EGL_SURFACE_COMPRESSION_EXT specifies the fixed-rate compression that may
+ be enabled for rendering to the window.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT, then fixed-rate
+ compression is disabled.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT,
+ then the implementation may enable compression at a default,
+ implementation-defined, rate.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 1 bit and less than 2 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 2 bits and less than 3 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 3 bits and less than 4 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 4 bits and less than 5 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 5 bits and less than 6 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 6 bits and less than 7 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 7 bits and less than 8 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 8 bits and less than 9 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 9 bits and less than 10 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 10 bits and less than 11 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 11 bits and less than 12 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 12 bits per component.
+
+ For pixel formats with different number of bits per component, the
+ specified fixed-rate compression rate applies to the component with
+ the highest number of bits.
+
+ The default value of EGL_SURFACE_COMPRESSION_EXT is
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT.
+
+ [Only if EGL_EXT_yuv_surface is supported]
+
+ If _config_ describes a surface with multiple planes (the
+ value of the EGL_YUV_NUMBER_OF_PLANES_EXT attribute is larger than one),
+ then the fixed-rate compression rate can be specified independently for
+ the each plane.
+ In this case, EGL_SURFACE_COMPRESSION_EXT specifies the fixed-rate
+ compression that may be enabled for rendering to plane 0,
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT specifies the fixed-rate
+ compression that may be enabled for rendering to plane 1, and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT specifies the fixed-rate compression
+ that may be enabled for rendering to plane 2.
+ The supported values of EGL_SURFACE_COMPRESSION_PLANE1_EXT and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT are the same as for
+ EGL_SURFACE_COMPRESSION_EXT.
+
+ If _config_ has more than one plane and the
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT attribute is not specified,
+ then the value of EGL_SURFACE_COMPRESSION_EXT is used for all planes.
+ If _config_ has more than two planes and the
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT attribute is not specified,
+ then the value of EGL_SURFACE_COMPRESSION_PLANE1_EXT is also used
+ for plane 2.
+
+ The default value of EGL_SURFACE_COMPRESSION_PLANE1_EXT and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT is EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT.
+
+ Modify section 3.5.6 "Surface Attributes"
+
+ Add entries to Table 3.5 "Queryable surface attributes and types":
+
+ EGL_SURFACE_COMPRESSION_EXT enum Fixed-rate compression
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT enum Fixed-rate compression for plane 1
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT enum Fixed-rate compression for plane 2
+
+ Add the following paragraph:
+
+ Querying EGL_SURFACE_COMPRESSION_EXT returns the actual fixed-rate
+ compression applied to a surface. For YUV surfaces, the value applied to
+ the luma plane is returned. This value may be different to the one
+ requested when the surface was created.
+ For pbuffer and pixmap surfaces, the contents of <value> are not modified."
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ Querying EGL_SURFACE_COMPRESSION_PLANE1_EXT returns the actual
+ fixed-rate compression applied to plane 1 of a YUV surface.
+ Querying EGL_SURFACE_COMPRESSION_PLANE2_EXT returns the actual
+ fixed-rate compression applied to plane 2 of a YUV surface.
+ These values may be different to the one requested when the surface was created.
+ For pbuffer and pixmap surfaces, the contents of <value> are not modified."
+
+ To get the list of all fixed-rate compression rates that are available on
+ a specified display and EGLConfig, call
+
+ EGLBoolean eglQuerySupportedCompressionRatesEXT(
+ EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list,
+ EGLint *rates, EGLint rate_size, EGLint *num_rates);
+
+ <attrib_list> specifies a list of attributes that will be provided when a surface is created with
+ this combination of display and EGLConfig. The accepted attributes are the same as for
+ eglCreatePlatformWindowSurface.
+ <rates> is a pointer to a buffer containing <rate_size> elements. On success, EGL_TRUE is
+ returned. The number of rates is returned in <num_rates>, and elements 0 through <num_rates>-1 of
+ <rates> are filled in with the available compression rates.
+ No more than <rate_size> compression rates will be returned even if more are available
+ on the specified display and config. However, if eglQuerySupportedCompressionRatesEXT is called with
+ <rates> = NULL, then no rates are returned, but the total number of rates available will be returned
+ in <num_rates>.
+ The possible values returned in <rates> are the attribute values accepted for
+ EGL_SURFACE_COMPRESSION_EXT by eglCreatePlatformWindowSurface and eglCreateWindowSurface, except
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT and EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT.
+
+Errors
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ Add to the error section of eglCreatePlatformWindowSurface:
+
+ If the EGL_SURFACE_COMPRESSION_PLANE1_EXT attribute is specified and
+ _config_ does not describe a surface with at least 2 planes (the
+ EGL_YUV_NUMBER_OF_PLANES_EXT attribute is not greater than or
+ equal to 2), an EGL_BAD_MATCH error is generated.
+
+ If the EGL_SURFACE_COMPRESSION_PLANE2_EXT attribute is specified and
+ _config_ does not describe a surface with at least 3 planes (the
+ EGL_YUV_NUMBER_OF_PLANES_EXT attribute is not greater than or
+ equal to 3), an EGL_BAD_MATCH error is generated.
+
+ Add to the section describing eglQuerySupportedCompressionRatesEXT:
+
+ * On failure, EGL_FALSE is returned.
+ * An EGL_NOT_INITIALIZED error is generated if EGL is not initialized on <dpy>.
+ * An EGL_BAD_PARAMETER error is generated if <num_rates> is NULL.
+
+Issues
+
+ 1. Should fixed-rate compression be supported for pixmap or pbuffer
+ surfaces?
+
+ No, no use-cases have been identified for this.
+
+ 2. What is the result of querying EGL_SURFACE_COMPRESSION_EXT if
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT was requested?
+
+ Resolved.
+ The result will be the specific compression ratio chosen by the
+ implementation, or EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT if
+ no fixed-rate compression was applied.
+
+ 3. Should we expose different compressions rates per plane in this extension?
+
+ Yes.
+
+ 4. How can an application query the set of supported compression rates?
+
+ Resolved. Option B.
+
+ Two options were considered.
+
+ Option A:
+ Reuse eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+
+ This is not ideal because:
+ - the compression modes are currently tied to the surface, not the EGLConfig
+ - we don't want this to affect EGLConfig selection etc.
+ - this query can only return a single value, so you'd need to query each of the
+ 12 bit rates separately.
+
+ Option B:
+ Add a new query, specifically for the compression rates. This addresses the concerns
+ with Option A, and is very similar to the mechanism used for the OpenGL ES API. Main
+ downside is that it adds additional functions to the API.
+
+Revision History
+
+ Version 1, 2021/11/15
+ - Internal revisions
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
new file mode 100644
index 0000000..7a1f7fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
@@ -0,0 +1,343 @@
+Name
+
+ EXT_swap_buffers_with_damage
+
+Name Strings
+
+ EGL_EXT_swap_buffers_with_damage
+
+IP Status
+
+ No known IP claims.
+
+Contributors
+
+ Robert Bragg
+ Tapani Pälli
+ Kristian Høgsberg
+ Benjamin Franzke
+ Ian Stewart
+ James Jones
+
+Contacts
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+Status
+
+ Published
+
+Version
+
+ Version 11, February 20, 2020
+
+Number
+
+ EGL Extension #55
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension provides a means to issue a swap buffers request to
+ display the contents of the current back buffer and also specify a
+ list of damage rectangles that can be passed to a system
+ compositor so it can minimize how much it has to recompose.
+
+ This should be used in situations where an application is only
+ animating a small portion of a surface since it enables the
+ compositor to avoid wasting time recomposing parts of the surface
+ that haven't changed.
+
+New Procedures and Functions
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add the following text to subsection 3.9.1 titled "Posting to a
+ Window" after the description of eglSwapBuffers.
+
+ As an alternative to eglSwapBuffers use:
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+ to do the same thing as eglSwapBuffers but additionally report
+ a list of rectangles that define the region that has truly
+ changed since the last frame. To be clear; the entire contents
+ of the back buffer will still be swapped to the front so
+ applications using this API must still ensure that the entire
+ back buffer is consistent. The rectangles are only a hint for
+ the system compositor so it can avoid recomposing parts of the
+ surface that haven't really changed.
+ <rects> points to a list of integers in groups of four that
+ each describe a rectangle in screen coordinates in this
+ layout: {x, y, width, height}. The rectangles are specified
+ relative to the bottom-left of the surface and the x and y
+ components of each rectangle specify the bottom-left position
+ of that rectangle. <n_rects> determines how many groups of 4
+ integers can be read from <rects>. It is not necessary to
+ avoid overlaps of the specified rectangles.
+ If <n_rects> is 0 then <rects> is ignored and the entire
+ surface is implicitly damaged and the behaviour is equivalent
+ to calling eglSwapBuffers.
+ The error conditions checked for are the same as for the
+ eglSwapBuffers api.
+
+ Modify the first paragraph of Section 3.9.1 titled "Native Window
+ Resizing"
+
+ "If the native window corresponding to <surface> has been
+ resized prior to the swap, <surface> must be resized to match.
+ <surface> will normally be resized by the EGL implementation
+ at the time the native window is resized. If the
+ implementation cannot do this transparently to the client,
+ then eglSwapBuffers and eglSwapBuffersWithDamageEXT must
+ detect the change and resize surface prior to copying its
+ pixels to the native window. In this case the meaningfulness
+ of any damage rectangles forwarded by
+ eglSwapBuffersWithDamageEXT to the native window system is
+ undefined."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the
+ calling thread's current context, eglSwapBuffers,
+ eglSwapBuffersWithDamageEXT, and eglCopyBuffers perform an
+ implicit flush operation on the context (glFlush for OpenGL or
+ OpenGL ES context, vgFlush for an OpenVG context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglSwapBuffersWithDamageEXT, or a native
+ pixmap, for eglCopyBuffers) should have the same number of
+ components and component sizes as the color buffer it's being
+ copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifies the minimum number of video frame periods per color
+ buffer post operation for the window associated with the
+ current context. The interval takes effect when eglSwapBuffers
+ or eglSwapBuffersWithDamageEXT is first called subsequent to
+ the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglSwapBuffersWithDamageEXT, and
+ eglCopyBuffers return EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglSwapBuffersWithDamageEXT are called
+ and the native window associated with <surface> is no longer
+ valid, an EGL_BAD_NATIVE_WINDOW error is generated. If
+ eglSwapBuffersWithDamageEXT is called and <n_rects>, is less
+ than zero or <n_rects> is greater than zero but <rects> is
+ NULL, EGL_BAD_PARAMETER is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+1) Do applications have to make sure the rectangles don't overlap?
+
+ RESOLVED: No, that would be inconvenient for applications and we
+ see no difficulty for implementations to supporting overlapping
+ rectangles.
+
+2) Would it be valid for an implementation to discard the list of
+ rectangles internally and work just in terms of the
+ eglSwapBuffers api?
+
+ RESOLVED: Yes, the rectangles are only there for optimization
+ purposes so although it wouldn't be beneficial to applications if
+ it was convenient at times then it would be compliant for an
+ implementation to discard the rectangles and just call
+ eglSwapBuffers instead. The error conditions that should be
+ checked for are compatible with the requirements for
+ eglSwapBuffers.
+
+3) What origin should be used for damage rectangles?
+
+ RESOLVED: Bottom left since this is consistent with all other
+ uses of 2D window coordinates in EGL and OpenGL that specify a
+ bottom left origin.
+
+ Originally this specification was written with a top-left origin
+ for the damage rectangles even though it was known to be
+ inconsistent and that was because most window systems use a
+ top-left origin and there are some awkward semantic details
+ related to handling native window resizing that we had hoped to
+ simplify.
+
+ This extension and also several other existing EGL extensions
+ struggle to guarantee a reliable behaviour in response to native
+ window resizing which can happen asynchronously on some platforms
+ and this can make it difficult for applications to avoid certain
+ visual artefacts.
+
+ The crux of the problem is that when a native window is
+ asynchronously resized then the window system may maintain the old
+ buffer contents with respect to a different origin than EGL's
+ bottom left origin. For this extension that means that EGL damage
+ rectangles that are intended to map to specific surface contents
+ may end up mapping to different contents when a native window is
+ resized because the rectangles and buffer contents will be moved in
+ different directions in relation to the new window size.
+
+ In the end we decided that this issue isn't simply solved by
+ choosing to use a top-left origin and so we can instead aim for
+ consistency and clarify what guarantees we offer in relation to
+ native window resizing separate from this issue.
+
+4) What guarantees do we provide about the meaningfulness of EGL
+ damage rectangles that are forwarded to the native window system
+ when presenting to a native window that has been resized?
+
+ RESOLVED: The meaningfulness of those forwarded damage rectangles
+ is undefined since this simplifies the implementation requirements
+ and we saw very little benefit to applications from providing
+ stricter guarantees.
+
+ The number of applications that would be able to avoid fully
+ redrawing the contents of a window in response to a window resize
+ is expected to be so low that there would be almost no benefit to
+ defining strict guarantees here.
+
+ Since EGL already states that the contents of window surface
+ buffers become undefined when a native window has been resized,
+ this limitation doesn't introduce any new issue for applications
+ to consider. Applications should already fully redraw buffer
+ contents in response to a native window resize, unless they are
+ following some platform specific documentation that provides
+ additional guarantees.
+
+ For an example of the implementation details that make this an
+ awkward issue to provide guarantees for we can consider X11 based
+ platforms where native windows can be resized asynchronously with
+ respect to a client side EGL surface:
+
+ With X11 there may be multiple "gravity" transformations that can
+ affect how surface buffer content is positioned with respect to a
+ new native window size; there is the core X "bit gravity" and
+ there is the EGL driver gravity that determines how a surface's
+ contents with one size should be mapped to a native window with a
+ different size. Without very careful cooperation between the EGL
+ driver and the core X implementation and without the right
+ architecture to be able to do transforms atomically with respect
+ to different clients that may enact a window resize then it is not
+ possible to reliably map EGL damage rectangles to native window
+ coordinates.
+
+ The disadvantage of a driver that is not able to reliably map EGL
+ damage rectangles to native window coordinates is that a native
+ compositor may re-compose the wrong region of window. This may
+ result in a temporary artefact until the full window gets redrawn
+ and then re-composed. X11 already suffers other similar transient
+ artefacts when resizing windows.
+
+ The authors of this spec believe that even if a driver can't do
+ reliable mappings of EGL damage rectangles then compositors would
+ be able mitigate the majority of related artefacts by ignoring
+ sub-window damage during an interactive window resize.
+
+ The authors of this spec believe that that if an X11 driver did
+ want to reliably map EGL damage rectangles to the native window
+ coordinates then that may be technically feasible depending on the
+ driver architecture. For reference one approach that had been
+ considered (but not tested) is as follows:
+
+ 1) When eglSwapBuffersWithDamageEXT is called, send EGL damage
+ rectangles from the client to a driver component within the
+ xserver un-transformed in EGL window surface coordinates with a
+ bottom-left origin.
+
+ 2) Within the X server the driver component should look at the
+ bit-gravity of a window and use the bit-gravity convention to
+ copy EGL surface content to the front-buffer of a native window.
+
+ 3) Within the X server the driver component should use the same
+ gravity transform that was used to present the surface content
+ to also transform the EGL damage rectangle coordinates.
+
+ Note that because this transform is done in the xserver then
+ this is implicitly synchronized with all clients that would
+ otherwise be able to enact an asynchronous window resize.
+
+
+Revision History
+
+ Version 1, 29/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarify that the rectangles passed may overlap
+ Version 3, 01/09/2011
+ - Fix a missing '*' in prototype to make rects a pointer
+ Version 4, 11,02,2012
+ - Clarify that implementing in terms of eglSwapBuffers would be
+ compliant.
+ Version 5, 11,02,2012
+ - Tweak the cases where we report BAD_PARAMETER errors
+ Version 6, 05/02/2013
+ - Specify more thorough updates across the EGL 1.4 spec
+ wherever it relates to the eglSwapBuffers api
+ - Clarify that passing <n_rects> of 0 behaves as if
+ eglSwapBuffers were called.
+ Version 7, 14/02/2013
+ - Specify that a bottom-left origin should be used for rectangles
+ Version 8, 19/03/2013
+ - Add Ian and James as contributors
+ - Add an issue explaining why we changed to a bottom-left origin
+ - Clarify that the behaviour is undefined when presenting to a
+ native window that has been resized.
+ - Document the awkward details that would be involved in
+ providing more strict guarantees when presenting to a native
+ window that has been resized.
+ Version 9, 12/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 10, 23/10/2014, Jon Leech
+ - Remove copyright after signoff from Intel.
+ Version 11, 20/02/2020, Jon Leech
+ - Constify rects parameter (EGL-Registry issue 98).
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt
new file mode 100644
index 0000000..4c8ebb1
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt
@@ -0,0 +1,376 @@
+Name
+
+ EXT_sync_reuse
+
+Name Strings
+
+ EGL_EXT_sync_reuse
+
+Contributors
+
+ Daniel Kartch
+ Jeff Vigil
+ Ray Smith
+
+Contacts
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, May 16, 2018
+
+Number
+
+ EGL Extension #128
+
+Extension type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.5 or EGL 1.4 with EGL_KHR_fence_sync
+
+ Interacts with EGL_KHR_reusable_sync
+ Interacts with EGL_ANDROID_native_fence_sync
+ Interacts with EGL_NV_cuda_event
+
+ This extension is written against the wording of the EGL 1.5
+ Specification.
+
+Overview
+
+ The original EGLSync extensions separated sync objects into two
+ types: fence sync objects signaled by one time events in an
+ API command pipeline; and reusable sync objects signaled by commands
+ which can be issued again and again. However, this conflates
+ reusability of the event triggering a sync object with the EGLSync
+ object itself.
+
+ Although the event associated with a fence sync object will only
+ occur once, there is no reason that it can't be replaced with a new
+ event. Doing so would avoid unnecessary allocation and free
+ operations in an application that repeatedly waits for events. With
+ the current interfaces, such applications must constantly create and
+ destroy new EGLSync objects.
+
+ This extension allows all sync objects to be reusable. When a sync
+ object is in the signaled state, it can be reset back to an
+ unsignaled state, regenerating or reevaluating the events that
+ trigger them. For fence sync objects, this means generating a new
+ fence in the current API. For OpenCL event sync objects, this means
+ waiting for a new OpenCL event handle. This mechanism also allows
+ sync objects to be created in the signaled state with no associated
+ fence/event, and have one applied later. Thus all EGLSyncs required
+ by an application can be allocated up front, before any rendering
+ operations have begun.
+
+New Types
+
+ None
+
+New Tokens
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglUnsignalSyncEXT(
+ EGLDisplay dpy,
+ EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+Replace text of subsections of 3.8.1 through 3.8.1.2 of EGL 1.5
+Specification. Existing tables are preserved.
+
+ 3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>, and may initially be in either state. EGL may be asked
+ to wait for a sync object to become signaled, or a sync object’s
+ status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and/or
+ unsignaling the sync. All sync objects are reusable. Once they enter
+ the signaled state, they may be changed back to unsignaled, possibly
+ replacing the associated external event that signals them.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below for
+ different types of sync objects. If a sync object is created in the
+ signaled state, its initial attribute list may be incomplete, with
+ attributes necessary for its type provided when it is changed to
+ unsignaled.
+
+ <Fence sync objects> have an associated fence command in a client
+ API. A new fence command is generated whenever the sync object
+ enters the unsignaled state. When the client API executes the fence
+ command, an event is generated which signals the corresponding fence
+ sync object. Fence sync objects may not be explicitly signaled.
+ Fence sync objects may be used to wait for partial completion of a
+ client API command stream, as a more flexible form of glFinish or
+ vgFinish.
+
+ An <OpenCL event sync object> reflects the status of a corresponding
+ OpenCL event object to which the sync object is linked. This
+ provides another method of coordinating sharing of images between
+ EGL and OpenCL (see Chapter 9 of the OpenCL 1.0 Specification and
+ the cl_khr_egl_image extension). Waiting on such a sync object is
+ equivalent to waiting for completion of the linked OpenCL event
+ object.
+
+ The command
+
+ EGLSync eglCreateSync(EGLDisplay dpy, EGLenum type, const
+ EGLAttrib *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib list> is NULL or an attribute-value list specifying other
+ attributes of the sync object, terminated by an attribute entry
+ EGL_NONE. Attributes not specified in the list will be assigned
+ their default values.
+
+ The EGL_SYNC_STATUS attribute is defined for all sync types, but may
+ only be specified explicitly at creation time for some types of sync
+ objects, as discussed below. Other attributes are only allowed as
+ indicated below for the sync type.
+
+ Errors
+
+ eglCreateSync returns EGL_NO_SYNC on failure.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <attrib_list> contains an attribute name not defined or not
+ allowed for the type of sync object being created, an
+ EGL_BAD_ATTRIBUTE error is generated.
+ If <type> is not a supported type of sync object, an
+ EGL_BAD_PARAMETER error is generated.
+ If <type> is EGL_SYNC_FENCE, the EGL_SYNC_STATUS attribute is
+ set to EGL_UNSIGNALED, and any of the following are true of the
+ current context for the bound API (the context returned by
+ eglGetCurrentContext), an EGL_BAD_MATCH error is generated:
+ * There is no current context (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT).
+ * <dpy> does not match the EGLDisplay of the context (the
+ EGLDisplay returned by eglGetCurrentDisplay).
+ * The context does not support fence commands.
+
+ While in the unsignaled state, the synchronization event associated
+ with a sync object cannot be changed. When the <condition> of a sync
+ object in the unsignaled state is satisfied, the sync is signaled,
+ causing any eglClientWaitSync or eglWaitSync commands (see below)
+ blocking on the sync to unblock.
+
+ Once signaled, a sync object may be reused for a new synchronization
+ event by switching it back to unsignaled. The command
+
+ EGLBoolean eglUnsignalSyncEXT(EGLDisplay dpy, EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+ can be used to change the <sync> associated with display <dpy> from
+ the signaled state to the unsignaled state. The attribute list may
+ be used to provide or replace attributes specific to the sync type
+ as discussed below. The sync object's type and condition may not be
+ changed.
+
+ Errors
+
+ eglUnsignalSyncEXT returns EGL_FALSE on failure, and has no
+ effect on <sync>.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <sync> is not a valid sync object associated with <dpy>, an
+ EGL_BAD_PARAMETER error is generated.
+ If <attrib_list> contains an attribute name not defined for the
+ type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
+ If <sync> is already in the unsignaled state, an EGL_BAD_ACCESS
+ error is generated.
+ If <sync>'s type is EGL_SYNC_FENCE and any of the following are
+ true of the current context for the bound API (the context
+ returned by eglGetCurrentContext), an EGL_BAD_MATCH error is
+ generated:
+ * There is no current context (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT).
+ * <dpy> does not match the EGLDisplay of the context (the
+ EGLDisplay returned by eglGetCurrentDisplay).
+ * The context does not support fence commands.
+ If <sync>'s type is EGL_SYNC_CL_EVENT and EGL_CL_EVENT_HANDLE
+ is not specified in <attrib_list>, then an EGL_BAD_ATTRIBUTE
+ error is generated.
+
+ 3.8.1.1 Creating and Signaling Fence Sync Objects
+
+ If type is EGL_SYNC_FENCE, a fence sync object is created. The
+ EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
+ or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
+ attributes may be specified for a fence sync object, either with
+ eglCreateSync or eglUnsignalSyncEXT. Queriable attributes of the
+ fence sync object are set as shown in table 3.7.
+
+ When a fence sync object is created in the unsignaled state, or
+ switched to that state with eglUnsignalSyncEXT, a fence command is
+ inserted into the command stream of the bound client API’s current
+ context (i.e., the context returned by eglGetCurrentContext), and is
+ associated with the sync object.
+
+ The only condition supported for fence sync objects is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE, which is satisfied by completion
+ of the fence command corresponding to the sync object, and all
+ preceding commands in the associated client API context’s command
+ stream. The sync object will not be signaled until all effects from
+ these commands on the client API’s internal and framebuffer state
+ are fully realized. No other state is affected by execution of the
+ fence command.
+
+ Generation of fence commands for fence sync objects requires support
+ from the bound client API, and will not succeed unless the client
+ API satisfies one of the following properties. Note that eglWaitSync
+ (see section 3.8.1.3) also requires satisfying these conditions.
+ * client API is OpenGL, and either the OpenGL version is 3.2 or
+ greater, or the GL_ARB_sync extension is supported.
+ * client API is OpenGL ES, and either the OpenGL ES version is 3.0
+ or greater, or the GL_OES_EGL_sync extension is supported.
+ * client API is OpenVG, and the VG_KHR_EGL_sync extension is
+ supported.
+
+ 3.8.1.2 Creating and Signaling OpenCL Event Sync Objects
+
+ If type is EGL_SYNC_CL_EVENT, an OpenCL event sync object is
+ created. The EGL_SYNC_STATUS attribute may not be explicitly
+ specified during creation of this type of sync object. If no
+ EGL_CL_EVENT_HANDLE attribute is specified at creation time, the
+ sync object will be created in the signaled state. Otherwise its
+ status will be determined by the provided OpenCL event, as described
+ below. An EGL_CL_EVENT_HANDLE must always be specified for
+ eglUnsignalSyncEXT.
+
+ To use an OpenCL event sync object, the EGL_SYNC_CL_EVENT attribute
+ must be set to a valid OpenCL <event> handle returned by a call to
+ clEnqueueReleaseGLObjects or clEnqueueReleaseEGLObjects; other types
+ of OpenCL event handles are not supported. Implementations are not
+ required to validate the OpenCL event, and passing an invalid event
+ handle in <attrib_list> may result in undefined behavior up to and
+ including program termination. Note that EGL_CL_EVENT_HANDLE is not
+ a queriable property of a sync object. Queriable attributes of the
+ OpenCL event sync object are set as shown in table 3.8.
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED. When the status of
+ <event> changes to CL_COMPLETE, the status of the linked sync object
+ will become EGL_SIGNALED.
+
+ The only condition supported for OpenCL event sync objects is
+ EGL_SYNC_CL_EVENT_COMPLETE, which is satisfied when the status of
+ the OpenCL event associated with the sync object changes to
+ CL_COMPLETE.
+
+ Associating an OpenCL event handle with a sync object places a
+ reference on the linked OpenCL object. When the sync object is
+ deleted or the event handle is replaced, the reference will be
+ removed from the OpenCL object.
+
+If EGL_KHR_reusable_sync is present, then for sync objects of type
+EGL_SYNC_REUSABLE_KHR, the initial value of EGL_SYNC_STATUS may be
+set to either EGL_UNSIGNALED or EGL_SIGNALED, and will default to
+EGL_UNSIGNALED.
+
+If EGL_ANDROID_native_fence_sync is present, then for native fence sync
+objects, the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute may be specified
+in eglUnsignalSyncEXT as well as eglCreateSync. If it is set to anything
+other than EGL_NO_NATIVE_FENCE_FD_ANDROID at creation time, then its
+initial EGL_SYNC_STATUS will reflect the current status of the provided
+fence FD, and it is an error to specifically set the status. If it is
+set to EGL_NO_NATIVE_FENCE_FD_ANDROID, then its EGL_SYNC_STATUS may be
+set to either EGL_UNSIGNALED (the default) or EGL_SIGNALED. If the
+status is signaled, then no native fence will be generated until after
+it is switched to unsignaled. If eglUnsignalSyncEXT is called for a
+native fence sync object with an FD of EGL_NO_NATIVE_FENCE_FD_ANDROID,
+then a new native fence will be generated at the next Flush(), as
+described for eglCreateSync.
+
+If EGL_NV_cuda_event is present, then for CUDA event sync objects, the
+EGL_CUDA_EVENT_HANDLE_NV may be specified in eglUnsignalSyncEXT as well
+as eglCreateSync. The current CUDA event handle is evaluated at the time
+the EGL sync object becomes unsignaled, and subsequent modification of
+the CUDA object with cudaEventRecord has no effect on the sync object
+until it is signaled. Subsequently restoring the sync object to
+unsignaled will cause the CUDA object to be reevaluated.
+
+Issues
+
+ 1. Should a new attribute be required to specify a sync object as
+ reusable?
+
+ RESOLVED: No. The presence of this extension is sufficient to
+ indicate reusability of all sync objects. This will not create
+ any incompatibilities with existing applications that use sync
+ objects only once.
+
+ 2. Can we leverage the existing eglSignalSyncKHR function from
+ EGL_KHR_reusable_sync for this extension?
+
+ RESOLVED: No. Some types of sync objects require attributes
+ which are themselves single-use objects, and must be replaced
+ for the sync object to be reused. Therefore a new function which
+ takes an attribute list is required.
+
+ 3. Should the function for unsignaling be based on eglSignalSyncKHR
+ from the KHR_reusable_sync extension, and take a mode parameter
+ to distinguish signaling/unsignaling?
+
+ RESOLVED: No. While all sync objects will support unsignaling,
+ the reusable sync object is the only known one that supports
+ direct signaling, rather than signaling through some condition
+ being achieved. Therefore it is simplest to have the new
+ function only support unsignaling, and continue to use the old
+ extension for the one case where signaling is required.
+
+ 4. If the initial attribute list is incomplete (e.g. an OpenCL
+ event handle is not provided during creation of an OpenCL event
+ sync object), should the EGL_SYNC_STATUS default to EGL_SIGNALED
+ rather than generating an error if it is left unspecified?
+
+ RESOLVED: Handling of allowed/default values for EGL_SYNC_STATUS
+ is based on the sync type. For fence syncs, either value is
+ allowed, defaulting to EGL_UNSIGNALED. For OpenCL event syncs,
+ the value may not be specified, and instead is determined by
+ whether an OpenCL event is provided at creation time, and if so
+ by the status of that event.
+
+Revision History
+
+ #4 (May 16, 2018) Daniel Kartch
+ - Minor corrections to wording
+
+ #3 (April 20, 2018) Daniel Kartch
+ - Renamed to EXT
+ - Fixed grammatical errors and prepared for publication
+
+ #2 (January 23, 2018) Daniel Kartch
+ - Rewrote some sections for clarity, and fixed typos
+ - Changed default/allowed behavior for signal state at creation
+ time to be determined by the sync type and other attributes.
+ - Simplified interaction with EGL_KHR_reusable_sync.
+ - Refined interaction with EGL_ANDROID_native_fence_sync to
+ clarify allowed initial states for the sync status and fix the
+ description of when new native fences are generated.
+
+ #1 (January 16, 2018) Daniel Kartch
+ - Initial draft as XXX
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt
new file mode 100644
index 0000000..15b854e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt
@@ -0,0 +1,393 @@
+Name
+
+ EXT_yuv_surface
+
+Name Strings
+
+ EGL_EXT_yuv_surface
+
+Contributors
+
+ Matt Trusten
+ Jeff Vigil
+ Arshad Bebal
+ Mohan Maiya
+ Amit Bansal
+ Tom Longo
+ Eric Engestrom
+
+Contacts
+
+ Jeff Vigil, Qualcomm (jvigil 'at' qualcomm.com)
+
+Notice
+
+ Copyright (c) 2014 Qualcomm Technologies, Inc. All Rights Reserved.
+ Qualcomm Technologies Proprietary and Confidential
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, May 4th, 2017
+
+Number
+
+ EGL Extension #86
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension defines a set of new EGL configuration attributes and values
+ which allows EGL to create and use YUV surfaces.
+
+ YUV formats can be described using a few simple parameters, and every format
+ can be given with these six parameters. These parameters include the color
+ order, the number of planes, subsample, plane depth, color conversion and
+ depth range.
+
+ This extension describes how EGL will handle YUV surfaces, but requires that
+ the client API describe how to fill such a surface. An example of such an
+ extension would be GL_EXT_yuv_target.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ A new set of EGLConfig attributes are available:
+ EGL_YUV_ORDER_EXT 0x3301
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_SUBSAMPLE_EXT 0x3312
+ EGL_YUV_DEPTH_RANGE_EXT 0x3317
+ EGL_YUV_CSC_STANDARD_EXT 0x330A
+ EGL_YUV_PLANE_BPP_EXT 0x331A
+
+ Accepted as a new value for the EGL_COLOR_BUFFER_TYPE attribute:
+ EGL_YUV_BUFFER_EXT 0x3300
+
+ Accepted values for the EGL_YUV_ORDER_EXT attribute:
+ EGL_YUV_ORDER_YUV_EXT 0x3302
+ EGL_YUV_ORDER_YVU_EXT 0x3303
+ EGL_YUV_ORDER_YUYV_EXT 0x3304
+ EGL_YUV_ORDER_UYVY_EXT 0x3305
+ EGL_YUV_ORDER_YVYU_EXT 0x3306
+ EGL_YUV_ORDER_VYUY_EXT 0x3307
+ EGL_YUV_ORDER_AYUV_EXT 0x3308
+
+ Accepted values for the EGL_YUV_SUBSAMPLE_EXT attribute:
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+
+ Accepted values for the EGL_YUV_DEPTH_RANGE_EXT attribute:
+ EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+ EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+
+ Accepted values for the EGL_YUV_CSC_STANDARD_EXT attribute:
+ EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+ EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+ EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+
+ Accepted values for the EGL_YUV_PLANE_BPP_EXT attribute:
+ EGL_YUV_PLANE_BPP_0_EXT 0x331B
+ EGL_YUV_PLANE_BPP_8_EXT 0x331C
+ EGL_YUV_PLANE_BPP_10_EXT 0x331D
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+Change the options of paragraph 6 from section 2.2: Rendering Contexts and
+Drawing Surfaces
+
+ A context can be used with any EGLSurface that it is compatible with
+ (subject to the restrictions discussed in the section on address space). A
+ surface and context are compatible if
+ * They support the same type of color buffer (RGB or luminance)
+
+To the following:
+
+ A context can be used with any EGLSurface that it is compatible with
+ (subject to the restrictions discussed in the section on address space). A
+ surface and context are compatible if
+ * They support the same type of color buffer (RGB, YUV, or luminance)
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+Change the section marked from Buffer Descriptions and Attributes in Section 3.4
+to:
+
+ The Color Buffer
+
+ The color buffer contains pixel color values, and is shared by all
+ client APIs rendering to a surface.
+ EGL_COLOR_BUFFER_TYPE indicates the color buffer type, and must be
+ either EGL_RGB_BUFFER for an RGB color buffer, EGL_LUMINANCE_BUFFER for a
+ luminance color buffer, or EGL_YUV_BUFFER_EXT for a YUV color buffer. For
+ an RGB buffer, EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE must be non-zero,
+ and EGL_LUMINANCE_SIZE must be zero. For a luminance buffer, EGL_RED_SIZE,
+ EGL_GREEN_SIZE, EGL_BLUE_SIZE must be zero, and EGL_LUMINANCE_SIZE must be
+ non-zero. For both RGB and luminance color buffers, EGL_ALPHA_SIZE may be
+ zero or non-zero (the latter indicates the existence of a destination alpha
+ buffer). For a YUV buffer, all of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_-
+ SIZE, EGL_LUMINANCE_SIZE, and EGL_ALPHA_SIZE must be zero. Instead, the
+ depth in bits per pixel for YUV is described using EGL_YUV_PLANE_BPP_EXT,
+ which describes the size of a single pixel in the Y plane, and the other
+ plane depths are derived from this.
+ EGL_YUV_ORDER_EXT is used to describe the plane order.
+ EGL_YUV_NUMBER_OF_PLANES_EXT describes the number of planes that will
+ be used for this surface. The allowed values for EGL_YUV_NUMBER_OF_PLANES_-
+ EXT must be greater than zero and not more than three.
+ EGL_YUV_SUBSAMPLE_EXT allows the user to decide how the surface will be
+ subsampled.
+
+ Valid combinations are:
+
+ EGL_YUV_SUBSAMPLE_EXT EGL_YUV_NUMBER_OF_PLANES_EXT EGL_YUV_ORDER_EXT EGL_YUV_PLANE_BPP_EXT
+ ------------------------- ----------------------------- ------------------ ------------------------
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 2 or 3 EGL_YUV_ORDER_YUV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVU_EXT EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 1 EGL_YUV_ORDER_YUYV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVYU_EXT or EGL_YUV_PLANE_BPP_10_EXT
+ EGL_YUV_ORDER_UYVY_EXT or
+ EGL_YUV_ORDER_VYUY_EXT
+
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 2 or 3 EGL_YUV_ORDER_YUV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVU_EXT EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 1 EGL_YUV_ORDER_AYUV_EXT EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_PLANE_BPP_10_EXT
+
+ Usage examples:
+
+ Format Combination
+ ------------------ --------------------------------------------------------------
+ NV12 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + UV EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ NV21 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + VU EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YVU_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YV12 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 3
+ - 3 Planes : Y + V + U EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YVU_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YUY2 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_2_EXT
+ - YUV422 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : Y + U + Y + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUYV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ AYUV EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_4_4_EXT
+ - YUV444 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : A + Y + U + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_AYUV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YUV420 Semi-Planar 10 Bit EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + UV EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUV_EXT
+ - 10 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_10_EXT
+
+ YUV422 Interleaved 10 Bit EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_2_EXT
+ - YUV422 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : Y + U + Y + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUYV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_PLANE_BPP_EXT describes the bit depth for the different
+ planes of a YUV surface. The available options are EGL_YUV_PLANE_BPP_0_-
+ EXT, EGL_YUV_PLANE_BPP_8_EXT and EGL_YUV_PLANE_BPP_10_EXT. If EGL_YUV_-
+ PLANE_BPP_0_EXT is specified, no color buffer will be created for the
+ surface.
+ EGL_YUV_DEPTH_RANGE_EXT describes the range of the pixel value and is
+ dependent on the EGL_YUV_PLANE_BPP_EXT setting:
+
+ EGL_YUV_PLANE_BPP_EXT EGL_YUV_DEPTH_RANGE_LIMITED_EXT EGL_YUV_DEPTH_RANGE_FULL_EXT
+ (Inclusive) (Inclusive)
+ ------------------------- -------------------------------- -----------------------------
+ EGL_YUV_PLANE_BPP_8_EXT or Y: 16 to 235, UV: 16 to 240 Y: 0 to 255, UV: 0 to 255
+ EGL_YUV_PLANE_BPP_10_EXT Y: 64 to 940, UV: 64 to 960 Y: 0 to 1023, UV: 0 to 1023
+
+ If OpenGL or OpenGL ES rendering is supported for a luminance color
+ buffer (as described by the value of the EGL_RENDERABLE_TYPE attribute,
+ described below), it is treated as RGB rendering with the value of
+ GL_RED_BITS equal to EGL_LUMINANCE_SIZE and the values of GL_GREEN_BITS and
+ GL_BLUE_BITS equal to zero. The red component of fragments is written to the
+ luminance channel of the color buffer, the green and blue components are
+ discarded, and the alpha component is written to the alpha channel of the
+ color buffer (if present).
+ When rendering to the YUV surface, if EGL_YUV_ORDER_EXT is not EGL_-
+ YUV_ORDER_AYUV_EXT, the alpha channel will always be fully opaque.
+ Otherwise it is defined by the value provided to the alpha sample.
+ EGL_BUFFER_SIZE gives the total of the color component bits of the color
+ buffer for EGL_RGB_BUFFER or for EGL_LUMINANCE_BUFFER. For an RGB color
+ buffer, the total is the sum of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE,
+ and EGL_ALPHA_SIZE. For a luminance color buffer, the total is the sum of
+ EGL_LUMINANCE_SIZE and EGL_ALPHA_SIZE. When EGL_COLOR_BUFFER_TYPE is of type
+ EGL_YUV_BUFFER_EXT, this will reflect the enumeration provided
+ as an integer) for EGL_YUV_PLANE_BPP_EXT, giving a value of 0, 8 or 10.
+
+ Other EGLConfig Attribute Descriptions
+
+ EGL_YUV_CSC_STANDARD_EXT can be set to either EGL_YUV_CSC_STANDARD_-
+ 601_EXT, EGL_YUV_CSC_STANDARD_709_EXT, or EGL_YUV_CSC_2020_EXT. If the
+ standard chosen is EGL_YUV_CSC_STANDARD_709_EXT, then the color conversion
+ follows the ITU-R BT.709 standard. If EGL_YUV_CSC_STANDARD_EXT is set to
+ EGL_YUV_CSC_2020_EXT, then the color conversion will be processed based on
+ ITU-R BT.2020.
+
+
+Change option 2 in the section marked as 3.4.1.2 Sorting of EGLConfigs to:
+
+ 2. Special: by EGL_COLOR_BUFFER_TYPE where the precendence is EGL_RGB_-
+ BUFFER, EGL_LUMINANCE_BUFFER, EGL_YUV_BUFFER_EXT.
+
+Change option 3 in the section marked as 3.4.1.2 Sorting of EGLConfigs to:
+
+ 3. Special: by larger total number of color bits (for an RGB color buffer,
+ this is the sum of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, and
+ EGL_ALPHA_SIZE; for a luminance color buffer, the sum of EGL_LUMINANCE_SIZE
+ and EGL_ALPHA_SIZE; for YUV color buffers, this returns the integer value
+ with respect to the enumeration provided for EGL_YUV_PLANE_BPP_EXT) If the
+ requrested number of bits in attrib_list for a particular color component
+ is 0 or EGL_DONT_CARE, then the number of bits for the component is not
+ considered. Due to this, YUV color buffers are always last based on this
+ rule.
+
+The following options should be added between options 9 and 10 in section
+3.4.1.2 (EGL_ALPHA_MASK_SIZE and EGL_NATIVE_VISUAL_TYPE):
+
+ 10. Special: EGL_YUV_ORDER_EXT will be sorted in the following order:
+ EGL_NONE, EGL_YUV_ORDER_YUV_EXT, EGL_YUV_ORDER_YVU_EXT, EGL_YUV_ORDER_-
+ YUYV_EXT, EGL_YUV_ORDER_YVYU_EXT, EGL_YUV_ORDER_UYVY_EXT, EGL_YUV_ORDER_-
+ VYUY_EXT, and EGL_YUV_ORDER_AYUV_EXT.
+
+Change option 10 in section 3.4.1.2 (EGL_NATIVE_VISUAL_TYPE) to:
+
+ 11. Special: by EGL_NATIVE_VISUAL_TYPE (the actual sort order is
+ implementation-deï¬ned, depending on the meaning of native visual types).
+
+New State
+
+ Add to table 3.1 (EGLConfig Attributes):
+
+ Attribute Type Notes
+ ----------------------------- ---- --------------------------------------------
+ EGL_YUV_ORDER_EXT enum The order in which the samples will be found
+ inside the surface
+ EGL_YUV_NUMBER_OF_PLANES_EXT integer Number of planes for the surface, in the range of [1,3]
+ EGL_YUV_SUBSAMPLE_EXT enum Describes the sampling rate of the different planes.
+ EGL_YUV_DEPTH_RANGE_EXT enum Luma plane range. limited is [16,240] and
+ full range is [0,255]
+ EGL_YUV_CSC_STANDARD_EXT enum The standard used for color conversion.
+ EGL_YUV_PLANE_BPP_EXT enum How many bits are used for each plane of
+ the YUV surface
+
+ Add to table 3.4 (Default values and match criteria for EGLConfig
+ attributes):
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ------------------------- -------------------------------- --------- ------- --------
+ EGL_YUV_ORDER_EXT EGL_DONT_CARE Exact Special 10
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0 At least None
+ EGL_YUV_SUBSAMPLE_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_DEPTH_RANGE_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_CSC_STANDARD_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_PLANE_BPP_EXT EGL_DONT_CARE Exact None
+
+Issues
+ 1. How will a EGL surface created with a YUV config properly detect that
+ valid values were used when filling pixel data?
+
+ This problem occurs in situations when a specification which defines
+ rendering to the YUV surface cannot guarantee values that conform to the
+ configuration attributes. One possible situation for this is when a
+ the GL client is using GL_EXT_yuv_target and the EGL YUV surface is the
+ draw buffer. The shader can transform the values inside the shader, and
+ there is no guarantee that the values will fall into the EGL_YUV_DEPTH_-
+ RANGE_EXT value chosen. Other client specifications could have similar
+ issues and it may not be performant for some hardware to detect this
+ discrepancy. This includes interactions with extensions such as EGL_-
+ lock_surface, or any others that provide a mechanism to change the
+ contents of the YUV surface.
+
+ One of the problems that can occur in situations like this will be
+ compound mathematical error should operations need to take place on the
+ buffer data.
+
+ Proposal: Due to the performance problems or inability in some hardware
+ to deal with this issue, the pixel contents will be undefined and any
+ further operations to the pixel contents will also be undefined.
+ Therefore it is up to the application to guarantee the correct values
+ are stored within the surface. The EGL implementation need not attempt
+ any form of verification on the pixel data of the YUV surface, nor does
+ it have to guarantee the pixel data, even with communicating the surface
+ to other modules through a post or any other operation EGL performs.
+
+ 2. Should an EGL_COLOR_BUFFER_TYPE = EGL_DONT_CARE request enumerate all
+ YUV configs?
+
+ Resolved: Revision #9 changes the default values and selection criteria
+ to allow for full enumeration of all YUV configs. The default value of
+ EGL_COLOR_BUFFER_TYPE remains EGL_RGB_BUFFER, so this change only
+ affects explicit EGL_DONT_CARE requests.
+
+Example Configuration for NV12:
+
+ const EGLint config_attribs[] =
+ {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_COLOR_BUFFER_TYPE, EGL_YUV_BUFFER_EXT,
+ EGL_YUV_ORDER_EXT, EGL_ORDER_YUV_EXT,
+ EGL_YUV_NUMBER_OF_PLANES_EXT, 2,
+ EGL_YUV_SUBSAMPLE_EXT, EGL_YUV_SUBSAMPLE_4_2_0_EXT,
+ EGL_YUV_DEPTH_RANGE_EXT, EGL_YUV_DEPTH_RANGE_LIMITED_EXT,
+ EGL_YUV_CSC_STANDARD_EXT, EGL_YUV_CSC_STANDARD_601_EXT,
+ EGL_YUV_PLANE_BPP_EXT, EGL_YUV_PLANE_BPP_8_EXT,
+ EGL_NONE
+ };
+
+Revision History
+#1 March 12th, 2014 Initial Draft.
+
+#2 March 25th, 2014 Reformated and added more detail.
+
+#3 March 26th, 2014 Added usage examples.
+ Added memory layout definitions.
+
+#4 March 26th, 2014 Fixed some typos and formatting.
+
+#5 May 21st, 2014 Fixed some inconsistencies.
+ Added EGL_YUV_PLANE_DEPTH_0_QCOM.
+
+#6 May 27th, 2014 Relaxed some requirements.
+ Changed EGL_YUV_PLANE_DEPTH_<0,8,10>_QCOM to
+ EGL_YUV_PLANE_BPP_<0,8,10>_QCOM.
+ Added more detail.
+
+#7 October 7th, 2014 Issue (1) added.
+ Minor updates made (EXT_yuv_target)
+
+#8 October 24th, 2014 Updated for EXT and token values.
+
+#9 April 26th, 2017 Changed attributes default values and selection
+ criteria (see issue #2).
+ Changed status from Draft to Complete.
diff --git a/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt
new file mode 100644
index 0000000..5ca366d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt
@@ -0,0 +1,144 @@
+Name
+
+ HI_clientpixmap
+
+Name Strings
+
+ EGL_HI_clientpixmap
+
+Contributors
+
+ Guillaume Portier
+
+Contacts
+
+ HI support. (support_renderion 'at' hicorp.co.jp)
+
+Status
+
+ Shipping (Revision 3).
+
+Version
+
+ Last Modified Date: June 7, 2010
+ Revision 3
+
+Number
+
+ EGL Extension #24
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The extension specified in this document provide a mechanism for
+ using memory allocated by the application as a color-buffer.
+
+
+New Types
+
+ EGLClientPixmapHI : specifies the width, height, stride, format
+ and memory pointer of the pixmap to be used by the function
+ eglCreatePixmapSurfaceHI to create the PixmapSurface.
+
+ Members:
+ void* pData;
+ Pointer to a memory buffer allocated by the application
+ that will contain the result of the drawing operations.
+ It is up to the application to ensure that the buffer
+ size corresponds to iHeight * iStride * sizeof(pixel).
+ EGLint iWidth;
+ Width of the buffer in pixels.
+ EGLint iHeight;
+ Height of the buffer in pixels. The height of the buffer
+ can be negative; in that case the result of the
+ drawing operations will be vertically swapped. When
+ positive, pData will point at the bottom-left corner
+ of the image; when negative, to the top-left corner.
+ EGLint iStride;
+ Stride of the buffer, in pixels. It is important to note
+ that each row of the buffer must start on 32-bit
+ boundaries.
+
+New Procedures and Functions
+
+ eglCreatePixmapSurfaceHI : creates an EGL ClientPixmap from
+ an EGLClientPixmapHI structure. eglCreatePixmapSurfaceHI usage
+ is identical to eglCreatePixmapSurface. In addition the ordering
+ of the color components in the color buffer can be specified by
+ the surface attribute described in the EGL_HI_colorformats
+ extension.
+
+ In order to update the pointer to the data of the surface, the application
+ can call eglSurfaceAttrib with the EGL_CLIENT_PIXMAP_POINTER_HI attribute.
+ See below for an example.
+
+New Tokens
+
+ None.
+
+Example
+
+
+ EGLClientPixmapHI pixmap;
+ EGLint attrib_list[] = {
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+ // Specifying ARGB as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_ARGB_HI,
+ EGL_NONE
+ };
+
+ // ‘access' being the memory to render into.
+ pixmap.pData = framebuffer.access;
+ pixmap.iWidht = framebuffer.width;
+ pixmap.iHeight = framebuffer.height;
+ pixmap.iStride = framebuffer.stride;
+
+
+
+ //Get Config ARGB8
+ eglChooseConfig(dpy, attrib_list, &config, 1, &num_config);
+
+ // Create the pixmap
+ #ifdef EGL_EGLEXT_PROTOTYPES
+
+ eglCreatePixmapSurfaceHI(eglDisplay, ppkConfig[0], &gHiPixmap);
+
+ #else
+
+ pfCreatePixmap = (PFNEGLCREATEPIXMAPSURFACEHIPROC)
+ eglGetProcAddress("eglCreatePixmapSurfaceHI");
+ pfCreatePixmap(eglDisplay, ppkConfig[0], &gHiPixmap);
+
+ #endif /* EGL_EGLEXT_PROTOTYPES */
+
+
+ // Update the surface data pointer, from now we will render into the
+ // memory pointed by 'access2'.
+ eglSurfaceAttrib(eglDisplay, eglSurface, EGL_CLIENT_PIXMAP_POINTER_HI,
+ offscreen.access2);
+
+Issues
+
+ None
+
+
+Revision History
+
+ June 7, 2010 (r3)
+ - Allow updating the pixmap data pointer using eglSurfaceAttrib with
+ the EGL_CLIENT_PIXMAP_POINTER_HI attribute.
+
+ June 16, 2009 (r2)
+ - Split HI_clientpixmap into two different extensions:
+ - HI_colorformats
+ - HI_clientpixmap
+
+ March 3, 2009 (r1)
diff --git a/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt
new file mode 100644
index 0000000..c8dc97a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt
@@ -0,0 +1,138 @@
+Name
+
+ HI_colorformats
+
+Name Strings
+
+ EGL_HI_colorformats
+
+Contributors
+
+ Guillaume Portier
+
+Contacts
+
+ HI support. (support_renderion 'at' hicorp.co.jp)
+
+Status
+
+ Shipping (Revision 2)
+
+Version
+
+ Last Modified Date: June 7, 2010
+ Revision 2.1
+
+Number
+
+ EGL Extension #25
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The extensions specified in this document provide a mechanism for
+ creating ARGB color-buffers, as opposed to the default RGBA
+ format used by other EGL configurations.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted in the <attrib_list> parameter of eglChooseConfig.
+
+ EGL_COLOR_FORMAT_HI 0x8F70
+
+ Accepted as a value for the EGL_COLOR_FORMAT_HI token:
+
+ EGL_COLOR_RGB_HI 0x8F71
+ EGL_COLOR_RGBA_HI 0x8F72
+ EGL_COLOR_ARGB_HI 0x8F73
+
+
+ The default value for EGL_COLOR_FORMAT_HI is EGL_DONT_CARE.
+ If EGL_COLOR_FORMAT_HI is used with a value other than
+ EGL_DONT_CARE, EGL_COLOR_RGB_HI, EGL_COLOR_RGBA_HI or
+ EGL_COLOR_ARGB_HI then an EGL_BAD_ATTRIBUTE is generated.
+
+ EGL_COLOR_RGB_HI, EGL_COLOR_RGBA_HI and EGL_COLOR_ARGB_HI
+ specify the order of the color components in the color-buffer.
+ EGL_COLOR_RGB_HI must be used only with configurations having no
+ alpha component, currently only 565.
+
+ EGL_COLOR_RGBA_HI and EGL_COLOR_ARGB_HI must be used with
+ configurations having an alpha component. Currently available
+ configurations are:
+ - 4444
+ - 5551
+ - 8888
+ Currently EGL_COLOR_ARGB_HI can be used only with the
+ 8888 configuration.
+
+ If the value used for EGL_COLOR_FORMAT_HI does not match
+ the other specified attributes of the EGL config then an
+ EGL_BAD_MATCH is generated.
+
+ When EGL_COLOR_FORMAT_HI is unspecified or equals EGL_DONT_CARE,
+ eglChooseConfig returns configurations having all kinds of color
+ component ordering.
+
+ If eglCreatePixmapSurface is called with a configuration that
+ does not match the pixmap's native ordering then an EGL_BAD_MATCH
+ is generated. To be sure to call eglCreatePixmapSurface with a
+ compatible configuration, the application should either parse
+ the <configs> list returned by eglChooseConfig or explicitly specify
+ EGL_COLOR_FORMAT_HI to match the pixmap native format.
+
+Example
+
+ EGLint attrib_list[] = {
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+
+ #ifdef USE_ARGB // Specifying ARGB as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_ARGB_HI,
+ #else // Specifying RGBA as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_RGBA_HI,
+ #endif
+
+ EGL_NONE
+ };
+
+ // Get one of the configuration matching the config_list
+ eglChooseConfig(dpy, attrib_list, &config, 1, &num_config);
+
+ // Create the pixmap
+ eglCreatePixmapSurface(dpy, config[0], pixmap, NULL);
+
+
+Issues
+
+ None.
+
+
+Revision History
+
+
+ June 7, 2010 (r2.1)
+ - Corrected mistaken description of EGL_COLOR_FORMAT_HI as
+ attribute for eglCreatePixmapSurface. Clarified other text.
+
+ June 16, 2009 (r2)
+ - Split HI_clientpixmap into two different extensions:
+ - HI_colorformats
+ - HI_clientpixmap
+
+ March 3, 2009 (r1)
diff --git a/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt
new file mode 100644
index 0000000..fa1b4a6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt
@@ -0,0 +1,166 @@
+Name
+
+ IMG_context_priority
+
+Name Strings
+
+ EGL_IMG_context_priority
+
+Contributors
+
+ Ben Bowman, Imagination Techonologies
+ Graham Connor, Imagination Techonologies
+
+Contacts
+
+ Ben Bowman, Imagination Technologies (benji 'dot' bowman 'at'
+ imgtec 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1.1, 8 September 2009
+
+Number
+
+ EGL Extension #10
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification - May 2, 2008 (but may be implemented against earlier
+ versions).
+
+Overview
+
+ This extension allows an EGLContext to be created with a priority
+ hint. It is possible that an implementation will not honour the
+ hint, especially if there are constraints on the number of high
+ priority contexts available in the system, or system policy limits
+ access to high priority contexts to appropriate system privilege
+ level. A query is provided to find the real priority level assigned
+ to the context after creation.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+
+ New attribute values accepted in the <attrib_list> argument
+ of eglCreateContext:
+
+ EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+ EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the list of attributes supported by eglCreateContext in
+ section 3.7.1 (Creating Rendering Contexts) on p. 42:
+
+ "<attrib_list> specifies a list of attributes for the context.
+ The list has the same structure as described for
+ eglChooseConfig. The only attributes that can be specified in
+ <attrib_list> are EGL_CONTEXT_CLIENT_VERSION and
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG. The EGL_CONTEXT_CLIENT_VERSION
+ attribute may only be specified when creating a OpenGL ES
+ context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API).
+
+ <attrib_list> may be NULL or empty (first attribute is
+ EGL_NONE), in which case attributes assume their default values
+ as described below.
+
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation
+ of an OpenGL ES 1.x context. An attribute value of 2 specifies
+ creation of an OpenGL ES 2.x context. The default value for
+ EGL_CONTEXT_CLIENT_VERSION is 1.
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG determines the priority level of
+ the context to be created. This attribute is a hint, as an
+ implementation may not support multiple contexts at some
+ priority levels and system policy may limit access to high
+ priority contexts to appropriate system privilege level. The
+ default value for EGL_CONTEXT_PRIORITY_LEVEL_IMG is
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG."
+
+
+ Modify the list of attributes supported by eglQueryContext in
+ section 3.7.4 (Context Queries) on p. 46:
+
+ "eglQueryContext returns in <value> the value of attribute for
+ <ctx>. <attribute> must be set to EGL_CONFIG_ID,
+ EGL_CONTEXT_CLIENT_TYPE, EGL_CONTEXT_CLIENT_VERSION,
+ EGL_RENDER_BUFFER, or EGL_CONTEXT_PRIORITY_LEVEL_IMG.
+
+ ...
+
+ Querying EGL_CONTEXT_PRIORITY_LEVEL_IMG returns the priority
+ this context was actually created with. Note: this may not be
+ the same as specified at context creation time, due to
+ implementation limits on the number of contexts that can be
+ created at a specific priority level in the system."
+
+ISSUES:
+
+ 1) Should the context priority be treated as a hint or a requirement
+
+ RESOLVED: The context priority should be a hint. System policy may
+ limit high priority contexts to appropriate system privilege level.
+ Implementations may have a limit on the number of context supported
+ at each priority, and may require all contexts within a process to
+ have the same priority level.
+
+ 2) Can an application find out what priority a context was assigned?
+
+ RESOLVED: Provide a query to find the assigned priority for a
+ context. An application may find that it has a lower (or higher)
+ priority than requested (although it probably cannot do much with
+ the information).
+
+ 3) How many priority levels should be defined?
+
+ RESOLVED: Three seems appropriate, as the highest provides the
+ largest GPU timeslice and reduced latency. It might be useful to
+ specify a low priority context which has a small timeslice and high
+ latency. It is possible that a request for LOW will actually return
+ MEDIUM on an implementation that doesn't differentiate between the
+ lower two levels.
+
+ 4) What should the default priority level be if not specified?
+
+ OPTION 1: HIGH - This allows applications that are unaware of
+ this extension to get the highest priority possible.
+
+ OPTIONS 2: MEDIUM - This allows truly high priority applications
+ to differentiate themselves from applications which are unaware
+ of this extension.
+
+ RESOLVED:
+ OPTION 2: MEDIUM - Allow truly high priority applications to
+ differentiate themselves.
+
+Revision History
+ Version 1.1, 08/09/2009 (Jon Leech) Assign extension number and
+ publish in the Registry. Formatting cleanup.
+ Version 1.0, 30/04/2009 - Final clean up. Marked issues as resolved,
+ take out draft status
+ Version 0.3, 22/04/2009 - enums assigned from Khronos registry.
+ Version 0.2, 02/04/2009 - feedback from gdc.
+ Version 0.1, 31/03/2009 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt
new file mode 100644
index 0000000..35841dc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt
@@ -0,0 +1,156 @@
+Name
+
+ IMG_image_plane_attribs
+
+Name Strings
+
+ EGL_IMG_image_plane_attribs
+
+Contributors
+
+ Ben Bowman
+ Alistair Strachan
+
+Contacts
+
+ Tobias Hector, Imagination Technologies (tobias 'dot' hector 'at'
+ imgtec 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 0.4, October 18, 2015
+
+Number
+
+ EGL Extension #95
+
+Dependencies
+
+ EGL_KHR_image_base is required.
+
+ One of EGL_KHR_image, EGL_KHR_image_pixmap or
+ EGL_ANDROID_image_native_buffer is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base,
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_pixmap.
+ This extension interacts with GL_OES_EGL_image and GL_EXT_texture_rg.
+
+Overview
+
+ This extension allows creating an EGLImage from a single plane of a
+ multi-planar Android native image buffer (ANativeWindowBuffer) or
+ a native pixmap (EGLNativePixmap).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attrib_list> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | Attribute | Description | Valid <target>s | Default Value |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | EGL_NATIVE_BUFFER_MULTI | Whether a multiplane | EGL_NATIVE_BUFFER_ANDROID | EGL_FALSE |
+ | PLANE_SEPARATE_IMG | native buffer should be | EGL_NATIVE_PIXMAP_KHR | |
+ | | treated as separate | | |
+ | | buffers | | |
+ | | | | |
+ | EGL_NATIVE_BUFFER_ | Which plane of a multi- | EGL_NATIVE_BUFFER_ANDROID | 0 |
+ | PLANE_OFFSET_IMG | plane native buffer is | EGL_NATIVE_PIXMAP_KHR | |
+ | | used as the EGLImage | | |
+ | | source | | |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, and
+ <buffer> is a handle to a valid multi-planar surface, such as a YUV420 2 or
+ 3 planar video surface, an EGLImage will be created from only one of the
+ planes, as opposed to a single image representing all of the planes as is
+ normally the case. The intention of this extension is that a call to
+ glEGLImageTargetTexture2DOES or EGLImageTargetRenderbufferStorageOES with an
+ EGLImage created from a single plane of a multiplanar buffer will result in
+ a GL_RED or GL_RG texture or renderbuffer, depending on the format of the
+ multiplanar buffer. This allows an application to work directly in the YUV
+ colorspace, rather than forcing a conversion to the linear RGB colorspace,
+ potentially losing precision.
+
+ The size of each image will represent the actual size of the data buffer
+ for that plane which may mean that the size of an EGLImage created from
+ plane 0 of a multi-planar buffer may not be the same as that of one
+ created from plane 1, which is determined by the YUV's sampling ratio (e.g.
+ a 420 will have planes 1 and 2, if present, represented by an image of half
+ the width).
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and <target>
+ is not EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than or equal to the
+ number of planes in <buffer>, the error EGL_BAD_MATCH is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_FALSE, and
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than 0, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and the
+ format of <buffer> is not supported by the implementation,
+ EGL_BAD_PARAMETER is generated."
+
+Dependencies on EGL_KHR_image_pixmap or EGL_KHR_image
+
+ If neither of these extensions are supported, remove all references to
+ native pixmaps and EGL_NATIVE_PIXMAP_KHR.
+
+Dependencies on EGL_ANDROID_image_native_buffer
+
+ If this extension is not supported, remove all references to
+ ANativeWindowBuffer and EGL_NATIVE_BUFFER_ANDROID.
+
+Issues
+
+ None
+
+Revision History
+
+#0.4 (Tobias Hector, October, 2015)
+ - Add interactions with EGL_KHR_image_pixmap/EGL_KHR_image
+ - Added error language for unsupported formats
+#0.3 (Jon Leech, June 13, 2013)
+ - Add a "Valid Targets" column to table bbb for new attributes, matching
+ proposed changes in EGL_KHR_image_base (Bug 10151). Note that this
+ change implies a new error will be generated when <target> is not
+ EGL_NATIVE_BUFFER_ANDROID and EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is
+ specified in <attrib_list>; this falls out from the generic
+ target-attribute matching error added to EGL_KHR_image_base.
+#0.2 (Ben Bowman, May 30, 2012)
+ - Fixed some typos
+#0.1 (Ben Bowman, May 30, 2012)
+ - First draft of extension .
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt
new file mode 100644
index 0000000..92f4a73
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt
@@ -0,0 +1,278 @@
+Name
+
+ KHR_cl_event
+
+Name Strings
+
+ EGL_KHR_cl_event
+
+Contributors
+
+ Jon Leech, Khronos
+ Alon Or-bach, Samsung Electronics
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension is obsolete and has been replaced by EGL_KHR_cl_event2.
+ Khronos recommends implementers who support this extension also
+ implement cl_event2, and begin transitioning developers to using that
+ extension. See issue 17 for the reason.
+
+ Complete. Approved by the EGL Working Group on 2013/05/15.
+ Approved by the Khronos Board of Promoters on 2013/07/19.
+
+Version
+
+ Version 10, December 4, 2013
+
+Number
+
+ EGL Extension #60
+
+Dependencies
+
+ EGL 1.4 and the EGL_KHR_fence_sync extension are required.
+
+ This extension is written against the language added to EGL 1.2 by
+ the EGL_KHR_fence_sync extension.
+
+ An OpenCL implementation supporting sharing OpenCL event objects
+ with EGL is required.
+
+Overview
+
+ This extension allows creating an EGL fence sync object linked to an
+ OpenCL event object, potentially improving efficiency of sharing
+ images between the two APIs. The companion cl_khr_egl_event
+ extension provides the complementary functionality of creating an
+ OpenCL event object from an EGL fence sync object.
+
+New Types
+
+ None. However, event handles of type cl_event, defined in the OpenCL
+ header files, may be included in the attribute list passed to
+ eglCreateSyncKHR.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSyncKHR:
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add following the description of fence sync objects in section 3.8.1
+ (e.g. following the paragraph beginning "<Fence sync objects> are
+ created..."
+
+ "A <CL event sync object> reflects the status of a corresponding
+ OpenCL event object to which the sync object is linked. This
+ provides another method of coordinating sharing of images between
+ EGL and OpenCL (see Chapter 9 of the OpenCL 1.0 Specification and
+ the cl_khr_egl_sharing extension). Waiting on such a sync object is
+ equivalent to waiting for completion of the linked CL event object."
+
+ Add following the description of fence sync objects (prior to the
+ "Errors" section for eglCreateSyncKHR):
+
+ "If <type> is EGL_SYNC_CL_EVENT_KHR, a CL event sync object is
+ created. In this case <attrib_list> must contain the attribute
+ EGL_CL_EVENT_HANDLE_KHR, set to a valid OpenCL event. Note that
+ EGL_CL_EVENT_HANDLE_KHR is not a queriable property of a sync
+ object. Attributes of the CL event sync objects are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_CL_EVENT_KHR
+ EGL_SYNC_STATUS_KHR Depends on status of <event>
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_CL_EVENT_COMPLETE_KHR
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED_KHR. When the status
+ of <event> changes to CL_COMPLETE, the status of the linked sync
+ object will become EGL_SIGNALED_KHR.
+
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the reference
+ will be removed from the event object.
+
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in <attrib_list> may
+ result in undefined behavior up to and including program
+ termination."
+
+ Add to the "Errors" section for eglCreateSyncKHR:
+
+ "* If <type> is EGL_SYNC_CL_EVENT_KHR then
+
+ ** If EGL_CL_EVENT_HANDLE_KHR is not specified in <attrib_list>
+ or is not a valid OpenCL event handle returned by a call to
+ clEnqueueReleaseGLObjects or clEnqueueReleaseEGLObjects, then
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ Replace the EGL_SYNC_CONDITION_KHR row of table 3.cc with:
+
+ "Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR or
+ EGL_SYNC_CL_EVENT_KHR
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command"
+
+
+ Replace the second paragraph describing eglDestroySync with:
+
+ "If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when the associated fence command or CL event object has
+ completed, and <sync> is no longer blocking any eglClientWaitSyncKHR
+ command. Otherwise, the sync object is destroyed immediately."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ 1) Does this extension need to introduce eglWaitSync
+ functionality?
+
+ RESOLVED: The EGL_KHR_wait_sync extension introduces this, to allow
+ server-side synchronization, without blocking the client from issuing
+ commands. Whilst this is not a required dependency, GPU-to-GPU
+ synchronization is the most likely use of this extension.
+
+ 2) What should the command to create a sync object linked to an
+ OpenCL event look like?
+
+ RESOLVED: We reuse the general attribute list mechanism rather than
+ having a constructor specific to CL events. This was intended in the
+ sync object design from the start.
+
+ 3) How will the OpenCL header dependencies interact with
+ specifying the API for this extension?
+
+ DISCUSSION: To use this extension, OpenCL event handles of type cl_event
+ are specified in the attribute lists passed to eglCreateSyncKHR. Because
+ no formal parameters are of type cl_event, the EGL headers do not need
+ to define this type. Applications must #include the appropriate OpenCL
+ header files as well as <EGL/eglext.h> when using this extension.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 4) Should all possible statuses of the CL event be reflected through to the
+ state of the sync object?
+
+ DISCUSSION: CL event objects have four execution statuses:
+ CL_QUEUED, CL_SUBMITTED, CL_RUNNING, and CL_COMPLETE. GL sync
+ objects have only two statuses: UNSIGNALED and SIGNALED. The
+ cl_khr_gl_event extension maps UNSIGNALED into CL_SUBMITTED, and
+ SIGNALED into CL_COMPLETE.
+
+ RESOLVED: Invert the cl_khr_egl_event mapping. CL_QUEUED,
+ CL_SUBMITTED, and CL_RUNNING all map into UNSIGNALED.
+ CL_COMPLETE maps into SIGNALED.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 5) Are there any restrictions on the use of a sync object linked to a CL
+ event object?
+
+ RESOLVED: No restrictions.
+
+ 6) How are sync object lifetimes defined?
+
+ RESOLVED: A sync object linked to a CL event object places a single
+ reference on the event. Deleting the sync object removes that reference.
+
+ eglDestroySync has a dependency on the completion of the linked event
+ object, and will not delete the sync objectwhile the event object has not
+ yet completed. This is equivalent to behavior of deleting a fence sync
+ object, where deletion of the object will be deferred until the underlying
+ fence command has completed.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 7) Should all OpenCL events be supported?
+
+ RESOLVED: No. Only events returned by clEnqueueReleaseGLObjects, or
+ clEnqueueReleaseEGLObjects since those are the only known use cases for
+ this extension.
+
+ 8) Why has this extension been obsoleted and replaced by
+ EGL_KHR_cl_event2?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+Revision History
+
+ Version 10, 2013/12/04 (Jon Leech) - add issue 8 explaining that OpenCL
+ event handles cannot be safely passed in attribute lists on 64-bit
+ platforms, and suggest using EGL_KHR_cl_event2 instead.
+
+ Version 9, 2013/08/12 (Jon Leech) - remove unused cl_event type from the
+ extension and from <EGL/eglext.h> (Bug 10661).
+
+ Version 8, 2013/07/19 (Jon Leech) - assign extension number and
+ missing enum value, and clean up a few typos for publication.
+
+ Version 7, 2013/07/08 (Jon Leech) - assign enums (Bug 10490).
+
+ Version 6, 2013/06/11 (Alon Or-bach) - typo correction
+
+ Version 5, 2013/05/30 (Alon Or-bach) - wording cleanup
+
+ Version 4, 2013/05/15 (Alon Or-bach) - updated issue resolutions as agreed,
+ consistent with GL_ARB_cl_event, including using typedef for cl_event
+
+ Version 3, 2013/04/25 (Alon Or-bach) - remove use of CL context,
+ accept events from clEnqueueAcquireEGLObjects and minor cleanup
+
+ Version 2, 2012/06/26 (Jon Leech) - update link to complementary CL
+ extension.
+
+ Version 1, 2010/05/18 (Jon Leech) - initial version based on
+ equivalent GL_ARB_cl_event extension.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt
new file mode 100644
index 0000000..953487c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt
@@ -0,0 +1,364 @@
+Name
+
+ KHR_cl_event2
+
+Name Strings
+
+ EGL_KHR_cl_event2
+
+Contributors
+
+ Jon Leech, Khronos
+ Alon Or-bach, Samsung Electronics
+ Tom Cooksey, ARM
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on December 4, 2013.
+
+Version
+
+ Version 5, December 4, 2013
+
+Number
+
+ EGL Extension #65
+
+Dependencies
+
+ EGL 1.4 and the EGL_KHR_fence_sync extension are required.
+
+ This extension is written against the language added to EGL 1.2 by
+ the EGL_KHR_fence_sync extension.
+
+ An OpenCL implementation supporting sharing OpenCL event objects
+ with EGL is required.
+
+ Khronos recommends obsoleting and replacing implementations of
+ EGL_KHR_cl_event with this extension as soon as possible.
+
+Overview
+
+ This extension allows creating an EGL sync object linked to an OpenCL
+ event object, potentially improving efficiency of sharing images between
+ the two APIs. The companion cl_khr_egl_event extension provides the
+ complementary functionality of creating an OpenCL event object from an
+ EGL sync object.
+
+ This extension is functionally identical to EGL_KHR_cl_event, but is
+ intended to replace that extension. It exists only to address an
+ implementation issue on 64-bit platforms where passing OpenCL event
+ handles in an EGLint attribute list value is impossible, because the
+ implementations use a 32-bit type for EGLint.
+
+ This extension also incorporates some required functionality from the
+ EGL_KHR_fence_sync extension, similarly modified for 64-bit platforms.
+
+New Types
+
+ /*
+ * EGLAttribKHR is a integer type used to pass arrays of attribute
+ * name/value pairs which may include pointer and handle attribute
+ * values.
+ */
+ #include <khrplatform.h>
+ typedef intptr_t EGLAttribKHR;
+
+ Event handles of type cl_event, defined in the OpenCL header files, may
+ be included in the attribute list passed to eglCreateSync64KHR.
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSync64KHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLAttribKHR *attrib_list);
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSync64KHR:
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Modify the language in section 3.8.1 (Sync Objects) starting at the
+ sixth paragraph, describing commands to create sync objects:
+
+ "The commands
+
+ EGLSyncKHR eglCreateSync64KHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLAttribKHR *attrib_list);
+
+ and
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ create a sync object ...
+
+ ... When a fence sync object is created, eglCreateSyncKHR and
+ eglCreateSync64KHR also insert a fence command into... "
+
+ Add following the eigth paragraph (the paragraph beginning "<Fence sync
+ objects> are created..."):
+
+ "A <CL event sync object> reflects the status of a corresponding OpenCL
+ event object to which the sync object is linked. This provides another
+ method of coordinating sharing of images between EGL and OpenCL (see
+ Chapter 9 of the OpenCL 1.0 Specification and the cl_khr_egl_sharing
+ extension). Waiting on such a sync object is equivalent to waiting for
+ completion of the linked CL event object.
+
+ CL event sync objects may only be created using the command
+ eglCreateSync64KHR, because they require an attribute which may not be
+ representable in the attrib_list argument of eglCreateSyncKHR."
+
+ Add following the description of fence sync objects (prior to the
+ "Errors" section for eglCreateSyncKHR):
+
+ "If <type> is EGL_SYNC_CL_EVENT_KHR, a CL event sync object is
+ created. In this case <attrib_list> must contain the attribute
+ EGL_CL_EVENT_HANDLE_KHR, set to a valid OpenCL event. Note that
+ EGL_CL_EVENT_HANDLE_KHR is not a queriable property of a sync
+ object. Attributes of the CL event sync objects are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_CL_EVENT_KHR
+ EGL_SYNC_STATUS_KHR Depends on status of <event>
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_CL_EVENT_COMPLETE_KHR
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED_KHR. When the status
+ of <event> changes to CL_COMPLETE, the status of the linked sync
+ object will become EGL_SIGNALED_KHR.
+
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the reference
+ will be removed from the event object.
+
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in <attrib_list> may
+ result in undefined behavior up to and including program
+ termination."
+
+ The command eglCreateSync64KHR must be used to create a CL event sync
+ object[fn1].
+
+ [fn1] If the implementation also supports the older EGL_KHR_cl_event
+ extension, then eglCreateSyncKHR may also be used to create a CL
+ event sync object. However, this use is not recommended because it
+ is not portable to platforms where OpenCL event handles are larger
+ than 32 bits."
+
+ Modify the ninth and tenth paragraphs, starting "When the condition":
+
+ "When the condition of the sync object is satisfied, the sync is
+ signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock.
+
+ The only condition supported for fence sync objects is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, which is satisfied by completion
+ of the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+
+ Each client API which supports fence commands indicates this support
+ in the form of a client API extension. If the GL_OES_EGL_sync
+ extension is supported by OpenGL ES (either version 1.x or 2.0), a
+ fence sync object may be created when the currently bound API is
+ OpenGL ES. If the VG_KHR_EGL_sync extension is supported by OpenVG,
+ a fence sync object may be created when the currently bound API is
+ OpenVG.
+
+ The only condition supported for CL event sync objects is
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR, which is satisfied when the status of
+ the OpenCL event associated with the sync object changes to CL_COMPLETE."
+
+ Add to the "Errors" section for eglCreateSyncKHR and eglCreateSync64KHR:
+
+ "* If <type> is EGL_SYNC_CL_EVENT_KHR then
+
+ ** If eglCreateSyncKHR was called, then EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated.
+
+ ** If eglCreateSync64KHR was called and EGL_CL_EVENT_HANDLE_KHR is not
+ specified in <attrib_list>, or its attribute value is not a valid
+ OpenCL event handle returned by a call to clEnqueueReleaseGLObjects
+ or clEnqueueReleaseEGLObjects, then EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated."
+
+ Replace the EGL_SYNC_CONDITION_KHR row of table 3.cc with:
+
+ "Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR or
+ EGL_SYNC_CL_EVENT_KHR
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command"
+
+
+ Replace the second paragraph describing eglDestroySync with:
+
+ "If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when the associated fence command or CL event object has
+ completed, and <sync> is no longer blocking any eglClientWaitSyncKHR
+ command. Otherwise, the sync object is destroyed immediately."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ Note that some issues from the EGL_KHR_cl_event and EGL_KHR_fence_sync
+ extensions also apply to this extension, which incorporates
+ functionality from both of those extensions while making it usable on a
+ 64-bit architecture. Issues specific to this extension are below.
+
+ 1) Why does this extension exist?
+
+ The existence of this extension is an unfortunate necessity. Khronos did
+ not define EGLint as a 64-bit type in the version of <khrplatform.h> we
+ provided, assuming that vendors on those platforms would do so. By the
+ time we discovered that not all vendors had done this, it was too late
+ to fix, because ABI considerations made it impossible for those vendors
+ to change to a 64-bit EGLint type. Our only option was to define new
+ extensions and commands using a new attribute type, EGLAttribKHR, which
+ is explicitly large enough to hold a pointer or handle.
+
+ 2) What is the relationship of this extension to EGL_KHR_cl_event?
+
+ RESOLVED: The only functional difference is that the new
+ eglCreateSync64KHR command must be used to create CL event sync objects.
+ This is necessary because some 64-bit platforms define EGLint as a
+ 32-bit type, making it impossible to pass an arbitrary OpenCL event
+ handle in the EGLint *attrib_list passed to eglCreateSyncKHR.
+
+ 3) How are pointer- and handle-sized attributes represented?
+
+ RESOLVED: Using the new type EGLAttribKHR, which is explicitly defined
+ as an integer type large enough to hold a pointer.
+
+ EGLAttribKHR is defined as an alias of the ISO C intptr_t type, rather
+ than using one of the explicitly-sized types from khrplatform.h.
+ Requiring this means that khrplatform.h must make sure to include the
+ appropriate header file (probably <stdint.h>) and that a C compiler
+ supporting intptr_t must be used. In the past we were concerned about
+ older C/C++ compilers, but this seems an acceptable choice in 2013.
+
+ We could choose to use intptr_t as the base type of attribute lists,
+ instead of the EGLAttribKHR alias. As Ian Romanick has pointed out
+ passionately in ARB discussions, modern C compilers are required to
+ support a well-defined set of scalar types. There is no requirement to
+ use API-specific scalar types when explicitly defining a C API.
+
+ However, there is some value in semantically tagging parameters with EGL
+ types. Also, using 'intptr_t *attrib_list' would be cosmetically
+ objectionable due to mixing EGL* and C native scalar types in EGL APIs.
+
+ We probably want to wait until there's an EGL API compatibility break -
+ a hypothetical "EGL 2.0" - before moving to native ISO C types in our
+ interfaces.
+
+ 4) Why is the new fence sync creation function defined here, instead of
+ in a separate EGL_KHR_fence_sync2 extension?
+
+ RESOLVED: eglCreateSync64KHR is defined here because this is the only
+ functionality requiring it, and we expect this extension to be a stopgap
+ for 64-bit platforms until the time that EGL 1.5 is defined. The EGL 1.5
+ core will presumably include only the EGLAttribKHR-based version of this
+ command.
+
+ If there are any new extensions using handle or pointer attributes in
+ the meantime, they should copy the EGLAttribKHR and eglCreateSync64KHR
+ language here as required. There is no harm in defining the same type or
+ command in multiple extensions, so long as the definitions are
+ compatible.
+
+ 5) Why is the new command called eglCreateSync64KHR?
+
+ UNRESOLVED: For consistency with OpenGL, which has '64'-suffixed
+ commands for representing 64-bit integers and arbitrary offsets into GPU
+ memory. If we ever support EGL on 128-bit platforms this would be a
+ silly naming convention, but that time is probably many decades away and
+ by then EGL 1.5 should be defined and widely supported. The name
+ eglCreateSync2KHR was originally suggested.
+
+ 6) Why is there no command for querying EGLAttribKHR attributes from
+ sync objects?
+
+ RESOLVED: Because the only sync attribute which requires the extra bits
+ in an EGLAttribKHR type is EGL_CL_EVENT_HANDLE_KHR, which is not
+ queryable. Sync attributes which are queryable will all fit into the
+ EGLint returned by eglGetSyncAttribKHR.
+
+ NOTE: It's unfortunate that this name is used, since it uses the
+ "AttribKHR" name for command returning EGLints. In EGL 1.5 we should use
+ a different name for the query.
+
+ 7) Does this extension replace EGL_KHR_fence_sync and EGL_KHR_cl_event?
+
+ RESOLVED: It does not replace EGL_KHR_fence_sync, but extends it to
+ support creation of a new type of sync object, the CL event sync object.
+
+ RESOLVED: It is intended to replace EGL_KHR_cl_event; this extension
+ must be used for OpenCL interop on 64-bit platforms, and we hope all
+ vendors will implement it even on 32-bit platforms, for maximum code
+ portability.
+
+Revision History
+
+ Version 5, 20130/12/04 (Jon Leech) - minor cleanup for public release.
+
+ Version 4, 20130/10/16 (Jon Leech) - add Dependencies and Overview text
+ noting that this extension obsoletes and should replace
+ EGL_KHR_cl_event.
+
+ Version 3, 20130/10/15 (Jon Leech) - change type of EGLAttribKHR from
+ uintptr to intptr (Bug 11027).
+
+ Version 2, 20130/10/12 (Jon Leech) - merge EGL_KHR_fence_sync2 with this
+ extension, change the naming scheme, define EGLAttribKHR as uintptr_t,
+ and add a new issues list.
+
+ Version 1, 2010/10/02 (Tom Cooksey) - initial version based on
+ EGL_KHR_cl_event and adding 64-bit EGLAttrKHR variants.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt
new file mode 100644
index 0000000..65634ca
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt
@@ -0,0 +1,234 @@
+Name
+
+ KHR_config_attribs
+
+Name Strings
+
+ EGL_KHR_config_attribs
+
+Contributors
+
+ Jon Leech
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete
+
+Version
+
+ Version 5, April 5, 2007
+
+Number
+
+ EGL Extension #1
+
+Dependencies
+
+ Requires EGL 1.2
+
+ Some of the extended config attributes defined by this extension are
+ only relevant when specific client APIs are supported.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification. It exists for backwards compatibility with
+ functionality introduced in EGL 1.3.
+
+Overview
+
+ This extension adds new EGL config attributes and attribute bits
+ that express limitations of configs on a per-API basis, including
+ whether client APIs created with respect to a config are expected to
+ pass conformance, and which optional OpenVG color space and alpha
+ mask format attributes are valid at surface creation time.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLConfig bitmask attribute name:
+
+ EGL_CONFORMANT_KHR 0x3042
+
+ Valid bitfields in the EGL_SURFACE_TYPE bitmask attribute
+ of EGLConfig:
+
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+
+Additions to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to table 3.1, "EGLConfig attributes":
+
+ Attribute Type Notes
+ --------- ---- -----
+ EGL_CONFORMANT_KHR bitmask whether contexts created with
+ this config are conformant
+
+ Add to table 3.2, "Types of surfaces supported by an EGLConfig":
+
+ EGL Token Name Description
+ -------------- -----------
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR EGLConfig supports OpenVG rendering
+ in linear colorspace
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR EGLConfig supports OpenVG rendering
+ with premultiplied alpha
+
+ Add following the second paragraph of "Other EGLConfig Attribute
+ Descriptions" in section 3.4 on p. 16:
+
+ "If EGL_VG_COLORSPACE_LINEAR_BIT_KHR is set in EGL_SURFACE_TYPE,
+ then the EGL_COLORSPACE attribute may be set to
+ EGL_COLORSPACE_LINEAR when creating a window, pixmap, or pbuffer
+ surface (see section 3.5)."
+
+ "If EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR is set in EGL_SURFACE_TYPE,
+ then the EGL_ALPHA_FORMAT attribute may be set to
+ EGL_ALPHA_FORMAT_PRE when creating a window, pixmap, or pbuffer
+ surface (see section 3.5)."
+
+ Add at the end of the fourth paragraph (description of
+ EGL_CONFIG_CAVEAT) on p. 17:
+
+ "... required OpenGL ES conformance tests (note that
+ EGL_NON_CONFORMANT_CONFIG is obsolete, and the same information
+ can be obtained from the EGL_CONFORMANT_KHR attribute on a
+ per-client-API basis, not just for OpenGL ES."
+
+ "EGL_CONFORMANT_KHR is a mask indicating if a client API context
+ created with respect to the corresponding EGLConfig will pass
+ the required conformance tests for that API. The valid bit
+ settings are the same as for EGL_RENDERABLE_TYPE, as defined in
+ table 3.3, but the presence or absence of each client API bit
+ determines whether the corresponding context will be conformant
+ or non-conformant(fn1)."
+
+ "(fn1) most EGLConfigs should be conformant for all supported
+ client APIs. Conformance requirements limit the number of
+ non-conformant configs that an implementation can define."
+
+ Add to the last paragraph of section 3.5.1 on p. 24 (describing
+ eglCreateWindowSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (e.g. if EGL_COLORSPACE is
+ specified as EGL_COLORSPACE_LINEAR but the EGL_SURFACE_TYPE
+ attribute of <config> does not include
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR, or if EGL_ALPHA_FORMAT is
+ specified as EGL_ALPHA_FORMAT_PRE but EGL_SURFACE_TYPE does not
+ include EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR), an EGL_BAD_MATCH error
+ is generated."
+
+ Add to the next-to-last paragraph of section 3.5.2 on p. 26
+ (describing eglCreatePbufferSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated."
+
+ Add to the last paragraph of section 3.5.4 on p. 29 (describing
+ eglCreatePixmapSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1) How should colorspace and alpha format restrictions be specified?
+ OpenVG implementations may not allow linear colorspace or
+ premultiplied alpha rendering to all configs they support.
+
+ RESOLVED: To maximize compatibility with EGL 1.3, we continue to
+ specify the desired colorspace and alpha format at surface
+ creation time. However, surface creation may fail if if the
+ specified colorspace or alpha format are not supported.
+
+ To allow apps to detect this situation, this extension adds
+ EGLConfig attributes specifying *if* linear colorspace and/or
+ premultiplied alpha formats are supported. If they are not
+ supported, surface creation with the corresponding attributes
+ set will fail with an EGL_BAD_MATCH error.
+
+ 2) How should the colorspace and alpha format capabilities be
+ exposed in EGLConfigs?
+
+ RESOLVED: as bitfields of the existing EGL_SURFACE_TYPE bitmask
+ attribute.
+
+ A separate bitmask might be more orthogonal, but there are
+ plenty of unused bits in EGL_SURFACE_TYPE and this minimizes API
+ and programming complexity.
+
+ 3) Are support for linear colorspace and and premultiplied alpha
+ formats orthogonal?
+
+ RESOLVED: Yes, according to the OpenVG Working Group. If they
+ were not orthogonal, we could not specify them as independent
+ bitfields.
+
+ 4) Should information about conformance be specified on a
+ per-client-API basis?
+
+ RESOLVED: Yes. This is needed for conformance testing and cannot
+ be expressed by the EGL_CONFIG_CAVEAT attribute, which is OpenGL
+ ES-specific.
+
+ 5) Should there also be a config attribute which specifies whether
+ EGL_RENDER_BUFFER will be respected?
+
+ UNRESOLVED: it would be consistent to add this attribute. but
+ it's not clear if there's a requirement for doing so yet.
+
+ 6) Does this extension introduce a regression against EGL 1.2?
+
+ RESOLVED: Yes. This is unavoidable, since we're allowing failure
+ of surface creation that was required to succeed in the past.
+ However, implementations that could not support the required
+ colorspace or alpha mask format were effectively non-conformant
+ (e.g. broken) in any event. The new EGL_SURFACE_TYPE attributes
+ at least allow apps to know that their request will not be
+ satisfied.
+
+Dependencies on OpenGL ES
+
+ If OpenGL ES is not supported, the EGL_OPENGL_ES_BIT in the
+ EGL_CONFORMANT_KHR is irrelevant.
+
+Dependencies on OpenVG
+
+ If OpenVG is not supported, the EGL_OPENVG_BIT bit in
+ EGL_CONFORMANT_KHR, and the EGL_VG_COLORSPACE_LINEAR_BIT_KHR and
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR bits in EGL_SURFACE_TYPE, are
+ irrelevant.
+
+Revision History
+
+ Version 5, 2007/04/05 - add enum values corresponding to EGL 1.3
+ core features.
+ Version 4, 2006/10/24 - prefix the bitfield names with "VG" to
+ clarify that they only apply to OpenVG rendering to surfaces
+ (although the corresponding core EGL_COLORSPACE and
+ EGL_ALPHA_FORMAT attribute names do not currently include this
+ prefix). Use "KHR" suffix instead of "OES".
+ Version 3, 2006/10/15 - add new config attribute to express whether
+ configs are conformant on a per-API basis. Correct sRGB
+ terminology to linear (sRGB is the default, linear colorspace
+ rendering may not be supported). Change extension name
+ accordingly.
+ Version 2, 2006/09/26 - add _OES extension suffix to bitfield names.
+ Version 1, 2006/09/26 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt
new file mode 100644
index 0000000..8c992c6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt
@@ -0,0 +1,648 @@
+Name
+
+ KHR_create_context
+
+Name Strings
+
+ EGL_KHR_create_context
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Approved by the Khronos Board of Promoters on February 3, 2012
+ Updated in version 14 to add ES3 context creation bit - see Issue 8
+
+Version
+
+ Version 16, 2015/01/15
+
+Number
+
+ EGL Extension #39
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ Some of the capabilities of these extensions are only available when
+ OpenGL and OpenGL ES contexts supporting specific versions, specific
+ profiles, or specific extensions can be created. All such restrictions
+ are documented in the body of this extension specification.
+
+Overview
+
+ With the advent of new versions of OpenGL which deprecate features
+ and/or break backward compatibility with older versions, there is a need
+ and desire to indicate at context creation which interface will be used.
+ This extension adds a new context creation routine with attributes
+ specifying the OpenGL version, context properties, and profile requested
+ for the context. It also allows making an OpenGL 3.0 or later context
+ (or other client API context supporting the ability) current without
+ providing a default framebuffer. The new context creation attributes
+ are also defined to work for OpenGL ES context creation when that
+ makes sense, and the extension has been augmented to allow configs to
+ advertise support for creating OpenGL ES 3.0 contexts.
+
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument of
+ eglCreateContext:
+
+ EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+ (this token is an alias for EGL_CONTEXT_CLIENT_VERSION)
+ EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+ EGL_CONTEXT_FLAGS_KHR 0x30FC
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+
+ Accepted as a bitfield value in the EGL_RENDERABLE_TYPE config
+ attribute to eglChooseConfig:
+
+ EGL_OPENGL_ES3_BIT_KHR 0x0040
+
+ Accepted as attribute values for
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR:
+
+ EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+
+ Accepted as bits in the attribute value for EGL_CONTEXT_FLAGS_KHR in
+ <*attrib_list>:
+
+ EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+
+ Accepted as bits in the attribute value for
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR in <*attrib_list>:
+
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+
+Additions to the OpenGL / WGL / GLX Specifications
+
+ None. This specification is written for EGL.
+
+Additions to the EGL 1.4 Specification
+
+ Add to table 3.3 "Types of client APIs supported by an EGLConfig"
+
+ "EGL Token Name Client API and Version Supported
+ ---------------------- --------------------------------
+ EGL_OPENGL_ES3_BIT_KHR OpenGL ES 3.x"
+
+ Modify the last sentence of section 3.5.2 "Creating Off-Screen
+ Rendering Surfaces"
+
+ "Finally, an EGL_BAD_ATTRIBUTE error is generated if ... <config> does
+ not support OpenGL ES rendering (e.g. the EGL_RENDERABLE_TYPE
+ attribute does not include at least one of EGL_OPENGL_ES_BIT,
+ EGL_OPENGL_ES2_BIT, or EGL_OPENGL_ES3_BIT_KHR."
+
+ Modify section 3.7 "Rendering Contexts" in the paragraph near
+ the top of page 42:
+
+ "Only one OpenGL or OpenGL ES context may be current to a particular
+ thread, even if the implementation supports OpenGL and one or more
+ versions of OpenGL ES in the same runtime [fn12]."
+
+ Replace section 3.7.1 "Creating Rendering Contexts" from the
+ sixth paragraph through the end of the subsection with:
+
+ "<attrib_list> specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig. If an
+ attribute is not specified in <attrib_list>, then the default value
+ specified below is used instead. Most attributes are only meaningful
+ for specific client APIs, and will generate an error when specified
+ to create for another client API context.
+
+ OpenGL and OpenGL ES Context Versions
+ -------------------------------------
+
+ The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
+ version. They are only meaningful for OpenGL and OpenGL ES contexts,
+ and specifying them for other types of contexts will generate an
+ error.
+
+ When the current rendering API is EGL_OPENGL_ES_API or
+ EGL_OPENGL_API, the values of EGL_CONTEXT_MAJOR_VERSION_KHR (the
+ <major version> and EGL_CONTEXT_MINOR_VERSION_KHR (the <minor
+ version>) request creation of an OpenGL ES or OpenGL context,
+ respectively, supporting the specified version (<major>.<minor>) of
+ that client API.
+ [fn: the EGL 1.4 token EGL_CONTEXT_CLIENT_VERSION is an alias for
+ EGL_CONTEXT_MAJOR_VERSION_KHR, and the tokens may be used
+ interchangeably.]
+ If successful, the context returned must be <backwards compatible>
+ with the requested version. Backwards compatibility is determined as
+ follows:
+
+ If the current rendering API is EGL_OPENGL_ES_API, then:
+
+ * If version 1.0 is requested, the context returned may implement
+ either OpenGL ES 1.0 or OpenGL ES 1.1.
+
+ * If version 1.1 is requested, the context returned must implement
+ OpenGL ES 1.1.
+
+ * If version 2.0, version 3.0, or a later version (when later
+ versions are defined by Khronos) is requested, the context
+ returned must implement the requested OpenGL ES version, or any
+ later version which is backwards compatible with the requested
+ version.
+
+ If the current rendering API is EGL_OPENGL_API, then:
+
+ * If a version less than or equal to OpenGL 3.0 is requested, the
+ context returned may implement any of the following versions:
+
+ * Any version no less than that requested and no greater than
+ 3.0.
+ * Version 3.1, if the GL_ARB_compatibility extension is also
+ implemented.
+ * The compatibility profile of version 3.2 or greater.
+
+ * If OpenGL 3.1 is requested, the context returned may implement
+ any of the following versions:
+
+ * Version 3.1. The GL_ARB_compatibility extension may or may
+ not be implemented, as determined by the implementation.
+ * The core profile of version 3.2 or greater.
+
+ * If OpenGL 3.2 or greater is requested, the context returned may
+ implement any of the following versions:
+
+ * The requested profile (see
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR below) of the requested
+ version.
+ * The requested profile of any later version, so long as no
+ features have been removed from that later version and
+ profile.
+
+ Typically, the implementation will return the most recent version of
+ OpenGL it supports which is backwards compatible with the requested
+ version.
+
+ Querying the GL_VERSION string with glGetString in either OpenGL or
+ OpenGL ES (or the GL_MAJOR_VERSION and GL_MINOR_VERSION values with
+ glGetIntegerv, in an OpenGL 3.0 or later context) will return the
+ actual version supported by a context.
+
+ The default values for EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR are 1 and 0 respectively.
+
+ OpenGL Context Profiles
+ -----------------------
+
+ The value for attribute EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR
+ specifies a <profile> of the OpenGL API. This attribute is only
+ meaningful for OpenGL contexts, and specifying it for other types of
+ contexts, including OpenGL ES contexts, will generate an error.
+
+ When the current rendering API is EGL_OPENGL_API, the value of
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR requests an OpenGL context
+ supporting the corresponding profile. If the
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR bit is set in the attribute
+ value, then a context implementing the <core> profile of OpenGL is
+ returned. If the EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR
+ bit is set, then a context implementing the <compatibility> profile
+ is returned. If the requested OpenGL version is less than 3.2,
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is ignored and the functionality
+ of the context is determined solely by the requested version.
+
+ Querying the value of GL_CONTEXT_PROFILE_MASK with glGetIntegerv
+ will return the profile mask used to create the context. This query
+ is only supported in an OpenGL 3.2 or later context.
+
+ The default value for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR. All OpenGL 3.2 and later
+ implementations are required to implement the core profile, but
+ implementation of the compatibility profile is optional.
+
+ If the core profile is requested, then the context returned cannot
+ implement functionality defined only by the compatibility profile.
+
+ OpenGL and OpenGL ES Context Flags
+ ----------------------------------
+
+ The value for attribute EGL_CONTEXT_FLAGS_KHR specifies a set of flag
+ bits affecting the context. Flag bits are only meaningful when creating
+ certain types of contexts, as described for each bit below, and
+ specifying such a flag bit when creating another type of context will
+ generate an error.
+
+ If the EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR flag bit is set in
+ EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be created. Debug
+ contexts are intended for use during application development, to
+ provide additional runtime checking, validation, and logging
+ functionality while possibly incurring performance penalties. The
+ additional functionality provided by debug contexts may vary
+ according to the implementation(fn). In some cases a debug context
+ may be identical to a non-debug context. This bit is supported for
+ OpenGL and OpenGL ES contexts.
+ [fn: Khronos is still defining the expected and required
+ features of debug contexts, so implementations are
+ currently free to implement "debug contexts" with little or
+ no debug functionality. However, OpenGL and OpenGL ES
+ implementations supporting the GL_KHR_debug extension
+ should enable it when this bit is set.]
+ [fn2: See issue 9 below for discussion of backwards
+ compatibility issues with the debug bit and OpenGL ES
+ contexts.]
+
+ If the EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR flag bit is set
+ in EGL_CONTEXT_FLAGS_KHR, then a <forward-compatible> context will
+ be created. Forward-compatible contexts are defined only for OpenGL
+ versions 3.0 and later. They must not support functionality marked
+ as <deprecated> by that version of the API, while a
+ non-forward-compatible context must support all functionality in
+ that version, deprecated or not. This bit is supported for OpenGL
+ contexts, and requesting a forward-compatible context for OpenGL
+ versions less than 3.0 will generate an error.
+
+ If the EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR bit is set in
+ EGL_CONTEXT_FLAGS_KHR, then a context supporting <robust buffer
+ access> will be created. Robust buffer access is defined in the
+ GL_ARB_robustness extension specification, and the resulting context
+ must also support either the GL_ARB_robustness extension, or a
+ version of OpenGL incorporating equivalent functionality. This bit
+ is supported for OpenGL contexts.
+
+ The default value of EGL_CONTEXT_FLAGS_KHR is zero.
+
+ OpenGL Context Reset Notification
+ ---------------------------------
+
+ The attribute name
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR specifies the
+ <reset notification behavior> of the rendering context. This
+ attribute is only meaningful for OpenGL contexts, and specifying it
+ for other types of contexts, including OpenGL ES contexts, will
+ generate an error.
+
+ Reset notification behavior is defined in the GL_ARB_robustness
+ extension specification, and the resulting context must also support
+ either the GL_ARB_robustness extension, or a version of OpenGL or
+ incorporating equivalent functionality. The attribute value may be
+ either EGL_NO_RESET_NOTIFICATION_KHR or
+ EGL_LOSE_CONTEXT_ON_RESET_KHR, which respectively result in reset
+ notification behavior of GL_NO_RESET_NOTIFICATION_ARB and
+ GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The
+ default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR
+ is EGL_NO_RESET_NOTIFICATION_KHR.
+
+ Errors
+ ------
+
+ On failure eglCreateContext returns EGL_NO_CONTEXT and generates an
+ EGL error with extended error information. Conditions that cause
+ failure include:
+
+ * If an attribute is specified that is not meaningful for the
+ client API type determined by the current rendering API, an
+ EGL_BAD_ATTRIBUTE error is generated.
+
+ * If the current rendering api is EGL_NONE, then an EGL_BAD_MATCH
+ error is generated (this situation can only arise in an
+ implementation which does not support OpenGL ES 1.x, and prior to
+ the first call to eglBindAPI).
+
+ * If share_context is neither EGL_NO_CONTEXT nor a valid context
+ of the same client API type as the newly created context, then
+ an EGL_BAD_CONTEXT error is generated.
+
+ * If <config> is not a valid EGLConfig, or does not support the
+ requested client API, then an EGL_BAD_CONFIG error is generated
+ (this includes requesting creation of an OpenGL ES 1.x, 2.0, or
+ 3.0 context when the EGL_RENDERABLE_TYPE attribute of <config>
+ does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or
+ EGL_OPENGL_ES3_BIT_KHR respectively).
+
+ * If <config> does not support a client API context compatible
+ with the requested API major and minor version, context flags,
+ and context reset notification behavior (for client API types
+ where these attributes are supported), then an EGL_BAD_MATCH
+ error is generated.
+
+ * If an OpenGL context is requested, the requested version is
+ greater than 3.2, and the value for attribute
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has any
+ bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR and
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has more than
+ one of these bits set; or if the implementation does not support
+ the requested profile, then an EGL_BAD_MATCH error is generated.
+
+ * If an OpenGL or OpenGL ES context is requested and the server
+ context state for <share_context> exists in an address space
+ that cannot be shared with the newly created context, if
+ <share_context> was created on a different display than the one
+ referenced by <config>, if the reset notification behavior of
+ <share_context> and the newly created context are different, or
+ if the contexts are otherwise incompatible (for example, one
+ context being associated with a hardware device driver and the
+ other with a software renderer), then an EGL_BAD_MATCH error is
+ generated.
+
+ * If the server does not have enough resources to allocate the new
+ context, then an EGL_BAD_ALLOC error is generated.
+
+ * If an OpenGL context is requested and the values for attributes
+ EGL_CONTEXT_MAJOR_VERSION_KHR and EGL_CONTEXT_MINOR_VERSION_KHR,
+ when considered together with the value for attribute
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, specify an OpenGL
+ version and feature set that are not defined, than an
+ EGL_BAD_MATCH error is generated.
+
+ The defined versions of OpenGL at the time of writing are OpenGL
+ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1,
+ 4.2, and 4.3. Feature deprecation was introduced with OpenGL
+ 3.0, so forward-compatible contexts may only be requested for
+ OpenGL 3.0 and above. Thus, examples of invalid combinations of
+ attributes include:
+
+ - Major version < 1 or > 4
+ - Major version == 1 and minor version < 0 or > 5
+ - Major version == 2 and minor version < 0 or > 1
+ - Major version == 3 and minor version < 0 or > 2
+ - Major version == 4 and minor version < 0 or > 3
+ - Forward-compatible flag set and major version < 3
+
+ Because the purpose of forward-compatible contexts is to allow
+ application development on a specific OpenGL version with the
+ knowledge that the app will run on a future version, context
+ creation will fail if
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR is set and the
+ context version returned cannot implement exactly the requested
+ version.
+
+ * If an OpenGL ES context is requested and the values for
+ attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR specify an OpenGL ES version that
+ is not defined, than an EGL_BAD_MATCH error is generated.
+
+ The defined versions of OpenGL ES at the time of writing are
+ OpenGL ES 1.0, 1.1, 2.0, and 3.0. Examples of invalid
+ combinations of attributes include:
+
+ - Major version < 1 or > 3
+ - Major version == 1 and minor version < 0 or > 1
+ - Major version == 2 and minor version != 0
+ - Major version == 3 and minor version != 0
+
+ * If an attribute name or attribute value in <attrib_list> is not
+ recognized (including undefined or unsupported bits in bitmask
+ attributes), then an EGL_BAD_ATTRIBUTE error is generated."
+
+ In section 3.7.3, replace the following two error conditions in the
+ list of eglMakeCurrent errors:
+
+ " * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is
+ generated.
+ * If either <draw> or <read> are not valid EGL surfaces, an
+ EGL_BAD_SURFACE error is generated."
+
+ with the following error conditions:
+
+ " * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an
+ EGL_BAD_CONTEXT error is generated.
+ * If either <draw> or <read> are not valid EGL surfaces and are
+ not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated.
+ * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not
+ EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If either of <draw> or <read> is a valid surface and the other
+ is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If <ctx> does not support being bound without read and draw
+ surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an
+ EGL_BAD_MATCH error is generated."
+
+ Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and
+ <draw> and <read> are not EGL_NO_SURFACE..." with
+
+ "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is an OpenGL
+ context supporting version 3.0 or later of the OpenGL API, then no
+ error is generated and the context is made current without a
+ <default framebuffer>. The meaning of this is defined in chapter 4
+ of the OpenGL 3.0 Specification."
+
+ Append to the paragraph starting "The first time an OpenGL or OpenGL
+ ES context is made current..." with
+
+ "If the first time <ctx> is made current, it is without a default
+ framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then
+ the viewport and scissor regions are set as though
+ glViewport(0,0,0,0) and glScissor(0,0,0,0) were called."
+
+
+Errors
+
+ EGL errors for eglCreateContext as described in the body of the
+ specification.
+
+ eglMakeCurrent error behavior is relaxed to allow making an OpenGL
+ 3.0 or later context current without a default read or draw
+ framebuffer.
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ Non-window-system dependent issues described in the
+ WGL_ARB_create_context extension specification in the OpenGL
+ Registry apply to EGL_KHR_create_context.
+
+ 1) Do enumerant values need to be shared with the equivalent WGL / GLX
+ extensions?
+
+ Mostly not. The only case where it's fairly important that the
+ values be identical is the EGL_CONTEXT_FLAGS_KHR attribute bitmask
+ values, which are also exposed through an OpenGL query.
+
+ 2) Why are some attribute values named EGL_CONTEXT_OPENGL_*?
+
+ It is possible that context flags and profiles will eventually be
+ defined for client APIs other than OpenGL. To allow for this
+ possibility, the names of the corresponding attribute values are
+ distinguished. For example, EGL_CONTEXT_FLAGS_KHR currently only has
+ flags defined for OpenGL context creation, and those flags are named
+ EGL_CONTEXT_OPENGL_*_BIT_KHR, but in time OpenVG context creation
+ might allow flags as well. Such flags would be named
+ EGL_CONTEXT_OPENVG_*_BIT_KHR.
+
+ 3) Why does EGL_CONTEXT_MAJOR_VERSION_KHR have a distinct numeric token
+ value when it is functionally equivalent to
+ EGL_CONTEXT_CLIENT_VERSION?
+
+ It no longer has a distinct token value; see issue 1.
+
+ 4) How will future versions of OpenGL ES interact with this extension?
+
+ Later context versions which are backwards compatibile with the
+ requested version can be returned, just as with OpenGL contexts.
+
+ 5) What happens when requesting a context requiring OpenGL functionality
+ that cannot be supported by the underlying GL implementation, such as
+ requesting lost context reset notification and/or robust buffer access
+ when the implementation does not support the functionality defined by
+ GL_ARB_robustness?
+
+ Context creation will fail and an EGL_BAD_MATCH error will be
+ generated. This case is included under the general language of the
+ fifth bullet point under "Errors" but this issue is added to for
+ clarity.
+
+ 6) How is robust buffer access and reset notification supported under
+ OpenGL ES?
+
+ RESOLVED: It is an error to request robust buffer access and/or reset
+ notification for OpenGL ES contexts. Exposing robust buffer access and
+ reset notification for OpenGL ES contexts may be defined in a future EGL
+ extension.
+
+ 7) Future support for OpenGL ES context creation.
+
+ If and when features available for OpenGL context creation are defined
+ for OpenGL ES context creation in the future, debug contexts, forward
+ compatible contexts, and robust buffer access contexts may be specified
+ using separate attributes rather than bitmasks. The reset notification
+ behavior attribute may be extended to cover OpenGL ES as well as OpenGL.
+
+ 8) Why was the EGL_OPENGL_ES3_BIT_KHR added in version 13 of the
+ extension? Doesn't this break backwards compatibility with older
+ versions of the extension?
+
+ Applications need the functionality to be confident that context
+ creation of an OpenGL ES 3.0 context will succeed (rather than trying
+ it with different configs until one that succeeds is found).
+
+ If this bit is passed into eglChooseConfig and the implementation
+ supports only an older version of the extension, an EGL_BAD_ATTIBUTE
+ error should be generated. Since no matching configs will be found, a
+ robustly-written application will fail (or fall back to an ES 2.0
+ rendering path) at this point. This is the same application behavior
+ that should result from not finding a matching config on an
+ implementation supporting version 13 of the extension, even though the
+ failure mode is different (EGL error vs. returning no matching
+ configs). The EGL Working Group considers this sufficiently benign
+ behavior, and the functionality important enough, to make the change.
+
+ 9) Why was OpenGL ES support for EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR added
+ in version 15 of the extension? Doesn't this break backwards
+ compatibility with older versions of the extension?
+
+ Now that the GL_KHR_debug extension is ratified and available,
+ OpenGL ES implementers needed a way to enable debug functionality,
+ and wanted to use the same mechanism as OpenGL. There is no
+ discovery mechanism for this capability, so an application creating
+ a OpenGL ES context with the debug bit set and running against an
+ older EGL driver should generate an error. The OpenGL ES Working
+ Group considers this benign behavior.
+
+ 10) Which error should be generated if robust buffer access or reset
+ notifications are requested under OpenGL ES?
+
+ As per Issue 6, this extension does not support creating robust contexts
+ for OpenGL ES. This is only supported via the EGL_EXT_create_context_-
+ robustness extension.
+
+ Attempting to use this extension to create robust OpenGL ES context
+ will generate an EGL_BAD_ATTRIBUTE error. This specific error is generated
+ because this extension does not define the EGL_CONTEXT_OPENGL_ROBUST_-
+ ACCESS_BIT_KHR and EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR bits
+ for OpenGL ES contexts. Thus, use of these bits fall under condition
+ described by: "If an attribute is specified that is not meaningful for
+ the client API type.." in the above specification.
+
+Revision History
+
+ Version 16, 2015/01/15
+ - Add issue 10.
+
+ Version 15, 2013/03/27
+ - Add OpenGL ES support for debug contexts (Bug 10035).
+
+ Version 14, 2012/09/19
+ - Assign enum value to new bit and published updated extension.
+
+ Version 13, 2012/07/29
+ - Add EGL_OPENGL_ES3_BIT_KHR to table 3.3 and sections 3.5.2, 3.7,
+ and 3.7.1. Add issue 8 explaining the addition.
+
+ Version 12, 2012/07/25
+ - Explicitly describe new OpenGL 4.3 and OpenGL ES 3.0 versions.
+ This is not a behavior change (Khronos Bug 9136).
+ - Make spec consistent so that asking for a forward-compatible GL
+ context for versions less than 3.0 is an error (Bug 9314).
+ - Change nonexistent EGL_BAD_PROFILE_KHR error generated when
+ asking for an unsupported or nonexistent GL profile to an
+ EGL_BAD_MATCH error (Bug 9314).
+ - Fix typos in spec body for several new tokens of form
+ "EGL_CONTEXT_OPENGL_*" which were missing the "OPENGL_" part
+ (Bug 9314).
+
+ Version 11, 2012/07/09 - change nonexistent EGL_BAD_VALUE error
+ to EGL_BAD_ATTRIBUTE (Khronos Bug 9269).
+
+ Version 10, 2011/11/22 - fix typo.
+
+ Version 9, 2011/11/09 - resolve issue 6 and add issue 7, limiting
+ various context creation attributes to apply only to OpenGL and not
+ to OpenGL ES.
+
+ Version 8, 2011/10/20 - change spec body to match BAD_MATCH error
+ returned in issue 5 when specifying context version and attributes
+ that collectively cannot be satisfied.
+
+ Version 7, 2011/10/19 - add issue 5 clarifying context creation
+ failures when requesting functionality that cannot be supported by a
+ GL or ES context, and issue 6 discussing the meaning of "equivalent
+ to GL_ARB_robustness".
+
+ Version 6, 2011/10/19 - minor cleanup & clarification of OpenGL ES
+ version requests.
+
+ Version 5, 2010/09/22 - add context reset notification strategy
+ attributes from GLX/WGL context creation extensions.
+
+ Version 4, 2010/09/22 - fix typo. Assign enumerant values and update
+ issue 1 to match. Add caveat to errors section so that invalid
+ attribute values for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR only raise
+ errors when requesting an OpenGL context of version 3.2 or greater
+ (bug 6374). Add issue 4 and allow ES 2.0 context creation requests
+ to return later versions that are backwards-compatible (bug 6374).
+
+ Version 3, 2010/07/21 - remove surfaceless bit in favor of separate
+ per-client-API extensions which promise that contexts of a given
+ client API type can be bound without surfaces on that display. Add
+ robust buffer access bit from equivalent WGL/GLX context creation
+ extensions. Rename EGL_CONTEXT_FLAGS_KHR so it's not specific to
+ OpenGL.
+
+ Version 2, 2010/06/29 - add EGL_CONTEXT_OPENGL_SURFACELESS_BIT_KHR
+ context flag bit (bug 6082).
+
+ Version 1, 2010/06/29 - Initial version based on equivalent
+ WGL_ARB_create_context and GLX_ARB_create_context extensions.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt
new file mode 100644
index 0000000..499293c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt
@@ -0,0 +1,142 @@
+Name
+
+ KHR_create_context_no_error
+
+Name Strings
+
+ EGL_KHR_create_context_no_error
+
+Contributors
+
+ Maurice Ribble
+ Dominik Witczak
+ Christophe Riccio
+ Piers Daniell
+ Jon Leech
+ James Jones
+ Daniel Kartch
+ Steve Hill
+ Jan-Harald Fredriksen
+
+Contact
+
+ Maurice Ribble (mribble 'at' qti.qualcomm.com)
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on May 8, 2015.
+
+Version
+
+ Version 6, May 8, 2015
+
+Number
+
+ EGL Extension #91
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Written against the EGL 1.4 specification.
+
+ This spec interacts with GL_KHR_no_error (or equivalent) extension.
+
+Overview
+
+ This extension allows the creation of an OpenGL or OpenGL ES context that
+ doesn't generate errors if the context supports a no error mode. The
+ implications of this feature are discussed in the GL_KHR_no_error
+ extension.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument to
+ eglCreateContext:
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+
+Additions to the EGL 1.4 Specification
+
+ Add the following to section 3.7.1 "Creating Rendering Contexts":
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR indicates whether a faster and lower power
+ mode should be enabled for the OpenGL ES context. In this mode instead of
+ GL errors occurring as defined in the OpenGL ES spec those errors will
+ result in undefined behavior. The default value of
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR is EGL_FALSE.
+
+Errors
+
+ BAD_MATCH is generated if the value of EGL_CONTEXT_OPENGL_NO_ERROR_KHR
+ used to create <share_context> does not match the value of
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR for the context being created.
+
+ BAD_MATCH is generated if the EGL_CONTEXT_OPENGL_NO_ERROR_KHR is TRUE at
+ the same time as a debug or robustness context is specified.
+
+New State
+
+ None
+
+Conformance Tests
+
+ TBD
+
+Issues
+
+ (1) How does this extension interact with debug and robust contexts?
+
+ RESOLVED: We decided it is an error in EGL if these bits were set at the same
+ time.
+
+ (2) Can a EGL_CONTEXT_OPENGL_NO_ERROR_KHR contexts share resources with
+ normal contexts?
+
+ RESOLVED: To join a share group all the contexts in that share group must
+ have this set the same or creation of the context fails.
+
+ (3) Can we also do this on GLX/WGL?
+
+ RESOLVED: This is an EGL extension. GLX/WGL should be handled with separate
+ extensions.
+
+ (4) Should this extension also expose a "no thread safety" mode? For example
+ to do the rendering on one thread but uploading data or compiling shaders
+ from others threads without having the cost of threaded safety kicking in
+ because none of these tasks overlap so we can handle with sync objects.
+ Compiling shaders, loading data and rendering are areas that removed
+ threading may help.
+
+ RESOLVED: No, this should be done as a separate extension.
+
+ (5) Should this be GL specific?
+
+ RESOLVED: Yes, because other context creation tokens have been API specific.
+ This is also the safer path since it's unknown if other APIs might want to do
+ this slightly differently.
+
+ (6) Should creating a context fail if the context created context does not
+ support a no error mode?
+
+ RESOLVED: No. Expect context creation to succeed even if the implementation
+ can't honor the request for a no error context. This reduces the number of
+ reasons creating a context can fail and seems to be a more forward looking
+ resolution considering context flags allow GL apps to query what context
+ flags are set.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------ --------- ----------------------------------------
+ 1 Jan 28, 2015 ribble Initial version
+ 2 Jan 29, 2015 ribble Added issues list
+ 3 Jan 30, 2015 ribble Split into separate GL and EGL extensions
+ 4 Feb 18, 2015 ribble Resolved issues and cleanup
+ 5 Feb 25, 2015 ribble Rename, better define errors and cleanup
+ 6 May 8, 2015 Jon Leech Assign enum value and release.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt
new file mode 100644
index 0000000..e839a9e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt
@@ -0,0 +1,573 @@
+Name
+
+ KHR_debug
+
+Name Strings
+
+ EGL_KHR_debug
+
+Contributors
+
+ Jeff Vigil, Qualcomm
+ Brian Ellis, Qualcomm
+ (Original contributors of Gl_KHR_debug extension for OpenGL/GL_ES)
+ Mark Callow, HI
+ John Leech, Khronos
+ Ray Smith, ARM
+ Prabindh Sundareson, Texas Instruments
+ James Jones, NVIDIA
+ Jesse Hall, Google
+
+Contact
+
+ Jeff Vigil (jvigil 'at' qualcomm.com)
+
+Notice
+
+ Copyright (c) 2012-2015 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on 2015/04/24.
+ Approved by the Khronos Board of Promoters on 2015/06/26.
+
+Version
+
+ Version 18, Modified Date: September 28, 2016
+
+Number
+
+ EGL Extension #92
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Applicable to any version of EGL 1.x, but written in relationship
+ to EGL 1.5.
+
+Overview
+
+ This extension allows EGL to notify applications when various events
+ occur that may be useful during application development and debugging.
+
+ These events are represented in the form of debug messages with a
+ human-readable string representation. Examples of debug events include
+ errors due to incorrect use of the EGL API, warnings of undefined behavior,
+ and performance warnings.
+
+ The "type" of the message roughly identifies the nature of the event that
+ caused the message. Examples include input errors, performance
+ information, or warnings about undefined behavior.
+
+ Messages are communicated to the application through an application-
+ defined callback function that is called by the EGL implementation on
+ each debug message. The motivation for the callback routine is to free
+ application developers from actively having to query whether an EGL error,
+ or any other debuggable event has happened after each call to a EGL
+ function. With a callback, developers can keep their code free of debug
+ checks, set breakpoints in the callback function, and only have to react
+ to messages as they occur. The callback also offers much more information
+ than just an error code.
+
+ To control the volume of debug output, types of messages can be enabled or
+ disabled. The mechanism is controlled by attributes passed to EGL. The
+ state of the message type control can be queried.
+
+ Debug output can be enabled and disabled by changing the callback function.
+ NULL will disable the feature while a valid function pointer will enable
+ it.
+
+ Finally, this extension defines a mechanism for EGL applications to
+ label their objects (contexts, surfaces, syncs, etc.) with a pointer
+ to an application provided structure. This pointer can be a descriptive
+ string, identifier or pointer to a structure. This enables the application
+ to associate the EGL object with application information. EGL will not
+ interpret this pointer as a string or any other meaning - just attach to
+ the object and pass back in the callback when that object is the primary
+ object of an event.
+
+IP Status
+
+ No known IP claims.
+
+New Procedures and Functions
+
+ EGLint eglDebugMessageControlKHR(
+ EGLDEBUGPROCKHR callback,
+ const EGLAttrib* attrib_list);
+
+ EGLBoolean eglQueryDebugKHR(
+ EGLint attribute,
+ EGLAttrib* value);
+
+ EGLInt eglLabelObjectKHR(
+ EGLDisplay display,
+ EGLenum objectType,
+ EGLObjectKHR object,
+ EGLLabelKHR label);
+
+New Types
+
+ A general type to identify EGL objects, such as EGLSurface or EGLContext.
+
+ typedef void* EGLObjectKHR;
+
+ A label is a string, ID or pointer to a structure that the application
+ can attach to an EGL object.
+
+ typedef void* EGLLabelKHR;
+
+ The callback function that applications can define, and is accepted by
+ eglDebugMessageControlKHR, is defined as:
+
+ typedef void (APIENTRY *EGLDEBUGPROCKHR)(
+ EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message);
+
+New Tokens
+
+ Tokens accepted by the <objectType> parameter of function
+ eglLabelObjectKHR:
+
+ EGL_OBJECT_THREAD_KHR 0x33B0
+ EGL_OBJECT_DISPLAY_KHR 0x33B1
+ EGL_OBJECT_CONTEXT_KHR 0x33B2
+ EGL_OBJECT_SURFACE_KHR 0x33B3
+ EGL_OBJECT_IMAGE_KHR 0x33B4
+ EGL_OBJECT_SYNC_KHR 0x33B5
+ EGL_OBJECT_STREAM_KHR 0x33B6
+
+ Tokens provided by the <messageType> parameter of EGLDEBUGPROCKHR
+ or the attributes input to eglControlDebugMessageKHR or attribute
+ of eglQueryDebugKHR:
+
+ EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+ EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+ EGL_DEBUG_MSG_WARN_KHR 0x33BB
+ EGL_DEBUG_MSG_INFO_KHR 0x33BC
+
+ Tokens provided by the input attribute to eglQueryDebugKHR:
+
+ EGL_DEBUG_CALLBACK_KHR 0x33B8
+
+Additions to Chapter 3 of the EGL 1.5 Specification
+(EGL Functions and Errors)
+
+ Add new Section 3.13:
+
+ "3.13 - Debug Output
+
+ Application developers can obtain more information from EGL runtime in
+ the form of debug output. This information can include details about EGL
+ errors, undefined behavior, implementation-dependent performance warnings,
+ or other useful hints.
+
+ This information is communicated through a stream of debug messages that
+ are generated as EGL commands are executed. The application can
+ receive these messages through a callback routine.
+
+ Controls are provided for disabling classes of messages that the
+ application does not care about.
+
+ Debug output functionality is controlled with:
+
+ EGLint eglDebugMessageControlKHR(
+ EGLDEBUGPROCKHR callback,
+ const EGLAttrib* attrib_list);
+
+ If the <callback> parameter is NULL, then no messages are sent to the
+ callback function and the debug message generation is disabled. If the
+ <callback> parameter is a pointer to a valid callback function, as defined
+ by EGLDEBUGPROCKHR, then messages will be sent to that callback function.
+
+ The attribute list <attrib_list> contains a set of message type enums,
+ and each has a value of EGL_TRUE to enable that class of messages,
+ or value EGL_FALSE to disable that class of message.
+
+ If the <attrib_list> contains an unknown attribute or value the function
+ will return a EGL_BAD_ATTRIBUTE error.
+
+ If there is no error, then the function will set the updated callback,
+ set the updated message types and return EGL_SUCCESS.
+
+ The messages types, their purpose and initial states are given in
+ table 13.1 below. The parameter <attrib_list> needs only contain the
+ attributes to change; an application can call eglDebugMessageControl more
+ than once with a valid callback, and change the message type states as
+ desired.
+
+ When the callback is set to NULL; the attributes are reset to their
+ default values.
+
+ Debug Output Message Type Informs about Initial/Default state
+ ------------------------- ------------- ---------------------
+ EGL_DEBUG_MSG_CRITICAL_KHR Internal EGL driver failures ENABLED
+ i.e. EGL_BAD_ALLOC,
+ EGL_CONTEXT_LOST
+
+ EGL_DEBUG_MSG_ERROR_KHR Input and bad match errors ENABLED
+ i.e. EGL_BAD_CONTEXT,
+ EGL_BAD_PARAMETER...
+
+ EGL_DEBUG_MSG_WARN_KHR Warnings, code is EGL_SUCCESS, DISABLED
+ but message indicates
+ deprecated or inefficient
+ operation.
+
+ EGL_DEBUG_MSG_INFO_KHR Verbose operation DISABLED
+ Messages such as object
+ creation and destruction
+ or change in state.
+
+ ---------------------------------------------------------------------------
+ Table 13.1: Types of debug output messages. Each debug message is associated
+ with one of these types that describes the nature or class of the message.
+
+ 3.13.1 - Debug Message Callback
+
+ Applications must provide a callback function for receiving debug messages
+ of the following type:
+
+ typedef void (APIENTRY *EGLDEBUGPROCKHR)(
+ EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message);
+
+ The function's prototype must follow the type definition of EGLDEBUGPROCKHR.
+ Only one debug callback can be in-use for the application, and
+ further calls overwrite the previous callback. Specifying NULL as the
+ value of <callback> clears the current callback and disables message
+ output.
+
+ The callback will receive the following in its parameters:
+
+ <error> will contain an EGL error code, or EGL_SUCCESS, as applicable.
+
+ <command> will contain a pointer to a string. Example "eglBindApi".
+
+ <messageType> will contain one of the debug message types listed in
+ table 13.1.
+
+ <threadLabel> will contain the label attached to the current thread.
+ The <threadLabel> will be NULL if not set by the application. If the
+ message is from an internal thread, the label will be NULL.
+
+ <objectLabel> will contain the label attached to the primary object
+ of the message; Labels will be NULL if not set by the application.
+ The primary object should be the object the function operates on, see
+ table 13.2 which provides the recommended mapping between functions and
+ their primary object. This <objectLabel> may be NULL even though the
+ application labeled the object. This is because it is possible an error
+ was raised while executing the command before the primary object was
+ validated, therefore its label cannot be included in the callback.
+
+ <message> will contain a platform specific debug string message;
+ This string should provide added information to the application
+ developer regarding the condition that generated the message.
+ The format of a message is implementation-defined, although it should
+ represent a concise description of the event that caused the message
+ to be generated. Message strings can be NULL and should not be assumed
+ otherwise.
+
+ EGL Command Primary object
+ ------------------------- -------------
+
+ eglBindAPI thread
+ eglBindTexImage surface
+ eglChooseConfig display
+ eglClientWaitSync sync
+ eglCopyBuffers surface
+ eglCreateContext display
+ eglCreateImage display
+ eglCreatePbufferFromClientBuffer display
+ eglCreatePbufferSurface display
+ eglCreatePixmapSurface display
+ eglCreatePlatformWindowSurface display
+ eglCreatePlatformPixmapSurface display
+ eglCreateSync display
+ eglCreateWindowSurface display
+ eglDestroyContext context
+ eglDestroyImage image
+ eglDestroySurface surface
+ eglDestroySync sync
+ eglGetConfigAttrib display
+ eglGetConfigs display
+ eglGetCurrentContext context
+ eglGetCurrentDisplay display
+ eglGetCurrentSurface surface
+ eglGetDisplay thread
+ eglGetError thread
+ eglGetPlatformDisplay thread
+ eglGetSyncAttrib sync
+ eglInitialize display
+ eglMakeCurrent context
+ eglQueryAPI context
+ eglQueryContext context
+ eglQueryString display
+ eglQuerySurface surface
+ eglReleaseTexImage surface
+ eglReleaseThread thread
+ eglSurfaceAttrib surface
+ eglSwapBuffers surface
+ eglSwapInterval surface
+ eglTerminate display
+ eglWaitClient context
+ eglWaitGL context
+ eglWaitNative thread
+ eglWaitSync sync
+ eglDebugMessageControlKHR -none-
+ eglQueryDebugKHR -none-
+ eglLabelObjectKHR labeled object
+
+ ---------------------------------------------------------------------------
+ Table 13.2: Recommendation of primary object in a callback as result
+ of various EGL commands.
+
+ If the application has specified a <callback> function for receiving debug
+ output, the implementation will call that function whenever any enabled
+ message is generated. A message must be posted for every error since
+ debug messages can be used as an alternative to eglGetError() for error
+ detection and handling. Specifying a callback function does not affect the
+ behavior of eglGetError; errors are reported through both mechanisms.
+
+ Applications that specify a callback function must be aware of certain
+ special conditions when executing code inside a callback when it is
+ called by EGL. The memory for <message> is read-only, owned and managed
+ by EGL, and should only be considered valid for the duration of the
+ function call. Likewise the <command> string is read-only EGL managed
+ memory and should be considered valid only for the duration of the
+ callback.
+
+ Setting the label for EGL objects is optional and only intended for
+ applications to correlate application structures with EGL objects.
+ All object labels are initially NULL.
+
+ The behavior of calling any EGL operation, its client APIs, or window system
+ functions from within the callback function is undefined and may lead
+ to program termination. It should not be considered reentrant.
+
+ Only one debug callback may be registered at a time; registering a new
+ callback will replace the previous callback. The callback is used by any
+ thread that calls EGL, so if the application calls into EGL concurrently
+ from multiple threads it must ensure the callback is thread-safe.
+
+ EGL may employ internal threads to execute EGL commands. These threads can
+ post debug messages to the callback function. The labels for these
+ internal threads will be NULL.
+
+ 3.13.2 Debug Labels:
+
+ Debug labels provide a method for annotating any object (context, surface,
+ sync, etc.) with an application provided label. These labels may then be
+ used by the debug output or an external tool such as a debugger or profiler
+ to describe labeled objects.
+
+ The command
+
+ EGLint eglLabelObjectKHR(
+ EGLDisplay display,
+ EGLenum objectType,
+ EGLObjectKHR object,
+ EGLLabelKHR label);
+
+ enables the application to attach a label to a specified object.
+ The <display>, <objectType>, and <object> identify the object to be
+ labeled.
+
+ The <label> contains a pointer sized variable to attach to the
+ object. This label can be a integer identifier, string or pointer to a
+ application defined structure. EGL will not interpret this value;
+ it will merely provide it when the object is involved in a callback
+ message. The label for any object will initially be NULL until set by
+ the application.
+
+ An EGL_BAD_PARAMETER error is returned by eglLabelObjectKHR if <objectType>
+ doesn't match one of the object type enums. An EGL_BAD_PARAMETER is also
+ returned if the <objectType> is not a supported type; such as no support
+ for streams.
+
+ An EGL_BAD_PARAMETER error is returned by eglLabelObjectKHR if <object> is
+ invalid, unknown, NULL, or is not an object created with
+ EGLDisplay <display>.
+
+ When the <objectType> is EGL_OBJECT_THREAD_KHR, the <object> parameter
+ will be ignored by EGL. The thread is implicitly the active thread. It is
+ recommended that the application pass a NULL for the <object> parameter in
+ this case.
+
+ When the <objectType> is EGL_OBJECT_DISPLAY_KHR, the <object> parameter
+ must be the same as the <display> parameter - the Display to label. If
+ these do not match, in this case, a EGL_BAD_PARAMETER is generated.
+
+ The <display> does not need to be initialized for <objectType>
+ EGL_OBJECT_THREAD_KHR, or EGL_OBJECT_DISPLAY_KHR; However for all other
+ types it must be initialized in order to validate the <object> for
+ attaching a label.
+
+ If there is no error, then the function will set the label and return
+ EGL_SUCCESS.
+
+ 3.13.3 Debug Queries:
+
+ The command
+
+ EGLBoolean eglQueryDebugKHR(
+ EGLint attribute,
+ EGLAttrib* value);
+
+ enables the application to query the current value for the debug
+ attributes. On success the function returns EGL_TRUE.
+
+ If <attribute> is a message type enum, the value returned will
+ be either EGL_TRUE or EGL_FALSE to indicate whether the specified types of
+ messages are enabled or disabled respectively.
+
+ Querying for attribute EGL_DEBUG_CALLBACK_KHR will return the current
+ callback pointer. This feature is intended to enable layering of the
+ callback with helper libraries.
+
+ Querying for an unknown attribute will result in an EGL_BAD_ATTRIBUTE error
+ and a return of EGL_FALSE.
+
+Usage Examples
+
+ This example shows starting debug messaging and attaching string labels to
+ newly created objects.
+
+ void MyCallBack(EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message)
+ {
+ printf("Error: %x, With command %s, Type: %d,"
+ "Thread: %s, Object: %s, Message: %s.",
+ error, command, messageType, threadLabel, objectLabel, message);
+ }
+
+ EGLint result;
+
+ // DEBUG_MSG_ERROR and CRITICAL are enabled by default
+ EGLAttrib debugAttribs = {EGL_DEBUG_MSG_WARN_KHR, EGL_TRUE, EGL_NONE};
+ // Start up debug messaging:
+ result = eglDebugMessageControl(MyCallBack, debugAttribs);
+
+ // Label for the rendering thread.
+ EGLLabelKHR renderThreadLabel = (EGLLabelKHR)"Render thread";
+ result = eglLabelObject(NULL, EGL_OBJECT_THREAD_KHR, NULL, renderThreadLabel);
+
+ EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+ EGLLabelKHR myDisplay = (EGLLabelKHR)"Default display";
+ result = eglLabelObject(dpy, EGL_OBJECT_DISPLAY_KHR, dpy, myDisplay);
+
+ eglInitialize(dpy);
+
+ EGLLabelKHR renderContextLabel = (EGLLabelKHR)"Render context";
+ EGLContext ctx = eglCreateContext(dpy, config, NULL, contextAttribs);
+ result = eglLabelObject(dpy, EGL_OBJECT_CONTEXT_KHR, ctx, renderContextLabel);
+
+
+Issues
+
+ 1. Why not use GL_KHR_debug?
+
+ RESOLVED: Most EGL use and object creation happens before creating a
+ GL context. And since EGL operations are thread related - the debug
+ messages should be too.
+
+ 2. Is the callback expected only to be called from the thread which it's
+ registered?
+
+ RESOLVED: In most cases when an application thread calls an EGL function,
+ it is expected that EGL upon detecting an error will callback using that
+ application thread. However, EGL may have internal helper threads that
+ execute operations. These threads can callback but will have no
+ threadLabel. It is the responsibility of EGL to ensure that if these
+ threads are blocked in the application's callback by a breakpoint; that
+ EGL does not fail. Internal threads are an implementation detail and
+ are not required.
+
+
+Revision History
+
+ Revision 18, 2016-07-28 (Jeff Vigil)
+ - Clarify return values/error codes.
+
+ Revision 17, 2015-09-23 (Jeff Vigil)
+ - Correct type name to "EGLDEBUGPROCKHR". Updated example code.
+
+ Revision 16, 2015-04-15 (Jeff Vigil)
+ - Clarified that <objectLabel> maybe NULL in the callback, if an error
+ is raised before the primary object handle is validated.
+
+ Revision 15, 2015-03-30 (Jeff Vigil)
+ - Further details to labeling of EGL_OBJECT_DISPLAY_KHR.
+
+ Revision 14, 2015-03-27 (Jeff Vigil)
+ - Further clarification of returns and errors. Add further details to
+ labeling of EGL_OBJECT_THREAD_KHR and EGL_OBJECT_DISPLAY_KHR.
+
+ Revision 13, 2015-03-26 (Jeff Vigil)
+ - Clarified returns and errors.
+
+ Revision 12, 2015-03-24 (Jeff Vigil)
+ - Improve readability. Add assigned enum values.
+
+ Revision 11, 2015-03-02 (Jeff Vigil)
+ - Clarify text regarding parameter attribute_list and its persistence.
+
+ Revision 10, 2015-02-25 (Jeff Vigil)
+ - Clarify text regarding callback blocking.
+ - The implementation must provide errors and success in callbacks so
+ that the callback replaces the use of eglGetError.
+ - <command> strings are read-only EGL memory.
+ - Specify default values for attributes.
+ - Fix typos.
+
+ Revision 9, 2015-02-03 (Jeff Vigil)
+ - Updated contributors.
+ - Add extension type.
+ - Add "KHR" to token and function names.
+ - Fix typos.
+ - Add query to get current callback pointer.
+
+ Revision 8, 2014-12-03 (Jeff Vigil)
+ - Add table containing recommendation for primary object in the callback.
+
+ Revision 7, 2014-10-21 (Jeff Vigil)
+ - Remove configs as a label-able object.
+ - Remove redundant text.
+ - Simplify to one callback per process, not per thread.
+
+ Revision 6, 2014-10-17 (Jeff Vigil)
+ - Add issues.
+ - Address internal EGL threads posting messages.
+
+ Revision 5, 2014-05-27 (Jeff Vigil)
+ - Add missing text for eglQueryDebug.
+ - Clarify threading model.
+
+ Revision 4, 2014-04-14 (Jeff Vigil)
+ - Fix due to feedback from EGL WG face-to-face conference.
+
+ Revision 3, 2014-04-10 (Jeff Vigil)
+ - Refinements.
+
+ Revision 2, 2014-02-21 (Jeff Vigil)
+ - Simplify API.
+
+ Revision 1, 2013-09-08 (Jeff Vigil)
+ - Work in progress for F2F, Based on GL_KHR_debug, replace GL with EGL
+ and remove GL spec specific text.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt
new file mode 100644
index 0000000..e432ed9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt
@@ -0,0 +1,242 @@
+Name
+
+ KHR_display_reference
+
+Name Strings
+
+ EGL_KHR_display_reference
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+ Ratified by the Khronos Board of Promoters on March 31, 2017.
+
+Version
+
+ Version 4 - March 15, 2018
+
+Number
+
+ EGL Extension #126
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ Requires EGL_EXT_platform_base or EGL 1.5
+
+ Interacts with EGL platform extensions.
+
+ Interacts with the EGL_EXT_device_query extension.
+
+Overview
+
+ The existing semantics of EGLDisplay object lifetimes work well for
+ applications in which one module manages all EGL usage, and in which
+ EGL displays are expected to remain available until application
+ termination once they are instantiated. However, EGL does not
+ provide reasonable semantics in the case where applications rely on
+ toolkit libraries which use EGL independently from the application
+ itself.
+
+ This issue can be solved by adding a per-EGLDisplay reference
+ counter which is incremented by eglInitialize calls. Resource
+ destruction can then be deferred until a corresponding number of
+ eglTerminate calls is made. However, switching to this behavior
+ universally could cause backwards incompatibility problems with
+ existing applications that assume a single eglTerminate will
+ immediately free resources regardless of how many times the display
+ has been initialized.
+
+ We therefore must support both behaviors. A new attribute specified
+ when the EGLDisplay is obtained will indicate whether or not
+ reference counting is enabled. If an application requests the
+ EGLDisplay multiple times with different values for this attribute,
+ two separate displays will be returned. The one potential drawaback
+ is that these displays will have independent resource spaces, so
+ objects allocated from one cannot be used by the other. However, the
+ goal here is to support modules that access EGL independently. In
+ such a use case, they are not likely to need to share resources with
+ another module, particularly one that uses a different method for
+ accessing the display.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDisplayAttribKHR(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglGetPlatformDisplay and the <name> parameter of
+ eglQueryDisplayAttribKHR:
+
+ EGL_TRACK_REFERENCES_KHR 0x3352
+
+In section "3.2 Initialization":
+
+Remove the sentence in the description of eglGetPlatformDisplay
+indicating no valid attribute names are defined, and add the following:
+
+ The EGL_TRACK_REFERENCES_KHR attribute may be set to EGL_TRUE or
+ EGL_FALSE to indicate whether or not an EGLDisplay that tracks
+ reference counts for eglInitialize and eglTerminate calls (as
+ described below) is desired. If not specified, the default is
+ platform dependent. Implementations are not required to support both
+ EGL_TRUE and EGL_FALSE for this attribute. If separate successful
+ calls are made to eglGetPlatformDisplay requesting default and non-
+ default behavior for reference counting, two independent EGLDisplays
+ will be returned.
+
+Also add to the Errors section:
+
+ An EGL_BAD_ATTRIBUTE error is generated if the requested value for
+ EGL_TRACK_REFERENCES_KHR is not supported.
+
+Replace the first sentence of the second paragraph of the description of
+eglInitialize with:
+
+ When a previously uninitialized display is initialized, its
+ reference count will be set to one. Initializing an already-
+ initialized display is allowed, and will return EGL_TRUE and update
+ the EGL version numbers, but has no other effect except to increment
+ the display's reference count if its EGL_TRACK_REFERENCES_KHR
+ attribute is EGL_TRUE.
+
+Insert after the declaration of eglTerminate:
+
+ If the specified display's EGL_TRACK_REFERENCES_KHR attribute is
+ EGL_FALSE, eglTerminate will immediately set its reference count
+ to zero. Otherwise, its reference count will be decremented if it
+ is above zero. When an initialized display's reference count reaches
+ zero, termination will occur.
+
+Replace the second sentence of the last paragraph with:
+
+ All displays start out uninitialized with a reference count of zero.
+
+Add to the end of section "3.3 EGL Queries".
+
+ To query non-string attributes of an initialized display, use:
+
+ EGLBoolean eglQueryDisplayAttribKHR(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned, and the value of the attribute
+ specified by <name> is returned in the space pointed to by <value>.
+
+ On failure, EGL_FALSE is returned. An EGL_NOT_INITIALIZED error
+ is generated if EGL is not initialized for <dpy>. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ value. Currently, the only valid attribute name is
+ EGL_TRACK_REFERENCES_KHR.
+
+Interactions with EGL_KHR_platform_android:
+
+ If eglGetPlatformDisplay() is called with <platform> set to
+ EGL_PLATFORM_ANDROID_KHR, the default value of
+ EGL_TRACK_REFERENCES_KHR is EGL_TRUE.
+
+Interactions with EGL_EXT_platform_device, EGL_KHR_platform_gbm,
+EGL_KHR_platform_x11, and EGL_KHR_platform_wayland:
+
+ If eglGetPlatformDisplay() is called with <platform> set to
+ EGL_PLATFORM_DEVICE_EXT, EGL_PLATFORM_GBM_KHR, EGL_PLATFORM_X11_KHR,
+ or EGL_PLATFORM_WAYLAND_KHR, the default value of
+ EGL_TRACK_REFERENCES_KHR is EGL_FALSE.
+
+Interactions with EGL_EXT_device_query:
+
+ The eglQueryDisplayAttribKHR function defined here is equivalent to
+ eglQueryDisplayAttribEXT defined by EGL_EXT_device_query, and the
+ attribute names supported are a superset of those provided by both
+ extensions and any others which rely on them.
+
+Issues
+
+ 1. What is the default value for EGL_TRACK_REFERENCES_KHR?
+
+ RESOLUTION: For backwards compatibility reasons, the default
+ value is platform-specific. The Android platform has
+ historically implemented the behavior of
+ EGL_TRACK_REFERENCES_KHR = EGL_TRUE, while other platforms
+ defaulted to the opposite behavior. Application components
+ capable of supporting either behavior will be able to query
+ the value to determine how to proceed.
+
+ 2. Should the value of EGL_TRACK_REFERENCES_KHR affect whether
+ eglGetPlatformDisplay returns a new display handle or an
+ existing one given otherwise identical parameters?
+
+ RESOLUTION: Yes. For any given combination of platform display
+ handle and other attributes, calling eglGetPlatformDisplay
+ with different values for EGL_TRACK_REFERENCES_KHR will result
+ in two different EGLDisplay handles being returned.
+
+ Resources created with respect to one of these EGLDisplays will
+ not be accessible to the other. This restriction is unlikely to
+ cause issues, because the reference counting is added primarily
+ to support independent toolkits. Application components which
+ independently initialize and terminate the display are not
+ likely to share resources, particularly if they use different
+ methods for that initialization.
+
+ 3. Should the new display attribute be queryable?
+
+ RESOLUTION: Yes. Not all implemenations will support both TRUE
+ and FALSE for this attribute. Application components capable of
+ supporting either value will allow the default to be chosen, and
+ then query the value to determine how to handle termination.
+
+ 4. Should implementations which support this extension be required
+ to support both TRUE and FALSE for the attribute?
+
+ RESOLUTION: No. Lack of refcounting in the core specification is
+ considered by many to be a flaw, and some implementations/platforms
+ will choose to always provide refcounting behavior. This technically
+ makes them non-compliant. The addition of this extension should allow
+ that deviation.
+
+Revision History
+
+ #4 (March 15, 2018) Jon Leech
+
+ - Change extension number from 118 to 126 to avoid an accidental
+ collision.
+
+ #3 (January 12, 2017) Daniel Kartch
+
+ - Change to KHR.
+ - Allocate enum value.
+
+ #2 (November 15, 2016) Daniel Kartch
+
+ - Full termination portion split off into separate extension
+ EGL_XXX_full_termination.
+ - Update reference counting to have separate EGLDisplays for
+ the same native display, one with reference counting and
+ one without.
+ - Add query function to determine attribute value.
+
+ #1 (October 28, 2014) James Jones
+
+ - Initial draft as EGL_XXX_display_reference
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt
new file mode 100644
index 0000000..3cac80b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt
@@ -0,0 +1,562 @@
+Name
+
+ KHR_fence_sync
+
+Name Strings
+
+ EGL_KHR_fence_sync
+ GL_OES_EGL_sync
+ VG_KHR_EGL_sync
+
+Contributors
+
+ Acorn Pooley
+ Gary King
+ Gregory Prisament
+ Jon Leech
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+ Gregory Prisament, NVIDIA Corporation (gprisament 'at' nvidia.com)
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on March 3, 2010.
+ Approved by the Khronos Board of Promoters on April 30, 2010.
+
+Version
+
+ Version 24, January 31, 2014
+
+Number
+
+ EGL Extension #20
+ OpenGL ES Extension #75
+ OpenVG Extension #7
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows heavily from the GL_ARB_sync extension and introduces a type
+ of sync object known as a "fence sync object" comparable to the
+ OpenGL fence sync object. The specification is designed to allow
+ additional types of sync objects to be easily introduced in later
+ extensions.
+
+ Fence sync objects have corresponding fence commands, which are
+ inserted into a client API command stream at the time the fence sync
+ is created. A fence sync object is used to wait for completion of
+ the corresponding fence command. This allows applications to request
+ a partial Finish of an API command stream, wherein all commands
+ issued in a particular client API context will be forced to complete
+ before control is returned to the calling thread.
+
+ This document describes three different extension strings
+ collectively. The "EGL_KHR_fence_sync" string indicates that fence
+ syncs and the corresponding interfaces (to create and place a fence,
+ destroy, query, and wait on) are supported.
+
+ The remaining extensions list valid client APIs for fence syncs. The
+ "GL_OES_EGL_sync" string indicates that a fence sync object can be
+ created in association with a fence command placed in the command
+ stream of a bound OpenGL ES context. The "VG_KHR_EGL_sync" string
+ indicates the same thing for a bound OpenVG context.
+
+New Types
+
+ /*
+ * EGLSyncKHR is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncKHR;
+
+ /*
+ * EGLTimeKHR is a 64-bit unsigned integer representing intervals
+ * in nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_FENCE_KHR 0x30F9
+
+ Accepted by the <attribute> parameter of eglGetSyncAttribKHR:
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_STATUS_KHR 0x30F1
+ EGL_SYNC_CONDITION_KHR 0x30F8
+
+ Returned in <value> when eglGetSyncAttribKHR is called with
+ <attribute> EGL_SYNC_STATUS_KHR:
+
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+
+ Returned in <value> when eglGetSyncAttribKHR is called with
+ <attribute> EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+
+ Accepted in the <flags> parameter of eglClientWaitSyncKHR:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncKHR:
+
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncKHR:
+
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+
+ Returned by eglCreateSyncKHR in the event of an error:
+
+ EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Initially, sync objects are unsignaled. EGL may be
+ asked to wait for a sync object to become signaled, or a sync
+ object's status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and
+ unsignaling the sync.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below
+ for different types of sync objects.
+
+ <Fence sync objects> are created in association with a <fence
+ command> in a client API. When the client API executes the fence
+ command, an event is generated which signals the corresponding fence
+ sync object. Fence sync objects may not be explicitly signaled, and
+ may only change their status once, from the initial unsignaled
+ status to signaled. Fence sync objects may be used to wait for
+ partial completion of a client API command stream, as a more
+ flexible form of glFinish / vgFinish.
+
+ The command
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib_list> is an attribute-value list specifying other attributes
+ of the sync object, terminated by an attribute entry EGL_NONE.
+ Attributes not specified in the list will be assigned their default
+ values.
+
+ If <type> is EGL_SYNC_FENCE_KHR, a fence sync object is created. In
+ this case <attrib_list> must be NULL or empty (containing only
+ EGL_NONE). Attributes of the fence sync object are
+ set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_FENCE_KHR
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
+
+ When a fence sync object is created, eglCreateSyncKHR also inserts a
+ fence command into the command stream of the bound client API's
+ current context (i.e., the context returned by
+ eglGetCurrentContext), and associates it with the newly created sync
+ object.
+
+ When the condition of the sync object is satisfied by the fence
+ command, the sync is signaled by the associated client API context,
+ causing any eglClientWaitSyncKHR commands (see below) blocking on
+ <sync> to unblock. The only condition currently supported is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, which is satisfied by
+ completion of the fence command corresponding to the sync object,
+ and all preceding commands in the associated client API context's
+ command stream. The sync object will not be signaled until all
+ effects from these commands on the client API's internal and
+ framebuffer state are fully realized. No other state is affected by
+ execution of the fence command.
+
+ Each client API which supports fence commands indicates this support
+ in the form of a client API extension. If the GL_OES_EGL_sync
+ extension is supported by OpenGL ES (either version 1.x or 2.0), a
+ fence sync object may be created when the currently bound API is
+ OpenGL ES. If the VG_KHR_EGL_sync extension is supported by OpenVG,
+ a fence sync object may be created when the currently bound API is
+ OpenVG.
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and no context is current for
+ the bound API (i.e., eglGetCurrentContext returns
+ EGL_NO_CONTEXT), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and <dpy> does not match the
+ EGLDisplay of the currently bound context for the currently
+ bound client API (the EGLDisplay returned by
+ eglGetCurrentDisplay()) then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and the currently bound client
+ API does not support the client API extension indicating it can
+ place fence commands, then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+
+ The command
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until <timeout> nanoseconds have passed.
+
+ More than one eglClientWaitSyncKHR may be outstanding on the same
+ <sync> at any given time. When there are multiple threads blocked on
+ the same <sync> and the sync object is signaled, all such threads
+ are released, but the order in which they are released is not
+ defined.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncKHR simply
+ tests the current status of <sync>. If the value of <timeout> is the
+ special value EGL_FOREVER_KHR, then eglClientWaitSyncKHR does not
+ time out. For all other values, <timeout> is adjusted to the closest
+ value allowed by the implementation-dependent timeout accuracy,
+ which may be substantially longer than one nanosecond.
+
+ eglClientWaitSyncKHR returns one of three status values describing
+ the reason for returning. A return value of EGL_TIMEOUT_EXPIRED_KHR
+ indicates that the specified timeout period expired before <sync>
+ was signaled, or if <timeout> is zero, indicates that <sync> is
+ not signaled. A return value of EGL_CONDITION_SATISFIED_KHR
+ indicates that <sync> was signaled before the timeout expired, which
+ includes the case when <sync> was already signaled when
+ eglClientWaitSyncKHR was called. If an error occurs then an error is
+ generated and EGL_FALSE is returned.
+
+ If the sync object being blocked upon will not be signaled in finite
+ time (for example, by an associated fence command issued previously,
+ but not yet flushed to the graphics pipeline), then
+ eglClientWaitSyncKHR may wait forever. To help prevent this behavior
+ (footnote1), if the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit is set in
+ <flags>, and <sync> is unsignaled when eglClientWaitSyncKHR is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ eglGetCurrentContext()) before blocking on <sync>. If no context is
+ current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit
+ is ignored.
+
+ [footnote 1: The simple Flush behavior defined by
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR will not help when waiting for a
+ fence command issued in a different context's command stream.
+ Applications which block on a fence sync object must take
+ additional steps to ensure that the context from which the
+ associated fence command was issued has flushed that command to
+ the graphics pipeline.]
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+ is used to query attributes of the sync object <sync>. Legal values
+ for <attribute> depend on the type of sync object, as shown in table
+ 3.cc. Assuming no errors are generated, EGL_TRUE is returned and the
+ value of the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR only
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+ * If <attribute> is not one of the attributes in table 3.cc,
+ EGL_FALSE is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <attribute> is not supported for the type of sync object
+ passed in <sync>, EGL_FALSE is returned and an EGL_BAD_MATCH
+ error is generated.
+
+ If any error occurs, <*value> is not modified.
+
+ The command
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ is used to destroy an existing sync object.
+
+ If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when it is no longer associated with any fence command
+ and is no longer blocking any eglClientWaitSyncKHR command.
+
+ If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+
+Issues
+
+ Note about the Issues
+ ---------------------
+ The wording for this extension was originally written as a single
+ extension defining two types of sync object; a "reusable sync
+ object" and a "fence sync object". That extension was split to
+ produce standalone extensions for each type of sync object, and
+ references to the other type removed from the specification
+ language. This issues list has been simplied to remove references to
+ reusable sync objects but is otherwise very similar to the
+ EGL_KHR_reusable_sync extension issues list.
+
+ 1. [REMOVED - found in the reusable_sync extension.]
+
+ 2. [REMOVED - found in the reusable_sync extension.]
+
+ 3. What does this extension provide that can not be accomplished
+ with the existing, more efficient eglWaitClient and eglWaitNative
+ API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in
+ extremely lightweight manners, in some cases not blocking the
+ calling thread at all; however, they can not be used to synchronize
+ between client API contexts and native APIs executing in separate
+ threads (or simply between client API contexts executing in separate
+ threads), such as between a thread with an active OpenGL context and
+ a second thread performing video decode.
+
+ 4. What does this extension provide that could not be accomplished
+ with native platform synchronization primitives and the existing
+ client API Finish commands?
+
+ RESPONSE: This extension provides a lighter-weight mechanism for
+ synchronizing an application with client API command streams than
+ the all-or-nothing Finish commands, enabling applications to block
+ until a subset of issued client API commands have completed.
+
+ 5. [REMOVED - found in the reusable_sync extension.]
+
+ 6. Please provide a more detailed description of how
+ eglClientWaitSyncKHR behaves.
+
+ RESOLVED: eglClientWaitSyncKHR blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these may need to be imbedded into the actual
+ spec language):
+
+ * A fence sync object has two possible status values: signaled or
+ unsignaled.
+ * When created, the status of the sync object is unsignaled.
+ * A fence command is inserted into a command stream. A fence sync
+ object is not.
+ * A fence command, once its condition has been met, will set its
+ associated sync object to the signaled state. The only condition
+ currently supported is EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR.
+ * A wait function, such as ClientWaitSyncKHR, waits on a fence
+ sync object, not on a fence command.
+ * A wait function called on a sync object in the unsignaled state
+ will block. It unblocks (note, not "returns to the application")
+ when the sync object transitions to the signaled state.
+ * A wait function called on a sync object in the signaled state
+ will return immediately.
+
+ 7. [REMOVED - found in the reusable_sync extension.]
+
+ 8. [REMOVED - found in the reusable_sync extension.]
+
+ 9. Should eglDestroySyncKHR release all WaitSyncs placed on a fence
+ sync object?
+
+ RESOLVED: No. (note that this behavior differs from reusable syncs.)
+
+ Fence sync objects are intended to be signalled by the graphics
+ driver within a short period of time (typically less than 1 second
+ after creation) and so should not cause waiting threads to hang
+ forever. To reduce implementation complexity, fence sync objects are
+ defined to not release waiting threads; waiting threads are released
+ normally when their condition is satisfied or their timeout expires.
+ The handle to a fence sync object immediately becomes invalid
+ following a call to eglDestroySyncKHR.
+
+Revision History
+
+#24 (Jon Leech, January 31, 2014)
+ - Clarify return value of ClientWaitSyncKHR when called with <timeout>
+ of zero for an unsignaled <sync> (Bug 11576).
+#23 (Jon Leech, April 23, 2013)
+ - Simplify issues list to remove issues specific to reusable sync
+ objects and general sync object design issues.
+#22 (Jon Leech, June 15, 2010)
+ - Correct minor typos in GL/VG extension names.
+#21 (Jon Leech, May 5, 2010)
+ - Correct minor typos, assign extension numbers for EGL, OpenGL ES,
+ and OpenVG, and publish in the registry,
+#20 (Robert Palmer, July 14, 2009)
+ - Branch wording from draft KHR_sync specification. Remove ability
+ to create "reusable sync objects and all tokens/wording specific
+ to them.
+#19 (Robert Palmer, July 22, 2009)
+ - Replace specific eglCreateSyncKHR error cases for bad <type>
+ argument with extensible catch-all case.
+#18 (Robert Palmer, July 8, 2009)
+ - Issues 8 and 9 declared resolved in EGL meeting 2009-07-08
+#17 (Robert Palmer, July 8, 2009)
+ - Update eglDestroySyncKHR to special-case deletion of fence sync
+ objects. This is explained in issue 9.
+ - Corrected EGL_REUSABLE_SYNC_KHR -> EGL_SYNC_REUSABLE_KHR
+ - Define value for EGL_SYNC_REUSABLE_KHR
+ - Fix typo and whitespace
+#16 (Jon Leech, July 7, 2009)
+ - Update description of new tokens to match changes to the
+ eglCreateSyncKHR entry point in revision 15.
+#15 (Jon Leech, June 16, 2009)
+ - Define separate one-time fence sync and reusable sync extensions
+ and corresponding extension strings. Remove AUTO_RESET and
+ eglFenceKHR. Rename eglCreateFenceSyncKHR to eglCreateSyncKHR and
+ change initial status of reusable syncs to unsignaled. Clarify
+ which functions apply to which types of sync objects. Update
+ issues list.
+#14 (Jon Leech, April 29, 2009)
+ - Clarify that all waiters are woken up on signalling a sync.
+ Remove tabs to cleanup some formatting issues.
+#13 (Acorn Pooley, April 2, 2009)
+ - Renamed
+ GL_OES_egl_sync -> GL_OES_EGL_sync
+ VG_KHR_egl_sync -> VG_KHR_EGL_sync
+#12 (Jon Leech, April 1, 2009)
+ - Changed sync flags type from EGLuint to EGLint and add issue 7.
+#11 (Acorn Pooley, February 4, 2009)
+ - add error case to eglGetSyncAttribKHR.
+ - fix year on rev 8-10 (2008->2009)
+#10 (Acorn Pooley, February 4, 2009)
+ - clarify some error message descriptions
+#9 (Greg Prisament, January 15, 2009)
+ - Destroy now wakes up all waits (eglClientWaitSyncKHR)
+ - Add EGLDisplay <dpy> as first parameter to all commands
+ - Split into 3 extension strings, EGL_KHR_sync, GL_OES_egl_sync,
+ VG_KHR_egl_sync, all described in this document.
+ - Add attribute AUTO_RESET_KHR
+ - Time type uses the type from khrplatform.h
+ - Remove EGL_ALREADY_SIGNALLED
+#8 (Jon Leech, November 11, 2009)
+ - Assign enum values
+#7 (Acorn Pooley, October 30, 2008)
+ - Fix typos
+ - remove obsolete wording about Native sync objects (see issue 5)
+ - formatting: remove tabs, 80 columns
+#6 (Acorn Pooley, October 27, 2008)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#5 (Jon Leech, September 9, 2008)
+ - Removed native sync support (eglCreateNativeSyncKHR and
+ EGL_SYNC_NATIVE_SYNC_KHR), and re-flowed spec to fit in 80 columns.
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
new file mode 100644
index 0000000..f01c160
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
@@ -0,0 +1,206 @@
+Names
+
+ KHR_get_all_proc_addresses
+ KHR_client_get_all_proc_addresses
+
+Name Strings
+
+ EGL_KHR_get_all_proc_addresses
+ EGL_KHR_client_get_all_proc_addresses
+
+Contributors
+
+ Jon Leech
+ Marcus Lorentzon
+ Robert Palmer
+ Acorn Pooley
+ Greg Prisament
+ Chad Versace
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on April 3, 2013.
+ Ratified by the Khronos Board of Promoters on July 19, 2013.
+
+Version
+
+ Version 3 - July 31, 2013
+
+Number
+
+ EGL Extension #61
+
+Extension Types
+
+ EGL_KHR_get_all_proc_addresses is an EGL display extension
+ EGL_KHR_client_get_all_proc_addresses is an EGL client extension
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ This extension is written based on the wording of the EGL 1.4
+ specification.
+
+ Interacts with EGL_EXT_client_extensions.
+
+Overview
+
+ eglGetProcAddress is currently defined to not support the querying
+ of non-extension EGL or client API functions. Non-extension
+ functions are expected to be exposed as library symbols that can
+ be resolved statically at link time, or dynamically at run time
+ using OS-specific runtime linking mechanisms.
+
+ With the addition of OpenGL and OpenGL ES 3 support to EGL, the
+ definition of a non-extension function becomes less clear. It is
+ common for one OpenGL library to implement many versions of
+ OpenGL. The suggested library name for OpenGL ES 3 is the same as
+ that of OpenGL ES 2. If OpenGL ES 3 applications linked
+ statically to OpenGL ES 3 functions are run on a system with only
+ OpenGL ES 2 support, they may fail to load. Similar problems
+ would be encountered by an application linking statically to
+ various OpenGL functions.
+
+ To avoid requiring applications to fall back to OS-specific
+ dynamic linking mechanisms, this extension drops the requirement
+ that eglGetProcAddress return only non-extension functions. If
+ the extension string is present, applications can query all EGL
+ and client API functions using eglGetProcAddress.
+
+ To allow users to query this extension before initializing a display, and
+ to also allow vendors to ship this extension without
+ EGL_EXT_client_extensions, two names are assigned to this extension: one
+ a display extension and the other a client extension. Identical
+ functionality is exposed by each name, but users query each name using
+ different methods. Users query EGL_KHR_get_all_proc_addresses in the
+ usual way; that is, by calling eglQueryString(dpy, EGL_EXTENSIONS) on an
+ initialized display. To query EGL_KHR_client_get_all_proc_addresses,
+ users must use a different method which is described below in the section
+ concerning EGL_EXT_client_extensions.
+
+New Types
+
+ None
+
+New functions
+
+ None
+
+New Tokens
+
+ None
+
+Rename section "3.10 Obtaining Extension Function Pointers" to "3.10
+Obtaining Function Pointers", and replace its content with the
+following:
+
+ "The client API and EGL extensions and versions which are available to a
+ client may vary at runtime, depending on factors such as the rendering
+ path being used (hardware or software), resources available to the
+ implementation, or updated device drivers. Therefore, the address of
+ functions may be queried at runtime. The function
+
+ void (*eglGetProcAddress(const char *procname))(void);
+
+ returns the address of the function named by <procName>. <procName> must
+ be a NULL-terminated string. The pointer returned should be cast to a
+ function pointer matching the function's definition in the corresponding
+ API or extension specification. A return value of NULL indicates that
+ the specified function does not exist for the implementation.
+
+ A non-NULL return value for eglGetProcAddress does not guarantee that a
+ function is actually supported at runtime. The client must also make a
+ corresponding query, such as glGetString(GL_EXTENSIONS) for OpenGL and
+ OpenGL ES extensions; vgGetString(VG_EXTENSIONS) for OpenVG extensions;
+ eglQueryString(dpy, EGL_EXTENSIONS) for EGL extensions; or query the
+ corresponding API's version for non-extension functions, to determine if
+ a function is supported by a particular client API context or display.
+
+ Client API function pointers returned by eglGetProcAddress are
+ independent of the display and the currently bound client API context,
+ and may be used by any client API context which supports the function.
+
+ eglGetProcAddress may be queried for all EGL and client API extension
+ and non-extension functions supported by the implementation (whether
+ those functions are supported by the current client API context or not).
+
+ For functions that are queryable with eglGetProcAddress, implementations
+ may also choose to export those functions statically from the object
+ libraries implementing them. However, portable clients cannot rely on
+ this behavior."
+
+Interactions with EGL_EXT_client_extensions
+
+ The EGL specification describes the behavior of eglGetProcAddress as
+ independent of any display. Therefore, this extension's functionality
+ falls under the classification 'client extension' rather than 'display
+ extension'. Accordingly, users may wish to query this extension before
+ initializing a display.
+
+ If the EGL_EXT_client_extensions is supported, then users can query this
+ extension by checking for the name EGL_KHR_client_get_all_proc_addresses
+ in the extension string of EGL_NO_DISPLAY.
+
+ The EGL implementation must expose the name
+ EGL_KHR_client_get_all_proc_addresses if and only if it exposes
+ EGL_KHR_get_all_proc_addresses and supports EGL_EXT_client_extensions.
+ This requirement eliminates the problematic situation where, if an EGL
+ implementation exposed only one name, then an EGL client would fail to
+ detect the extension if it queried only the other name.
+
+ Despite having two names assigned to this extension, the restrictions
+ described in EGL_EXT_client_extensions still apply. As
+ EGL_KHR_client_get_all_proc_addresses is defined as a client extension,
+ its name can appear only in the extension string of EGL_NO_DISPLAY and
+ not in the extension string of any valid display. The converse applies
+ to EGL_KHR_get_all_proc_addresses, as it is defined as a display
+ extension.
+
+Issues
+
+ 1. What should this spec be called?
+
+ PROPOSED: KHR_get_all_proc_addresses
+
+ 2. Should this extension be classified as a client extension, as defined
+ by EGL_EXT_client_extensions?
+
+ DISCUSSION: Yes and no.
+
+ Yes, because this extension exposes functionality that is solely
+ a property of the EGL library itself, independent of any display.
+ Such functionality falls under the classification of 'client
+ extension'.
+
+ No, because classifying it as a client extension would create
+ a dependency on EGL_EXT_client_extensions, and there exists no
+ precedent for a KHR extension that depends on an EXT extension.
+
+ RESOLUTION: Expose this extension under two names, one a client
+ extension and the other a display extension.
+
+Revision History
+
+ #3 (July 31, 2013) Chad Versace
+ - Assign additional name, EGL_KHR_client_get_all_proc_addresses.
+ - Add section "Extension Types", section "Interactions with
+ EGL_EXT_client_extensions", and issue #2.
+
+ #2 (March 6, 2013) Jon Leech
+ - Bring into sync with latest EGL 1.4 spec update and simplify
+ language describing which functions may be queried. Minor
+ formatting changes for greater consistency with other KHR
+ extension specs.
+
+ #1 (February 4, 2013) James Jones
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt
new file mode 100644
index 0000000..e3fbc38
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt
@@ -0,0 +1,197 @@
+Name
+
+ KHR_gl_colorspace
+
+Name Strings
+
+ EGL_KHR_gl_colorspace
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete.
+ Version 3 approved by the EGL Working Group on September 13, 2013.
+ Ratified by the Khronos Board of Promoters on December 13, 2013.
+
+Version
+
+ Version 5, 2014/07/15
+
+Number
+
+ EGL Extension #66
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ Some of the capabilities of these extensions are only available via
+ OpenGL or OpenGL ES contexts supporting sRGB default framebuffers,
+ as defined below.
+
+Overview
+
+ Applications may wish to use sRGB format default framebuffers to
+ more easily achieve sRGB rendering to display devices. This
+ extension allows creating EGLSurfaces which will be rendered to in
+ sRGB by OpenGL contexts supporting that capability.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name by eglCreateWindowSurface,
+ eglCreatePbufferSurface and eglCreatePixmapSurface
+
+ EGL_GL_COLORSPACE_KHR 0x309D
+
+ Accepted as attribute values for EGL_GL_COLORSPACE_KHR by
+ eglCreateWindowSurface, eglCreatePbufferSurface and
+ eglCreatePixmapSurface
+
+ EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+ EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+
+ (these enums are aliases of the corresponding VG colorspace
+ attribute values from EGL 1.3)
+
+Additions to the EGL 1.4 Specification
+
+ Modify the 2nd paragraph on page 29 in section 3.5.1 "Creating
+ On-Screen Rendering Surfaces:
+
+ "Note that the EGL_GL_COLORSPACE_KHR attribute is used only by OpenGL
+ and OpenGL ES contexts supporting sRGB framebuffers. EGL itself does
+ not distinguish multiple colorspace models. Refer to the ``sRGB
+ Conversion'' sections of the OpenGL 4.3 and OpenGL ES 3.0
+ specifications for more information."
+
+
+ Add preceding the 4th paragraph on this page:
+
+ "EGL_GL_COLORSPACE_KHR specifies the color space used by OpenGL and
+ OpenGL ES when rendering to the surface[fn1]. If its value is
+ EGL_GL_COLORSPACE_SRGB_KHR, then a non-linear, perceptually uniform
+ color space is assumed, with a corresponding
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB. If its value
+ is EGL_GL_COLORSPACE_LINEAR_KHR, then a linear color space is assumed,
+ with a corresponding GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of
+ GL_LINEAR. The default value of EGL_GL_COLORSPACE_KHR is
+ EGL_GL_COLORSPACE_LINEAR_KHR.
+
+ [fn1] Only OpenGL and OpenGL ES contexts which support sRGB
+ rendering must respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and
+ only to sRGB formats supported by the context (normally just SRGB8)
+ Older versions not supporting sRGB rendering will ignore this
+ surface attribute. Applications using OpenGL must additionally
+ enable GL_FRAMEBUFFER_SRGB to perform sRGB rendering, even when an
+ sRGB surface is bound; this enable is not required (or supported)
+ for OpenGL ES."
+
+
+ Modify the 4th paragraph on page 30 in section 3.5.2,
+ "Creating Off-Screen Rendering Surfaces":
+
+ "... Attributes that can be specified in <attrib_list> include ...
+ EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+
+ Add preceding the second paragraph on page 31 in section 3.5.2:
+
+ "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when
+ used with eglCreateWindowSurface."
+
+
+ Modify the next to last paragraph on page 34 in section 3.5.4,
+ "Creating Native Pixmap Rendering Surfaces":
+
+ "... Attributes that can be specified in <attrib_list> include
+ EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+
+ Add preceding the second paragraph on page 35 in section 3.5.4:
+
+ "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when
+ used with eglCreateWindowSurface."
+
+
+ Add to table 3.5 on page 37:
+
+ "Attribute Type Description
+ -------------------- ---- -----------
+ EGL_GL_COLORSPACE_KHR enum Color space for OpenGL and OpenGL ES"
+
+
+Errors
+
+ New EGL errors as described in the body of the specification (to be
+ enumerated here in a later draft).
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ 1) How about premultiplied alpha?
+
+ DISCUSSION: OpenGL doesn't expose this a property of the API, so there's
+ no point in exposing it through EGL as a hint to GL. Shaders deal with
+ premultiplied alpha.
+
+ 2) Do we need to determine EGL_GL_COLORSPACE_KHR from client buffer
+ attributes in section 3.5.3?
+
+ DISCUSSION: probably. Not done yet.
+
+ 3) How should EGL_GL_COLORSPACE_SRGB_KHR be capitalized?
+
+ DISCUSSION: Daniel prefers SRGB. The VG token uses sRGB which is a
+ rare case of an enum name containing a lower case letter. Currently
+ the spec uses SRGB.
+
+ 4) Explain differences in surface creation semantics vs.
+ EGL_VG_COLORSPACE.
+
+ DISCUSSION: The EGL 1.4 spec allows surface creation to fail with a
+ BAD_MATCH error when requesting an unsupported VG sRGB format. This
+ is relatively easy to detect since all OpenVG implementations must
+ support sRGB rendering to specified formats. It is trickier with
+ OpenGL and OpenGL ES for two reasons:
+
+ - Some GL/ES contexts may support sRGB rendering while other
+ contexts in the same runtime may not.
+ - Some contexts may support a broader range of sRGB formats than
+ others.
+
+ Possibly we should add EGL_GL_COLORSPACE_SRGB_BIT_KHR to
+ EGL_SURFACE_TYPE, but we've been deemphasizing EGLConfigs going
+ forward, and hopefully we can get away without doing this.
+
+Revision History
+
+ Version 1, 2013/04/26
+ - Initial draft based on proposal in bug 9995.
+ Version 2, 2013/04/26
+ - GL ES doesn't require GL_FRAMEBUFFER_SRGB enable.
+ Version 3, 2013/05/15
+ - Capitalize SRGB in token name, change reference from VG to GL/ES
+ in section 3.5.1, note that ES does not require FRAMEBUFFER_SRGB
+ enable, add issue 4, and fix typos (bug 9995).
+ Version 4, 2013/09/16
+ - Assign enum values.
+ Version 5, 2014/07/15
+ - Fix New Tokens section to include all relevant commands (Bug 12457).
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt
new file mode 100644
index 0000000..ab7f253
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt
@@ -0,0 +1,432 @@
+Name
+
+ KHR_gl_texture_2D_image
+ KHR_gl_texture_cubemap_image
+ KHR_gl_texture_3D_image
+ KHR_gl_renderbuffer_image
+
+Name Strings
+
+ EGL_KHR_gl_texture_2D_image
+ EGL_KHR_gl_texture_cubemap_image
+ EGL_KHR_gl_texture_3D_image
+ EGL_KHR_gl_renderbuffer_image
+
+Contributors
+
+ Aaftab Munshi
+ Barthold Lichtenbelt
+ Gary King
+ Jeff Juliano
+ Jon Leech
+ Jonathan Grant
+ Acorn Pooley
+
+Contacts
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+Version
+
+ Version 13, October 9, 2013
+
+Number
+
+ EGL Extension #5
+
+Dependencies
+
+ All extensions require EGL 1.2 and the EGL_KHR_image extension
+
+ These extensions are written against the wording of the EGL 1.2
+ Specification.
+
+ KHR_gl_texture_2D_image requires an OpenGL or OpenGL ES client API (any
+ version of either API).
+
+ KHR_gl_texture_cubemap_image requires an OpenGL or OpenGL ES client API
+ supporting texture cube maps, either in the core API or via extensions.
+
+ KHR_gl_texture_3D_image requires KHR_gl_texture_2D_image to be supported
+ by the EGL implementation. It also requires an OpenGL or OpenGL ES
+ client API supporting three-dimensional textures, either in the core API
+ or via extensions.
+
+ KHR_gl_renderbuffer_image requires KHR_gl_texture_2D_image to be
+ supported by the EGL implementation. It also requires an OpenGL or
+ OpenGL ES client API supporting renderbuffers, either in the core API or
+ via extensions.
+
+Overview
+
+ The extensions specified in this document provide a mechanism for
+ creating EGLImage objects from OpenGL and OpenGL ES (henceforth referred
+ to collectively as 'GL') API resources, including two- and three-
+ dimensional textures, cube maps and render buffers. For an overview of
+ EGLImage operation, please see the EGL_KHR_image specification.
+
+ Due to the number of available extensions for the OpenGL ES 1.1 and
+ OpenGL ES 2.0 APIs, this document is organized as 4 separate extensions,
+ described collectively. These extensions are separated based on the
+ required underlying GL functionality (described in the dependencies
+ section).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_2D_KHR 0x30B1
+
+ Accepted as an attribute in the <attr_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+
+ Added by KHR_gl_texture_cubemap_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+
+ Added by KHR_gl_texture_3D_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_3D_KHR 0x30B2
+
+ Accepted as an attribute in the <attr_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+
+ Added by KHR_gl_renderbuffer_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_RENDERBUFFER_KHR 0x30B9
+
+
+Additions to the EGL Image (EGL_KHR_image) Specification:
+
+ Add the following to Table aaa (Legal values for eglCreateImageKHR
+ <target> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_TEXTURE_2D_KHR | Used for GL 2D texture images |
+ +-------------------------------------+---------------------------------+
+
+ If KHR_gl_texture_cubemap_image is supported:
+
+ +-----------------------------------------+-----------------------------+
+ | <target> | Notes |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR | Used for the +X face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR | Used for the -X face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR | Used for the +Y face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR | Used for the -Y face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR | Used for the +Z face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR | Used for the -Z face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+
+ If KHR_gl_texture_3D_image is supported:
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_TEXTURE_3D_KHR | Used for GL 3D texture images |
+ +-------------------------------------+---------------------------------+
+
+ If KHR_gl_renderbuffer_image is supported:
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_RENDERBUFFER_KHR | Used for GL renderbuffer images|
+ +-------------------------------------+---------------------------------+
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +---------------------------+-------------------------------+----------------------------+---------+
+ | | | Valid | Default |
+ | Attribute | Description | <target>s | Value |
+ +---------------------------+-------------------------------+----------------------------+---------+
+ | EGL_GL_TEXTURE_LEVEL_KHR | Specifies the mipmap level | EGL_GL_TEXTURE_2D_KHR, | 0 |
+ | | used as the EGLImage source. | EGL_GL_TEXTURE_CUBE_MAP_*, | |
+ | | Must be part of the complete | EGL_GL_TEXTURE_3D_KHR | |
+ | | texture object <buffer> | | |
+ +---------------------------+-------------------------------+----------------------------+---------+
+
+ If KHR_gl_texture_3D_image is supported:
+
+ +----------------------------+------------------------------+----------------------------+---------+
+ | | | Valid | Default |
+ | Attribute | Description | <target>s | Value |
+ +----------------------------+------------------------------+----------------------------+---------+
+ | EGL_GL_TEXTURE_ZOFFSET_KHR | Specifies the depth offset | EGL_GL_TEXTURE_3D_KHR | 0 |
+ | | of the image to use as the | | |
+ | | EGLImage source. Must be | | |
+ | | part of the complete texture| | |
+ | | object <buffer> | | |
+ +----------------------------+------------------------------+----------------------------+---------+
+
+
+ Insert the following text after paragraph 3 ("If <target> is
+ NATIVE_PIXMAP_KHR...") of Section 2.5.1 (EGLImage Specification)
+
+ "If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_3D_KHR,
+ EGL_GL_RENDERBUFFER_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR, or
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR,
+ <dpy> must be a valid EGLDisplay,
+ and <ctx> must be a valid GL API context on that display.
+
+ If <target> is EGL_GL_TEXTURE_2D_KHR, <buffer> must be the name of a
+ nonzero, GL_TEXTURE_2D target texture object, cast into
+ the type EGLClientBuffer. <attr_list> should specify the mipmap level
+ which will be used as the EGLImage source (EGL_GL_TEXTURE_LEVEL_KHR); the
+ specified mipmap level must be part of <buffer>. If not specified, the
+ default value listed in Table bbb will be used, instead. Additional
+ values specified in <attr_list> are ignored. The texture must be complete
+ unless the mipmap level to be used is 0, the texture has mipmap level 0
+ specified, and no other mipmap levels are specified.
+
+ If <target> is one of the EGL_GL_TEXTURE_CUBE_MAP_* enumerants, <buffer>
+ must be the name of a cube-complete, nonzero, GL_TEXTURE_CUBE_MAP (or
+ equivalent in GL extensions) target texture object, cast into the type
+ EGLClientBuffer. <attr_list> should specify the mipmap level which will
+ be used as the EGLImage source (EGL_GL_TEXTURE_LEVEL_KHR); the specified
+ mipmap level must be part of <buffer>. If not specified, the default
+ value listed in Table bbb will be used, instead. Additional values
+ specified in <attr_list> are ignored. The texture must be cube-complete
+ unless the mipmap level to be used is 0, the texture has mipmap level 0
+ specified for all faces, and no other mipmap levels are specified for any
+ faces.
+
+ If <target> is EGL_GL_TEXTURE_3D_KHR, <buffer> must be the name of a
+ complete, nonzero, GL_TEXTURE_3D (or equivalent in GL extensions) target
+ texture object, cast
+ into the type EGLClientBuffer. <attr_list> should specify the mipmap
+ level (EGL_GL_TEXTURE_LEVEL_KHR) and z-offset (EGL_GL_TEXTURE_ZOFFSET_KHR)
+ which will be used as the EGLImage source; the specified mipmap level must
+ be part of <buffer>, and the specified z-offset must be smaller than the
+ depth of the specified mipmap level. If a value is not specified, the
+ default value listed in Table bbb will be used, instead. Additional
+ values specified in <attr_list> are ignored. The texture must be
+ complete unless the mipmap level to be used is 0, the texture has mipmap
+ level 0 specified, and no other mipmap levels are specified.
+
+ If <target> is EGL_GL_RENDERBUFFER_KHR, <buffer> must be the name of a
+ complete, nonzero, non-multisampled GL_RENDERBUFFER (or equivalent in
+ extensions) target object, cast into the type EGLClientBuffer. Values
+ specified in <attr_list> are ignored."
+
+ Add the following errors to the end of the list in Section 2.5.1 (EGLImage
+ Specification):
+
+ " * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <dpy> is not a
+ valid EGLDisplay, the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <ctx> is not a
+ valid EGLContext, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <ctx> is not a
+ valid GL context, or does not match the <dpy>, the error
+ EGL_BAD_MATCH is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR
+ or EGL_GL_TEXTURE_3D_KHR and <buffer> is not the name of a
+ texture object of type <target>, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_GL_RENDERBUFFER_KHR and <buffer> is not the
+ name of a renderbuffer object, or if <buffer> is the name of a
+ multisampled renderbuffer object, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is nonzero, <target> is
+ EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR or
+ EGL_GL_TEXTURE_3D_KHR, and <buffer> is not the name of a complete
+ GL texture object, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR or
+ EGL_GL_TEXTURE_3D_KHR, <buffer> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_2D_KHR or EGL_GL_TEXTURE_3D_KHR, <buffer> is not
+ the name of a complete GL texture object, and mipmap level 0 is
+ not specified, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_CUBE_MAP_*_KHR, <buffer> is not the name of a
+ complete GL texture object, and one or more faces do not have
+ mipmap level 0 specified, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_*_KHR, EGL_GL_RENDERBUFFER_KHR or
+ EGL_GL_TEXTURE_3D_KHR and <buffer> refers to the default GL
+ texture object (0) for the corresponding GL target, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ or EGL_GL_TEXTURE_3D_KHR, and the value specified in <attr_list>
+ for EGL_GL_TEXTURE_LEVEL_KHR is not a valid mipmap level for the
+ specified GL texture object <buffer>, the error EGL_BAD_MATCH is
+ generated.
+
+ * If <target> is EGL_GL_TEXTURE_3D_KHR, and the value specified in
+ <attr_list> for EGL_GL_TEXTURE_ZOFFSET_KHR exceeds the depth
+ of the specified mipmap level-of-detail in <buffer>, the error
+ EGL_BAD_PARAMETER is generated."
+
+
+Issues
+
+ 1. What should happen if an application attempts to create an
+ EGLImage from a default OpenGL object (i.e., objects with
+ a name of 0)?
+
+ SUGGESTION: Disallow this operation, and generate an error.
+
+ 2. What happens when one of
+ glTexImage2D
+ glCopyTexImage2D
+ glCompressedTexImage2D
+ glTexImage3D
+ glCopyTexImage3D
+ glCompressedTexImage3D
+ is called on a texture which has a mipmap level which is an EGLImage
+ sibling?
+
+ RESOLVED: the EGLImage sibling is orphaned. The mipmap level and the
+ EGLImage no longer have any connection.
+
+ 3. What happens when one of
+ glTexSubImage2D
+ glCopyTexSubImage2D
+ glCompressedTexSubImage2D
+ glTexSubImage3D
+ glCopyTexSubImage3D
+ glCompressedTexSubImage3D
+ is called on a texture which has a mipmap level which is an EGLImage
+ sibling?
+
+ RESOLVED: the EGLImage sibling is NOT orphaned. The mipmap level
+ remains an EGLImage sibling.
+
+ 4. What happens when glGenerateMipmaps is called on a texture which has a
+ mipmap level which is an EGLImage sibling?
+
+ RESOLVED: If the texture is already complete, then the EGLImage
+ sibling is not orphaned, and the mipmap level remains an EGLImage
+ sibling. However, if the texture was not complete then the
+ EGLImage sibling IS orphaned. This is because the implementation
+ will implicitly alter the structure of the mipmap levels.
+
+ 5. What happens when the GL_GENERATE_MIPMAP bit causes a texture to be
+ respecified.
+
+ RESOLVED: If the texture is already complete, then the EGLImage
+ sibling is not orphaned, and the mipmap level remains an EGLImage
+ sibling. However, if the texture was not complete then the
+ EGLImage sibling IS orphaned. This is because the implementation
+ will implicitly alter the structure of the mipmap levels.
+
+ 6. Can an EGLImage be created from a multisampled GL image?
+
+ RESOLVED: NO. Attempting to create an EGLImage from a multisampled
+ GL renderbuffer is now an error. Attempting to create from a
+ multisampled OpenGL texture image is not possible because none of
+ the multisampled <target>s are supported.
+
+ 7. Are all types of two-dimensional GL images which might
+ be associated with EGLImages allowed?
+
+ Not yet. We could add new variants of these extensions to support
+ other image types such as rectangular and 2D array slice textures,
+ but haven't yet seen a need to do so.
+
+Revision History
+
+#13 (Jon Leech, October 9, 2013) - Define interactions with and support for
+ OpenGL and OpenGL ES 3.0, in addition to OpenGL ES 1/2. Add issue 7 (Bug
+ 10728).
+#12 (Jon Leech, September 16, 2013) - Add error when specifying a
+ renderbuffer <target> and passing a multisampled renderbuffer object.
+ Add issue 6 describing lack of support for multisampled EGLImages (Bug
+ 10728).
+#11 (Jon Leech, June 26, 2013) - Add error when specifying a renderbuffer
+ <target> and not passing a renderbuffer object (Bug 10384).
+#10 (Jon Leech, June 13, 2013) - Add a "Valid Targets" column to table bbb
+ for new attributes, matching proposed changes in EGL_KHR_image_base (Bug
+ 10151).
+#9 (Jon Leech, March 28, 2012)
+ - Fix spelling of *CUBE_MAP* tokens (from CUBEMAP) to agree with
+ eglext.h.
+#8 (Jon Leech, February 4, 2009)
+ - Change "non-default ... texture object" to "nonzero".
+#7 (Bruce Merry, January 20, 2009)
+ - Minor wording improvements on issues 4 and 5.
+#6 (Acorn Pooley, January 13, 2009)
+ - Modify completion requirement so textures with only mipmap level 0 can
+ be EGLImage source siblings. Add issues 2-5.
+#5 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#4 (Jon Leech, April 7, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#3 (December 14, 2006)
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - formatting to keep within 80 columns
+ - added error condition descriptions for <dpy> and <ctx>
+ - changed error condition for EGL_GL_TEXTURE_ZOFFSET_KHR too big to
+ be EGL_BAD_PARAMETER
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt
new file mode 100644
index 0000000..430f537
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt
@@ -0,0 +1,140 @@
+Name
+
+ KHR_image
+
+Name Strings
+
+ EGL_KHR_image
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+ Rewritten in terms of split functionality in KHR_image_base and
+ KHR_image_pixmap, approved by the Khronos Technical Working Group
+ on November 19, 2008.
+
+Version
+
+ Version 11, November 12, 2008
+
+Number
+
+ EGL Extension #3
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ An EGL client API, such as OpenGL ES or OpenVG, is required.
+
+ The specifications of EGL_KHR_image_base and EGL_KHR_image_pixmap are
+ required to determine the specification of this extension, although
+ those extentions may not be supported.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension defines a new EGL resource type that is suitable for
+ sharing 2D arrays of image data between client APIs, the EGLImage,
+ and allows creating EGLImages from EGL native pixmaps.
+
+New Types
+
+ As defined by EGL_KHR_image_base.
+
+New Procedures and Functions
+
+ As defined by EGL_KHR_image_base.
+
+New Tokens
+
+ As defined by EGL_KHR_image_base and EGL_KHR_image_pixmap, with the
+ exception that EGL_IMAGE_PRESERVED_KHR is not defined by this
+ extension.
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ EGL_KHR_image is equivalent to the combination of the functionality
+ defined by EGL_KHR_image_base and EGL_KHR_image_pixmap, with the
+ exception that if EGL_KHR_image is supported and EGL_KHR_image_base
+ is not, the attribute EGL_IMAGE_PRESERVED_KHR is not accepted in
+ <attrib_list>, However, the default value of this attribute is still
+ EGL_FALSE. In this situation, image preservation is always disabled.
+
+Issues
+
+ None (but see the issues lists for EGL_KHR_image_base and
+ EGL_KHR_image_pixmap).
+
+Revision History
+
+#11 (Jon Leech, November 12, 2008)
+ - Clarified image preservation behavior when using this extension.
+#10 (Jon Leech, October 22, 2008)
+ - Update description of interactions with EGL_KHR_image_base now
+ that the default value of EGL_IMAGE_PRESERVED_KHR is always FALSE.
+#9 (Jon Leech, October 21, 2008)
+ - Split functionality into new extensions EGL_KHR_image_base and
+ EGL_KHR_image_pixmap, and defined legacy non-preserved image behavior
+ when this extension is supported.
+#8 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#7 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#6 (Jon Leech, April 5, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#5 (Jon Leech, February 26, 2007)
+ - Add eglCreateImageKHR error if native pixmaps are not supported by
+ EGL.
+#4 (December 14, 2006)
+ - Replaced EGL_OUT_OF_MEMORY error with EGL_BAD_ALLOC
+ - add "egl" and "EGL" to names to be consistant with spec
+ - formatting to keep within 80 columns
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - clarified some unclear error cases
+ - added some new error cases related to <dpy> and <ctx>
+ - add <dpy> param to eglCreateImageKHR and eglDestroyImageKHR
+#3 (November 27, 2006)
+ - Converted OES token to KHR token
+#2 (October 20, 2006)
+ - Split out API-specific image source types (VG, GL, etc.) into
+ individual extensions.
+ - Merged CreateImage2DOES and CreateImage3DOES functions into
+ a single CreateImageOES function with an attribute-value list.
+ - Removed the minimum requirements section (2.5.3), since this
+ doesn't make sense without the client-API specific extensions.
+ The minimum requirements should be migrated to the client-API
+ specific extension specifications.
+ - Added EGL_NO_IMAGE_OES default object, used as return value for
+ CreateImage*OES functions in the event of error conditions.
+ - Reworded issue 5, to clarify that the buffer sub-object (i.e.,
+ the unique resource specified by <ctx>, <target>, <buffer>,
+ and <attrib_list>) specified in CreateImage may not already be
+ an EGLImage sibling (either EGLImage source or EGLImage target).
+#1 Original release
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt
new file mode 100644
index 0000000..e6a7fb6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt
@@ -0,0 +1,755 @@
+Name
+
+ KHR_image_base
+
+Name Strings
+
+ EGL_KHR_image_base
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Functionality approved (as part of KHR_image) by the
+ Khronos Board of Promoters on February 11, 2008.
+
+ Split into KHR_image_base and KHR_image_pixmap approved by the
+ Khronos Technical Working Group on November 19, 2008. Update to
+ version 5 approved on December 10, 2008.
+
+Version
+
+ Version 8, August 27, 2014
+
+Number
+
+ EGL Extension #8
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ An EGL client API, such as OpenGL ES or OpenVG, is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension defines a new EGL resource type that is suitable for
+ sharing 2D arrays of image data between client APIs, the EGLImage.
+ Although the intended purpose is sharing 2D image data, the
+ underlying interface makes no assumptions about the format or
+ purpose of the resource being shared, leaving those decisions to
+ the application and associated client APIs.
+
+Glossary
+
+ EGLImage: An opaque handle to a shared resource created by EGL
+ client APIs, presumably a 2D array of image data
+
+ EGLImage source: An object or sub-object originally created in
+ a client API (such as a mipmap level of a texture object
+ in OpenGL-ES, or a VGImage in OpenVG) which is used as
+ the <buffer> parameter in a call to eglCreateImageKHR.
+
+ EGLImage target: An object created in a client API (such as a
+ texture object in OpenGL-ES or a VGImage in OpenVG)
+ from a previously-created EGLImage
+
+ EGLImage sibling: The set of all EGLImage targets (in all
+ client API contexts) which are created from the
+ same EGLImage object, and the EGLImage source resouce
+ which was used to create that EGLImage.
+
+ Orphaning: The process of respecifying and/or deleting an EGLImage
+ sibling resource (inside a client API context) which
+ does not result in deallocation of the memory associated
+ with the EGLImage or affect rendering results using other
+ EGLImage siblings.
+
+ Referencing: The process of creating an EGLImage target resource
+ (inside a client API context) from an EGLImage.
+
+ Respecification: When the size, format, or other attributes of an
+ EGLImage sibling are changed via client API calls such as
+ gl*TexImage*. Respecification usually will result in
+ orphaning the sibling. Note that changing the pixel values of
+ the sibling (e.g. by rendering to it or by calling
+ gl*TexSubImage*) does not constitute respecification.
+
+New Types
+
+ /*
+ * EGLImageKHR is an object which can be used to create EGLImage
+ * target resources (inside client APIs).
+ */
+ typedef void* EGLImageKHR;
+
+New Procedures and Functions
+
+ EGLImageKHR eglCreateImageKHR(
+ EGLDisplay dpy,
+ EGLContext ctx,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint *attrib_list)
+
+ EGLBoolean eglDestroyImageKHR(
+ EGLDisplay dpy,
+ EGLImageKHR image)
+
+New Tokens
+
+ Returned by eglCreateImageKHR:
+
+ EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_IMAGE_PRESERVED_KHR 0x30D2
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add a new section "EGLImages" after section 2.4:
+
+ "2.5 EGLImages
+
+ As described in section 2.4, EGL allows contexts of the same client
+ API type to share significant amounts of state (such as OpenGL-ES
+ texture objects and OpenVG paths); however, in some cases it may
+ be desirable to share state between client APIs - an example would be
+ using a previously-rendered OpenVG image as an OpenGL-ES texture
+ object.
+
+ In order to facilitate these more complicated use-cases, EGL is capable
+ of creating EGL resources that can be shared between contexts of
+ different client APIs (called "EGLImages") from client API resources
+ such as texel arrays in OpenGL-ES texture objects or OpenVG VGImages
+ (collectively, the resources that are used to create EGLImages are
+ referred to as "EGLImage sources").
+
+ The EGL client APIs each provide mechanisms for creating appropriate
+ resource types (such as complete texture arrays or OpenVG VGImages) from
+ EGLImages through a API-specific mechanisms. Collectively, resources
+ which are created from EGLImages within client APIs are referred to as
+ "EGLImage targets." Each EGLImage may have multiple associated EGLImage
+ targets. Collectively, the EGLImage source and EGLImage targets
+ associated with an EGLImage object are referred to as "EGLImage
+ siblings."
+
+ 2.5.1 EGLImage Specification
+
+ The command
+
+ EGLImageKHR eglCreateImageKHR(
+ EGLDisplay dpy,
+ EGLContext ctx,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint *attrib_list)
+
+ is used to create an EGLImage from an existing image resource <buffer>.
+ <dpy> specifies the EGL display used for this operation.
+ <ctx> specifies the EGL client API context
+ used for this operation, or EGL_NO_CONTEXT if a client API context is not
+ required. <target> specifies the type of resource being used as the
+ EGLImage source (examples include two-dimensional textures in OpenGL ES
+ contexts and VGImage objects in OpenVG contexts). <buffer> is the name
+ (or handle) of a resource to be used as the EGLImage source, cast into the
+ type EGLClientBuffer. <attrib_list> is an list of attribute-value pairs
+ which is used to select sub-sections of <buffer> for use as the EGLImage
+ source, such as mipmap levels for OpenGL ES texture map resources, as well as
+ behavioral options, such as whether to preserve pixel data during creation. If
+ <attrib_list> is non-NULL, the last attribute specified in the list must
+ be EGL_NONE.
+
+ The resource specified by <dpy>, <ctx>, <target>, <buffer>, and
+ <attrib_list> must not itself be an EGLImage sibling, or bound to an EGL
+ PBuffer resource (eglBindTexImage, eglCreatePbufferFromClientBuffer).
+
+ Values accepted for <target> are listed in Table aaa, below(fn1).
+ (fn1) No values are defined by this extension. All functionality
+ to create EGLImages from other types of resources, such as
+ native pixmaps, GL textures, and VGImages, is layered in other
+ extensions.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ Attribute names accepted in <attrib_list> are shown in Table bbb,
+ together with the <target> for which each attribute name is valid, and
+ the default value used for each attribute if it is not included in
+ <attrib_list>.
+
+ +-------------------------+----------------------+-----------+---------------+
+ | Attribute | Description | Valid | Default Value |
+ | | | <target>s | |
+ +-------------------------+----------------------+-----------+---------------+
+ | EGL_NONE | Marks the end of the | All | N/A |
+ | | attribute-value list | | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | All | EGL_FALSE |
+ | | pixel data | | |
+ +-------------------------+----------------------+-----------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ This command returns an EGLImageKHR object corresponding to the image
+ data specified by <dpy>, <ctx>, <target>, <buffer> and <attrib_list> which
+ may be referenced by client API operations, or EGL_NO_IMAGE_KHR in the
+ event of an error.
+
+ If the value of attribute EGL_IMAGE_PRESERVED_KHR is EGL_FALSE (the
+ default), then all pixel data values associated with <buffer> will be
+ undefined after eglCreateImageKHR returns.
+
+ If the value of attribute EGL_IMAGE_PRESERVED_KHR is EGL_TRUE, then all
+ pixel data values associated with <buffer> are preserved.
+
+ Errors
+
+ If eglCreateImageKHR fails, EGL_NO_IMAGE_KHR will be returned, the
+ contents of <buffer> will be unaffected, and one of the following
+ errors will be generated:
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <ctx> is neither the handle of a valid EGLContext object on
+ <dpy> nor EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is
+ generated.
+
+ * If <target> is not one of the values in Table aaa, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If an attribute specified in <attrib_list> is not one of the
+ attributes listed in Table bbb, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If an attribute specified in <attrib_list> is not a valid attribute
+ for <target>, as shown in Table bbb, the error EGL_BAD_MATCH is
+ generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> has an off-screen buffer bound to it (e.g., by a
+ previous call to eglBindTexImage), the error EGL_BAD_ACCESS is
+ generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> is bound to an off-screen buffer (e.g., by a previous
+ call to eglCreatePbufferFromClientBuffer), the error
+ EGL_BAD_ACCESS is generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> is itself an EGLImage sibling, the error
+ EGL_BAD_ACCESS is generated.
+
+ * If insufficient memory is available to complete the specified
+ operation, the error EGL_BAD_ALLOC is generated.
+
+ * If the call to eglCreateImageKHR fails for multiple reasons, the
+ generated error must be appropriate for one of the reasons,
+ although the specific error returned is undefined.
+
+ * If the value specified in <attrib_list> for EGL_IMAGE_PRESERVED_KHR
+ is EGL_TRUE, and an EGLImageKHR handle cannot be created from the
+ specified resource such that the pixel data values in <buffer> are
+ preserved, the error EGL_BAD_ACCESS is generated.
+
+ Note that the success or failure of eglCreateImageKHR should not affect
+ the ability to use <buffer> in its original API context (or context
+ share group) (although the pixel data values will be undefined if
+ EGL_IMAGE_PRESERVED_KHR is not EGL_TRUE).
+
+ 2.5.2 Lifetime and Usage of EGLImages
+
+ Once an EGLImage is created from an EGLImage source, the memory associated
+ with the EGLImage source will remain allocated (and all EGLImage siblings
+ in all client API contexts will be useable) as long as either of the
+ following conditions is true:
+ A) Any EGLImage siblings exist in any client API context
+ B) The EGLImage object exists inside EGL
+
+ The semantics for specifying, deleting and using EGLImage siblings are
+ client API-specific, and are described in the appropriate API
+ specifications.
+
+ If an application specifies an EGLImage sibling as the destination for
+ rendering and/or pixel download operations (e.g., as an OpenGL-ES
+ framebuffer object, glTexSubImage2D, etc.), the modified image results
+ will be observed by all EGLImage siblings in all client API contexts.
+ If multiple client API contexts access EGLImage sibling resources
+ simultaneously, with one or more context modifying the image data,
+ rendering results in all contexts accessing EGLImage siblings are
+ undefined.
+
+ Respecification and/or deletion of any EGLImage sibling (i.e., both
+ EGLImage source and EGLImage target resources) inside a client API
+ context (e.g., by issuing a subsequent call to
+ gl{Copy,Compressed}TexImage, glDeleteTextures, with the EGLImage
+ sibling resource as the target of the operation) affects only that
+ client API context and other contexts within its share group. The
+ specific semantics for this behavior are defined by each client API,
+ and generally results in orphaning of the EGLImage, and may also
+ include allocation of additional memory for the respecified resource
+ and/or copying of the EGLImage pixel data.
+
+ Operations inside EGL or any client API context which may affect the
+ lifetime of an EGLImage (or the memory allocated for the EGLImage),
+ such as respecifying and/or deleting an EGLImage sibling inside a
+ client API context, must be atomic.
+
+ Applications may create client API resources from an EGLImageKHR using
+ client API extensions outside the scope of this document (such as
+ GL_OES_EGL_image, which creates OpenGL ES texture and renderbuffer
+ objects). If the EGLImageKHR used to create the client resource was
+ created with the EGL_IMAGE_PRESERVED_KHR attribute set to EGL_TRUE, then
+ the pixel data values associated with the image will be preserved after
+ creating the client resource; otherwise, the pixel data values will be
+ undefined. If the EGLImageKHR was created with the
+ EGL_IMAGE_PRESERVED_KHR attribute set to EGL_TRUE, and EGL is unable to
+ create the client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+
+ The command
+
+ EGLBoolean eglDestroyImageKHR(
+ EGLDisplay dpy,
+ EGLImageKHR image)
+
+ is used to destroy the specified EGLImageKHR object <image>. Once
+ destroyed, <image> may not be used to create any additional EGLImage
+ target resources within any client API contexts, although existing
+ EGLImage siblings may continue to be used. EGL_TRUE is returned
+ if DestroyImageKHR succeeds, EGL_FALSE indicates failure.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <image> is not a valid EGLImageKHR object created with respect
+ to <dpy>, the error EGL_BAD_PARAMETER is generated."
+
+ Add a new error to the list at the bottom of Section 3.5.3 (Binding
+ Off-Screen Rendering Surfaces to Client Buffers):
+
+ "* If the buffers contained in <buffer> consist of any EGLImage
+ siblings, an EGL_BAD_ACCESS error is generated."
+
+Issues
+
+ 1. What resource types should be supported by this extension?
+
+ RESOLVED: This specification is designed to support the
+ sharing of two-dimensional image resources between client APIs,
+ as these resources are a fundamental component of all modern
+ graphics APIs.
+
+ Other resources types (e.g., buffer objects) will not be directly
+ supported by this specification, due to a variety of reasons:
+
+ a. An absense of use cases for this functionality
+ b. Handling the semantics for some of these resources
+ (e.g., glMapBuffer) would significantly complicate
+ and delay this specification.
+ c. A desire to address the image-sharing use cases
+ as quickly as possible.
+
+ Should additional resource-sharing functionality be desired
+ in the future, the framework provided by this specification
+ should be extendable to handle more general resource
+ sharing.
+
+ 2. Should this specification address client API-specific resources
+ (OpenGL texture maps, OpenVG VGImages), or should that
+ functionality be provided by layered extensions?
+
+ SUGGESTION: Use layered extensions, even for for sharing image
+ data with native rendering APIs (the EGL_KHR_image_pixmap
+ extension).
+
+ There are two major arguments for using layered extensions:
+
+ 1. The two client APIs which are defined at the time of this
+ specification (OpenVG, OpenGL ES) may not always be
+ deployed on a device; many devices may choose to implement
+ just one of these two APIs. However, even single-API
+ devices may benefit from the ability to share image data
+ with native rendering APIs (provided in this specification)
+ or with the OpenMAX API.
+
+ 2. OpenGL ES defines a number of optional resource types
+ (cubemaps, renderbuffers, volumetric textures) which this
+ framework should support; however, implementations may not.
+ By layering each of these resource types in individual
+ extensions, implementations which are limited to just the
+ core OpenGL ES 1.1 (or OpenGL ES 2.0) features will not
+ need to add EGLImage enumerant support for unsupported
+ resource types.
+
+ The original EGL_KHR_image extension included native pixmap
+ functionality. We have now split the abstract base functionality
+ (the egl{Create,Destroy}ImageKHR APIs) from the native pixmap
+ functionality, and redefined EGL_KHR_image as the combination of
+ EGL_KHR_image_base and EGL_KHR_image_pixmap.
+
+ 3. Should attributes (width, height, format, etc.) for EGLImages
+ be queriable?
+
+ SUGGESTION: No. Given the wealth of attributes that we would
+ need to specify all possible EGLImages (and possible
+ memory layout optimizations performed by implementations), we
+ can dramatically simplify the API without loss of key
+ functionality by making EGLImages opaque and allowing
+ implementations to make the correct decisions internally.
+
+ 4. Should this specification allow the creation of EGLImages from
+ client API resources which are themselves EGLImage targets?
+
+ RESOLVED: No. This can make memory garbage collection and
+ reference counting more difficult, with no practical benefit.
+ Instead, generate an error if an application attempts to
+ create an EGLImage from an EGLImage target resource.
+
+ 5. Should this specification allow multiple EGLImages to be created
+ from the same EGLImage source resource?
+
+ RESOLVED: No. The resource <buffer> specified to
+ eglCreateImageKHR may include multiple sub-objects; examples are
+ mipmapped images and cubemaps in the OpenGL-ES API. However, the
+ EGLImage source is defined as the specific sub-object that is defined
+ by: <ctx>, <target>, <buffer>, and <attrib_list>. This sub-object must
+ not be an EGLImage sibling (either EGLImage source or EGLImage target)
+ when eglCreateImageKHR is called; however, other sub-objects in
+ <buffer> may be EGLImage siblings. This allows applications to share
+ individual cubemap faces, or individual mipmap levels of detail across
+ all of the supported APIs.
+
+ Note that the EGLImage source and any EGLImage target resources
+ will still be EGLImage siblings, even if the EGLImage object
+ is destroyed by a call to DestroyImageKHR.
+
+ 6. If an EGLImage sibling is respecified (or deleted), what
+ should happen to the EGLImage and any other EGLImage
+ siblings?
+
+ RESOLVED: The principle of least surprise would dictate that
+ respecification and/or deletion of a resource in one client API
+ should not adversely affect operation in other client APIs
+ (such as introducing errors).
+
+ Applying this to EGLImages, respecification and/or deletion
+ of one EGLImage sibling should not respecify/delete other
+ EGLImage siblings. Each client API will be responsible for
+ defining appropriate semantics to meet this restriction;
+ however, example behaviors may include one or more of:
+ allocating additional memory for the respecified resource,
+ deleting the EGLImage sibling resource without deallocating
+ the associated memory ("orphaning") and/or copying the
+ existing EGLImage pixel data to an alternate memory location.
+
+ The memory associated with EGLImage objects should remain
+ allocated as long as any EGLImage sibling resources exist
+ in any client API context.
+
+ 7. Should this specification address synchronization issues
+ when multiple client API contexts simultaneously access EGLImage
+ sibling resources?
+
+ RESOLVED: No. Including error-producing lock and synchronization
+ semantics would introduce additional (undesirable) validation
+ overhead in numerous common operations (e.g., glBindTexture,
+ glDrawArrays, etc.). Rather than burdening implementations (and
+ applications) with this overhead, a separate synchronization
+ mechanism should be exposed to applications.
+
+ 8. Should eglCreatePbufferFromClientBuffer accept buffer parameters
+ which are EGLImage siblings?
+
+ RESOLVED: No. Allowing this behavior creates very complex
+ circular dependency possibilities (CreateImage / DeriveImage /
+ CreatePbufferFromClientBuffer / BindTexImage /
+ CreateImage / ...) with no practical benefit. Therefore,
+ attempting to create a Pbuffer from a client buffer which
+ is an EGLImage sibling should generate an error.
+
+ 9. Should CreateImage accept client buffers which are bound to
+ Pbuffers (through eglBindTexImage)?
+
+ RESOLVED: No, for the same reasons listed in Issue 8.
+
+ 10. Should implementations be allowed to modify the pixel data in the
+ EGLImage source buffers specified to eglCreateImageKHR?
+
+ SUGGESTION: By allowing previously-existing image data to become
+ undefined after calls to eglCreateImageKHR, implementations are able
+ to perform any necessary reallocations required for cross-API
+ buffer compatibility (and/or performance), without requiring
+ copy-aside functionality. Because applications are able to
+ respecify the pixel data through mechanisms such as vgSubImage
+ and glTexSubImage, no use-cases are restricted by this.
+
+ Therefore, the current suggestion is to allow implementations
+ to leave pixel data undefined after calls to eglCreateImageKHR
+ functions. The current spec revision has been written in
+ this way.
+
+ 11. What is the correct mechanism for specifying the EGLImage source
+ resources used to create an EGLImage object?
+
+ RESOLVED: Three different mechanisms were discussed while
+ defining this extension:
+
+ A) Providing resource-specific creation functions, such as
+ eglCreateImage2DKHR, eglCreateImage3DKHR, etc.
+
+ B) Providing a single creation function which returns a
+ "NULL" EGLImage object, and requiring client APIs to
+ define additional functions which would allow client API
+ resources to be "bound" to the EGLImage object.
+
+ C) Provide a single resource creation function, and use
+ an attribute-value list with attributes specific to the
+ "target" image resource.
+
+ Initial specifications were written using Option (A); however,
+ it was believed that this structure would result in an increase
+ in the number of entry points over time as additional client APIs
+ and client API resource targets were added. Furthermore, reuse
+ of these functions was resulting in cases where parameters were
+ required to have modal behavior: a 2D image creation function
+ was required to have a mipmap level of detail parameter for
+ OpenGL ES texture maps, but this same parameter would need to be
+ 0 for OpenVG.
+
+ Option (B) provided some nice characteristics: as client APIs
+ continue to evolve, any extensions needed to allow EGLImage
+ creation could be isolated in the individual client API, rather
+ than necessitating an EGL extension. However, the creation of
+ "NULL" images created additional semantic complexity and error
+ conditions (e.g., attempting to derive an EGLImage target from a
+ "NULL" image), and every client API would need to provide a
+ function for every unique resource type; instead of one common
+ API function for pixmap, OpenGL 2D textures, and OpenVG VGImages,
+ three would be required.
+
+ This specification is written using Option (C). There is a
+ single CreateImage function, with a <target> parameter defining
+ the EGLImage source type, and an attribute-value list allowing
+ for additional selection of resource sub-sections. This
+ maximizes entry-point reuse, and minimizes the number of
+ redundant parameters an application may be required to send.
+ This framework allows for layered extensions to be easily
+ written, so little churn is expected as client APIs evolve.
+
+ 12. Should a context be explicitly provided to eglCreateImageKHR,
+ or should the context be deduced from the current thread's
+ bound API?
+
+ SUGGESTION: For clarity (both in usage and spec language), the
+ context containing the EGLImage source should be provided by the
+ application, rather than inferring the context from EGL state.
+
+ 13. Why does this extension define a new EGL object type, rather
+ than using the existing EGLSurface objects?
+
+ RESOLVED: Although controversial, the creation of a new,
+ opaque image object type removes several fundamental problems
+ with the EGLSurface (and Pbuffer) API:
+
+ 1) The tight compatibility requirements of EGLSurfaces
+ and EGLConfigs necessitated applications creating
+ (and calling MakeCurrent) for every unique pixel
+ format used during rendering. This has already caused
+ noticeable performance problems in OpenGL-ES (and
+ desktop OpenGL), and is the primary reason that
+ framebuffer objects were created.
+
+ 2) Application use-cases are centered around sharing of
+ color image data, although unique "sundry" buffers
+ (such as depth, stencil and alpha mask) may be used
+ in each client API.
+
+ 3) Extending the CreatePbuffer interface to support fully-
+ specifying all possible buffer attributes in all client
+ APIs will become unwieldy, particularly as new EGL
+ client APIs and pixel formats are introduced.
+
+ The EGLImage proposal addresses all three of these restrictions:
+
+ 1) is addressed by placing the burden of framebuffer management
+ inside the client API, and allowing EGLImages to be accessed
+ inside client APIs using an appropriate resource type (such
+ as OpenGL-ES renderbuffers). This follows the example provided
+ by the GL_OES_framebuffer_object specification.
+
+ 2) is addressed by defining EGLImages to be "trivial" two-
+ dimensional arrays of pixel data. Implementations may choose
+ to support creation of EGLImages from any type of pixel data,
+ and the association of multiple EGLImages and/or sundry
+ buffers into a single framebuffer is the responsibility of the
+ application and client API, using a mechanism such as
+ GL_OES_framebuffer_object.
+
+ 3) is addressed by defining EGLImages as opaque and
+ non-queriable. Although this introduces potential portability
+ problems (addressed separately in issue 15), it avoids the
+ ever-expanding problem of defining buffer compatibility as the
+ cartesian product of all possible buffer attributes.
+
+ 14. Since referencing EGLImages is the responsibility of the client
+ API, and may fail for implementation-dependent reasons,
+ doesn't this result in a potential portability problem?
+
+ UNRESOLVED: Yes, this portability problem (where referencing
+ succeeds on one platform but generates errors on a different
+ one) is very similar to the implementation-dependent
+ failure introduced in the EXT_framebuffer_object specification,
+ discussed (at length) in Issues (12), (37), (46), (48) and (61)
+ of that specification. Similar to that specification, this
+ specification should include some "minimum requirements"
+ language for EGLImage creation and referencing.
+
+ Since there are numerous references to an upcoming
+ "format restriction" API in the EXT_framebuffer_object
+ specification, it may be valuable to wait until that API is
+ defined before attempting to define a similar API for
+ EGLImages.
+
+ 15. Should creation of an EGLImage from an EGLImage source
+ introduce the possibility for errors in the EGLImage source's
+ owning context?
+
+ RESOLVED: No; although image data may be undefined (issue 11),
+ the (successful or unsuccessful) creation of an EGLImage should
+ not introduce additional error conditions in the EGLImage
+ source's owning context. Text added to the end of section
+ 2.5.1 describing this.
+
+ 16. Is it reasonable to require that when a preserved EGLImage is
+ used by layered extensions to create client API siblings of that
+ image, pixel data values are preserved?
+
+ UNRESOLVED: There are at least two extensions that reference
+ EGLImages to create EGLImage targets, VG_KHR_EGL_image and
+ GL_OES_EGL_image.
+
+ Each of these extensions makes provision for failing the creation of
+ the EGLImage target due to "an implementation-dependent reason".
+ This could include that the pixel data has been marked as preserved,
+ and that the implementation is not able to create the EGLImage
+ target without causing the pixel data of the original EGLImage
+ source <buffer> to become undefined.
+
+ Issue 14 of EGL_KHR_image also discusses the consequences of failure
+ for implementation-dependent reasons. This implies that all
+ extensions for referencing an EGLImage need to make provision for
+ implementation-dependent failure.
+
+ PROPOSED: Yes, this is reasonable. We should add "EGL_KHR_image_base
+ affects the behavior of this extension" sections to the ES and VG
+ extensions. Implementations can continue to export EGL_KHR_image if
+ they are unable to support preserved image functionality.
+
+ 17. Do EGLImage Target creation extensions such as VG_KHR_EGL_image and
+ GL_OES_EGL_image also need to be extended?
+
+ UNRESOLVED: The problem here is that both these extensions
+ explicitly state that pixel data becomes undefined when they
+ reference an EGLImage to create an EGLImage target.
+
+ One solution would be to allow this extension to do the defining on
+ behalf of these extensions. For example, the VG_KHR_EGL_image
+ extension on its own leaves the status of the pixel data undefined,
+ but when VG_KHR_EGL_image is combined with this extension, then the
+ status becomes defined (by this extension).
+
+ When combined with the reasons given in Issue 1, this means it is
+ possible to leave EGLImage Target creation extensions unchanged.
+
+ PROPOSED: Yes, augment these extensions as described in issue 16.
+
+ 18. Is it reasonable for developers to want to preserve pixel data upon
+ creation of EGLImage and EGLImage targets?
+
+ RESOLVED: Yes. This is necessary for composition implementations
+ using EGLImages as an encapsulation mechanism for moving data
+ between producer application, composition API, and composition
+ implementation(s).
+
+ 19. Should we really change the default value of EGL_IMAGE_PRESERVED_KHR
+ when EGL_KHR_image is supported?
+
+ RESOLVED: No. This is a subtle and hard to diagnose source of
+ errors, and the only way to write a portable app would still be
+ to explicitly specify the attribute value. By making the default
+ value FALSE no matter which of the two extension(s) are
+ supported, compatibility with EGL_KHR_image is preserved, and
+ apps must explicitly ask for preservation if they need it.
+
+ 20. Why is EGL_NO_DISPLAY not supported as the <dpy> argument for
+ creating and destroying images, unlike the original version of the
+ EGL_KHR_image specification?
+
+ RESOLVED: There are no defined use cases for this at present, so
+ there is no way to legally pass in EGL_NO_DISPLAY. If in the future,
+ a layered extension allows creation of images not associated with
+ any display, this behavior can be reintroduced.
+
+
+Revision History
+
+#8 (Jon Leech, August 27, 2014)
+ - Remove leftover comment saying that inapplicable attributes are
+ ignored (Bug 12585).
+
+#7 (Jon Leech, June 12, 2013)
+ - Add a column to table bbb specifying which <target>s attributes are
+ valid for, and a generic error if an attribute doesn't match <target>
+ (Bug 10151).
+
+#6 (Jon Leech, December 1, 2010)
+ - Clarify wording of EGL_BAD_CONTEXT error.
+
+#5 (Jon Leech, December 10, 2008)
+ - Change definition of EGL_NO_IMAGE_KHR to 0 (appropriately cast)
+ instead of a reference to an extern implementation-defined
+ variable.
+
+#4 (Jon Leech, November 25, 2008)
+ - Simplify error conditions for eglDestroyImage.
+
+#3 (Jon Leech, November 12, 2008)
+ - Added glossary entry for Respecification, updated description of
+ behavior with preserved images per suggestions from Acorn, and added
+ issue 20 regarding removal of EGL_NO_DISPLAY as a valid <dpy>.
+
+#2 (Jon Leech, October 22, 2008)
+ - Change default value of EGL_IMAGE_PRESERVED_KHR to EGL_FALSE.
+ Update issue 19.
+
+#1 (Jon Leech, October 21, 2008)
+ - Split abstract functionality from EGL_KHR_image into this extension,
+ and merged preserved image functionality from
+ EGL_SYMBIAN_image_preserved.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt
new file mode 100644
index 0000000..d7f7920
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt
@@ -0,0 +1,158 @@
+Name
+
+ KHR_image_pixmap
+
+Name Strings
+
+ EGL_KHR_image_pixmap
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+ Ray Smith
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Functionality approved (as part of KHR_image) by the
+ Khronos Board of Promoters on February 11, 2008.
+
+ Split into KHR_image_base and KHR_image_pixmap approved by the
+ Khronos Technical Working Group on November 19, 2008.
+
+Version
+
+ Version 5, November 13, 2013
+
+Number
+
+ EGL Extension #9
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ The EGL implementation must define an EGLNativePixmapType (although it
+ is not required either to export any EGLConfigs supporting rendering to
+ native pixmaps, or to support eglCreatePixmapSurface).
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating an EGLImage from a native pixmap
+ image.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+ Rename section 2.2.2.1 "Native Surface Coordinate Systems" to "Native
+ Surface and EGLImage Pixmap Coordinate Systems" and add to the end of
+ the section:
+
+ "EGLImages created with target EGL_NATIVE_PIXMAP_KHR share the same
+ coordinate system as native pixmap surfaces. When that coordinate system
+ is inverted, client APIs must invert their <y> coordinate when accessing
+ such images as described above."
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ | EGL_NATIVE_PIXMAP_KHR | Used for EGLNativePixmapType objects |
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_PIXMAP_KHR, <dpy> must be a valid display, <ctx>
+ must be EGL_NO_CONTEXT; <buffer> must be a handle to a valid
+ NativePixmapType object, cast into the type EGLClientBuffer; and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_PIXMAP_KHR and <buffer> is not a
+ valid native pixmap handle, or if <buffer> is a native pixmap
+ whose color buffer format is incompatible with the system's
+ EGLImage implementation, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <dpy> is not a valid
+ EGLDisplay object the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <ctx> is not EGL_NO_CONTEXT,
+ the error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <buffer> is not a handle
+ to a valid NativePixmapType object, the error EGL_BAD_PARAMETER
+ is generated."
+
+Issues
+
+ 1) Should this specification allow EGLImages to be created from native
+ pixmaps which already have a pixmap surface associated with them, and
+ vice versa?
+
+ RESOLVED: Yes. There are practical usecases for this, and it is
+ already the application's responsibility to handle any format
+ mismatch or synchronization issues that this may allow.
+
+Revision History
+
+#5 (Jon Leech, November 13, 2013)
+ - Add Issue #1 regarding use cases for multiple EGL consumer/producers
+ of a native pixmap (Bug 7779).
+
+#4 (Jon Leech, October 16, 2013)
+ - Add language allowing native pixmap and client API image y coordinate
+ convention to differ. Re-base extension against EGL 1.4 (Bug 9701).
+
+#3 (Jon Leech, November 25, 2008)
+ - Remove dependency on EGLConfig in error conditions.
+
+#2 (Jon Leech, November 12, 2008)
+ - Clarified dependency on EGLNativePixmapType such that pixmap configs
+ and surfaces are not required.
+
+#1 (Jon Leech, October 21, 2008)
+ - Split native pixmap functionality from EGL_KHR_image into a layered
+ extension on EGL_KHR_image_base, and note interaction with the new
+ EGL_IMAGE_PRESERVED_KHR attribute.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt
new file mode 100644
index 0000000..2cab89e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt
@@ -0,0 +1,727 @@
+Name
+
+ KHR_lock_surface
+
+Name Strings
+
+ EGL_KHR_lock_surface
+
+Contributors
+
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension, as well as the layered EGL_KHR_lock_surface2, are
+ obsolete and have been replaced by EGL_KHR_lock_surface3. Khronos
+ recommends implementers who support this extension and lock_surface2
+ also implement lock_surface3, and begin transitioning developers to
+ using that extension. See issue 17 for the reason.
+
+ Complete.
+ Version 17 approved by the Khronos Board of Promoters on
+ February 11, 2008.
+
+Version
+
+ Version 19, October 15, 2013
+
+Number
+
+ EGL Extension #2
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.3
+ Specification.
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+ There is a newer EGL_KHR_lock_surface2 extension which slightly
+ modifies and clarifies the semantics of this extension. Vendors
+ should refer to EGL_KHR_lock_surface2 before deciding to implement
+ only EGL_KHR_lock_surface.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.3 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.3 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... or, a surface is locked)."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE_KHR, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.6. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE_KHR, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done.
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs
+ are supported. It is zero-terminated and contains a
+ space-separated list of API names, which may include
+ ``OpenGL_ES'' if OpenGL ES is supported, and ``OpenVG'' if
+ OpenVG is supported. If no client APIs are supported, then the
+ empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 21:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 22:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 23, describing attributes not used for sorting EGLConfigs.
+
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.6 Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, the color buffer of the surface may be <mapped>,
+ giving a pointer into client memory corresponding to the memory
+ of the mapped buffer, and attributes describing mapped buffers
+ may be queried. Second, the surface may be unlocked. Any
+ attempts to use a locked surface in other EGL APIs will fail and
+ generate an EGL_BAD_ACCESS error.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface (see section 3.5.7) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set. Applications using mapped buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers).]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin, pixel size, and the bit width and location of each color
+ component within a pixel. These attributes may be queried using
+ eglQuerySurface, and are described in more detail in section
+ 3.5.7.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer are
+ invariant and need be queried only once following surface
+ creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, querying eglQuerySurface with
+ <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an EGL
+ error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Add to table 3.5 ("Queryable surface attributes and types")
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between the start of
+ adjacent rows in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction
+ EGL_BITMAP_PIXEL_x_OFFSET_KHR integer Bit location of each color buffer
+ component within a pixel in an MCB.
+
+ Add to the description of eglQuerySurface properties in section
+ 3.5.6 (renumbered to 3.5.7) on page 33:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a 16- (for RGB565 formats) or 32-bit (for RGBA8888
+ formats) integer containing the pixel(fn). If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero.
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE. The size of a pixel in the mapped buffer,
+ in bytes, can be determined by querying the EGL_BUFFER_SIZE
+ attribute of the EGLConfig, rounding up to the nearest multiple
+ of 8, and converting from bits to bytes.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.6). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR and
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6 (renumbered to 3.5.7) on page 34:
+
+ "... If <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails,
+ then an EGL_BAD_ACCESS error is generated."
+
+Issues
+
+ 1) What is the rationale for this extension?
+
+ Software renderers on low-end implementations need an efficient way
+ to draw pixel data to the screen. High-end implementations must
+ support the same interface for compatibility, while not compromising
+ the accelerability of OpenGL ES and OpenVG client APIs using
+ dedicated graphics hardware and memory.
+
+ Using lock/unlock semantics enables low-end implementations to
+ expose pointers directly into display memory (as extremely dangerous
+ as that may be), while high-end implementations may choose to create
+ backing store in client memory when mapping a buffer, and copy it to
+ graphics memory when the surface is unlocked. Making the initial
+ contents of a mapped buffer undefined means that no readbacks from
+ graphics memory are required, avoiding pipeline stalls.
+
+ This extension is not intended to support mixed-mode (client API and
+ software) rendering. Since mapped buffer contents are undefined,
+ unless the buffer is explicitly preserved (which may be unacceptably
+ expensive on many implementations), applications doing software
+ rendering must touch every pixel of mapped buffers at least once
+ before unlocking the surface.
+
+ 2) Do we need to know if locked surfaces are "fast" or "native"?
+
+ RESOLVED: Yes. This is indicated with the EGL_OPTIMAL_FORMAT_BIT_KHR
+ of EGL_SURFACE_TYPE. However, note that there is no way to guarantee
+ what "fast" or "no format conversions" really means; this is little
+ more than an implementation hint.
+
+ 3) Should we be able to map buffers other than the color buffer?
+
+ RESOLVED: Not initially. However, the <attrib_list> parameter of
+ eglLockSurfaceKHR supports this in the future. There is no <buffer>
+ attribute to eglQuerySurface, so such a layered extension would have
+ to either create a new naming convention (such as
+ EGL_BITMAP_{DEPTH,COLOR,STENCIL,ALPHA_MASK}_POINTER), or define an
+ extended query eglQuerySurfaceBuffer() which takes a <buffer>
+ parameter. It would also be tricky to support interleaved depth /
+ stencil formats. But the attribute list offers some future-proofing
+ at low cost.
+
+ 4) What properties of mapped buffers can be queried?
+
+ RESOLVED: A pointer to the buffer and its pitch, both of which may
+ change in successive lock/unlock cycles. These may be queried only
+ while the underlying surface is locked, and are undefined after
+ unlocking. The first query following locking is the point at which
+ actual buffer mapping must occur.
+
+ RESOLVED: Additionally, the pixel size, origin, and color component
+ bitfield size and offset for each component, which are invariant
+ and may be queried at any time.
+
+ 5) How are mode changes indicated? What happens to the mapped
+ buffer during a mode change?
+
+ RESOLVED: UnlockSurfaceKHR fails and raises an error if a mode
+ change occurred while the surface was locked (although the surface
+ still ends up in the unlocked state - this is necessary since
+ there's no way to clear the error!). If a mode change occurs while a
+ buffer is mapped, the implementation must still allow the
+ application to access mapped buffer memory, even though the contents
+ of the mapped buffer may not be reflected in the changed window
+ after unmapping.
+
+ Note: There's no convenient way to indicate mode changes while
+ a surface is unlocked, despite that being useful to tell apps they
+ have to redraw. The problem is that we don't have an event system,
+ and the power management functionality is overkill since the only
+ resources which are likely to be damaged by a mode change are
+ visible window contents. Fortunately, this problem is beyond the
+ scope of this extension.
+
+ 6) Does locking a surface imply mapping its buffers?
+
+ RESOLVED: No. Locking simply places the surface in that state and
+ prevents it from being made current / swapped / etc. Buffers are
+ mapped only when their pointers or pitch are queried using
+ eglQuerySurface.
+
+ An interesting side effect of this resolution is that calling
+ eglLockSurfaceKHR immediately followed by eglUnlockSurfaceKHR DOES
+ NOT CHANGE THE CONTENTS OF BUFFERS, since none of them were mapped.
+ Likewise locking a surface, querying a buffer pointer or pitch, and
+ then unlocking it without changing the mapped buffer contents causes
+ the surface contents of the mapper buffer(s) to become undefined.
+
+ At the Atlanta F2F, there was a suggestion that eglLockSurfaceKHR
+ should immediately map the color buffer and return a pointer to it,
+ on the basis that this would make it harder for applications to
+ mistakenly use an old buffer pointer from a previous mapping cycle.
+ At the same time, people working on more powerful GPUs wanted the
+ lock operation to be lightweight. These are not consistent goals and
+ we have thus far chosen to separate the lightweight locking, and
+ more expensive mapping operations.
+
+ 7) Can buffer contents be preserved in mapping?
+
+ RESOLVED: Yes. The default behavior is to discard / leave undefined
+ the mapped buffer contents, but the EGL_MAP_PRESERVE_PIXELS_KHR flag
+ may be specified to eglLockSurfaceKHR.
+
+ 8) Should usage hints be provided during mapping?
+
+ RESOLVED: Yes, they may be provided in the EGL_LOCK_USAGE_HINT_KHR
+ bitmask attribute to eglLockSurfaceKHR. Implementations are required
+ to behave correctly no matter the value of the flag vs. the
+ operations actually performed, so the hint may be ignored.
+
+ 9) Should we be able to lock subrectangles of a surface?
+
+ RESOLVED: No. However, the attribute list parameter of
+ eglLockSurfaceKHR allows a layered extension to implement this
+ behavior by specifying an origin and size to map within the buffer.
+
+10) Should the BITMAP_PIXEL_<component>_OFFSET attributes belong to the
+ surface, or the config?
+
+ RESOLVED: Part of the surface. Configs supporting a specific format
+ are matched with config attribute EGL_MATCH_FORMAT_KHR, which
+ supports specific bit-exact formats such as
+ EGL_FORMAT_565_EXACT_KHR.
+
+11) Can the pixel size in a mapped buffer be derived from the
+ EGL_BUFFER_SIZE attribute of the config used to create it?
+
+ RESOLVED: Yes. In principle, hardware using padding bytes in its
+ framebuffer storage could be a problem, and a separate
+ BITMAP_PIXEL_SIZE surface attribute would be needed. However, we
+ don't think implementations are likely to waste graphics memory and
+ bandwidth in this fashion.
+
+12) How are color component locations within a pixel described?
+
+ RESOLVED: Each R, G, B, and A component has a queryable bit offset
+ within an integer. The size of the integer depends on the total size
+ of the pixel; for the 565 formats, the pixel is a 16-bit integer.
+ For the 8888 formats, the pixel is a 32-bit integer.
+
+ We cannot describe component locations with byte locations, since
+ the 565 formats have components straddling byte boundaries. However,
+ this means that offsets for the RGBA8888_EXACT format are different
+ between little- and big-endian CPUs, since the desired format is B,
+ G, R, A components laid out as bytes in increasing memory order.
+
+13) Can mapped buffer contents be affected by other EGL operations?
+
+ RESOLVED: No. A locked surface only allows two operations:
+ unlocking, and mapping. No other EGL operations can take place while
+ the surface is locked (if this were not the case, then
+ eglSwapBuffers might destroy the contents of a mapped buffer).
+
+ It is possible that operations outside the scope of EGL could affect
+ a mapped color buffer. For example, if a surface's color buffer were
+ made up of an EGLImage, one of the EGL client APIs could draw to
+ that image while it was mapped. Responsibility for avoiding this
+ situation is in the hands of the client.
+
+14) Can EGL_MATCH_FORMAT_KHR be queried for a config?
+
+ RESOLVED: Yes. Unlockable configs return EGL_NONE for this
+ attribute.
+
+15) Is a goal of this extension to support "mixed-mode" rendering (both
+ software and EGL client API rendering to the same surface)?
+
+ RESOLVED: No. An implementation *can* choose to export configs
+ supporting creation of lockable surfaces which also support
+ rendering by OpenGL ES, OpenVG, or other client APIs (when the
+ surface is not locked). But there is nothing in the extension
+ requiring this, and the motivation for the extension is simply to
+ support software rendering.
+
+16) Can mapping a locked surface fail?
+
+ RESOLVED: Yes, if memory can't be allocated in the client. This is
+ indicated by queries of EGL_BITMAP_POINTER_KHR and
+ EGL_BITMAP_PITCH_KHR failing and generating an EGL_BAD_ACCESS error.
+
+17) Why has this extension been obsoleted and replaced by
+ EGL_KHR_lock_surface3?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+Revision History
+
+ Version 19, 2013/10/15 - Add issue 17 explaining that the bitmap pointer
+ cannot be safely queried using this extension on 64-bit platforms,
+ and suggest EGL_KHR_lock_surface3 instead. Change formal parameter
+ names from 'display' to 'dpy' to match other EGL APIs.
+ Version 18, 2010/03/23 - Added introductory remark referring to the
+ EGL_KHR_lock_surface2 extension. Clarified that it is the back
+ buffer of a back-buffered surface that is mapped.
+ Version 17, 2008/10/08 - Updated status (approved as part of
+ OpenKODE 1.0).
+ Version 16, 2008/01/24 - Add issue 16 noting that mapping can fail,
+ and a corresponding new error condition for eglQuerySurface.
+ Clean up the issues list.
+ Version 15, 2008/01/09 - Add issue 15 noting that supporting
+ mixed-mode rendering is not a goal or requirement of the
+ extension.
+ Version 14, 2007/11/07 - change ARGB_8888_EXACT back to
+ RGBA_8888_EXACT, since the offsets are now dependent on the
+ endianness of the CPU. Add issue 12 describing this, and clarify
+ that offsets are within a 16- or 32-bit integer depending on the
+ format. Added issue 13 clarifying that locked buffer contents
+ are not affected by eglSwapBuffers, because eglSwapBuffers
+ cannot be issued on a mapped surface. Allow querying
+ EGL_MATCH_FORMAT_KHR for a config, and added related issue 14.
+ Version 13, 2007/05/10 - change RGBA_8888_EXACT to ARGB_8888_EXACT
+ to match hardware layout.
+ Version 12, 2007/04/06 - clarify that when EGL_MATCH_FORMAT_KHR is
+ EGL_DONT_CARE, it does not affect component size of selected
+ configs.
+ Version 11, 2007/04/05 - add missing KHR suffix to some tokens.
+ Version 10, 2007/04/05 - assign enumerant values. Add OpenKODE 1.0
+ Provisional disclaimer.
+ Version 9, 2007/03/26 - add format tokens to "New Tokens"
+ section. Correct description of RGBA format tokens.
+ Version 8, 2007/03/26 - add issue 11 noting theoretical possibility
+ of EGL_BUFFER_SIZE not directly corresponding to the mapped
+ pixel size. Add EGL_MATCH_FORMAT_KHR attribute to
+ eglChooseConfig, and 565 / 8888 formats for it.
+ Version 7, 2007/03/25 - note in issue 5 that access to a mapped
+ buffer must continue to work even after a mode change. Add KHR
+ suffix to new functions and tokens. Remove BITMAP_PIXEL_<x>_BITS
+ and BITMAP_PIXEL_SIZE tokens, which duplicate information in the
+ EGLConfig. Add issue 10 asking whether bitmap pixel offset
+ attributes belong to the config, or to the surface.
+ Version 6, 2007/02/26 - allow EGL_CLIENT_APIS string to be empty in
+ implementations supporting only this extension.
+ Version 5, 2007/02/05 - update contributor list. Changed bit offset
+ queries to return LSB offset, rather than MSB offset.
+ Version 4, 2007/02/02 - correct extension name. Change
+ name of FAST_UNLOCK_BIT_KHR to OPTIMAL_FORMAT_BIT_KHR.
+ Replace buffer_mask parameter of eglLockSurfaceKHR with an
+ attribute list. Add the EGL_MAP_PRESERVE_PIXELS_KHR and
+ EGL_LOCK_USAGE_HINT_KHR attributes per request from Gary. Add issues
+ 7, 8, and 9 describing these attributes and how to support
+ locking subrects in a layered extension, by extending the
+ attribute list.
+ Version 3, 2007/02/01 - the implementation once again controls the
+ mapped buffer memory. There is no longer a separate bitmap
+ surface type; any type surface may potentially be mapped, using
+ lock/unlock semantics.
+ Version 2, 2006/12/22 - simplify by only supporting drawing from
+ client memory to EGL surface color buffers. Specify use of
+ OpenGL DrawPixels terminology. Change name of the extension to
+ EGL_KHR_draw_pixels, since there is no longer any "bitmap
+ surface" involved.
+ Version 1, 2006/12/14 - write up as formal spec language for
+ external review.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt
new file mode 100644
index 0000000..f7bae4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt
@@ -0,0 +1,1077 @@
+Name
+
+ KHR_lock_surface2
+
+Name Strings
+
+ EGL_KHR_lock_surface2
+
+Contributors
+
+ Mark Callow
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Alon Or-bach
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension is obsolete and has been replaced by
+ EGL_KHR_lock_surface3. Khronos recommends implementers who support this
+ extension also implement lock_surface3, and begin transitioning
+ developers to using that extension. See issue 21 for the reason.
+
+ Complete. Version 2 approved by the Khronos Board of Promoters on
+ May 28, 2010.
+ Implemented by Antix Labs.
+
+Version
+
+ Version 3, December 4, 2013
+
+Number
+
+ EGL Extension #16
+
+Dependencies
+
+ Requires EGL 1.0 and EGL_KHR_lock_surface version 18.
+
+ This extension is written against the wording of the EGL 1.3
+ and EGL 1.4 Specifications. Unless otherwise specified, each change
+ applies to both specifications. Unless otherwise specified, a page
+ number refers to the EGL 1.3 specification.
+
+ This extension is written against the wording of EGL_KHR_lock_surface
+ version 18.
+
+Overview
+
+ This extension slightly modifies and clarifies some semantic aspects
+ of the EGL_KHR_lock_surface extension, in a way that is backwards
+ compatible for applications.
+
+ The extension is presented here as the full text of the
+ EGL_KHR_lock_surface extension (minus the Status, Version, Number and
+ Dependencies sections at the start) as modified by the changes made by
+ this EGL_KHR_lock_surface2 extension. A diff utility can be used between
+ EGL_KHR_lock_surface version 18 and this EGL_KHR_lock_surface2 extension
+ to show the exact changes.
+
+ An application which needs to tell whether the implementation supports
+ EGL_KHR_lock_surface2, or just the original EGL_KHR_lock_surface, can
+ use eglQueryString with EGL_EXTENSIONS to query the list of
+ implemented extensions.
+
+ The changes over EGL_KHR_lock_surface can be summarized as follows:
+
+ * EGL_KHR_lock_surface had the EGL_MAP_PRESERVE_PIXELS_KHR attribute on
+ eglLockSurfaceKHR, but failed to point out how the surface attribute
+ EGL_SWAP_BEHAVIOR would interact with lock surface rendering.
+ EGL_KHR_lock_surface2 specifies that the locked buffer contains the
+ back buffer pixels if EGL_SWAP_BEHAVIOR is EGL_BUFFER_PRESERVED
+ _or_ if EGL_MAP_PRESERVE_PIXELS_KHR is EGL_TRUE, and provides a way to
+ set EGL_SWAP_BEHAVIOR on creation of a lockable window surface,
+ even if EGL_SWAP_BEHAVIOR is not otherwise modifiable.
+ EGL_SWAP_BEHAVIOR now defaults to EGL_BUFFER_PRESERVED for a
+ lockable surface.
+
+ * EGL_KHR_lock_surface failed to specify its interaction with the
+ EGL requirement that a context be current at eglSwapBuffers; no
+ context is used for lock surface rendering. EGL_KHR_lock_surface2
+ relaxes that requirement for a lockable window surface, in a way
+ that is anticipated to apply to all window surfaces in a future
+ version of EGL.
+
+ * Wording in EGL_KHR_lock_surface could be read to imply that almost
+ all surface attributes are invariant for a lockable surface.
+ EGL_KHR_lock_surface2 clarifies the wording.
+
+ * EGL_KHR_lock_surface2 clarifies what is returned when
+ the attribute EGL_MATCH_FORMAT_KHR is queried, especially when
+ one of the "inexact" formats was used to choose the config.
+
+ * EGL_KHR_lock_surface did not specify when a surface could change size.
+ EGL_KHR_lock_surface2 specifies that a surface cannot change size
+ when it is locked.
+
+ * EGL_KHR_lock_surface2 adds the config attribute
+ EGL_BITMAP_PIXEL_SIZE_KHR, to allow an application to dynamically
+ detect pixel layout for a format with a "hole", such as RGBU8888
+ (where "U" means "unused").
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+Full text of EGL_KHR_lock_surface plus EGL_KHR_lock_surface2:
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig, and defined as possible values of that attribute
+ when querying it:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.3 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.3 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... or, a surface is locked)."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.6. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done."
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs
+ are supported. It is zero-terminated and contains a
+ space-separated list of API names, which may include
+ ``OpenGL_ES'' if OpenGL ES is supported, and ``OpenVG'' if
+ OpenVG is supported. If no client APIs are supported, then the
+ empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 21:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 22:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 23, describing attributes not used for sorting EGLConfigs.
+
+ Add a new paragraph to the end of section 3.4.3 "Querying Configuration
+ Attributes":
+
+ "Querying the EGL_MATCH_FORMAT_KHR attribute results in EGL_NONE
+ for an EGLConfig that is not lockable, one of the "exact" formats
+ (EGL_FORMAT_RGB_565_EXACT_KHR, EGL_FORMAT_RGBA_8888_EXACT_KHR)
+ if the color buffer matches that format when mapped with
+ eglLockSurface, or for any other format a value that is not
+ EGL_NONE or EGL_DONT_CARE but is otherwise undefined. In particular,
+ the color buffer format matching one of the "inexact" formats
+ does not guarantee that that EGL_FORMAT_* value is returned."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", add the
+ following to the paragraph that lists the attributes that can be set
+ in attrib_list:
+
+ "... and EGL_SWAP_BEHAVIOR."
+
+ and add a new penultimate paragraph:
+
+ "EGL_SWAP_BEHAVIOR specifies the initial value of the
+ EGL_SWAP_BEHAVIOR surface attribute (section 3.5.6), and is thus
+ either EGL_BUFFER_PRESERVED or EGL_BUFFER_DESTROYED. This setting
+ of EGL_SWAP_BEHAVIOR at surface creation time is supported only
+ for a lockable surface, i.e. where the EGLConfig has
+ EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE."
+
+ In EGL 1.4, also add the following text to that same paragraph:
+
+ "For such a lockable surface, whether it is possible to change
+ the EGL_SWAP_BEHAVIOR attribute after surface creation is
+ determined by EGL_SWAP_BEHAVIOR_PRESERVED_BIT in the
+ EGL_SURFACE_TYPE EGLConfig attribute."
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.6 Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, a surface attribute may be queried using
+ eglQuerySurface. This includes the case of querying
+ EGL_BITMAP_POINTER_KHR, which causes the surface to be
+ <mapped> (if not already mapped) and gives
+ a pointer into client memory corresponding to the memory
+ of the mapped buffer. Second, the surface may be unlocked. Any
+ attempts to use a locked surface in other EGL APIs will fail and
+ generate an EGL_BAD_ACCESS error.
+
+ While a surface is locked, its dimensions (the values of the EGL_WIDTH
+ and EGL_HEIGHT surface attributes) do not change. They may change
+ at any other time, therefore an application must query these
+ attributes <after> the call to eglLockSurfaceKHR to ensure that it has
+ the correct size of the mapped buffer.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface (see section 3.5.7) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer.
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless either the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, or (for a window surface)
+ the EGL_SWAP_BEHAVIOR surface attribute is set to
+ EGL_BUFFER_PRESERVE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set or (for a window surface) EGL_SWAP_BEHAVIOR is
+ set to EGL_BUFFER_PRESERVE. Applications using mapped
+ buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers). Such an application may lock-render-unlock
+ multiple times per frame (i.e. per eglSwapBuffers) by setting
+ EGL_MAP_PRESERVE_PIXELS_KHR to EGL_TRUE for the second and
+ subsequent locks.
+
+ Note that EGL_SWAP_BEHAVIOR also controls whether the color
+ buffer contents are preserved over a call to eglSwapBuffers.]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin (EGL_BITMAP_ORIGIN_KHR), and the bit location of each color
+ component within a pixel (EGL_BITMAP_PIXEL_x_OFFSET_KHR). These
+ attributes may be queried using eglQuerySurface, and are described
+ in more detail in section 3.5.7.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer (listed in
+ the paragraph above) are invariant and need be queried only once
+ following surface creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, querying eglQuerySurface with
+ <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an EGL
+ error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Add to table 3.5 ("Queryable surface attributes and types")
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between the start of
+ adjacent rows in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction
+ EGL_BITMAP_PIXEL_x_OFFSET_KHR integer Bit location of each color buffer
+ component within a pixel in an MCB.
+ EGL_BITMAP_PIXEL_SIZE_KHR integer Bits per pixel
+
+ In EGL 1.4 only, in the description of eglSurfaceAttrib properties
+ that can be set in section 3.5.6 (renumbered to 3.5.7), on page 35,
+ add to the first paragraph describing EGL_SWAP_BEHAVIOR:
+
+ "The value of EGL_SWAP_BEHAVIOR also affects the semantics of
+ eglLockSurfaceKHR for a lockable window surface. See section 3.5.6."
+
+ In EGL 1.4 only, in the description of eglSurfaceAttrib properties
+ that can be set in section 3.5.6 (renumbered to 3.5.7), on page 35,
+ change the paragraph concerning the initial value of EGL_SWAP_BEHAVIOR
+ to:
+
+ "The initial value of EGL_SWAP_BEHAVIOR is chosen by the
+ implementation, except for a lockable window surface (i.e. where the
+ EGLConfig has both EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in
+ EGL_SURFACE_TYPE), where the default is EGL_BUFFER_PRESERVED, but it
+ may be overridden by specifying EGL_SWAP_BEHAVIOR to
+ eglCreateWindowSurface."
+
+ In EGL 1.3 only, in the description of eglQuerySurface properties
+ that can be queried in section 3.5.6 (renumbered to 3.5.7), on page 33,
+ add to the paragraph describing EGL_SWAP_BEHAVIOR:
+
+ "The value of EGL_SWAP_BEHAVIOR also affects the semantics of
+ eglLockSurfaceKHR for a lockable window surface. See section 3.5.6.
+ For a lockable window surface (one whose EGLConfig has both
+ EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in EGL_SURFACE_TYPE),
+ the value of this attribute may be set in the eglCreateWindowSurface
+ call, and if not set there defaults to EGL_BUFFER_PRESERVED. See
+ section 3.5.1. The default for a non-lockable surface is chosen by the
+ implementation."
+
+ Add to the description of eglQuerySurface properties in section
+ 3.5.6 (renumbered to 3.5.7) on page 33:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a n-bit
+ integer containing the pixel, where n is the number of bits
+ per pixel. If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero. If a color component
+ does exist but not in a single contiguous range of bits,
+ then the value of the attribute is EGL_UNKNOWN.
+
+ * EGL_BITMAP_PIXEL_SIZE_KHR, which returns the number of bits
+ per pixel, assumed to be least significant leftmost if there
+ are multiple pixels per byte. The attribute takes the value
+ EGL_UNKNOWN if this assumption is not true, or if pixels are not
+ laid out left to right in memory (for example pairs of 16-bit
+ pixels are swapped in memory).
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.6). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface
+ (in the list above) are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR,
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR and EGL_BITMAP_PIXEL_SIZE_KHR
+ return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6 (renumbered to 3.5.7) on page 34:
+
+ "... If <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails,
+ then an EGL_BAD_ACCESS error is generated."
+
+ In section 3.9.3 Posting Semantics on page 46, append to the first
+ paragraph:
+
+ "This restriction does not apply to lockable surfaces; for such
+ a surface, eglSwapBuffers and eglCopyBuffers may be called for
+ a surface not bound to any client API context(fn).
+
+ [fn: Normally this would only be done when using methods other
+ than client API rendering to specify the color buffer contents,
+ such as software rendering to a locked surface.]"
+
+ and replace the second paragraph ("If <dpy> and <surface> ... not be
+ executed until posting is completed.") with:
+
+ "If <surface> is bound to a current client API context for the calling
+ thread, eglSwapBuffers and eglCopyBuffers perform an implicit flush
+ operation on the context (glFlush for an OpenGL or OpenGL ES context,
+ vgFlush for an OpenVG context). Subsequent client API commands can be
+ issued immediately, but will not be executed until posting is
+ completed.
+
+ If <surface> is current to a client API context in any thread other
+ than the calling thread, eglSwapBuffers and eglCopyBuffers will fail.
+
+ and append the following sentence to the eglSwapInterval paragraph:
+
+ "The swap interval has no effect on an eglSwapBuffers for a surface
+ not bound to a current client API context."
+
+ In 3.9.4 Posting Errors, change the sentence "If <surface> is not bound
+ to the calling thread's current context, an EGL_BAD_SURFACE error is
+ generated." to:
+
+ "If <surface> is bound to a current context in a thread other
+ than the calling thread, an EGL_BAD_SURFACE error is generated."
+
+
+Issues
+
+ 1) What is the rationale for this extension?
+
+ Software renderers on low-end implementations need an efficient way
+ to draw pixel data to the screen. High-end implementations must
+ support the same interface for compatibility, while not compromising
+ the accelerability of OpenGL ES and OpenVG client APIs using
+ dedicated graphics hardware and memory.
+
+ Using lock/unlock semantics enables low-end implementations to
+ expose pointers directly into display memory (as extremely dangerous
+ as that may be), while high-end implementations may choose to create
+ backing store in client memory when mapping a buffer, and copy it to
+ graphics memory when the surface is unlocked. Making the initial
+ contents of a mapped buffer undefined means that no readbacks from
+ graphics memory are required, avoiding pipeline stalls.
+
+ This extension is not intended to support mixed-mode (client API and
+ software) rendering. Since mapped buffer contents are undefined,
+ unless the buffer is explicitly preserved (which may be unacceptably
+ expensive on many implementations), applications doing software
+ rendering must touch every pixel of mapped buffers at least once
+ before unlocking the surface.
+
+ 2) Do we need to know if locked surfaces are "fast" or "native"?
+
+ RESOLVED: Yes. This is indicated with the EGL_OPTIMAL_FORMAT_BIT_KHR
+ of EGL_SURFACE_TYPE. However, note that there is no way to guarantee
+ what "fast" or "no format conversions" really means; this is little
+ more than an implementation hint.
+
+ 3) Should we be able to map buffers other than the color buffer?
+
+ RESOLVED: Not initially. However, the <attrib_list> parameter of
+ eglLockSurfaceKHR supports this in the future. There is no <buffer>
+ attribute to eglQuerySurface, so such a layered extension would have
+ to either create a new naming convention (such as
+ EGL_BITMAP_{DEPTH,COLOR,STENCIL,ALPHA_MASK}_POINTER), or define an
+ extended query eglQuerySurfaceBuffer() which takes a <buffer>
+ parameter. It would also be tricky to support interleaved depth /
+ stencil formats. But the attribute list offers some future-proofing
+ at low cost.
+
+ 4) What properties of mapped buffers can be queried?
+
+ RESOLVED: A pointer to the buffer and its pitch, both of which may
+ change in successive lock/unlock cycles. These may be queried only
+ while the underlying surface is locked, and are undefined after
+ unlocking. The first query following locking is the point at which
+ actual buffer mapping must occur.
+
+ RESOLVED: Additionally, the pixel size, origin, and color component
+ bitfield size and offset for each component, which are invariant
+ and may be queried at any time.
+
+ 5) How are mode changes indicated? What happens to the mapped
+ buffer during a mode change?
+
+ RESOLVED: UnlockSurfaceKHR fails and raises an error if a mode
+ change occurred while the surface was locked (although the surface
+ still ends up in the unlocked state - this is necessary since
+ there's no way to clear the error!). If a mode change occurs while a
+ buffer is mapped, the implementation must still allow the
+ application to access mapped buffer memory, even though the contents
+ of the mapped buffer may not be reflected in the changed window
+ after unmapping.
+
+ Note: There's no convenient way to indicate mode changes while
+ a surface is unlocked, despite that being useful to tell apps they
+ have to redraw. The problem is that we don't have an event system,
+ and the power management functionality is overkill since the only
+ resources which are likely to be damaged by a mode change are
+ visible window contents. Fortunately, this problem is beyond the
+ scope of this extension.
+
+ 6) Does locking a surface imply mapping its buffers?
+
+ RESOLVED: No. Locking simply places the surface in that state and
+ prevents it from being made current / swapped / etc. Buffers are
+ mapped only when their pointers or pitch are queried using
+ eglQuerySurface.
+
+ An interesting side effect of this resolution is that calling
+ eglLockSurfaceKHR immediately followed by eglUnlockSurfaceKHR DOES
+ NOT CHANGE THE CONTENTS OF BUFFERS, since none of them were mapped.
+ Likewise locking a surface, querying a buffer pointer or pitch, and
+ then unlocking it without changing the mapped buffer contents causes
+ the surface contents of the mapper buffer(s) to become undefined.
+
+ At the Atlanta F2F, there was a suggestion that eglLockSurfaceKHR
+ should immediately map the color buffer and return a pointer to it,
+ on the basis that this would make it harder for applications to
+ mistakenly use an old buffer pointer from a previous mapping cycle.
+ At the same time, people working on more powerful GPUs wanted the
+ lock operation to be lightweight. These are not consistent goals and
+ we have thus far chosen to separate the lightweight locking, and
+ more expensive mapping operations.
+
+ 7) Can buffer contents be preserved in mapping?
+
+ RESOLVED: Yes. The default behavior is to discard / leave undefined
+ the mapped buffer contents, but the EGL_MAP_PRESERVE_PIXELS_KHR flag
+ may be specified to eglLockSurfaceKHR.
+
+ 8) Should usage hints be provided during mapping?
+
+ RESOLVED: Yes, they may be provided in the EGL_LOCK_USAGE_HINT_KHR
+ bitmask attribute to eglLockSurfaceKHR. Implementations are required
+ to behave correctly no matter the value of the flag vs. the
+ operations actually performed, so the hint may be ignored.
+
+ 9) Should we be able to lock subrectangles of a surface?
+
+ RESOLVED: No. However, the attribute list parameter of
+ eglLockSurfaceKHR allows a layered extension to implement this
+ behavior by specifying an origin and size to map within the buffer.
+
+10) Should the BITMAP_PIXEL_<component>_OFFSET attributes belong to the
+ surface, or the config?
+
+ RESOLVED: Part of the surface. Configs supporting a specific format
+ are matched with config attribute EGL_MATCH_FORMAT_KHR, which
+ supports specific bit-exact formats such as
+ EGL_FORMAT_565_EXACT_KHR.
+
+11) Can the pixel size in a mapped buffer be derived from the
+ EGL_BUFFER_SIZE attribute of the config used to create it?
+
+ RESOLVED: Yes. In principle, hardware using padding bytes in its
+ framebuffer storage could be a problem, and a separate
+ BITMAP_PIXEL_SIZE surface attribute would be needed. However, we
+ don't think implementations are likely to waste graphics memory and
+ bandwidth in this fashion.
+
+12) How are color component locations within a pixel described?
+
+ RESOLVED: Each R, G, B, and A component has a queryable bit offset
+ within an integer. The size of the integer depends on the total size
+ of the pixel; for the 565 formats, the pixel is a 16-bit integer.
+ For the 8888 formats, the pixel is a 32-bit integer.
+
+ We cannot describe component locations with byte locations, since
+ the 565 formats have components straddling byte boundaries. However,
+ this means that offsets for the RGBA8888_EXACT format are different
+ between little- and big-endian CPUs, since the desired format is B,
+ G, R, A components laid out as bytes in increasing memory order.
+
+13) Can mapped buffer contents be affected by other EGL operations?
+
+ RESOLVED: No. A locked surface only allows two operations:
+ unlocking, and mapping. No other EGL operations can take place while
+ the surface is locked (if this were not the case, then
+ eglSwapBuffers might destroy the contents of a mapped buffer).
+
+ It is possible that operations outside the scope of EGL could affect
+ a mapped color buffer. For example, if a surface's color buffer were
+ made up of an EGLImage, one of the EGL client APIs could draw to
+ that image while it was mapped. Responsibility for avoiding this
+ situation is in the hands of the client.
+
+14) Can EGL_MATCH_FORMAT_KHR be queried for a config?
+
+ RESOLVED: Yes. Unlockable configs return EGL_NONE for this
+ attribute.
+
+ For a config whose format matches one of the EGL_FORMAT_*_EXACT_KHR
+ definitions, that value is returned.
+
+ For a config whose format does not match one of the
+ EGL_FORMAT_*_EXACT_KHR definitions, but it does match one of the
+ inexact definitions, we do not want to specify that it returns that
+ value, since that precludes it returning an exact format if one were
+ to be defined in a future extension, or a future version of this
+ extension.
+
+ Therefore, for a config whose format does not match a defined
+ "exact" format, the attribute returns a value other than the defined
+ "exact" formats and EGL_NONE and EGL_DONT_CARE.
+
+15) Is a goal of this extension to support "mixed-mode" rendering (both
+ software and EGL client API rendering to the same surface)?
+
+ RESOLVED: No. An implementation *can* choose to export configs
+ supporting creation of lockable surfaces which also support
+ rendering by OpenGL ES, OpenVG, or other client APIs (when the
+ surface is not locked). But there is nothing in the extension
+ requiring this, and the motivation for the extension is simply to
+ support software rendering.
+
+16) Can mapping a locked surface fail?
+
+ RESOLVED: Yes, if memory can't be allocated in the client. This is
+ indicated by queries of EGL_BITMAP_POINTER_KHR and
+ EGL_BITMAP_PITCH_KHR failing and generating an EGL_BAD_ACCESS error.
+
+17) How does the application specify that it would like the pixels in the
+ mapped buffer to be preserved from the state at the last unlock?
+ [Bug 4410]
+
+ There are actually two items that need to be configurable:
+
+ a. Whether eglSwapBuffers preserves the color buffer.
+
+ b. Whether eglLockSurfaceKHR puts the color buffer pixels into the
+ locked buffer.
+
+ An implementation may use two different render paths depending on whether
+ the application is full frame rendering or incrementally rendering, where
+ the full frame rendering path may involve less copying than the
+ incrementally rendering path. The implementation needs to know in advance
+ which path to use; finding out from EGL_MAP_PRESERVE_PIXELS_KHR on
+ eglLockSurfaceKHR whether that lock should have the color buffer pixels
+ from the last eglUnlockSurfaceKHR in the last frame is too late.
+
+ This need to know in advance only applies to (a).
+
+ Note that the original EGL_KHR_lock_surface extension failed to state
+ that EGL_SWAP_BEHAVIOR needed to be set to EGL_BUFFER_PRESERVED for
+ incremental rendering.
+
+ RESOLVED: EGL_MAP_PRESERVE_PIXELS_KHR continues to control (b), as in the
+ original EGL_KHR_lock_surface extension. EGL_SWAP_BEHAVIOR continues
+ to control (a), as in unextended EGL. It is possible to set
+ EGL_SWAP_BEHAVIOR in eglCreateWindowSurface, even on EGL versions
+ before 1.4, and even if the config does not have
+ EGL_SWAP_BEHAVIOR_PRESERVED_BIT set in EGL_SURFACE_TYPE.
+
+ For a lockable window surface, EGL_SWAP_BEHAVIOR needs to default to
+ EGL_BUFFER_PRESERVED, and having EGL_SWAP_BEHAVIOR set to
+ EGL_BUFFER_PRESERVED needs to override EGL_MAP_PRESERVE_PIXELS_KHR. This is for
+ compatibility with version 1 of this extension, which had EGL_SWAP_BEHAVIOR
+ as the sole means of controlling (a) and (b).
+
+ This resolution is backward compatible with the original
+ EGL_KHR_lock_surface extension as it now defaults to preserving pixels,
+ and thus has that default for an old application that does not know about
+ setting EGL_SWAP_BEHAVIOR=EGL_BUFFER_DESTROYED to optimize full frame
+ rendering. The downside is a possible performance reduction of an old
+ application that does not want pixels preserved, until it is appropriately
+ modified and recompiled.
+
+18) When can a lockable surface change size? [Bug 4522]
+
+ RESOLVED: The surface cannot change size while it is locked. For any
+ window size change during that time, EGL defers the corresponding
+ surface size change until some time after the unlock.
+ The implication is that an application must get the surface size
+ _after_locking, otherwise the size may have changed in between the
+ attribute query and the lock.
+
+ As part of this change, using eglQuerySurface on any surface attribute
+ while the surface is locked has been allowed.
+
+19) Should we provide for more than one pixel per byte, or a format with
+ a "hole", or a byte-swapped 16-bit format? [Bug 4513]
+
+ For the use case where the application uses EGL_FORMAT_* to
+ determine the pixel format, this is not an issue. For the use case
+ where the application is written to cope with any format by reading
+ the EGL_BITMAP_* attributes and adjusting its rendering at runtime,
+ this is an issue.
+
+ RESOLVED: We add a new attribute EGL_BITMAP_PIXEL_SIZE_KHR which gives
+ the pixel size in bits.
+ The use of this attribute assumes that multiple pixels packed into
+ a byte are arranged least significant on the left, and that pixels
+ are arranged leftmost first in memory. If either of these assumptions
+ is false, then EGL_BITMAP_PIXEL_SIZE_KHR is EGL_UNKNOWN to indicate
+ that an application attempting to use these attributes to adjust its
+ rendering code will not work.
+
+ We also define that any of the EGL_BITMAP_PIXEL_x_OFFSET_KHR attributes
+ have a value of EGL_UNKNOWN if the corresponding color component is not
+ a contiguous bit range.
+
+20) EGL states that surface must be bound to the thread's current context
+ when posting, but there is no current context when using lock surface.
+ eglSwapInterval is also related to the context. [Bug 5923]
+
+ RESOLVED: The posting restrictions are relaxed, so it is allowed to
+ post for a surface not bound to any client API context. In this case
+ no eglSwapInterval setting affects an eglSwapBuffers. This relaxation
+ only applies to a lockable surface so that this extension continues
+ to be implementable as a middleware layer on top of a "real" EGL.
+ The relaxation applies to a surface that is both lockable and client
+ API renderable; the implicit flush in a post only occurs when the surface
+ is bound to a current API context. Posting a surface bound to a different
+ thread's current API context is still disallowed.
+
+21) Why has this extension been obsoleted and replaced by
+ EGL_KHR_lock_surface3?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+
+Revision History
+
+ Version 3, 2013/12/04 - Add issue 21 explaining that the bitmap pointer
+ cannot be safely queried using this extension on 64-bit platforms,
+ and suggesting EGL_KHR_lock_surface3 instead. Change formal
+ parameter names from 'display' to 'dpy' to match other EGL APIs.
+ Version 2, 2010/03/10
+ Allocated extension number 16.
+ [Bug 6089] Clarified that it is the back buffer of a back-buffered
+ surface that is mapped.
+ [Bug 4410] Issue 17: Reinstate EGL_MAP_PRESERVE_PIXELS_KHR attribute on
+ eglLockSurfaceKHR as the means of configuring whether a locked
+ buffer contains pixel data from the color buffer, as in
+ EGL_KHR_lock_surface, but, for a lockable window surface,
+ make EGL_SWAP_BEHAVIOR=EGL_BUFFER_PRESERVED override the effect
+ of that attribute. Tidy wording so that behavior, and that the
+ default of EGL_SWAP_BEHAVIOR must be EGL_BUFFER_PRESERVED, only
+ applies to lockable window surfaces, not lockable pbuffer or
+ pixmap surfaces.
+ [Bug 5923] Issue 20: A config that is lockable and renderable by
+ an EGL client API is now allowed. Posting restrictions are relaxed
+ to allow posting for a lockable surface not bound to any client
+ API context.
+ [Bug 5143] Fixed typos EGL_SURFACE_TYPE_KHR. Added summary of
+ changes over EGL_KHR_lock_surface.
+ Version 1, 2010/01/19
+ [Bug 4410] Issue 17: Change to use EGL_SWAP_BEHAVIOR as the
+ primary means of determining whether the application wants pixels
+ preserved between lock/unlock cycles.
+ Allowed setting of EGL_SWAP_BEHAVIOR in
+ eglCreateWindowSurface for a lockable surface. Made the
+ default EGL_BUFFER_PRESERVED on a lockable surface to maintain
+ compatibility with the original lock surface extension.
+ [Bug 3192] Wording clarification to avoid accidentally suggesting
+ that almost all surface attributes are invariant.
+ [Bug 4518] Issue 14: Clarify the returned value when
+ EGL_MATCH_FORMAT_KHR is queried.
+ [Bug 4522] Issue 18: Clarify that a locked surface cannot change
+ size.
+ [Bug 4513] Issue 19: Added EGL_BITMAP_PIXEL_SIZE_KHR.
+ [Bug 5923] Issue 20: Must be no current context when posting
+ a lockable surface. In that case any eglSwapInterval setting
+ is ignored. Disallowed a config that is lockable and renderable
+ by an EGL client API.
+
+Revision History of original EGL_KHR_lock_surface extension
+
+ Version 18, 2010/03/23 - Added introductory remark referring to the
+ EGL_KHR_lock_surface2 extension.
+ Version 17, 2008/10/08 - Updated status (approved as part of
+ OpenKODE 1.0).
+ Version 16, 2008/01/24 - Add issue 16 noting that mapping can fail,
+ and a corresponding new error condition for eglQuerySurface.
+ Clean up the issues list.
+ Version 15, 2008/01/09 - Add issue 15 noting that supporting
+ mixed-mode rendering is not a goal or requirement of the
+ extension.
+ Version 14, 2007/11/07 - change ARGB_8888_EXACT back to
+ RGBA_8888_EXACT, since the offsets are now dependent on the
+ endianness of the CPU. Add issue 12 describing this, and clarify
+ that offsets are within a 16- or 32-bit integer depending on the
+ format. Added issue 13 clarifying that locked buffer contents
+ are not affected by eglSwapBuffers, because eglSwapBuffers
+ cannot be issued on a mapped surface. Allow querying
+ EGL_MATCH_FORMAT_KHR for a config, and added related issue 14.
+ Version 13, 2007/05/10 - change RGBA_8888_EXACT to ARGB_8888_EXACT
+ to match hardware layout.
+ Version 12, 2007/04/06 - clarify that when EGL_MATCH_FORMAT_KHR is
+ EGL_DONT_CARE, it does not affect component size of selected
+ configs.
+ Version 11, 2007/04/05 - add missing KHR suffix to some tokens.
+ Version 10, 2007/04/05 - assign enumerant values. Add OpenKODE 1.0
+ Provisional disclaimer.
+ Version 9, 2007/03/26 - add format tokens to "New Tokens"
+ section. Correct description of RGBA format tokens.
+ Version 8, 2007/03/26 - add issue 11 noting theoretical possibility
+ of EGL_BUFFER_SIZE not directly corresponding to the mapped
+ pixel size. Add EGL_MATCH_FORMAT_KHR attribute to
+ eglChooseConfig, and 565 / 8888 formats for it.
+ Version 7, 2007/03/25 - note in issue 5 that access to a mapped
+ buffer must continue to work even after a mode change. Add KHR
+ suffix to new functions and tokens. Remove BITMAP_PIXEL_<x>_BITS
+ and BITMAP_PIXEL_SIZE tokens, which duplicate information in the
+ EGLConfig. Add issue 10 asking whether bitmap pixel offset
+ attributes belong to the config, or to the surface.
+ Version 6, 2007/02/26 - allow EGL_CLIENT_APIS string to be empty in
+ implementations supporting only this extension.
+ Version 5, 2007/02/05 - update contributor list. Changed bit offset
+ queries to return LSB offset, rather than MSB offset.
+ Version 4, 2007/02/02 - correct extension name. Change
+ name of FAST_UNLOCK_BIT_KHR to OPTIMAL_FORMAT_BIT_KHR.
+ Replace buffer_mask parameter of eglLockSurfaceKHR with an
+ attribute list. Add the EGL_MAP_PRESERVE_PIXELS_KHR and
+ EGL_LOCK_USAGE_HINT_KHR attributes per request from Gary. Add issues
+ 7, 8, and 9 describing these attributes and how to support
+ locking subrects in a layered extension, by extending the
+ attribute list.
+ Version 3, 2007/02/01 - the implementation once again controls the
+ mapped buffer memory. There is no longer a separate bitmap
+ surface type; any type surface may potentially be mapped, using
+ lock/unlock semantics.
+ Version 2, 2006/12/22 - simplify by only supporting drawing from
+ client memory to EGL surface color buffers. Specify use of
+ OpenGL DrawPixels terminology. Change name of the extension to
+ EGL_KHR_draw_pixels, since there is no longer any "bitmap
+ surface" involved.
+ Version 1, 2006/12/14 - write up as formal spec language for
+ external review.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt
new file mode 100644
index 0000000..f85935c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt
@@ -0,0 +1,679 @@
+Name
+
+ KHR_lock_surface3
+
+Name Strings
+
+ EGL_KHR_lock_surface3
+
+Contributors
+
+ Mark Callow
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Alon Or-bach
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on December 4, 2013.
+
+Version
+
+ Version 4, 2014/09/17
+
+Number
+
+ EGL Extension #64
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ This extension is based on the EGL_KHR_lock_surface2 extension and
+ almost all language is copied from that extension. However, it is
+ standalone extension. The specification language has been re-based
+ against the EGL 1.4 Specification.
+
+ Khronos recommends obsoleting and replacing implementations of
+ EGL_KHR_lock_surface2 and EGL_KHR_lock_surface with this extension as
+ soon as possible.
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+ This extension is functionally identical to EGL_KHR_lock_surface2, but
+ is intended to replace that extension. It defines a new EGL type,
+ EGLAttribKHR, which is an integer type guaranteed to be large enough to
+ hold a pointer. A new surface query, eglQuerySurface64KHR, is defined to
+ query surface attributes which may not fit in than EGLint, such as a
+ mapped surface pointer.
+
+ The changes over EGL_KHR_lock_surface2 include:
+
+ * EGL_KHR_lock_surface3 defines the type EGLAttribKHR and the
+ command eglQuerySurface64KHR.
+ * eglQuerySurface64KHR must be used to query the
+ EGL_BITMAP_POINTER_KHR property of surfaces.
+
+New Types
+
+ /*
+ * EGLAttribKHR is a integer type used to pass arrays of attribute
+ * name/value pairs which may include pointer and handle attribute
+ * values.
+ */
+ #include <khrplatform.h>
+ typedef intptr_t EGLAttribKHR;
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+ EGLBoolean eglQuerySurface64KHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLAttribKHR *value);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig, and defined as possible values of that attribute
+ when querying it:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface and
+ eglQuerySurface64KHR:
+
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+ Accepted by the <attribute> parameter of eglQuerySurface64KHR:
+ EGL_BITMAP_POINTER_KHR 0x30C6
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... (for example, a context is bound in another thread, or a
+ surface is locked). Any command accessing ..."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.5ls. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done."
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs are
+ supported. It is zero-terminated and contains a space-separated list
+ of API names, which must include at least one of ``OpenGL'',
+ ``OpenGL_ES'', or OpenGL ES. If no client APIs are supported, then
+ the empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 24:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 25:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 26, describing attributes not used for sorting EGLConfigs.
+
+ Add a new paragraph to the end of section 3.4.3 "Querying Configuration
+ Attributes":
+
+ "Querying the EGL_MATCH_FORMAT_KHR attribute results in EGL_NONE
+ for an EGLConfig that is not lockable, one of the "exact" formats
+ (EGL_FORMAT_RGB_565_EXACT_KHR, EGL_FORMAT_RGBA_8888_EXACT_KHR)
+ if the color buffer matches that format when mapped with
+ eglLockSurface, or for any other format a value that is not
+ EGL_NONE or EGL_DONT_CARE but is otherwise undefined. In particular,
+ the color buffer format matching one of the "inexact" formats
+ does not guarantee that that EGL_FORMAT_* value is returned."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", add to the
+ second paragraph on p. 28 listing attributes that can be set in
+ attrib_list:
+
+ "<attrib_list> specifies a list of attributes ... and
+ EGL_SWAP_BEHAVIOR."
+
+ and add preceding the paragraph starting "EGL_VG_COLORSPACE specifies
+ ..." on p. 28:
+
+ "EGL_SWAP_BEHAVIOR specifies the initial value of the
+ EGL_SWAP_BEHAVIOR surface attribute (section 3.5.6), and is thus
+ either EGL_BUFFER_PRESERVED or EGL_BUFFER_DESTROYED. This setting
+ of EGL_SWAP_BEHAVIOR at surface creation time is supported only
+ for a lockable surface, i.e. where the EGLConfig has
+ EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ "For such a lockable surface, whether it is possible to change
+ the EGL_SWAP_BEHAVIOR attribute after surface creation is
+ determined by EGL_SWAP_BEHAVIOR_PRESERVED_BIT in the
+ EGL_SURFACE_TYPE EGLConfig attribute."
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.5ls Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, a surface attribute may be queried using
+ the query commands in section 3.5.6. This includes the case of
+ querying EGL_BITMAP_POINTER_KHR, which causes the surface to be
+ <mapped> (if not already mapped) and gives a pointer into client
+ memory corresponding to the memory of the mapped buffer. Second,
+ the surface may be unlocked. Any attempts to use a locked surface
+ in other EGL APIs will fail and generate an EGL_BAD_ACCESS error.
+
+ While a surface is locked, its dimensions (the values of the EGL_WIDTH
+ and EGL_HEIGHT surface attributes) do not change. They may change
+ at any other time, therefore an application must query these
+ attributes <after> the call to eglLockSurfaceKHR to ensure that it has
+ the correct size of the mapped buffer.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface64KHR (see section 3.5.6) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer.
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless either the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, or (for a window surface)
+ the EGL_SWAP_BEHAVIOR surface attribute is set to
+ EGL_BUFFER_PRESERVE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set or (for a window surface) EGL_SWAP_BEHAVIOR is
+ set to EGL_BUFFER_PRESERVE. Applications using mapped
+ buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers). Such an application may lock-render-unlock
+ multiple times per frame (i.e. per eglSwapBuffers) by setting
+ EGL_MAP_PRESERVE_PIXELS_KHR to EGL_TRUE for the second and
+ subsequent locks.
+
+ Note that EGL_SWAP_BEHAVIOR also controls whether the color
+ buffer contents are preserved over a call to eglSwapBuffers.]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin (EGL_BITMAP_ORIGIN_KHR), and the bit location of each color
+ component within a pixel (EGL_BITMAP_PIXEL_x_OFFSET_KHR). These
+ attributes may be queried using eglQuerySurface, and are described
+ in more detail in section 3.5.6.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer (listed in
+ the paragraph above) are invariant and need be queried only once
+ following surface creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, calling eglQuerySurface64KHR
+ with <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an
+ EGL error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Modify table 3.5 ("Queryable surface attributes and types")
+ to add a new column "64-bit". Add new entries to table 3.5:
+
+ Attribute Type Description 64-bit
+ --------- ------- -------------------------- ---------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color [checked]
+ buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between -
+ the start of adjacent rows
+ in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction -
+ EGL_BITMAP_PIXEL_x_- integer Bit location of each color -
+ OFFSET_KHR buffer component within a
+ pixel in an MCB.
+ EGL_BITMAP_PIXEL_- integer Bits per pixel -
+ SIZE_KHR
+
+ All previously existing entries in table 3.5 are given a "-" entry in
+ the new "64-bit" column.
+
+ In the description of eglSurfaceAttrib properties that can be set in
+ section 3.5.6, add to the description of EGL_SWAP_BEHAVIOR:
+
+ "It <attribute> is EGL_SWAP_BEHAVIOR ... The value of
+ EGL_SWAP_BEHAVIOR also affects the semantics of eglLockSurfaceKHR
+ for a lockable window surface. See section 3.5.6."
+
+ And modify the paragraph descirbing the initial value of
+ EGL_SWAP_BEHAVIOR:
+
+ "The initial value of EGL_SWAP_BEHAVIOR is chosen by the
+ implementation, except for a lockable window surface (i.e. where the
+ EGLConfig has both EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in
+ EGL_SURFACE_TYPE). For a lockable window surface the default is
+ EGL_BUFFER_PRESERVED, but it may be overridden by specifying
+ EGL_SWAP_BEHAVIOR to eglCreateWindowSurface."
+
+ Add the prototype of the new surface query function immediately
+ following the prototype for eglQuerySurface on p. 37:
+
+ EGLBoolean eglQuerySurface64KHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLAttribKHR *value)
+
+ Modify the following paragraph:
+
+ "eglQuerySurface and eglQuerySurface64KHR return in <value> the
+ value of <attribute> for <surface>. <attribute> must be set to one
+ of the attributes in table 3.5. Attributes whose ``64-bit'' entry
+ is checked in table 3.5 may only be queried with
+ eglQuerySurface64KHR."
+
+ Add to the description of eglQuerySurface properties on p. 38:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a n-bit
+ integer containing the pixel, where n is the number of bits
+ per pixel. If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero. If a color component
+ does exist but not in a single contiguous range of bits,
+ then the value of the attribute is EGL_UNKNOWN.
+
+ * EGL_BITMAP_PIXEL_SIZE_KHR, which returns the number of bits
+ per pixel, assumed to be least significant leftmost if there
+ are multiple pixels per byte. The attribute takes the value
+ EGL_UNKNOWN if this assumption is not true, or if pixels are not
+ laid out left to right in memory (for example pairs of 16-bit
+ pixels are swapped in memory).
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.5ls). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface
+ (in the list above) are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR,
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR and EGL_BITMAP_PIXEL_SIZE_KHR
+ return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6:
+
+ "eglQuerySurface and eglQuerySurface64KHR return EGL_FALSE on
+ failure ... If <attribute> is one of the attributes whose
+ ``64-bit'' entry is checked in table 3.5, then an
+ EGL_BAD_ATTRIBUTE error is generated if eglQuerySurface is called;
+ only eglQuerySurface64KHR is allowed for such attributes. If
+ <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails, then
+ an EGL_BAD_ACCESS error is generated. "
+
+ In section 3.9.3 Posting Semantics on page 53, append to the first
+ paragraph:
+
+ "<surface> must be bound to the calling thread's current context
+ ... This restriction does not apply to lockable surfaces; for such
+ a surface, eglSwapBuffers and eglCopyBuffers may be called for a
+ surface not bound to any client API context(fn).
+
+ [fn: Normally this would only be done when using methods other
+ than client API rendering to specify the color buffer contents,
+ such as software rendering to a locked surface.]"
+
+ Replace the second paragraph ("If <dpy> and <surface> ... not be
+ executed until posting is completed.") with:
+
+ "If <surface> is bound to a current client API context for the calling
+ thread, eglSwapBuffers and eglCopyBuffers perform an implicit flush
+ operation on the context (glFlush for an OpenGL or OpenGL ES context,
+ vgFlush for an OpenVG context). Subsequent client API commands can be
+ issued immediately, but will not be executed until posting is
+ completed.
+
+ If <surface> is current to a client API context in any thread other
+ than the calling thread, eglSwapBuffers and eglCopyBuffers will fail.
+
+ Append following the prototype for eglSwapInterval:
+
+ "specifies the minimum number of video frame periods ... The swap
+ interval has no effect on eglSwapBuffers for a surface not bound
+ to a current client API context."
+
+ In 3.9.4 Posting Errors, change the first paragraph:
+
+ "eglSwapBuffers and eglCopyBuffers return EGL_FALSE on failure. If
+ <surface> is not a valid EGL surface, an EGL_BAD_SURFACE error is
+ generated. If <surface> is bound to a current context in a thread
+ other than the calling thread, an EGL_BAD_SURFACE error is
+ generated." If <target> is not a valid native pixmap handle ..."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ The issues lists of EGL_KHR_lock_surface and EGL_KHR_lock_surface2 also
+ apply to this extension. In addition, issues related only to the reason
+ for defining the EGLAttribKHR and interfaces using that type may be
+ found in issues 1-3 of the EGL_KHR_cl_event2 extension specification.
+
+ 1) Is this extension backwards-compatible with EGL_KHR_lock_surface2?
+
+ RESOLVED: No. Querying the bitmap pointer must be done with the new
+ command eglQuerySurface64KHR when using this extension, to guide
+ developers down the right path even when writing 32-bit code.
+
+ However, if both lock_surface2 and this extension are supported, it is
+ possible to query the bitmap pointer using older calls, with the risk
+ that executing such code on a 64-bit platform will probably fail.
+
+Revision History
+
+ Version 4, 2014/09/17 (Jon Leech) - Fix bogus return type for
+ eglQuerySurface64KHR in New Functions section.
+
+ Version 3, 20130/12/04 (Jon Leech) - Minor cleanup for public release.
+ Change formal parameter names from 'display' to 'dpy' to match other EGL
+ APIs.
+
+ Version 2, 20130/10/16 (Jon Leech) - add Dependencies and Overview text
+ noting that this extension obsoletes and should replace
+ EGL_KHR_lock_surface2 and EGL_KHR_lock_surface.
+
+ Version 1, 2013/10/15 - Branched from approved EGL_KHR_lock_surface2.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt
new file mode 100644
index 0000000..9b72af4
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt
@@ -0,0 +1,325 @@
+Name
+
+ KHR_mutable_render_buffer
+
+Name Strings
+
+ EGL_KHR_mutable_render_buffer
+
+Contributors
+
+ Alon Or-bach
+ John Carmack
+ Cass Everitt
+ Michael Gold
+ James Jones
+ Jesse Hall
+ Ray Smith
+
+Contact
+
+ Alon Or-bach, Samsung Electronics (alon.orbach 'at' samsung.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2016 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Approved by the EGL Working Group on January 28, 2016
+ Ratified by the Khronos Board of Promoters on March 11, 2016
+
+Version
+
+ Version 12, January 29, 2016
+
+Number
+
+ EGL Extension #96
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.2 or later is required.
+
+ Written based on the EGL 1.5 specification (August 27, 2014).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a new value for the EGL_SURFACE_TYPE EGLConfig attribute:
+
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x00001000
+
+Overview
+
+ The aim of this extension is to allow toggling of front-buffer rendering
+ for window surfaces after their initial creation.
+
+ This allows for implementations to switch between back-buffered and single-
+ buffered rendering without requiring re-creation of the surface. It is not
+ expected for toggling to be a frequent event.
+
+ This extension does not guarantee when rendering results appear on-screen.
+ To avoid incorrect results, applications will need to use mechanisms not
+ included in this extension to synchronize rendering with the display. This
+ functionality is not covered by this extension, and vendors are encouraged
+ to provide guidelines on how this is achieved on their implementation.
+
+Add to the list of supported tokens for EGL_SURFACE_TYPE in section 3.4
+"Configuration Management", page 23:
+
+ If EGL_MUTABLE_RENDER_BUFFER_BIT_KHR is set in EGL_SURFACE_TYPE, then the
+ EGL_RENDER_BUFFER attribute of a surface can be toggled between front
+ buffer and back buffer rendering using eglSurfaceAttrib (see section
+ 3.5.6).
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_RENDER_BUFFER, then value specifies whether to render
+ to a back buffer by specifying EGL_BACK_BUFFER, or directly to the front
+ buffer by specifying EGL_SINGLE_BUFFER. The change to which buffer is
+ rendered to takes effect at the subsequent eglSwapBuffers call, as
+ described in section 3.10.1.2, and changes are considered pending up until
+ that point.
+
+ If attribute is EGL_RENDER_BUFFER, and the EGL_SURFACE_TYPE attribute of
+ the EGLConfig used to create surface does not contain
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR, or the windowing system is unable to
+ support the requested rendering mode, an EGL_BAD_MATCH error is generated
+ and the EGL_RENDER_BUFFER state is left unchanged.
+
+Modify the following sentence in section 3.5.6 "Surface Attributes", page 45:
+
+ Querying EGL_RENDER_BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface, this is the attribute value
+ specified when the surface was created or last set via eglSurfaceAttrib.
+
+Modify the third bullet describing eglQueryContext in section 3.7.4, page 63:
+
+ If the context is bound to a window surface, then either EGL_BACK_BUFFER
+ or EGL_SINGLE_BUFFER may be returned. The value returned depends on
+ both the buffer requested by the setting of the EGL_RENDER_BUFFER property
+ of the surface (which may be queried by calling eglQuerySurface - see
+ section 3.5.6), and on the client API (not all client APIs support
+ single-buffer rendering to window surfaces). Some client APIs allow control
+ of whether rendering goes to the front or back buffer for back buffered
+ surfaces. This client API-specific choice is not reflected in the returned
+ value, which only describes the buffer that will be rendered to by default
+ if not overridden by the client API. If the EGL_RENDER_BUFFER attribute of
+ a surface is changed by calling eglSurfaceAttrib, the value returned by
+ eglQueryContext will change once eglSwapBuffers is called, as described in
+ section 3.10.1.2.
+
+Modify the following sentence in section 3.10.1 "Posting to a Window", page 79:
+
+ If surface is a single-buffered window, pixmap, or pbuffer surface for which
+ there is a pending change to the EGL_RENDER_BUFFER attribute, eglSwapBuffers
+ performs an implicit flush operation on the context and effects the
+ attribute change. If surface is a single-buffered window, pixmap, or pbuffer
+ surface for which there is no pending change to the EGL_RENDER_BUFFER
+ attribute, eglSwapBuffers has no effect.
+
+Add a new section 3.10.1.2 "Handling of render buffer attribute changes"
+
+ If there is a pending change to the EGL_RENDER_BUFFER attribute of a
+ surface, as described in section 3.5.6, the change to which buffer is
+ rendered to takes effect at the subsequent eglSwapBuffers call.
+
+ When switching to single-buffered from back-buffered rendering and the
+ surface's EGL_SWAP_BEHAVIOR attribute is set to EGL_BUFFER_DESTROYED, the
+ back buffers are considered to be undefined after calling eglSurfaceAttrib.
+ Only draw calls after this eglSurfaceAttrib call are guaranteed to affect
+ the back buffer content. If it is set to EGL_BUFFER_PRESERVED, the back
+ buffer contents are unaffected. At the next eglSwapBuffers call, the back
+ buffer is posted as the front buffer. After this, any draw calls take
+ effect on the front buffer.
+
+ When switching to back-buffered from single-buffered rendering, any draw
+ calls up until the next eglSwapBuffers call continues to affect the front
+ buffer, and this initial eglSwapBuffers call does not affect the window
+ content. The back buffer is considered to be undefined at this point, no
+ matter what the EGL_SWAP_BEHAVIOR attribute of the surface is set to. Once
+ the pending change has taken place during this initial eglSwapBuffers call,
+ further rendering affects the back buffer.
+
+ If the EGL_RENDER_BUFFER attribute is changed twice or more in succession
+ without new content rendered to the surface as described above, undefined
+ content may appear on-screen.
+
+
+Issues
+
+ 1) When should the switch between rendering modes occur?
+
+ RESOLVED: The switch should take effect after the subsequent eglSwapBuffers
+ call. The operation of the subsequent eglSwapBuffers call is according to
+ the current state (i.e the state before the eglSurfaceAttrib call), not the
+ pending state.
+
+ When switching to EGL_SINGLE_BUFFER, the current state is EGL_BACK_BUFFER
+ and therefore eglSwapBuffers posts the current back buffer. After this any
+ rendering takes effect on the front buffer.
+
+ When switching to EGL_BACK_BUFFER, the current state is EGL_SINGLE_BUFFER
+ and therefore eglSwapBuffers only flushes the current context. After this
+ any rendering takes effect on the back buffer.
+
+ 2) If this extension is advertised, should all surface configurations with
+ EGL_WINDOW_BIT in EGL_SURFACE_TYPE be required to support it?
+
+ RESOLVED: No. Add a config bit to indicate support for EGL_RENDER_BUFFER
+ toggling. If toggle performed when not supported, EGL_BAD_MATCH error is
+ generated.
+
+ 3) How often do we expect the switch between single and back buffering to
+ occur?
+
+ RESOLVED: It is not expected for the toggle to be a frequent call. For
+ example, we expect it to be called once when enabling a VR accessory and
+ once when disabling it.
+
+ 4) Do we need to reword section 3.7.4 (page 63)?
+
+ RESOLVED: Yes. Modified to explain how some client APIs can still override
+ the behavior and what value eglQueryContext is expected to return for
+ EGL_RENDER_BUFFER.
+
+ 5) Why not enable this via the client API, like OpenGL does via glDrawBuffer?
+
+ RESOLVED: This would not be possible on some platforms, where the swap chain
+ is controlled via EGL.
+
+ 6) Is this extension a client or display extension?
+
+ RESOLVED: This is a display extension.
+
+ 7) What state are back buffers after switching between single and back buffered
+ rendering?
+
+ RESOLVED: This is as set out in section 3.10.1.2.
+
+ 8) What guarantees of an onscreen update does this extension make?
+
+ RESOLVED: This extension does not make any additional guarantees to the
+ equivalent behavior of a window surface with EGL_RENDER_BUFFER set to the
+ same value at creation of the surface. When a surface is single-buffered,
+ any API call which is specified to explicitly or implicitly flush is
+ expected to affect the on-screen content in finite time, but no timing
+ guarantees are provided.
+
+ It is recommended that if ancillary buffers are not required, they are
+ invalidated before flushing to reduce unnecessary memory transfers on some
+ implementations (e.g. by calling glInvalidateFramebuffer for OpenGL ES).
+
+ 9) Should an implicit flush occur when eglSwapBuffers is called on a
+ single-buffered surface?
+
+ RESOLVED: Only when there is a pending EGL_RENDER_BUFFER change which will
+ be affected by this eglSwapBuffers call. Contexts must be flushed when
+ changing render targets.
+
+ 10) How does toggling EGL_RENDER_BUFFER affect client APIs?
+
+ RESOLVED: Changing the value of EGL_RENDER_BUFFER should result in the same
+ behavior in client APIs as binding a window surface with that mode to the
+ current context. For example, in OpenGL, it is akin to switching from a
+ drawable with a back buffer and front buffer to a drawable with only a
+ front buffer, or vice versa.
+
+ Note the effect of such an operation on the draw buffer and framebuffer
+ completeness, if applicable, is client API specific. OpenGL ES applications
+ will see no change and will be able to continue rendering without updating
+ the draw buffer, as OpenGL ES exposes only one renderable surface,
+ regardless of single or back-buffered drawables. OpenGL applications should
+ update the current draw buffer using glDrawBuffers() or similar commands to
+ ensure rendering targets the correct buffer after toggling
+ EGL_RENDER_BUFFER.
+
+ 11) How should interaction between multiple window surfaces be handled?
+
+ RESOLVED: This is left to platform vendors to define. Implementations may
+ choose to restrict use of front buffer rendering to forbid interaction
+ between multiple windows, or provide a buffer that is read by the display
+ or compositing hardware but not the final composited results to prevent
+ security concerns or undefined content.
+
+ 12) How should the name of the extension be?
+
+ RESOLVED: EGL_KHR_mutable_render_buffer
+
+
+Revision History
+
+#12 (Jon Leech, January 29, 2016)
+ - Assign enumerant value
+ - Update Status block
+
+#11 (Alon Or-bach, January 28, 2016)
+ - Updated issue 1 to be consistent with new resolution to issue 9
+ - Marked issues 7, 8 and 10 as resolved
+
+#10 (Alon Or-bach, January 28, 2016)
+ - Renamed extension to EGL_KHR_mutable_render_buffer, resolving issue 12
+ - Updates issue 7 resolution to just refer to spec
+ - Cleaned up section 3.10.1.2 wording
+ - Added wording to overview on lack of guarantee of rendering results
+
+#9 (Alon Or-bach, January 22, 2016)
+ - Marked issues 1, 9 and 11 as resolved
+ - Updated issue 4 to reflect previously agreed wording for section 3.7.4
+ - Updated issue 8 to indicate no new flush guarantees made by this extension
+ - New proposed resolution to issue 7 and modified section 3.10.1.2 to vary
+ whether back buffer content are undefined based on swap behavior
+ - Updated issue 10 with wording to explain differing client API behaviors
+ - Added error condition for windowing systems unable to support a requested
+ rendering mode in section 3.5.6
+ - New proposed resolution to issue 12 for extension naming
+ - Minor updates to wording (attribute instead of mode, overview phrasing)
+
+#8 (Ray Smith, January 5, 2016)
+ - Revert issue 1 resolution to that in revision 6, adding wording to section
+ 3.10.1 to make eglSwapBuffers effect pending state changes even for single
+ buffered surfaces.
+
+#7 (Alon Or-bach, December 17, 2015)
+ - New proposed resolution to issue 1 (explicit flush as update boundary),
+ updating the wording of 3.5.6, 3.7.4 3.10.1.2 to reflect this
+ - Added new issue 11 to reflect concerns about interactions between multiple
+ windows
+ - Added new issue 12 to determine extension name
+
+#6 (Alon Or-bach, November 11, 2015)
+ - Resolved issue 6 and proposed resolution to issue 4 (section 3.7.4)
+ - Added new issue 10 with proposed resolution
+
+#5 (Alon Or-bach, May 12, 2015)
+ - Updated section 3.10.1.2, changed resolution to issue 9
+
+#4 (Alon Or-bach, April 15, 2015)
+ - Added issue 9 and a typo fix
+
+#3 (Alon Or-bach, April 09, 2015)
+ - Added issue 7 and 8, wording on what content expected during mode switch
+
+#2 (Alon Or-bach, March 09, 2015)
+ - Cleanup, rename to XXX_set_render_buffer_mode
+
+#1 (Alon Or-bach, March 04, 2015)
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt
new file mode 100644
index 0000000..4493b20
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt
@@ -0,0 +1,261 @@
+Name
+
+ KHR_no_config_context
+
+Name Strings
+
+ EGL_KHR_no_config_context
+
+Contributors
+
+ Etay Meiri
+ Alon Or-bach
+ Jeff Vigil
+ Ray Smith
+ Michael Gold
+ James Jones
+ Daniel Kartch
+ Adam Jackson
+ Jon Leech
+
+Contact
+
+ Etay Meiri (etay.meiri 'at' intel.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Approved by the EGL Working Group on April 27, 2016
+
+ Approved by the Khronos Board of Promoters on July 22, 2016
+
+Version
+
+ Version 9, 2016/09/08
+
+Number
+
+ EGL Extension #101
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.4 is required. This extension is written against the EGL 1.5
+ Specification of August 27, 2014.
+
+ Some of the capabilities of these extensions are only available when
+ creating OpenGL or OpenGL ES contexts supporting specific versions or
+ capabilities. All such restrictions are documented in the body of this
+ extension specification.
+
+Overview
+
+ Modern GPUs allow contexts to render to almost any combination of
+ supported color and auxiliary buffer formats. Traditionally EGL context
+ creation is done with respect to an EGLConfig specifying buffer formats,
+ and constrains contexts to only work with surfaces created with a
+ "compatible" config.
+
+ This extension allows creation of GL & ES contexts without specifying an
+ EGLConfig.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as the <config> parameter of eglCreateContext:
+
+ EGL_NO_CONFIG_KHR ((EGLConfig)0)
+
+Additions to the EGL 1.5 Specification
+
+ Modify the 3rd paragraph of section 2.2 "Rendering Contexts and
+ Drawing Surfaces":
+
+ "Surfaces and contexts are both created with respect to an EGLConfig.
+ The EGLConfig describes the depth of the color buffer components and
+ the types, quantities and sizes of the ancillary buffers (i.e., the
+ depth, multisample, and stencil buffers). It is also possible to
+ create a context without using an EGLConfig, by specifying relevant
+ parameters at creation time (see sections 3.5 and 3.7, respectively)."
+
+ Modify the sixth paragraph of section 2.2:
+
+ "A context can be used with any EGLSurface that it is <compatible>
+ with (subject to the restrictions discussed in the section on
+ address space). A context and surface are compatible if they were
+ created with respect to the same EGLDisplay, and if either of the
+ following sets of conditions apply:
+
+ * The context was created without an EGLConfig. Such contexts match
+ any valid EGLSurface.
+
+ or,
+
+ * The context and surface support the same type of color buffer
+ (RGB or luminance).
+
+ * They have color buffers and ancillary buffers of the same depth.
+
+ ... replicate remainder of this bullet point ...
+
+ As long as the compatibility constraint and the address space ..."
+
+ Insert a new paragraph after paragraph 3 in section 3.7.1 "Creating
+ Rendering Contexts" on p. 51:
+
+ "<config> specifies an EGLConfig defining properties of the context. If
+ <config> is EGL_NO_CONFIG_KHR, the resulting context is said to be
+ created <without reference to an EGLConfig>. In this case, the context
+ must pass the required conformance tests for that client API and must
+ support being made current without a rendering surface. Such support is
+ guaranteed for OpenGL ES 2.0 implementations supporting the
+ GL_OES_surfaceless_context extension, OpenGL ES 3.0 and later versions
+ of OpenGL ES, and OpenGL 3.0 and later versions of OpenGL. Support for
+ other versions and other client APIs is implementation dependent."
+
+ Replace the EGL_BAD_CONFIG error for eglCreateContext on p. 56, and add
+ a new errors:
+
+ "* An EGL_BAD_CONFIG error is generated if <config> is neither
+ EGL_NO_CONFIG_KHR nor a valid <config>.
+
+ * An EGL_BAD_MATCH error is generated if <config> is EGL_NO_CONFIG_KHR,
+ and the requested client API type and version do not support being
+ made current without a rendering surface.
+
+ * An EGL_BAD_MATCH error is generated if <config> is EGL_NO_CONFIG_KHR,
+ and the implementation does not support the requested client API and
+ version."
+
+ Modify the first error for eglMakeCurrent in the list on p. 58:
+
+ "* An EGL_BAD_MATCH error is generated if <draw> or <read> are not
+ compatible with <ctx>, as described in section 2.2."
+
+ Modify the description of eglQueryContext in section 3.7.4 on p. 63:
+
+ "Querying EGL_CONFIG_ID returns the ID of the EGLConfig with respect
+ to which the context was created, or zero if created without
+ respect to an EGLConfig."
+
+Errors
+
+ As described in the body of the extension above.
+
+Conformance Tests
+
+ None
+
+Sample Code
+
+ None
+
+Dependencies On EGL 1.4
+
+ If implemented on EGL 1.4, interactions with EGL 1.5-specific features
+ are removed.
+
+Issues
+
+ 1) Should non-conformant no-config contexts be allowed to be created?
+
+ RESOLVED: No. We are not encouraging non-conformant contexts.
+
+ 2) Are no-config contexts constrained to those GL & ES implementations
+ which can support them?
+
+ RESOLVED: Yes. ES2 + OES_surfaceless_context, ES 3.0, and GL 3.0 all
+ support binding a surface without a context. This implies that they
+ don't need to know surface attributes at context creation time.
+
+ 3) For an OpenGL or OpenGL ES context created with no config, what is the
+ initial state of GL_DRAW_BUFFER and GL_READ_BUFFER for the default
+ framebuffer?
+
+ RESOLVED: This is an implementation detail rather than a spec issue.
+ glReadBuffer/glDrawBuffer have undefined results if called without a
+ current context. The GL_DRAW_BUFFER and GL_READ_BUFFER are set on the
+ first eglMakeCurrent call and can be updated in glReadBuffer and
+ glDrawBuffers calls after that. Therefore, the attribute value with
+ which the context is created is irrelevant from the point of view of the
+ spec and is left up to the implementation.
+
+ 4) Can eglMakeCurrent alter the GL_DRAW_BUFFER and GL_READ_BUFFER state of
+ the default framebuffer?
+
+ RESOLVED: Yes, but only on the first call to eglMakeCurrent. The two
+ relevant excerpts from the OpenGL 3.2 Core Profile Specification.
+ From Section 4.2.1 Selecting a Buffer for Writing:
+
+ For the default framebuffer, in the initial state the draw buffer
+ for fragment color zero is BACK if there is a back buffer; FRONT if
+ there is no back buffer; and NONE if no default framebuffer is
+ associated with the context.
+
+ From 4.3.3 Pixel Draw/Read State:
+
+ For the default framebuffer, in the initial state the read buffer is
+ BACK if there is a back buffer; FRONT if there is no back buffer;
+ and NONE if no default framebuffer is associated with the context.
+
+ Based on the above excerpts on the first call to eglMakeCurrent the
+ GL_DRAW_BUFFER and GL_READ_BUFFER are set to: GL_NONE if the surface is
+ NULL, GL_BACK if the surface is double buffered, GL_FRONT if the surface
+ is single buffered. Following calls to glReadBuffer and glDrawBuffers
+ change the GL_DRAW_BUFFER and GL_READ_BUFFER attributes and these values
+ persist even when the application change the current context.
+
+ 5) Should we add an eglCreateGenericContext which is the same as
+ eglCreateContext but without the config parameter?
+
+ RESOLVED: No.
+
+ 6) Can no-config contexts share state with contexts that has a config?
+
+ RESOLVED: Yes. This extension implies that the dependency of the context
+ on the config is quite minimal so no restriction w.r.t sharing should be
+ enforced.
+
+ 7) What surface types can be made current with a no-config context?
+
+ RESOLVED: any surface type supported by the implementation can be made
+ current with a no-config context.
+
+Revision History
+
+ Version 9. 2016/09/08 (Jon Leech) - Modify cast of EGL_NO_CONFIG_KHR to
+ (EGLConfig) per bug 15473.
+
+ Version 8. 2016/08/09 (Jon Leech) - Assign extension number, reflow
+ text, and publish.
+
+ Version 7. 2016/05/09 - Recorded vote at working group and sent to
+ Promoters for ratification.
+
+ Version 6. 2016/04/27 - Updated issue #6. Added an EGL_BAD_MATCH case to
+ eglCreateContext.
+
+ Version 5. 2016/04/20 - White space cleanup. Added extension type.
+ Cleaned up issues #1, #2, #4 and #6.
+
+ Version 4. 2016/03/24 - Added a list of contributers. Fixed resolution
+ of issue #3 and #4.
+
+ Version 3. 2016/03/10 - removed restriction to window surfaces only.
+ Removed comment on EGL_RENDERABLE_TYPE. Resolved issues 3 and 4. Added
+ issue 7.
+
+ Version 2, 2016/03/09 - querying EGL_CONFIG_ID on a context created
+ without a config returns zero. Contexts created without a config can
+ share state with contexts which were created with a config.
+
+ Version 1, 2016/01/27 - branch from draft EGL_KHR_no_config specification.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt
new file mode 100644
index 0000000..bd7cf47
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt
@@ -0,0 +1,501 @@
+Name
+
+ KHR_partial_update
+
+Name Strings
+
+ EGL_KHR_partial_update
+
+Contributors
+
+ Ray Smith
+ Tom Cooksey
+ James Jones
+ Chad Versace
+ Jesse Hall
+
+Contact
+
+ Ray Smith, ARM (Raymond.Smith 'at' arm.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on September 17, 2014.
+ Approved by the Khronos Board of Promoters on November 7, 2014.
+
+Version
+
+ Version 12, September 12, 2014
+
+Number
+
+ EGL Extension #83
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.4 or later is required.
+
+ Written based on the EGL 1.5 specification (March 12, 2014).
+
+ The behavior of part of this extension is different depending on whether the
+ EGL_EXT_buffer_age extension is also present.
+
+ This extension trivially interacts with EGL_KHR_swap_buffers_with_damage and
+ EGL_EXT_swap_buffers_with_damage. This extension is worded against the KHR
+ version, but the interactions with the EXT version are identical.
+
+New Procedures and Functions
+
+
+ EGLBoolean eglSetDamageRegionKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ Accepted in the <attribute> parameter of eglQuerySurface:
+
+ EGL_BUFFER_AGE_KHR 0x313D
+
+Overview
+
+ The aim of this extension is to allow efficient partial updates for postable
+ surfaces. It allows implementations to completely avoid processing areas of
+ the surface which have not changed between frames, allowing increased
+ efficiency.
+
+ It does so by providing information and guarantees about the content of the
+ current back buffer which allow the application to "repair" only areas that
+ have become out of date since the particular back buffer was last used.
+
+ The information provided is in the form of the "age" of the buffer, that is,
+ how many frames ago it was last used as the back buffer for the surface. If
+ the application tracks what changes it has made to the surface since this
+ back buffer was last used, it can bring the entire back buffer up to date by
+ only re-rendering the areas it knows to be out of date.
+
+ Use of this extension provides a more efficient alternative to
+ EGL_BUFFER_PRESERVED swap behaviour. EGL_BUFFER_PRESERVED typically implies
+ an expensive full-frame copy at the beginning of the frame, as well as a
+ dependency on the previous frame. Usage of this extension avoids both and
+ requires only the necessary updates to a back buffer to be made.
+
+Terminology
+
+ This extension and the EGL_KHR_swap_buffers_with_damage extension both use
+ the word "damage" for subtly but significantly different purposes:
+
+ "Surface damage" is what the EGL_KHR_swap_buffers_with_damage extension
+ is concerned with. This is the area of the *surface* that changes between
+ frames for that surface. It concerns the differences between two buffers -
+ the current back buffer and the current front buffer. It is useful only to
+ the consumer.
+
+ "Buffer damage" is what the EGL_KHR_partial_update extension is concerned
+ with. This is the area of a particular buffer that has changed since that
+ same buffer was last used. As it only concerns changes to a single buffer,
+ there is no dependency on the next or previous frames or any other buffer.
+ It therefore cannot be used to infer anything about changes to the surface,
+ which requires linking one frame or buffer to another. Buffer damage is
+ therefore only useful to the producer.
+
+ Following are examples of the two different damage types. Note that the
+ final surface content is the same in both cases, but the damaged areas
+ differ according to the type of damage being discussed.
+
+Surface damage example (EGL_KHR_swap_buffers_with_damage)
+
+ The surface damage for frame n is the difference between frame n and frame
+ (n-1), and represents the area that a compositor must recompose.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| | | | | | |
+ |@@@@@@@@@| | | |@@@@@@@@@| | | | | Surface damage
+ |@@@@@@@@@| | | | | |@@@@@@@@@| | |
+ |@@@@@@@@@| | | | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+Buffer damage example (EGL_KHR_partial_update)
+
+ The buffer damage for a frame is the area changed since that same buffer was
+ last used. If the buffer has not been used before, the buffer damage is the
+ entire area of the buffer.
+
+ The buffer marked with an 'X' in the top left corner is the buffer that is
+ being used for that frame. This is the buffer to which the buffer age and
+ the buffer damage relate.
+
+ Note that this example shows a double buffered surface - the actual number
+ of buffers could be different and variable throughout the lifetime of the
+ surface. The age *must* therefore be queried for every frame.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+ X---------+
+ | | | | |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Buffer 1 content
+ | | | | | | | | |#########|
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+
+ |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| Buffer 2 content
+ | | | | |#########| |#########|
+ | | | | | | | |
+ +---------+ +---------+ +---------+ +---------+
+
+ 0 0 2 2 2 Buffer age
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | | |
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | Buffer damage
+ |@@@@@@@@@| |@@@@@@@@@| | | |@@@@@@@@@| |@@@@@@@@@|
+ |@@@@@@@@@| |@@@@@@@@@| | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+
+Add a new section entitled "Partial updates to postable surfaces" to section
+3.5:
+
+ The "damage region" defines the area of the buffer to which all rendering
+ commands must be restricted. It applies only for surfaces which can be
+ posted, as described in section 3.10, and only when the swap behavior is
+ EGL_BUFFER_DESTROYED.
+
+ The contents of the buffer outside of the damage region may always be relied
+ upon to contain the same content as the last time they were defined for the
+ current back buffer. See section 3.5.6 for how to query when the current
+ back buffer was last used, and therefore what those contents are.
+
+ If EGL_EXT_buffer_age is supported, the contents of the buffer inside the
+ damage region may also be relied upon to contain the same content as the
+ last time they were defined for the current back buffer. If
+ EGL_EXT_buffer_age is not supported, the contents of the buffer inside the
+ damage region are always undefined after calling eglSwapBuffers.
+
+ Setting the damage region appropriately can be used to efficiently update
+ only the necessary areas inbetween frames.
+
+ After posting the back buffer, the damage region is set to the full
+ dimensions of the surface. The damage region can only be changed by the
+ application before any client API commands that draw to the surface have
+ been made. After this, the damage region is frozen until the back buffer is
+ posted again.
+
+ Use the command
+ EGLBoolean eglSetDamageRegionKHR(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint *rects,
+ EGLint n_rects)
+
+ to set the damage region.
+
+ The damage region for <surface> is set to the area described by <n_rects> and
+ <rects> if all of the following conditions are met:
+
+ * <surface> is the current draw surface of the calling thread
+ * <surface> is a postable surface
+ * There have been no client API commands which result with rendering to
+ <surface> since eglSwapBuffers was last called with <surface>, or since
+ <surface> was created in case eglSwapBuffers has not yet been called with
+ <surface>.
+ * The surface's swap behavior is EGL_BUFFER_DESTROYED
+
+ <n_rects> specifies the number of rectangles comprising the damage region.
+ <rects> is a pointer to a list of values describing the rectangles. The list
+ should consist of <n_rects> groups of four values, with each group
+ representing a single rectangle in surface coordinates in the form {x, y,
+ width, height}. Coordinates are specified relative to the lower left corner
+ of the surface. It is not necessary to avoid overlaps of the specified
+ rectangles. Rectangles that lie (partially) outside of the current surface
+ dimensions (as queryable via the EGL_WIDTH and EGL_HEIGHT attributes) will
+ be clamped to the current surface dimensions.
+
+ If <n_rects> is zero, <rects> is ignored and the damage region is set to the
+ full dimensions of the surface.
+
+ If <n_rects> is not zero but the rectangles in <rects> describe a region of
+ zero area after clamping, the damage region is set to the empty region.
+
+ If <rects> contains more than (4 * <n_rects>) values, the remaining values
+ are ignored. If <rects> contains fewer than (4 * <n_rects>) values, the
+ behavior is undefined, up to and including program termination.
+
+ At all times, any client API rendering which falls outside of the damage
+ region results in undefined framebuffer contents for the entire framebuffer.
+ It is the client's responsibility to ensure that rendering is confined to
+ the current damage area.
+
+ If any client API commands resulting in rendering to <surface> have been
+ issued since eglSwapBuffers was last called with <surface>, or since the
+ surface was created in case eglSwapBuffers has not yet been called on it,
+ attempting to set the damage region will result in undefined framebuffer
+ contents for the entire framebuffer.
+
+ Errors
+ ------
+ eglSetDamageRegionKHR returns EGL_FALSE on failure:
+ * If <surface> is not a postable surface, an EGL_BAD_MATCH error is
+ generated
+ * If <surface> is not the current draw surface for the calling thread, an
+ EGL_BAD_MATCH error is generated
+ * If the value of EGL_SWAP_BEHAVIOR for <surface> is not
+ EGL_BUFFER_DESTROYED, an EGL_BAD_MATCH error is generated
+ * If eglSetDamageRegionKHR has already been called on <surface> since the
+ most recent frame boundary, an EGL_BAD_ACCESS error is generated
+ * If the EGL_BUFFER_AGE_KHR attribute of <surface> has not been queried
+ since the most recent frame boundary, an EGL_BAD_ACCESS error is generated
+
+Add before the final paragraph in section 3.5.6 "Surface Attributes":
+
+ Querying EGL_BUFFER_AGE_KHR returns the age of the color contents of the
+ current back buffer as the number of frames elapsed since it was most
+ recently defined. Under certain conditions described below, applications
+ can, in conjunction with the surface's damage region (see section 3.5.1),
+ use this age to safely rely on the contents of old back buffers to reduce
+ the amount of redrawing they do each frame.
+
+ To query the age of a surface, it must be the current draw surface for the
+ calling thread.
+
+ Function name
+ --------------------
+ eglSwapBuffers
+ eglSwapBuffersWithDamageKHR
+
+ Table 3.X, Frame Boundary Functions
+
+ Buffers' ages are initialized to 0 at buffer creation time. When a frame
+ boundary is reached, the following occurs before any exchanging or copying
+ of color buffers:
+
+ * The current back buffer's age is set to 1.
+ * Any other color buffers' ages are incremented by 1 if
+ their age was previously greater than 0.
+
+ For example, with a double buffered surface and an implementation that swaps
+ via buffer exchanges, the age would usually be 2. With a triple buffered
+ surface the age would usually be 3. An age of 1 usually means the previous
+ swap was implemented as a copy. An age of 0 means the buffer has only just
+ been initialized and the contents are undefined. Single buffered surfaces
+ have no frame boundaries and therefore always have an age of 0.
+
+ Where specified in terms of the current damage region (see section 3.5.6),
+ the relevant part of a buffer's content is considered defined when the
+ buffer's age is a value greater than 0.
+
+ Frame boundaries are the only events that can set a buffer's age to a
+ positive value. Once EGL_BUFFER_AGE_KHR has been queried then it can be
+ assumed that the age will remain valid until the next frame boundary. EGL
+ implementations are permitted, but not required, to reset the buffer age in
+ response to pixel ownership test changes for any pixels within the drawable,
+ or if new pixels are added to or removed from the drawable, i.e., the
+ drawable is resized. A reset of this nature does not affect the age of
+ content for pixels that pass the pixel ownership test before and after the
+ event that caused the reset. In other words, applications can assume that
+ no event will invalidate the content of pixels that continuously pass the
+ pixel ownership test between when the buffer age was queried and the
+ following frame boundary. It is up to applications to track pixel ownership
+ using data collected from relevant window system events, such as
+ configuration and expose events on the X11 platform.
+
+ EGL_BUFFER_AGE_KHR state is a property of the EGL surface that owns the
+ buffers and lives in the address space of the application. That is, if an
+ EGL surface has been created from a native window or pixmap that may be
+ shared between processes, the buffer age is not guaranteed to be
+ synchronized across the processes. Binding and unbinding a surface to and
+ from one or more contexts in the same address space will not affect the ages
+ of any buffers in that surface.
+
+Add to the list of errors for eglQuerySurface at the end of section 3.5.6
+"Surface Attributes":
+
+ If <attribute> is EGL_BUFFER_AGE_KHR and <surface> is not the current draw
+ surface for the calling thread, an EGL_BAD_SURFACE error is generated.
+
+Add to the end of section 3.10.1.1 "Native Window Resizing":
+
+ If eglSetDamageRegionKHR has been called with anything other than zero for
+ <n_rects>, a surface resize will cause the damage region to become
+ undefined. This will effectively cause the entire framebuffer content to
+ become undefined until the next frame.
+
+Dependencies on EGL_KHR_swap_buffers_with_damage
+
+ If EGL_KHR_swap_buffers_with_damage is not supported, all references to
+ eglSwapBuffersWithDamageKHR are removed.
+
+Issues
+
+ 1) What should happen if the client renders outside of the damage area?
+
+ RESOLVED: The entire framebuffer content will be undefined.
+
+ DISCUSSION: The definedness of different parts of the buffer varies across
+ implementations, making it hard to define, and providing any more specific
+ information may encourage improper and non-portable use of this extension.
+
+ 2) How does this interact with EGL_EXT_buffer_age?
+
+ RESOLVED: The initial content of the damage area differs depending on
+ whether EGL_EXT_buffer_age is present or not, making this extension fully
+ backwards compatible with EGL_EXT_buffer_age, while not depending on it.
+
+ 3) How does this interact with EGL_KHR_swap_buffers_with_damage?
+
+ RESOLVED: It does not interact materially with
+ EGL_KHR_swap_buffers_with_damage, except for the trivial interaction with
+ eglSwapBuffersWithDamageKHR being a frame boundary function if the extension
+ is also supported.
+
+ DISCUSSION: This extension only provides a way to efficiently update the
+ back buffer for a surface. It does not have any effect on the subsequent
+ posting of that buffer. For maximum efficiency, applications should use both
+ EGL_KHR_partial_update and EGL_KHR_swap_buffers_with_damage simultaneously.
+
+ 4) How does this interact with EGL_BUFFER_PRESERVED?
+
+ RESOLVED: It is an error to call eglSetDamageRegionKHR with a surface with
+ EGL_BUFFER_PRESERVED swap behavior. However, it is not an error to query the
+ age of the buffer in this case.
+
+ DISCUSSION: A layered extension will be proposed to guarantee that the age
+ of a buffer is always 1 after the first frame for a surface. This will
+ provide similar (but not identical) semantics to EGL_BUFFER_PRESERVED for
+ applications that need it.
+
+ 5) How does surface resizing affect the damage region?
+
+ RESOLVED: The damage region becomes undefined if a surface resize occurs
+ after it has been set to anything except the full buffer. Because rendering
+ outside the damage area results in undefined framebuffer contents, this
+ effectively means that the entire framebuffer content becomes undefined
+ until the next frame.
+
+ 6) What happens if the damage region is set after any client rendering
+ commands?
+
+ OPTION 1: An error is returned. Detecting this condition is non-trivial in
+ some implementations.
+
+ OPTION 2: The entire framebuffer contents become undefined.
+
+ RESOLVED: Option 2.
+
+ 7) Should the entire region be provided in advance of any rendering, or should
+ each region be supplied immediately before the rendering commands for that
+ region, and multiple regions can be defined per frame?
+
+ RESOLVED: The entire region must be provided in advance of any rendering.
+
+ 8) What should be the behavior if eglSetDamageRegionKHR is called multiple
+ times before the first rendering command?
+
+ RESOLVED: This is an error. The entire region must be provided during a
+ single call, with no overwrite or modify behavior needed.
+
+ 9) Is it allowed to set the damage region when the buffer age has not been
+ queried?
+
+ RESOLVED: This is an error. This could only make sense when the damage
+ region is the entire buffer, which it is initially anyway. Otherwise the
+ undamaged area needs to be defined to an age that the application doesn't
+ know about. It's not clear that this would ever be useful to the
+ application, because it can't know at this point which areas it needs to
+ update.
+
+10) What is the behavior if, after clamping, the damage region is empty?
+
+ RESOLVED: The damage region is set to empty.
+
+
+Revision History
+
+ Version 1, 28/01/2014
+ - Initial draft
+ Version 2, 05/02/2014
+ - Removed clip behavior, replaced with undefined framebuffer contents if
+ client renders outside of given damage region
+ - Renamed to EGL_KHR_partial_update from EGL_KHR_frame_clip
+ - Added detailed parameter descriptions and error conditions
+ - Added dependency on GL_XXX_damage_region
+ - Defined interactions with EGL_EXT_buffer_age
+ Version 3, 04/03/2014
+ - Removed dependency on GL_XXX_damage_region
+ - Changed error on defining damage region after drawcalls to be undefined
+ rendering results instead
+ - Redefined interactions with EGL_EXT_buffer_age to allow both to exist
+ Version 4, 20/03/2014
+ - Modified language to allow use with EGLStream producer surfaces
+ - Clarified that surface must be the current *draw* surface
+ - Changed n_rects=0 behavior to set the damage region to the entire surface
+ - Clarified that rendering outside the damage region results in the entire
+ framebuffer becoming undefined
+ Version 5, 20/03/2014
+ - Updated to be based on EGL 1.5 spec
+ Version 6, 23/04/2014
+ -Added the pixel ownership logic from EGL_EXT_buffer_age
+ -Ported over the detailed description of buffer age from EGL_EXT_buffer_age
+ -Added a "New Functions" and "New Tokens" section.
+ -Added dependencies on EGL_EXT_swap_buffers_with_damage
+ Version 7, 20/05/2014
+ - Removing a couple of now-obsolete sentences
+ - An age of 1 *usually* means the previous swap was implemented as a copy.
+ - Reworded "For the purposes of buffer age tracking..." to reference the
+ conditions under which the different parts of the buffer are actually
+ defined, which depend on the damage region
+ Version 8, 20/05/2014
+ - Added issues list
+ Version 9, 12/08/2014
+ - Removed outdated modification to "Posting to a Window"
+ - Changed names and order of rects/n_rects to match
+ EGL_EXT_swap_buffers_with_damage
+ - Resolved issue 3 on EGL_EXT_swap_buffers_with_damage interactions
+ - Resolved issue 4 on EGL_BUFFER_PRESERVED swap behavior
+ - Resolved issue 5 on surface resize behavior
+ - Resolved issue 7 on multiple calls to eglSetDamageRegionKHR
+ - Added issue 8 and suggested resolution
+ - Added issue 9 and suggested resolution
+ - Added issue 10 and suggested resolution
+ Version 10, 19/08/2014
+ - Added section on terminology and damage types
+ Version 11, 10/09/2014
+ - Resolved outstanding issues
+ Version 12, 12/09/2014
+ - Added the restriction that you can only query the age of a surface while
+ it is the current draw surface.
+ Version 13, 18/09/2015
+ - Marked as a Display extension
+ - Changed remaining references to EGL_EXT_swap_buffers_with_damage to
+ EGL_KHR_swap_buffers_with_damage
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt
new file mode 100644
index 0000000..6568b64
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt
@@ -0,0 +1,102 @@
+Name
+
+ KHR_platform_android
+
+Name Strings
+
+ EGL_KHR_platform_android
+
+Contributors
+
+ Jesse Hall <jessehall 'at' google.com>
+ The contributors to the EGL_KHR_platform_gbm extension, which this
+ extension was based on.
+
+Contacts
+
+ Jesse Hall <jessehall 'at' google.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 1, 2014/01/27
+
+Number
+
+ EGL Extension #68
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native Android
+ resources using the EGL 1.5 platform functionality.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_ANDROID_KHR 0x3141
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay for the Android device, call eglGetPlatformDisplay
+ with <platform> set to EGL_PLATFORM_ANDROID_KHR and with <native_display>
+ set to EGL_DEFAULT_DISPLAY.
+
+ For each EGLConfig that belongs to the Android platform, the
+ EGL_NATIVE_VISUAL_ID attribute is an Android window format, such as
+ WINDOW_FORMAT_RGBA_8888.
+
+ To obtain a rendering surface from an Android native window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to the Android
+ platform and a <native_window> that points to a ANativeWindow.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to the Android platform. Any such call fails and generates
+ an EGL_BAD_PARAMETER error.
+
+Issues
+
+ 1. Should this extension even exist? Android devices only support one
+ window system.
+
+ RESOLUTION: Yes. Although the Android Open Source Project master branch
+ only supports one window system, customized versions of Android could
+ extend that to support other window systems. More importantly, having a
+ platform extension allows EGL 1.5 applications to use the platform and
+ non-platform Get*Display and Create*WindowSurface calls interchangeably. As a user of the API it would be confusing if that didn't work.
+
+Revision History
+
+ Version 1, 2014/01/27 (Jesse Hall)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt
new file mode 100644
index 0000000..a4c04e0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt
@@ -0,0 +1,295 @@
+Name
+
+ KHR_platform_gbm
+
+Name Strings
+
+ EGL_KHR_platform_gbm
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Jon Leech (oddhack 'at' sonic.net)
+ Kristian Høgsberg <krh@bitplanet.org>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 3, 2016/01/04
+
+Number
+
+ EGL Extension #69
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native GBM
+ resources using the EGL 1.5 platform functionality (GBM is a Generic
+ Buffer Manager for Linux).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_GBM_KHR 0x31D7
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay from an GBM device, call eglGetPlatformDisplay with
+ <platform> set to EGL_PLATFORM_GBM_KHR. The <native_display> parameter
+ specifies the GBM device to use and must either point to a `struct
+ gbm_device` or be EGL_DEFAULT_DISPLAY. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then the resultant EGLDisplay will be backed by some
+ implementation-chosen GBM device.
+
+ For each EGLConfig that belongs to the GBM platform, the
+ EGL_NATIVE_VISUAL_ID attribute is a GBM color format, such as
+ GBM_FORMAT_XRGB8888.
+
+ To obtain a rendering surface from a GBM surface, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to the GBM
+ platform and a <native_window> that points to a `struct gbm_surface`. If
+ <native_window> was created without the GBM_BO_USE_RENDERING flag, or if
+ the color format of <native_window> differs from the EGL_NATIVE_VISUAL_ID
+ of <config>, then the function fails and generates EGL_BAD_MATCH.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to the GBM platform. Any such call fails and generates
+ an EGL_BAD_PARAMETER error.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns an EGLDisplay backed by an implementation-chosen GBM device.
+
+Example Code
+
+ // This example program creates an EGL surface from a GBM surface.
+ //
+ // If the macro EGL_KHR_platform_gbm is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lgbm -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
+ #include <EGL/egl.h>
+ #include <gbm.h>
+
+ struct my_display {
+ struct gbm_device *gbm;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ struct gbm_surface *gbm;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef EGL_KHR_platform_gbm
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // No client extensions string available
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_KHR_platform_gbm")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ int fd = open("/dev/dri/card0", O_RDWR | FD_CLOEXEC);
+ if (fd < 0) {
+ abort();
+ }
+
+ dpy.gbm = gbm_create_device(fd);
+ if (!dpy.gbm) {
+ abort();
+ }
+
+
+ #ifdef EGL_KHR_platform_gbm
+ dpy.egl = eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR, dpy.gbm, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.gbm);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglGetConfigs(dpy.egl, NULL, 0, &num_configs)) {
+ abort();
+ }
+
+ EGLConfig *configs = malloc(num_configs * sizeof(EGLConfig));
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs,
+ configs, num_configs, &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ // Find a config whose native visual ID is the desired GBM format.
+ for (int i = 0; i < num_configs; ++i) {
+ EGLint gbm_format;
+
+ if (!eglGetConfigAttrib(dpy.egl, configs[i],
+ EGL_NATIVE_VISUAL_ID, &gbm_format)) {
+ abort();
+ }
+
+ if (gbm_format == GBM_FORMAT_XRGB8888) {
+ config.egl = configs[i];
+ free(configs);
+ return config;
+ }
+ }
+
+ // Failed to find a config with matching GBM format.
+ abort();
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.gbm = gbm_surface_create(config.dpy.gbm,
+ 256, 256,
+ GBM_FORMAT_XRGB8888,
+ GBM_BO_USE_RENDERING);
+ if (!window.gbm) {
+ abort();
+ }
+
+ #ifdef EGL_KHR_platform_gbm
+ window.egl = eglCreatePlatformWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 3, 2016-01-04 (Jon Leech)
+ - Free config memory allocated in sample code (Public Bug 1445).
+
+ Version 2, 2014/02/12 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplay accepts EGL_DEFAULT_DISPLAY for GBM.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_MESA_platform_gbm to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt
new file mode 100644
index 0000000..d7315b3
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt
@@ -0,0 +1,122 @@
+Name
+
+ KHR_platform_wayland
+
+Name Strings
+
+ EGL_KHR_platform_wayland
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Jon Leech (oddhack 'at' sonic.net)
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 2, 2014/02/18
+
+Number
+
+ EGL Extension #70
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+ The behavior of part of this extension is different depending on whether
+ the EGL_EXT_buffer_age extension is also present.
+
+Overview
+
+ This extension defines how to create EGL resources from native Wayland
+ resources using the EGL 1.5 platform functionality.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_WAYLAND_KHR 0x31D8
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay backed by a Wayland display, call
+ eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_WAYLAND_KHR. The
+ <native_display> parameter specifies the Wayland display to use and must
+ either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create a new
+ wl_display structure by connecting to the default Wayland socket. The
+ manual page wl_display_connect(3) defines the location of the default
+ Wayland socket.
+
+ To obtain an on-screen rendering surface from a Wayland window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to Wayland and
+ a <native_window> that points to a `struct wl_egl_surface`.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to Wayland. Any such call fails and generates an
+ EGL_BAD_PARAMETER error.
+
+ Rendering to the obtained EGLSurface or querying it with EGL_BUFFER_AGE_KHR
+ will lock its back buffer preventing it from being dropped or resized,
+ until the next buffer swap. The rationale behind this behavior is to keep
+ operations result accurate until the next swap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay()?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns a display backed by the default Wayland display.
+
+ 2. Should this extension support creation of EGLPixmap resources from
+ Wayland pixmaps?
+
+ RESOLVED. No. Wayland has no pixmap type.
+
+Revision History
+ Version 3, 2022/07/14 (Kirill Chibisov)
+ - Clarify EGLSurface back buffer locking behavior with regards to
+ rendering and surface querying operations.
+ - Add dependency on EGL_EXT_buffer_age.
+
+ Version 2, 2014/02/18 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplay accepts EGL_DEFAULT_DISPLAY for Wayland.
+ - Explain in more detail how EGL connects to the default Wayland
+ display.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_EXT_platform_wayland to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt
new file mode 100644
index 0000000..2c44141
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt
@@ -0,0 +1,378 @@
+Name
+
+ KHR_platform_x11
+
+Name Strings
+
+ EGL_KHR_platform_x11
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+ Jon Leech (oddhack 'at' sonic.net)
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 3, 2014/02/18
+
+Number
+
+ EGL Extension #71
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the EGL 1.5 platform functionality.
+
+ This extension only defines how to create EGL resources from Xlib
+ resources. It does not define how to do so from xcb resources. All X11
+ types discussed here are defined by the header `Xlib.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_X11_KHR 0x31D5
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplay:
+
+ EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ On the X11 platform, an EGLDisplay refers to a specific X11 screen rather
+ than an X11 display connection. This is the case because separate X11
+ screens, even when belonging to the same X11 display connection, may
+ reside on different GPUs and/or be driven by different drivers. Therefore,
+ different X11 screens may have different EGL capabilities.
+
+ To obtain an EGLDisplay backed by an X11 screen, call eglGetPlatformDisplay
+ with <platform> set to EGL_PLATFORM_X11_KHR. The <native_display> parameter
+ specifies the X11 display connection to use, and must either point to
+ a valid X11 `Display` or be EGL_DEFAULT_DISPLAY. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then EGL will create [1] a connection to the default
+ X11 display. The environment variable DISPLAY determines the default X11
+ display as described in the manual page for XOpenDisplay(3). The value of
+ attribute EGL_PLATFORM_X11_SCREEN_KHR specifies the X11 screen to use. If
+ the attribute is omitted from <attrib_list>, then the display connection's
+ default screen is used. Otherwise, the attribute's value must be a valid
+ screen on the display connection. If the attribute's value is not a valid
+ screen, then an EGL_BAD_ATTRIBUTE error is generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ XOpenDisplay, xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to X11 and
+ a <native_window> that points to an X11 Window.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurface with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an X11 Pixmap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay()?
+
+ RESOLVED. Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns an EGLDisplay backed by the default X11 display.
+
+ 2. When given EGL_DEFAULT_DISPLAY, does eglGetPlatformDisplay reuse an
+ existing X11 display connection or create a new one?
+
+ RESOLVED. eglGetPlatformDisplay creates a new connection because the
+ alternative is infeasible. EGL cannot reliably detect if the client
+ process already has a X11 display connection.
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // If the macro USE_EGL_KHR_PLATFORM_X11 is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lX11 -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <X11/Xlib.h>
+
+ struct my_display {
+ Display *x11;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ XVisualInfo *x11;
+ Colormap colormap;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ Window x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ Pixmap x11;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // No client extensions string available
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_KHR_platform_x11")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ dpy.x11 = XOpenDisplay(NULL);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ dpy.egl = eglGetPlatformDisplay(EGL_PLATFORM_X11_KHR, dpy.x11, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.x11);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl,
+ egl_config_attribs,
+ &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ XVisualInfo x11_visual_info_template;
+ if (!eglGetConfigAttrib(dpy.egl,
+ config.egl,
+ EGL_NATIVE_VISUAL_ID,
+ (EGLint*) &x11_visual_info_template.visualid)) {
+ abort();
+ }
+
+ int num_visuals;
+ config.x11 = XGetVisualInfo(dpy.x11,
+ VisualIDMask,
+ &x11_visual_info_template,
+ &num_visuals);
+ if (!config.x11) {
+ abort();
+ }
+
+ config.colormap = XCreateColormap(dpy.x11,
+ RootWindow(dpy.x11, 0),
+ config.x11->visual,
+ AllocNone);
+ if (config.colormap == None) {
+ abort();
+ }
+
+ return config;
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ XSetWindowAttributes attr;
+ unsigned long mask;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ attr.colormap = config.colormap;
+ mask = CWColormap;
+
+ window.x11 = XCreateWindow(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11), // parent
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ config.x11->depth,
+ InputOutput, // class
+ config.x11->visual,
+ mask, // valuemask
+ &attr); // attributes
+ if (!window.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ window.egl = eglCreatePlatformWindowSurface(config.dpy.egl,
+ config.egl,
+ &window.x11,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.x11,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap
+ get_pixmap(struct my_config config)
+ {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = XCreatePixmap(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11),
+ 256, 256, // width, height
+ config.x11->depth);
+ if (!pixmap.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ pixmap.egl = eglCreatePlatformPixmapSurface(config.dpy.egl,
+ config.egl,
+ &pixmap.x11,
+ NULL);
+ #else
+ pixmap.egl = eglCreatePixmapSurface(config.dpy.egl,
+ config.egl,
+ pixmap.x11,
+ NULL);
+ #endif
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 3, 2014/02/18 (Chad Versace)
+ - Update text to reflect resolution of issue #1. State that
+ <native_display> may be EGL_DEFAULT_DISPLAY.
+ - Explain in more detail how EGL connects to the default X11 display.
+ - Add and resolve issue #2.
+
+ Version 2, 2014/02/11 (Chad Versace)
+ - Fix 2nd argument to XCreatePixmap in example code.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_EXT_platform_x11 to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt
new file mode 100644
index 0000000..df49175
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt
@@ -0,0 +1,575 @@
+Name
+
+ KHR_reusable_sync
+
+Name Strings
+
+ EGL_KHR_reusable_sync
+
+Contributors
+
+ Acorn Pooley
+ Gary King
+ Gregory Prisament
+ Jon Leech
+ Robert Palmer
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+ Gregory Prisament, NVIDIA Corporation (gprisament 'at' nvidia.com)
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Robert Palmer (robert.palmer 'at' nokia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on August 28, 2009.
+
+Version
+
+ Version 22, January 31, 2014
+
+Number
+
+ EGL Extension #6
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows from the GL_ARB_sync extension but introduces a type of sync
+ object known as "reusable sync object" comparable to an OS
+ semaphore. The specification is designed to allow additional types of
+ sync objects to be easily introduced in later extensions.
+
+ Reusable sync objects may be used to synchronize activity between
+ threads or between client APIs. Synchronization is accomplished by
+ explicitly changing the status of a reusable object using EGL API
+ commands.
+
+New Types
+
+ /*
+ * EGLSyncKHR is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncKHR;
+
+ /*
+ * EGLTimeKHR is a 64-bit unsigned integer representing intervals
+ * in nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ EGLBoolean eglSignalSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLenum mode);
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_REUSABLE_KHR 0x30FA
+
+ Accepted by the <attribute> parameter of eglGetSyncAttribKHR:
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_STATUS_KHR 0x30F1
+
+ Accepted by the <mode> parameter of eglSignalSyncKHR and returned in
+ <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_STATUS_KHR:
+
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+
+ Accepted in the <flags> parameter of eglClientWaitSyncKHR:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncKHR:
+
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncKHR:
+
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+
+ Returned by eglCreateSyncKHR in the event of an error:
+
+ EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Initially, sync objects are unsignaled. EGL may be
+ asked to wait for a sync object to become signaled, or a sync
+ object's status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and
+ unsignaling the sync.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below
+ for different types of sync objects.
+
+ <Reusable sync objects> are created in the unsignaled state, and may
+ be signaled and/or unsignaled repeatedly. Every transition of a
+ reusable sync object's status from unsignaled to signaled will
+ release any threads waiting on that sync object.
+
+ The command
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib_list> is an attribute-value list specifying other attributes
+ of the sync object, terminated by an attribute entry EGL_NONE.
+ Attributes not specified in the list will be assigned their default
+ values.
+
+ If <type> is EGL_SYNC_REUSABLE_KHR, a reusable sync object is
+ created. In this case <attrib_list> must be NULL or empty
+ (containing only EGL_NONE). Attributes of the reusable sync object
+ are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_REUSABLE_KHR
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ The command
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until <timeout> nanoseconds have passed.
+
+ More than one eglClientWaitSyncKHR may be outstanding on the same
+ <sync> at any given time. When there are multiple threads blocked on
+ the same <sync> and the sync object is signaled, all such threads
+ are released, but the order in which they are released is not
+ defined.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncKHR simply
+ tests the current status of <sync>. If the value of <timeout> is the
+ special value EGL_FOREVER_KHR, then eglClientWaitSyncKHR does not
+ time out. For all other values, <timeout> is adjusted to the closest
+ value allowed by the implementation-dependent timeout accuracy,
+ which may be substantially longer than one nanosecond.
+
+ eglClientWaitSyncKHR returns one of three status values describing
+ the reason for returning. A return value of EGL_TIMEOUT_EXPIRED_KHR
+ indicates that the specified timeout period expired before <sync>
+ was signaled, or if <timeout> is zero, indicates that <sync> is
+ not signaled. A return value of EGL_CONDITION_SATISFIED_KHR
+ indicates that <sync> was signaled before the timeout expired, which
+ includes the case when <sync> was already signaled when
+ eglClientWaitSyncKHR was called. If an error occurs then an error is
+ generated and EGL_FALSE is returned.
+
+ If the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit is set in
+ <flags>, and <sync> is unsignaled when eglClientWaitSyncKHR is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ eglGetCurrentContext()) before blocking on <sync>. If no context is
+ current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit
+ is ignored.
+
+ If a sync object is destroyed while an eglClientWaitSyncKHR is
+ blocking on that object, eglClientWaitSyncKHR will unblock and
+ return immediately, just as if the sync object had been signaled
+ prior to being destroyed.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglSignalSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLenum mode);
+
+ signals or unsignals the reusable sync object <sync> by changing its
+ status to <mode>, which must be one of the values in table 3.bb. If
+ as a result of calling eglSignalSyncKHR the status of <sync>
+ transitions from unsignaled to signaled, any eglClientWaitSyncKHR
+ commands blocking on <sync> will unblock.
+
+ Assuming no errors are generated, EGL_TRUE is returned.
+
+ Mode Effect
+ ------------------ -------------
+ EGL_SIGNALED_KHR Set the status of <sync> to signaled
+ EGL_UNSIGNALED_KHR Set the status of <sync> to unsignaled
+
+ Table 3.bb Modes Accepted by eglSignalSyncKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If the type of <sync> is not EGL_SYNC_REUSABLE_KHR, EGL_FALSE is
+ returned and an EGL_BAD_MATCH error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+ is used to query attributes of the sync object <sync>. Legal values
+ for <attribute> depend on the type of sync object, as shown in table
+ 3.cc. Assuming no errors are generated, EGL_TRUE is returned and the
+ value of the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+ * If <attribute> is not one of the attributes in table 3.cc,
+ EGL_FALSE is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <attribute> is not supported for the type of sync object
+ passed in <sync>, EGL_FALSE is returned and an EGL_BAD_MATCH
+ error is generated.
+
+ If any error occurs, <*value> is not modified.
+
+ The command
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ is used to destroy an existing sync object. If any
+ eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, they will be woken up, as if <sync>
+ were signaled.
+
+ If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined."
+
+Issues
+
+ Note about the Issues
+ ---------------------
+ The wording for this extension was originally written as a single
+ extension defining two types of sync object; a "reusable sync
+ object" and a "fence sync object". That extension was split to
+ produce standalone extensions for each type of sync object, and
+ references to the other type removed from the specification
+ language. This issues list has been simplied to remove references to
+ fence sync objects but is otherwise very similar to the
+ EGL_KHR_fence_sync extension issues list.
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to enable adoption to be
+ as wide as possible, and to behave as similarly as possible to
+ synchronization primitives available in desktop OpenGL (e.g.,
+ NV_fence, ARB_sync).
+
+ In the interest of enabling widespread adoption, this extension
+ (following the ARB_sync model) has foregone the inclusion of
+ synchronization primitives and synchronization tests which may be
+ performed entirely inside client API command streams, instead
+ performing synchronization tests (eglClientWaitSyncKHR) inside the
+ application & host CPU.
+
+ In the interest of maintaining similarity with previous
+ synchronization primitives, this extension attempts to copy the
+ ARB_sync specification wherever possible (both functionally and
+ stylistically), only making changes where needed to operate inside
+ EGL (rather than a client API context) and match EGL naming
+ conventions.
+
+ 2. Why place this behavior in EGL, rather than in the client APIs?
+
+ RESPONSE: Ultimately, synchronization between multiple asynchronous
+ client API contexts (potentially executing in different threads) is
+ a problem which affects or will affect all EGL client APIs. Rather
+ than creating separate synchronization primitives in each of the
+ client APIs (and then wrapping them in an EGL container), in the
+ interest of developer simplicity & consistency this behavior is
+ being placed inside EGL.
+
+ 3. What does this extension provide that can not be accomplished
+ with the existing, more efficient eglWaitClient and eglWaitNative
+ API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in
+ extremely lightweight manners, in some cases not blocking the
+ calling thread at all; however, they can not be used to synchronize
+ between client API contexts and native APIs executing in separate
+ threads (or simply between client API contexts executing in separate
+ threads), such as between a thread with an active OpenGL context and
+ a second thread performing video decode.
+
+ 4. [REMOVED - found in the fence_sync extension.]
+
+ 5. Should integration with native platform synchronization objects
+ be included in this extension, or reserved for future
+ (platform-specific) extensions?
+
+ RESOLVED: Integration with native platform synchronization objects
+ should not be part of this extension, but can be added as future
+ layered extensions if needed. These layered extensions can be
+ platform-specific, or perhaps OpenKODE based.
+
+ Originally, this extension included the ability to create native
+ platform synchronization objects from EGLSync objects. This feature
+ was removed for a few reasons:
+
+ i) The proposed mechanism suggested mapping EGLSync objects to
+ pthread conditional variables on platforms with pthread support.
+ However, pthread conditional variables require an associated
+ mutex and there was no mechanism to relay this associated mutex
+ to the application.
+
+ ii) On certain platforms support for converting to native
+ platform synchronization objects adds great complexity to the
+ implementation.
+
+ iii) Now that OpenKODE is more mature, it would be better to
+ allow conversion from EGLSyncKHR objects to OpenKODE
+ synchronization primitives rather than platform-specific ones.
+ We suggest that this functionality, if needed, be added as a
+ layered extension instead of being included here. This way,
+ EGL_KHR_sync remains minimal and easy to implement on a variety
+ of platforms.
+
+ 6. Please provide a more detailed description of how
+ eglClientWaitSyncKHR behaves.
+
+ RESOLVED: eglClientWaitSyncKHR blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these may need to be imbedded into the actual
+ spec language):
+
+ * A reusable sync object has two possible status values: signaled
+ or unsignaled.
+ * When created, the status of the sync object is unsignaled by
+ default.
+ * A reusable sync can be set to signaled or unsignaled
+ status using eglSignalSyncKHR.
+ * A wait function called on a sync object in the unsignaled state
+ will block. It unblocks (note, not "returns to the application")
+ when the sync object transitions to the signaled state.
+ * A wait function called on a sync object in the signaled state
+ will return immediately.
+
+ 7. Should the 'flags' argument to eglClientWaitSyncKHR be
+ EGLint or EGLuint?
+
+ RESOLVED: EGLint, setting a precedent for explicit bitmask types
+ in EGL going forward. We don't have an EGLuint type and it is
+ overkill for this purposes when other bitmasks (surface type
+ and api type) are already using EGLint attribute fields.
+
+ 8. Can multiple WaitSyncs be placed on the same sync object?
+
+ RESOLVED: Yes. This has been allowed all along but we now state it
+ more clearly in the spec language. However, there is some concern
+ that this is hard to implement and of limited use, and we might
+ remove this capability before approving the extension.
+
+ One way to do this while allowing multiple waiters at some future
+ point is to expose it through the API to developers as either a sync
+ attribute allowing multiple waits (default not allowing it), or a
+ parameter to WaitSync, which initially must be something like
+ EGL_SINGLE_WAIT_ONLY.
+
+ 9. Should eglDestroySyncKHR release all WaitSyncs placed on a
+ reusable sync object?
+
+ RESOLVED: Yes. It is safest to release all threads waiting on a
+ reusable object when the sync object is deleted so that waiting
+ threads do not wait forever.
+
+Revision History
+
+#22 (Jon Leech, January 31, 2014)
+ - Clarify return value of ClientWaitSyncKHR when called with <timeout>
+ of zero for an unsignaled <sync> (Bug 11576).
+#21 (Jon Leech, April 23, 2013)
+ - Simplify issues list to remove issues specific to fence sync
+ objects.
+#20 (Jon Leech, September 8, 2009)
+ - Change status to complete and note approval by the Promoters.
+ Minor formatting changes.
+#19 (Robert Palmer, July 14, 2009)
+ - Branch wording from draft KHR_sync specification. Remove ability
+ to create "fence sync objects and all tokens/wording specific to
+ them.
+#18 (Robert Palmer, July 8, 2009)
+ - Issues 8 and 9 declared resolved in EGL meeting 2009-07-08
+#17 (Robert Palmer, July 8, 2009)
+ - Update eglDestroySyncKHR to special-case deletion of fence sync
+ objects. This is explained in issue 9.
+ - Corrected EGL_REUSABLE_SYNC_KHR -> EGL_SYNC_REUSABLE_KHR
+ - Define value for EGL_SYNC_REUSABLE_KHR
+ - Fix typo and whitespace
+#16 (Jon Leech, July 7, 2009)
+ - Update description of new tokens to match changes to the
+ eglCreateSyncKHR entry point in revision 15.
+#15 (Jon Leech, June 16, 2009)
+ - Define separate one-time fence sync and reusable sync extensions
+ and corresponding extension strings. Remove AUTO_RESET and
+ eglFenceKHR. Rename eglCreateFenceSyncKHR to eglCreateSyncKHR and
+ change initial status of reusable syncs to unsignaled. Clarify
+ which functions apply to which types of sync objects. Update
+ issues list.
+#14 (Jon Leech, April 29, 2009)
+ - Clarify that all waiters are woken up on signalling a sync.
+ Remove tabs to cleanup some formatting issues.
+#13 (Acorn Pooley, April 2, 2009)
+ - Renamed
+ GL_OES_egl_sync -> GL_OES_EGL_sync
+ VG_KHR_egl_sync -> VG_KHR_EGL_sync
+#12 (Jon Leech, April 1, 2009)
+ - Changed sync flags type from EGLuint to EGLint and add issue 7.
+#11 (Acorn Pooley, February 4, 2009)
+ - add error case to eglGetSyncAttribKHR.
+ - fix year on rev 8-10 (2008->2009)
+#10 (Acorn Pooley, February 4, 2009)
+ - clarify some error message descriptions
+#9 (Greg Prisament, January 15, 2009)
+ - Destroy now wakes up all waits (eglClientWaitSyncKHR)
+ - Add EGLDisplay <dpy> as first parameter to all commands
+ - Split into 3 extension strings, EGL_KHR_sync, GL_OES_egl_sync,
+ VG_KHR_egl_sync, all described in this document.
+ - Add attribute AUTO_RESET_KHR
+ - Time type uses the type from khrplatform.h
+ - Remove EGL_ALREADY_SIGNALLED
+#8 (Jon Leech, November 11, 2009)
+ - Assign enum values
+#7 (Acorn Pooley, October 30, 2008)
+ - Fix typos
+ - remove obsolete wording about Native sync objects (see issue 5)
+ - formatting: remove tabs, 80 columns
+#6 (Acorn Pooley, October 27, 2008)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#5 (Jon Leech, September 9, 2008)
+ - Removed native sync support (eglCreateNativeSyncKHR and
+ EGL_SYNC_NATIVE_SYNC_KHR), and re-flowed spec to fit in 80 columns.
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt
new file mode 100644
index 0000000..34ebc13
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt
@@ -0,0 +1,1091 @@
+Name
+
+ KHR_stream
+ KHR_stream_attrib
+
+Name Strings
+
+ EGL_KHR_stream
+ EGL_KHR_stream_attrib
+
+Contributors
+
+ Marcus Lorentzon
+ Acorn Pooley
+ Robert Palmer
+ Greg Prisament
+ Daniel Kartch
+ Miguel A. Vico Moya
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+ Marcus Lorentzon, ST-Ericsson AB (marcus.xm.lorentzon 'at' stericsson.com)
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2009-2016 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 27 - May 23, 2016
+
+Number
+
+ EGL Extension #32
+
+Dependencies
+
+ EGL_KHR_stream requires EGL 1.2.
+
+ EGL_KHR_stream_attrib requires EGL_KHR_stream and EGL 1.5.
+
+ EGL_KHR_stream_attrib interacts with
+ EGL_KHR_stream_consumer_gltexture.
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+Overview
+
+ This extension defines a new object, the EGLStream, that can be
+ used to efficiently transfer a sequence of image frames from one
+ API to another. The EGLStream has mechanisms that can help keep
+ audio data synchronized to video data.
+
+ Each EGLStream is associated with a "producer" that generates
+ image frames and inserts them into the EGLStream. The producer is
+ responsible for inserting each image frame into the EGLStream at
+ the correct time so that the consumer can display the image frame
+ for the appropriate period of time.
+
+ Each EGLStream is also associated with a "consumer" that
+ retrieves image frames from the EGLStream. The consumer is
+ responsible for noticing that an image frame is available and
+ displaying it (or otherwise consuming it). The consumer is also
+ responsible for indicating the latency when that is possible (the
+ latency is the time that elapses between the time it is retrieved
+ from the EGLStream until the time it is displayed to the user).
+
+ Some APIs are stream oriented (examples: OpenMAX IL, OpenMAX AL).
+ These APIs may be connected directly to an EGLStream as a producer
+ or consumer. Once a stream oriented producer is "connected" to an
+ EGLStream and "started" it may insert image frames into the
+ EGLStream automatically with no further interaction from the
+ application. Likewise, once a stream oriented consumer is
+ "connected" to an EGLStream and "started" it may retrieve image
+ frames from the EGLStream automatically with no further interaction
+ from the application.
+
+ Some APIs are rendering oriented and require interaction with the
+ application during the rendering of each frame (examples: OpenGL,
+ OpenGL ES, OpenVG). These APIs will not automatically insert or
+ retrieve image frames into/from the EGLStream. Instead the
+ application must take explicit action to cause a rendering
+ oriented producer to insert an image frame or to cause a rendering
+ oriented consumer to retrieve an image frame.
+
+ The EGLStream conceptually operates as a mailbox. When the
+ producer has a new image frame it empties the mailbox (discards
+ the old contents) and inserts the new image frame into the
+ mailbox. The consumer retrieves the image frame from the mailbox
+ and examines it. When the consumer is finished examining the
+ image frame it is either placed back in the mailbox (if the
+ mailbox is empty) or discarded (if the mailbox is not empty).
+
+ Timing is mainly controlled by the producer. The consumer
+ operated with a fixed latency that it indicates to the producer
+ through the EGL_CONSUMER_LATENCY_USEC_KHR attribute. The consumer
+ is expected to notice when a new image frame is available in the
+ EGLStream, retrieve it, and display it to the user in the time
+ indicated by EGL_CONSUMER_LATENCY_USEC_KHR. The producer controls
+ when the image frame will be displayed by inserting it into the
+ stream at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ where T is the time that the image frame is intended to appear to
+ the user.
+
+ This extension does not cover the details of how a producer or a
+ consumer works or is "connected" to an EGLStream. Different kinds
+ of producers and consumers work differently and are described in
+ additional extension specifications. (Examples of producer
+ specifications:
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_producer_aldatalocator
+ OpenMAX_AL_EGLStream_DataLocator
+ Example of consumer extension specification:
+ EGL_KHR_stream_consumer_gltexture
+ )
+
+
+Glossary
+
+ EGLStream
+ An EGL object that transfers a sequence of image frames from one
+ API to another (e.g. video frames from OpenMAX AL to OpenGL ES).
+
+ Image frame
+ A single image in a sequence of images. The sequence may be
+ frames of video data decoded from a video file, images output by a
+ camera sensor, surfaces rendered using OpenGL ES commands, or
+ generated in some other manner. An image frame has a period of
+ time during which it is intended to be displayed on the screen
+ (starting with the "Image Frame Display Time" and ending with the
+ "Image Frame Display Time" of the next image frame in the
+ sequence).
+
+ Image Frame Insertion Time
+ The point in time when the producer inserts the image frame into
+ the EGLStream. This is the "Image Frame Intended Display Time"
+ minus the "Consumer Latency".
+
+ Image Frame Intended Display Time
+ The point in time when the user should first see the image frame
+ on the display screen.
+
+ Image Frame Actual Display Time
+ The point in time when the user actually first sees the image frame
+ on the display screen.
+
+ Consumer Latency
+ The elapsed time between an image frame's "Image Frame Insertion
+ Time" and its "Image Frame Actual Display Time". The consumer is
+ responsible for predicting this and indicating its value to the
+ EGLStream. The producer is responsible for using this value to
+ calculate the "Image Frame Insertion Time" for each image frame.
+ The application has access to this value through the
+ EGL_CONSUMER_LATENCY_USEC attribute.
+
+ Producer
+ The entity that inserts image frames into the EGLStream. The
+ producer is responsible for timing: it must insert image frames at
+ a point in time equal to the "Image Frame Intended Display Time"
+ minus the "Consumer Latency".
+
+ Consumer
+ The entity that retrieves image frames from the EGLStream. When
+ the image frames are to be displayed to the user the consumer is
+ responsible for calculating the "Consumer Latency" and reporting
+ it to the EGLSteam.
+
+ State (stream state)
+ At any given time an EGLStream is in one of several states. See
+ section "3.10.4.3 EGL_STREAM_STATE_KHR Attribute" in this
+ extension for a description of the states and what transitions
+ occur between them.
+
+New Types
+
+ This is the type of a handle that represents an EGLStream object.
+
+ typedef void* EGLStreamKHR;
+
+ This is a 64 bit unsigned integer.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+New functions defined by EGL_KHR_stream
+
+ EGLStreamKHR eglCreateStreamKHR(
+ EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroyStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLBoolean eglStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLint value);
+
+ EGLBoolean eglQueryStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLint *value);
+
+ EGLBoolean eglQueryStreamu64KHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLuint64KHR *value);
+
+New functions defined by EGL_KHR_stream_attrib
+
+ EGLStreamKHR eglCreateStreamAttribKHR(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list);
+
+ EGLBoolean eglSetStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib *value);
+
+ EGLBoolean eglStreamConsumerAcquireAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream
+ const EGLAttrib *attrib_list);
+
+ EGLBoolean eglStreamConsumerReleaseAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list);
+
+New Tokens
+
+ This value is returned from eglCreateStreamKHR in the case of an
+ error. It is an error to attempt to use this value as a parameter
+ to any EGL or client API function.
+
+ EGL_NO_STREAM_KHR ((EGLStreamKHR)0)
+
+ This enum is accepted as an attribute in the <attrib_list> parameter
+ of eglCreateStreamKHR and as the <attribute> parameter of
+ eglStreamAttribKHR, eglSetStreamAttribKHR, eglQueryStreamKHR and
+ eglQueryStreamAttribKHR.
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+
+ These enums are accepted as the <attribute> parameter of
+ eglQueryStreamu64KHR.
+
+ EGL_PRODUCER_FRAME_KHR 0x3212
+ EGL_CONSUMER_FRAME_KHR 0x3213
+
+ This enum is accepted as the <attribute> parameter of
+ eglQueryStreamKHR and eglQueryStreamAttribKHR.
+
+ EGL_STREAM_STATE_KHR 0x3214
+
+ Returned in the <value> parameter of eglQueryStreamKHR or
+ eglQueryStreamAttribKHR when <attribute> is EGL_STREAM_STATE.
+
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGL_STREAM_STATE_EMPTY_KHR 0x3217
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+ EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+
+ These errors may be generated by EGLStream calls.
+
+ EGL_BAD_STREAM_KHR 0x321B
+ EGL_BAD_STATE_KHR 0x321C
+
+Add a new section "2.5 Streams" after section "2.4 Shared State"
+
+ EGL allows efficient interoperation between APIs through the
+ EGLStream object. An EGLStream represents a sequence of image
+ frames.
+
+ Each EGLStream is associated with a producer that generates image
+ frames and inserts them into the EGLStream. Each EGLStream is
+ also associated with a consumer that retrieves image frames from
+ the EGLStream.
+
+Add a new section "3.10 EGLStreams" after section "3.9 Posting the
+Color Buffer"
+
+ 3.10 EGLStreams
+
+ EGL provides functions to create and destroy EGLStreams, for
+ querying and setting attributes of EGLStreams, and for connecting
+ EGLStreams to producers and consumers.
+
+ Each EGLStream may be connected to only one producer and one
+ consumer. Once an EGLStream is connected to a consumer, it will
+ be connected to that consumer until the EGLStream is destroyed.
+ Likewise, once an EGLStream is connected to a producer it will be
+ connected to that producer until the EGLStream is destroyed.
+ Further semantics are described for each type of consumer and
+ producer that can be connected.
+
+Add subsection 3.10.1 to section "3.10 EGLStreams"
+
+ 3.10.1 Creating an EGLStream
+
+ Call
+
+ EGLStreamKHR eglCreateStreamKHR(
+ EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ to create a new EGLStream. <dpy> specifies the EGLDisplay used for
+ this operation. The function returns a handle to the created
+ EGLStream.
+
+ The EGLStream cannot be used until it has been connected to a
+ consumer and then to a producer (refer to section "3.10.2
+ Connecting an EGLStream to a consumer" and section "3.10.3
+ Connecting an EGLStream to a producer"). It must be connected to
+ a consumer before being connected to a producer.
+
+ There is no way for the application to query the size,
+ colorformat, or number of buffers used in the EGLStream (although
+ these attributes may be available from the producer's API or the
+ consumer's API depending on what type of producer/consumer is
+ connected to the EGLStream).
+
+ The parameter <attrib_list> contains a list of attributes and
+ values to set for the EGLStream. Attributes not in the list are
+ set to default values. EGLStream attributes are described in
+ section "3.10.4 EGLStream Attributes".
+
+ If an error occurs eglCreateStreamKHR will return
+ EGL_NO_STREAM_KHR and generate an error.
+
+ - EGL_BAD_ATTRIBUTE is generated if any of the parameters in
+ attrib_list is not a valid EGLStream attribute.
+
+ - EGL_BAD_ACCESS is generated if any of the parameters in
+ attrib_list is read only.
+
+ - EGL_BAD_PARAMETER is generated if any of the values in
+ attrib_list is outside the valid range for the attribute.
+
+ - EGL_BAD_ALLOC is generated if not enough resources are
+ available to create the EGLStream.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+If EGL_KHR_stream_attrib is present, add to the end of this section
+
+ Streams may also be created by calling
+
+ EGLStreamKHR eglCreateStreamAttribKHR(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list);
+
+ This is equivalent to eglCreateStreamKHR, but allows pointer
+ and handle attributes to be provided on 64-bit systems.
+
+Add section 3.10.2 to section "3.10 EGLStreams"
+
+ 3.10.2 Connecting an EGLStream to a consumer.
+
+ Before using an EGLStream it must be connected to a consumer.
+
+ Refer to sections 3.10.2.1 and following for different ways to
+ connect a consumer to an EGLStream.
+
+ Once an EGLStream is connected to a consumer it will remain
+ connected to the same consumer until the EGLStream is destroyed.
+
+ If the consumer is destroyed then the EGLStream's state will
+ become EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ Any attempt to connect an EGLStream which is not in state
+ EGL_STREAM_STATE_CREATED_KHR will fail and generate an
+ EGL_BAD_STATE_KHR error.
+
+ When an EGLStream is connected to a consumer its state becomes
+ EGL_STREAM_STATE_CONNECTING_KHR.
+
+ 3.10.2.1 No way to connect consumer to EGLStream
+
+ EGL does not currently define any mechanisms to connect a consumer
+ to an EGLStream. These will be added via additional extensions.
+
+ (Example: See extension specification
+ EGL_KHR_stream_consumer_gltexture)
+
+If EGL_KHR_stream_attrib is present, add to the end of this section
+
+ 3.10.2.2 Acquiring and releasing consumer frames
+
+ Methods for acquiring frames from a stream and releasing them back
+ to a stream are dependent on the type of consumer. Some consumers
+ support calling
+
+ EGLBoolean eglStreamConsumerAcquireAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream
+ const EGLAttrib *attrib_list);
+
+ to acquire the next available frame in <stream> and
+
+ EGLBoolean eglStreamConsumerReleaseAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list);
+
+ to release a frame back to the stream.
+
+ Not all consumers are required to support either or both of these
+ functions. Where supported, the specific behavior is defined by the
+ consumer type, and may be affected by the contents of <attrib_list>.
+ <attrib_list> must either be NULL or a pointer to a list of
+ name/value pairs terminated by EGL_NONE. Valid attributes are
+ listed in tables 3.10.2.1 and 3.10.2.2.
+
+ Attribute Type Section
+ ------------------------ ---------- -------
+ Currently no acquire attributes are defined
+
+ Table 3.10.2.1 EGLStream Consumer Acquire Attributes
+
+ Attribute Type Section
+ ------------------------ ---------- -------
+ Currently no release attributes are defined
+
+ Table 3.10.2.2 EGLStream Consumer Release Attributes
+
+ If no new image frame is available in the stream,
+ eglStreamConsumerAcquireAtrribKHR may block, retrieve an old frame,
+ or return an error, as defined by the type of consumer. If one or
+ more image frames are already acquired by the consumer when
+ eglStreamConsumerAcquireAttribKHR is called, the behavior is
+ determined by the type of consumer.
+
+ If successful, eglStreamConsumerAcquireAttribKHR returns EGL_TRUE
+ and an image frame from <stream> will be bound into the address
+ space of the consumer as defined for its type.
+
+ On failure, the function returns EGL_FALSE and generates an error.
+ Additionally, image objects in the consumer's address space may
+ become invalid, as determined by the consumer type.
+
+ - EGL_BAD_ACCESS is generated if the consumer of <stream> does
+ not support acquiring frames through
+ eglStreamConsumerAcquireAttribKHR.
+
+ - EGL_BAD_STATE_KHR is no frame is available for acquisition
+ after any timeout determined by the consumer.
+
+ - EGL_BAD_ATTRIBUTE is generated if an attribute name in
+ <attrib_list> is not recognized or is not supported by the
+ consumer.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+ Calling eglStreamConsumerReleaseAttribKHR will release a frame held
+ by the consumer back to the stream. If more than one frame is held
+ by the consumer, the frame returned is determined by the consumer
+ type and the contents of <attrib_list>. If no frames are currently
+ held, the behavior is determined by the consumer type. Once
+ returned, the consumer may no longer access the contents of the
+ frame, and attempts to do so will result in errors as determined by
+ the consumer type. Upon success, eglStreamConsumerReleaseAttribKHR
+ returns EGL_TRUE.
+
+ If eglStreamConsumerReleaseAttribKHR fails, EGL_FALSE is returned
+ and an error is generated.
+
+ - EGL_BAD_ACCESS is generated if the consumer of <stream> does
+ not support releasing frames through
+ eglStreamConsumerReleaseAttribKHR.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_EMPTY_KHR,
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if an attribute name in
+ <attrib_list> is not recognized or is not supported by the
+ consumer.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+If EGL_KHR_stream_consumer_gltexture is present in addition to
+EGL_KHR_stream_attrib, the eglStreamConsumerAcquireKHR function is
+equivalent to eglStreamConsumerAcquireAttribKHR with <attrib_list> set
+to NULL, the eglStreamConsumerReleaseKHR function is equivalent to
+eglStreamConsumerReleaseAttribKHR with <attrib_list> set to NULL, and
+the definitions provided for those functions define their behavior for
+a GL texture consumer.
+
+Add section 3.10.3 to section "3.10 EGLStreams"
+
+ 3.10.3 Connecting an EGLStream to a producer.
+
+ Before using an EGLStream it must be connected to a producer. The
+ EGLStream must be connected to a consumer before it may be
+ connected to a producer.
+
+ The size and colorformat of the images in the EGLStream are
+ determined by the EGL implementation based on the requirements of
+ the producer and the consumer. The EGL implementation may
+ determine these at the time the producer is connected to the
+ EGLStream, at the time that the first image frame is inserted into
+ the EGLStream, or any time in between (this is left up to the
+ implementation).
+
+ It is the responsibility of the producer to convert the images to
+ a form that the consumer can consume. The producer may negotiate
+ with the consumer as to what formats and sizes the consumer is
+ able to consume, but this negotiation (whether it occurs and how
+ it works) is an implementation detail. If the producer is unable
+ to convert the images to a form that the consumer can consume then
+ the attempt to connect the producer to the EGLStream will fail and
+ generate an EGL_BAD_MATCH error.
+
+ Refer to sections 3.10.3.1 and following for different ways to
+ connect a producer to an EGLStream.
+
+ Once an EGLStream is connected to a producer it will remain
+ connected to the same producer until the EGLStream is destroyed.
+ If the producer is destroyed then the EGLStream's state will
+ become EGL_STREAM_STATE_DISCONNECTED_KHR (refer to "3.10.4.3
+ EGL_STREAM_STATE_KHR Attribute").
+
+ Any attempt to connect an EGLStream which is not in state
+ EGL_STREAM_STATE_CONNECTING_KHR will fail and generate an
+ EGL_BAD_STATE_KHR error.
+
+ When an EGLStream is connected to a producer its state becomes
+ EGL_STREAM_STATE_EMPTY_KHR. At this point the producer may begin
+ inserting image frames and the consumer may begin consuming image
+ frames, so the state may immediately change to
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR and/or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ 3.10.3.1 No way to connect producer to EGLStream
+
+ EGL does not currently define any mechanisms to connect a producer
+ to an EGLStream. These will be added via additional extensions.
+
+ (For example see extension specifications
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_producer_aldatalocator
+ OpenMAX_AL_EGLStream_DataLocator
+ .)
+
+Add section 3.10.4 to section "3.10 EGLStreams"
+
+ 3.10.4 EGLStream Attributes
+
+ Each EGLStream contains a set of attributes and values as
+ described in table 3.10.4.4. Each attribute has a type and a
+ value and is either read-only (ro), read/write (rw) or initialize
+ only (io - meaning it may be set in the attrib_list but not
+ changed once the EGLStream is created).
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ --------
+ EGL_STREAM_STATE_KHR ro EGLint 3.10.4.3
+ EGL_PRODUCER_FRAME_KHR ro EGLuint64KHR 3.10.4.4
+ EGL_CONSUMER_FRAME_KHR ro EGLuint64KHR 3.10.4.5
+ EGL_CONSUMER_LATENCY_USEC_KHR rw EGLint 3.10.4.6
+
+ Table 3.10.4.4 EGLStream Attributes
+
+ 3.10.4.1 Setting EGLStream Attributes
+
+ Call
+
+ EGLBoolean eglStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint attribute,
+ EGLint value);
+
+ to set the value of an attribute for an EGLStream. The <value> is
+ the new value for <attribute>. Only read/write (rw) attributes
+ with type EGLint may be set with eglStreamAttribKHR (see "Table
+ 3.10.4.4 EGLStream Attributes").
+
+ If an error occurs, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_ATTRIBUTE is generated if <attribute> is not a valid
+ EGLStream attribute.
+
+ - EGL_BAD_ACCESS is generated if <attribute> is read only.
+
+ - EGL_BAD_PARAMETER is generated if value is outside the valid
+ range for <attribute>.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ 3.10.4.2 Querying EGLStream Attributes
+
+ Call
+
+ EGLBoolean eglQueryStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint attribute,
+ EGLint *value);
+
+ to query the value of an EGLStream's attribute with type EGLint
+ and call
+
+ EGLBoolean eglQueryStreamu64KHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLuint64KHR *value);
+
+ to query the value of an EGLStream's attribute with type
+ EGLuint64KHR.
+
+ If an error occurs EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated by eglQueryStreamKHR if
+ <attribute> is not a valid EGLStream attribute with type
+ EGLint.
+
+ - EGL_BAD_ATTRIBUTE is generated by eglQueryStreamu64KHR if
+ <attribute> is not a valid EGLStream attribute with type
+ EGLuint64KHR.
+
+ 3.10.4.3 EGL_STREAM_STATE_KHR Attribute
+
+ The EGL_STREAM_STATE_KHR attribute is read only. It indicates the
+ state of the EGLStream. The EGLStream may be in one of the
+ following states:
+
+ - EGL_STREAM_STATE_CREATED_KHR - The EGLStream has been created
+ but not yet connected to a producer or a consumer.
+
+ - EGL_STREAM_STATE_CONNECTING_KHR - The EGLStream has been
+ connected to a consumer but not yet connected to a producer.
+
+ - EGL_STREAM_STATE_EMPTY_KHR - the EGLStream has been connected
+ to a consumer and a producer, but the producer has not yet
+ inserted any image frames.
+
+ - EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR - the producer has
+ inserted at least one image frame that the consumer has not
+ yet retrieved.
+
+ - EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR - the producer has
+ inserted at least one image frame, and the consumer has
+ already retrieved the most recently inserted image frame.
+
+ - EGL_STREAM_STATE_DISCONNECTED_KHR - either the producer or the
+ consumer (or both) are no longer connected to the EGLStream
+ (e.g. because they have been destroyed). Once the
+ EGLStream is in this state it will remain in this state
+ until the EGLStream is destroyed. In this state only
+ eglQueryStreamKHR and eglDestroyStreamKHR are valid
+ operations.
+
+ Only the following state transitions may occur:
+
+ -> EGL_STREAM_STATE_CREATED_KHR
+ A new EGLStream is created in this state.
+
+ EGL_STREAM_STATE_CREATED_KHR ->
+ EGL_STREAM_STATE_CONNECTING_KHR
+ Occurs when a consumer is connected to the EGLStream.
+
+ EGL_STREAM_STATE_CONNECTING_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when a producer is connected to the EGLStream.
+
+ EGL_STREAM_STATE_EMPTY_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs the first time the producer inserts an image frame.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ Occurs when the consumer begins examining a newly inserted
+ image frame.
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts a new image frame.
+
+ * ->
+ EGL_STREAM_STATE_DISCONNECTED_KHR
+ Occurs when the producer or consumer is destroyed or is
+ otherwise unable to function normally.
+
+
+ 3.10.4.4 EGL_PRODUCER_FRAME_KHR Attribute
+
+ The EGL_PRODUCER_FRAME_KHR attribute indicates how many image
+ frames have been inserted into the EGLStream by the producer.
+ This is also known as the "frame number" of the most recently
+ inserted frame (where the first frame inserted has a frame number
+ of 1). When EGL_STREAM_STATE_KHR is EGL_STREAM_STATE_CREATED_KHR,
+ EGL_STREAM_STATE_CONNECTING_KHR, or EGL_STREAM_STATE_EMPTY_KHR
+ then this value is 0. This value will wrap back to 0 after
+ about 10 million millennia.
+
+ 3.10.4.4 EGL_CONSUMER_FRAME_KHR Attribute
+
+ The EGL_CONSUMER_FRAME_KHR attribute indicates the frame number of
+ the image frame that the consumer most recently retrieved. This is
+ the value that EGL_PRODUCER_FRAME_KHR contained just after this
+ image frame was inserted into the EGLStream.
+
+ 3.10.4.5 EGL_CONSUMER_LATENCY_USEC_KHR Attribute
+
+ This attribute indicates the number of microseconds that elapse (on
+ average) from the time that an image frame is inserted into the
+ EGLStream by the producer until the image frame is visible to the
+ user.
+
+ It is the responsibility of the consumer to set this value. Some
+ types of consumers may simply set this value to zero or an
+ implementation constant value. Other consumers may adjust this
+ value dynamically as conditions change.
+
+ It is the responsibility of the producer to use this information to
+ insert image frames into the EGLStream at an appropriate time.
+ The producer should insert each image frame into the stream at the
+ time that frame should appear to the user MINUS the
+ EGL_CONSUMER_LATENCY_USEC_KHR value. Some types of producers may
+ ignore this value.
+
+ The application may modify this value to adjust the timing of the
+ stream (e.g. to make video frames coincide with an audio track
+ under direction from a user). However the value set by the
+ application may be overridden by some consumers that dynamically
+ adjust the value. This will be noted in the description of
+ consumers which do this.
+
+If EGL_KHR_stream_attrib is present, add to the end of section "3.10.4.1
+Setting EGLStream Attributes"
+
+ Attributes may also be set by calling
+
+ EGLBoolean eglSetStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib value);
+
+ This is equivalent to eglStreamAttribKHR, but allows attributes
+ with pointer and handle types, in addition to EGLint.
+
+If EGL_KHR_stream_attrib is present, add to the end of section "3.10.4.2
+Querying EGLStream Attributes"
+
+ Attributes may also be queried by calling
+
+ EGLBoolean eglQueryStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib *value);
+
+ This is equivalent to eglQueryStreamKHR, but allows attributes with
+ pointer and handle types, in addition to EGLint.
+
+Add sections 3.10.5 and 3.10.6 to section "3.10 EGLStreams"
+
+ 3.10.5 EGLStream operation
+
+ 3.10.5.1 EGLStream operation in mailbox mode
+
+ The EGLStream conceptually operates as a mailbox.
+
+ When the producer has a new image frame it empties the mailbox and
+ inserts the new image frame into the mailbox. If the image frame
+ is intended to be displayed at time T then the producer must
+ insert it into the EGLStream at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+
+ The consumer retrieves the image frame from the mailbox and
+ examines it. When the consumer is finished examining the image
+ frame it is either placed back in the mailbox (if the mailbox is
+ empty) or discarded (if the mailbox is not empty).
+
+ This operation implies 2 things:
+
+ - If the consumer consumes frames slower than the producer
+ inserts frames, then some frames may be lost (never seen by
+ the consumer).
+
+ - If the consumer consumes frames faster than the producer
+ inserts frames, then the consumer may see some frames more
+ than once.
+
+ Some details of EGLStream operation are dependent on the type of
+ producer and consumer that are connected to it. Refer to the
+ documentation for the producer and consumer for more details
+ (section 3.10.2.* and 3.10.3.*).
+
+
+ 3.10.6 Destroying an EGLStream
+
+ Call
+
+ EGLBoolean eglDestroyStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to mark an EGLStream for deletion. After this call returns the
+ <stream> will no longer be a valid stream handle. The resources
+ associated with the EGLStream may not be deleted until the
+ producer and consumer have released their references to the
+ resources (if any). Exactly how this is done is dependent on the
+ type of consumer and producer that is connected to the EGLStream.
+
+ If an error occurs, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+
+Issues
+ 1. Are EGL_WIDTH and EGL_HEIGHT parameters needed?
+
+ RESOLVED: No. The width and height of images managed by the
+ stream are determined by the producer. No application access
+ to the size is currently required.
+
+ 2. Is EGL_BUFFER_SHOW_ALL_KHR required, or should the stream always
+ act as EGL_BUFFER_REPLACE_KHR?
+
+ RESOLVED: this has been removed. The old
+ EGL_BUFFER_SHOW_ALL_KHR behavior is described in a separate
+ extension: EGL_KHR_stream_fifo
+
+ 3. What are the exact semantics of the producer?
+
+ RESOLVED: The exact semantics vary depending on the type of
+ producer. Refer to the extension that defines the type of
+ producer for more information.
+
+ In general, the producer is responsible for inserting image
+ frames into the EGLStream at the correct time. The correct
+ time depends on how the image frames are being created and on
+ the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ 4. What are the exact semantics of the consumer?
+
+ RESOLVED: The exact semantics vary depending on the type of
+ consumer. Refer to the extension that defines the type of
+ consumer for more information.
+
+ In general, the consumer is responsible for retrieving image
+ frames from the EGLStream when they become available. The
+ consumer is also responsible for setting the
+ EGL_CONSUMER_LATENCY_USEC_KHR when that is possible.
+
+ 5. When will the EGLStream resources be deleted?
+
+ RESOLVED: this depends on the type of consumer and producer.
+ Refer to the description of the consumer and producer (e.g. in
+ the extension that describes them).
+
+ 6. How does A/V sync work?
+
+ RESOLVED: The producer is responsible for A/V sync, but the
+ consumer needs to help. The consumer indicates the latency
+ (the average time that it takes the consumer to retrieve an
+ image from the EGLStream and place it on the display screen)
+ by setting the EGL_CONSUMER_LATENCY_USEC_KHR. The producer
+ uses knowledge about the audio stream to determine the correct
+ time to display an image frame, and inserts the image frame at
+ that time MINUS the EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ 7. What if the consumer cannot determine the latency?
+
+ RESOLVED: If the consumer does not set the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute then its default value
+ will be used. This default value is implementation defined
+ and may be zero. See the description of the specific type of
+ consumer you are using (e.g. the extension that defines it)
+ for more details related to that consumer.
+
+ 8. What colorformats are supported by EGLStream
+
+ RESOLVED: No specific formats are required, but it is expected
+ that this work with the main YUV formats supported by the
+ platform's video HW and the main RGB(A) formats supported by
+ the platform's OpenGL (ES) hardware. It is the responsibility
+ of the producer to negotiate a format that will work with the
+ consumer. If the internal formats supported by the producer
+ do not coincide with the internal formats supported by the
+ consumer then the producer may choose to convert to a format
+ that the consumer understands, or it may choose to fail and
+ generate an error when an attempt is made to connect it to the
+ EGLStream. Exactly which it does for which formats is further
+ discussed in the producer endpoint documentation (refer to the
+ extension that describes the producer endpoint).
+
+ 9. Is any EGLImage extension required by this extension?
+
+ RESOLVED: No. This extension may be implemented using some of
+ the same code that is used to implement EGLImages, but there
+ is no dependency on EGLImages.
+
+ 10. Why describe the "io" attribute type if no attributes use it.
+
+ RESOLVED: Future extensions will add attributes of "io" type
+ (initialize only - meaning they can be set in the attribute
+ list when creating the EGLStream, but not modified once the
+ EGLStream is created). Rather than requiring each such
+ extension to describe the "io" type (and possibly getting
+ slightly different definitions or types in different
+ extensions) the "io" type is defined here so that other
+ extensions can easily use it. This helps layered
+ extensions to all use the same language.
+
+
+Revision History
+
+ #27 (May 23, 2016) Daniel Kartch
+ - For compatibility with EGL 1.5 and support of 64-bit
+ platforms, add EGL_KHR_stream_attrib extension with variants
+ of original functions that accept attributes of type
+ EGLAttrib.
+ - Corrected line length violations.
+
+ #26 (July 12, 2012) Acorn Pooley
+ - Fix error in description of consumer latency.
+
+ #25 (October 12, 2011) Acorn Pooley
+ - Add issue 10
+
+ #24 (October 11, 2011) Acorn Pooley
+ - add error condition to eglDestroyStreamKHR
+
+ #23 (October 5, 2011) Acorn Pooley
+ - refer to related EGL_KHR_... extension specs rather than
+ EGL_NV_... ones.
+
+ #22 (September 27, 2011) Acorn Pooley
+ - Fix enum value for EGL_STREAM_STATE_KHR (bug 8064)
+
+ #21 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #20 (September 23, 2011) Acorn Pooley
+ - Rename EGL_NO_IMAGE_STREAM_KHR to EGL_NO_STREAM_KHR
+
+ #19 (Aug 3, 2011) Acorn Pooley
+ - fix some error conditions
+
+ #18 (Aug 2, 2011) Acorn Pooley
+ - Add eglQueryStreamu64KHR
+ - add EGLuint64KHR
+ - make EGL_PRODUCER_FRAME_KHR and EGL_CONSUMER_FRAME_KHR 64
+ bit.
+
+ #17 (Aug 2, 2011) Acorn Pooley
+ - fix grammar
+
+ #16 (July 6, 2011) Acorn Pooley
+ - rename from EGL_KHR_image_stream to EGL_KHR_stream
+
+ #15 (June 29, 2011) Acorn Pooley
+ - major re-write
+ - remove EGL_SWAP_MODE_KHR and EGL_BUFFER_SHOW_ALL_KHR
+ - add new functions:
+ eglStreamAttribKHR
+ eglQueryStreamKHR
+ - add new attributes:
+ EGL_CONSUMER_LATENCY_USEC_KHR
+ EGL_PRODUCER_FRAME_KHR
+ EGL_CONSUMER_FRAME_KHR
+ EGL_STREAM_STATE_KHR
+ - add concept of EGL_STREAM_STATE_KHR
+ - add new error:
+ EGL_BAD_STATE_KHR
+ - add more thorough overview section
+ - add description of buffering
+ - place the functions in section 3 of the spec (were in
+ section 2)
+ - mention some of the consumer and producer specs that may be
+ needed to make use of this extension.
+ - remove very old issues that no longer make any sense
+ - add new issues and resolutions
+
+ #14 (June 4, 2010) Greg Prisament
+ - fix minor typo
+
+ #13 (June 2, 2010) Marcus Lorentzon
+ - add EGL enum values
+
+ #12 (May 21, 2010) Marcus Lorentzon
+ - add clarifications on swap modes
+
+ #11 (April 13, 2010) Marcus Lorentzon
+ - fix tyops
+ - make eglDestroyStream return EGLBoolean, not void
+
+ #10 (March 17, 2010) Marcus Lorentzon
+ - fix typo
+ - remove obsolete text
+ - update issue 2 resolution
+
+ #9 (December 15, 2009) Marcus Lorentzon
+ - move EGL_IMAGE_USE_* attributes to the endpoint extension
+ - resolved issue 5
+
+ #8 (December 6, 2009) Marcus Lorentzon
+ - remove EGL_INIT_COLOR_KHR
+ - relax the definition of the Producer to allow not only video
+ frames to be generated
+ - clean up the language of recently produced, supplied, pending
+ images
+
+ #7 (October 19, 2009) Acorn Pooley
+ - Update based on comments from Robert and Bruce
+ - remove mention of OpenWF
+ - make EGL_BUFFER_REPLACE_KHR be the default EGL_SWAP_MODE_KHR
+ - add issue 5
+ - remove EGLAPI and EGLAPIENTRY
+
+ #6 (September 16, 2009) Acorn Pooley
+ - remove EGL_WIDTH and EGL_HEIGHT parameters
+ - add issue 4
+ - clarify swap modes
+ - other clarifications and simplifications
+
+ #5 (July 2, 2009) Acorn Pooley
+ - remove reference to no-longer-existing <images> parameter.
+ - mention dependancy on EGL_KHR_image_uses extension.
+ - add description of EGL_IMAGE_USE_AS_* enums.
+
+ #4 (June 3, 2009) Acorn Pooley
+ - Fix typos: change old EGLImageStream occurances to EGLStream
+
+ #3 (April 22, 2009) Marcus Lorentzon
+ - Updated revide comments
+ - Removed external image support
+
+ #2 (March 30, 2009) Marcus Lorentzon
+ - Replaced image surface with image stream
+
+ #1 (February 21, 2009) Marcus Lorentzon
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
new file mode 100644
index 0000000..e29551a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
@@ -0,0 +1,402 @@
+Name
+
+ KHR_stream_consumer_gltexture
+
+Name Strings
+
+ EGL_KHR_stream_consumer_gltexture
+
+Contributors
+
+ Acorn Pooley
+ Jamie Gennis
+ Marcus Lorentzon
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 11, June 18, 2012
+
+Number
+
+ EGL Extension #33
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires OpenGL ES 1.1 or OpenGL ES 2.0.
+
+ Requires the EGL_KHR_stream extension.
+ Requires the GL_NV_EGL_stream_consumer_external extension.
+
+Overview
+
+ This extension allows an OpenGL(ES) texture to be connected to an
+ EGLStream as its consumer. Image frames from the EGLStream can be
+ 'latched' into the texture as the contents of the texture. This
+ is equivalent to copying the image into the texture, but on most
+ implementations a copy is not needed so this is faster.
+
+New Procedures and Functions
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ EGLBoolean eglStreamConsumerAcquireKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLBoolean eglStreamConsumerReleaseKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglStreamAttribKHR and eglQueryStreamKHR
+
+ EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+
+Replace section "3.10.2.1 No way to connect consumer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.2.1 GL Texture External consumer
+
+ Call
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ to connect the texture object currently bound to the active
+ texture unit's GL_TEXTURE_EXTERNAL_OES texture target in the
+ OpenGL or OpenGL ES context current to the calling thread as the
+ consumer of <stream>.
+
+ (Note: Before this can succeed a GL_TEXTURE_EXTERNAL_OES texture
+ must be bound to the active texture unit of the GL context current
+ to the calling thread. To create a GL_TEXTURE_EXTERNAL_OES
+ texture and bind it to the current context, call glBindTexture()
+ with <target> set to GL_TEXTURE_EXTERNAL_OES and <texture> set to
+ the name of the GL_TEXTURE_EXTERNAL_OES (which may or may not have
+ previously been created). This is described in the
+ GL_NV_EGL_stream_consumer_external extension.)
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated unless a nonzero texture object
+ name is bound to the GL_TEXTURE_EXTERNAL_OES texture target
+ of the GL context current to the calling thread.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ On success the texture is connected to the <stream>, <stream> is
+ placed in the EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE is
+ returned.
+
+ If the texture is later deleted, connected to a different
+ EGLStream, or connected to an EGLImage, then <stream> will be
+ placed into the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ If the <stream> is later destroyed then the texture will be
+ "incomplete" until it is connected to a new EGLStream, connected
+ to a new EGLImage, or deleted.
+
+
+ Call
+
+ EGLBoolean eglStreamConsumerAcquireKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to "latch" the most recent image frame from <stream> into the
+ texture that is the consumer of <stream>. The GLES context
+ containing the texture must be bound to the current thread. If
+ the GLES texture is also used in shared contexts current to other
+ threads then the texture must be re-bound in those contexts to
+ guarantee the new texture is used.
+
+ eglStreamConsumerAcquireKHR will block until either the timeout
+ specified by EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR expires, or the
+ value of EGL_BAD_STATE_KHR is neither EGL_STREAM_STATE_EMPTY_KHR nor
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR (whichever comes first).
+
+ Blocking effectively waits until a new image frame (that has never
+ been consumed) is available in the EGLStream. By default the
+ timeout is zero and the function does not block.
+
+ eglStreamConsumerAcquireKHR returns EGL_TRUE if an image frame was
+ successfully latched into the texture object.
+
+ If the producer has not inserted any new image frames since the
+ last call to eglStreamConsumerAcquireKHR then
+ eglStreamConsumerAcquireKHR will "latch" the same image frame it
+ latched last time eglStreamConsumerAcquireKHR was called. If the
+ producer has inserted one new image frame since the last call to
+ eglStreamConsumerAcquireKHR then eglStreamConsumerAcquireKHR will
+ "latch" the newly inserted image frame. If the producer has
+ inserted more than one new image frame since the last call to
+ eglStreamConsumerAcquireKHR then all but the most recently
+ inserted image frames are discarded and the
+ eglStreamConsumerAcquireKHR will "latch" the most recently
+ inserted image frame.
+
+ The application can use the value of EGL_CONSUMER_FRAME_KHR to
+ identify which image frame was actually latched.
+
+ On failure the texture becomes "incomplete", eglStreamConsumerAcquireKHR
+ returns EGL_FALSE, and an error is generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread, or if the GL context current
+ to the calling thread does not contain a texture that is
+ connected as the consumer of the EGLStream.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ After using the texture call
+
+ EGLBoolean eglStreamConsumerReleaseKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to release the image frame back to the stream.
+ eglStreamConsumerReleaseKHR() will prevent the EGLStream and
+ producer from re-using and/or modifying the image frame until all
+ preceding GL commands that use the image frame as a texture have
+ completed. If eglStreamConsumerAcquireKHR() is called twice on the
+ same EGLStream without an intervening call to
+ eglStreamConsumerReleaseKHR() then eglStreamConsumerReleaseKHR() is
+ implicitly called at the start of eglStreamConsumerAcquireKHR().
+
+ After successfully calling eglStreamConsumerReleaseKHR the texture
+ becomes "incomplete".
+
+ If eglStreamConsumerReleaseKHR is called twice without a successful
+ intervening call to eglStreamConsumerAcquireKHR, or called with no
+ previous call to eglStreamConsumerAcquireKHR, then the call does
+ nothing and the texture remains in "incomplete" state. This is
+ not an error.
+
+ If eglStreamConsumerReleaseKHR fails EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread, or if the GL context current
+ to the calling thread does not contain the texture to which
+ the EGLStream is connected.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ The application should estimate the time that will elapse from the
+ time a new frame becomes available (i.e. the state becomes
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR) and the time the frame
+ is presented to the user. The application should set this as the
+ value of the EGL_CONSUMER_LATENCY_USEC attribute by calling
+ eglStreamAttribKHR(). The value will depend on the complexity of
+ the scene being rendered and the platform that the app is running
+ on. It may be difficult to estimate except by experimentation on
+ a specific platform. The default value is implementation
+ dependent and may be a good enough estimate for some situations.
+ If the estimate changes over time the application may modify the
+ value of EGL_CONSUMER_LATENCY_USEC.
+
+ If the EGLStream is deleted while an image frame is acquired (i.e.
+ after calling eglStreamConsumerAcquireKHR and before calling
+ eglStreamConsumerReleaseKHR) then the EGLStream resources will not
+ be freed until the acquired image frame is released. However it
+ is an error to call eglStreamConsumerReleaseKHR after deleting the
+ EGLStream because <stream> is no longer a valid handle. In this
+ situation the image can be released (and the EGLStream resources
+ freed) by doing any one of
+ - deleting the GL_TEXTURE_EXTERNAL (call glDeleteTextures)
+ - connecting the GL_TEXTURE_EXTERNAL to another EGLStream
+ (call eglStreamConsumerGLTextureExternalKHR)
+ - connecting the GL_TEXTURE_EXTERNAL to an EGLImage (if the
+ GL_OES_EGL_image_external extension is supported, call
+ glEGLImageTargetTexture2DOES)
+
+Add a new subsection 3.10.4.6 at the end of section "3.10.4 EGLStream
+Attributes" in the EGL_KHR_stream extension spec:
+
+ 3.10.4.6 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR Attribute
+
+ This attribute is read/write. The default value is 0. It
+ indicates the maximum amount of time (in microseconds) that
+ eglStreamConsumerAcquireKHR should block. If 0 (the default) it
+ will not block at all. If negative it will block indefinitely.
+
+Issues
+ 1. How to notify the app when a new image is available
+ - callback?
+ - pro: easy to use
+ - con: introduces extra threads into EGL which does not define such
+ behavior now - would have to define a lot of semantics (e.g. what
+ can you call from the callback?)
+ - EGL_KHR_reusable_sync signaled?
+ - this is how EGL_KHR_stream_consumer_endpoint does it
+ - pro: simpler to specify
+ - pro: easy to use if that is all you are waiting for
+ - con: difficult to wait on this AND other events simultaneously?
+ - blocking call to eglStreamConsumerAcquireKHR?
+
+ RESOLVED: Use the EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR to make
+ eglStreamConsumerAcquireKHR blocking if desired. Additional
+ mechanisms can be added as layered extensions.
+
+ 2. What to call this extension?
+ EGL_NV_stream_consumer_gltexture
+ EGL_EXT_stream_consumer_gltexture
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_consumer_gltexture_external
+
+ RESOLVED: EGL_KHR_stream_consumer_gltexture
+
+ 3. Should it be possible to connect an EGLStream to this consumer
+ (texture), and then later reconnect the same stream to a different
+ consumer?
+
+ RESOLVED: no
+
+ There may be reasons to allow this later, but for the time being
+ there is no use for this. Adding this functionality can be
+ considered in the future with a layered extension.
+
+ 4. Do we need both this extension and
+ GL_NV_EGL_stream_consumer_external? Should we just have one
+ extension that takes the place of both? If so should it be an
+ EGL or a GL extension?
+
+ UNRESOLVED
+
+ SUGGESTION: need both
+
+ See issue 1 in GL_NV_EGL_stream_consumer_external.txt
+
+ 5. What happens if the EGLStream is deleted while the consumer
+ has an image acquired?
+
+ This case is a problem because after the EGLStream is deleted
+ the EGLStreamKHR handle is no longer valid, which means
+ eglStreamConsumerReleaseKHR cannot be called (because it would
+ return EGL_BAD_STREAM).
+
+ Possible resolutions:
+
+ A) Do not allow the EGLStream to be deleted while an image is
+ acquired.
+
+ B) Allow the EGLStream to be deleted. Allow the EGLStreamKHR
+ handle to be used in a call to eglStreamConsumerReleaseKHR()
+ after it has been deleted.
+
+ C) Allow the EGLStream to be deleted. It is an error to call
+ eglStreamConsumerReleaseKHR() after the stream is deleted. To
+ release the image the app must
+ - delete the GL_TEXTURE_EXTERNAL texture object
+ or - connect another EGLStream to the GL_TEXTURE_EXTERNAL
+ texture object
+ or - connect an EGLImage to the GL_TEXTURE_EXTERNAL
+ texture object
+
+ D) Make the call to EGLStream implicitly call
+ eglStreamConsumerReleaseKHR if an image is acquired. This
+ requires the GL context is current to the thread that deletes
+ the EGLStream.
+
+ E) Make the call to EGLStream implicitly call
+ eglStreamConsumerReleaseKHR if an image is acquired, and state
+ that this has to work even if the GL context is current to a
+ different thread or not current to any thread.
+
+ Pros/cons:
+ - B violates EGL object handle lifetime policies
+ - E is hard/impossible to implement on some systems
+ - D makes deletion fail for complicated reasons
+ - A makes deletion fail for less complicated reasons
+
+ RESOLVED: option C
+
+Revision History
+
+ #11 (June 18. 2012) Acorn Pooley
+ - Replace EGLStream with EGLStreamKHR in function prototypes.
+
+ #10 (October 12, 2011) Acorn Pooley
+ - Fix confusing error in eglStreamConsumerAcquireKHR description.
+
+ #9 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #8 (September 30, 2011) Acorn Pooley
+ - Add issue 5 and clarify EGLStream deletion while image is
+ acquired.
+
+ #7 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #6 (Aug 3, 2011) Acorn Pooley
+ - rename GL_OES_EGL_stream_external to
+ GL_NV_EGL_stream_consumer_external
+
+ #5 (Aug 2, 2011) Acorn Pooley
+ - Add dependency on GL_OES_EGL_stream_external
+
+ #4 (Aug 2, 2011) Acorn Pooley
+ - Fix spelling and grammar
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (June 29, 2011) Acorn Pooley
+ - change how texture is connected to stream to match
+ EGL_KHR_stream spec.
+ - Add EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_NV
+
+ #1 (April 20, 2011) Acorn Pooley
+ - initial draft
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
new file mode 100644
index 0000000..ecfefd6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
@@ -0,0 +1,560 @@
+Name
+
+ KHR_stream_cross_process_fd
+
+Name Strings
+
+ EGL_KHR_stream_cross_process_fd
+
+Contributors
+
+ Acorn Pooley
+ Ian Stewart
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on June 6, 2012.
+ Approved by the Khronos Board of Promoters on July 27, 2012.
+
+Version
+
+ Version 8 - June 5, 2012
+
+Number
+
+ EGL Extension #41
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires EGL_KHR_stream
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+ This extension interacts with the following extensions if they are
+ also present:
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_producer_aldatalocator
+ EGL_KHR_stream_fifo
+
+Overview
+
+ This extension allows an EGLStreamKHR object handle to be
+ duplicated into another process so that the EGLStream producer can
+ be in one process while the EGLStream consumer can be in another
+ process.
+
+ Duplicating the EGLStreamKHR object handle into another process is
+ peformed in 3 steps
+
+ 1) Get a file descriptor associated with the EGLStream.
+ 2) Duplicate the file descriptor into another process.
+ 3) Create an EGLStreamKHR from the duplicated file descriptor in
+ the other process.
+
+ The file descriptor is obtained by calling
+ eglGetStreamFileDescriptorKHR().
+
+ Duplicating the file descriptor into another process is outside
+ the scope of this extension. See issue #1 for an example of how
+ to do this on a Linux system.
+
+ The EGLStreamKHR object handle is created in the second process by
+ passing the file descriptor to the
+ eglCreateStreamFromFileDescriptorKHR() function. This must be
+ done while the EGLStream is in the EGL_STREAM_STATE_CREATED_KHR
+ state.
+
+ Once the EGLStreamKHR object handle is created in the second
+ process, it refers to the same EGLStream as the EGLStreamKHR
+ object handle in the original process. A consumer can be
+ associated with the EGLStream from either process. A producer can
+ be associated with the EGLStream from either process.
+
+New Types
+
+ Represents a native OS file descriptor.
+
+ typedef int EGLNativeFileDescriptorKHR
+
+New Procedures and Functions
+
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLNativeFileDescriptorKHR file_descriptor);
+
+New Tokens
+
+ Returned from eglGetStreamFileDescriptorKHR on error.
+
+ #define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1))
+
+Add a new section just after section "3.10.1 Creating an EGLStream" in
+the EGL_KHR_stream extension
+
+ 3.10.1.1 Duplicating an EGLStream from a file descriptor
+
+ Call
+
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to create a file descriptor that refers to the EGLStream.
+ <stream> must be an EGLStream in the EGL_STREAM_STATE_CREATED_KHR
+ state. eglGetStreamFileDescriptorKHR may be called at most once
+ for any <stream>.
+
+ On success a file descriptor is returned which can be used
+ to create a duplicate EGLStreamKHR handle which refers to the same
+ underlying EGLStream as <stream>. This file descriptor and file
+ descriptors duplicated from it should only be used in a call to
+ eglCreateStreamFromFileDescriptorKHR() and/or a call to close().
+ In particular reads, writes, and other operations on the file
+ descriptor result in undefined behavior.
+
+ On failure the functions returns EGL_NO_FILE_DESCRIPTOR_KHR and
+ generates an error
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ initialized EGLDisplay
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR handle created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in the
+ EGL_STREAM_STATE_CREATED_KHR state or if
+ eglGetStreamFileDescriptorKHR() has previously been called
+ on this <stream>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> was not created
+ by eglCreateStreamKHR (e.g. if it was created by
+ eglCreateStreamFromFileDescriptorKHR).
+
+ The file descriptor returned by eglGetStreamFileDescriptorKHR can
+ be duplicated into a different process address space using system
+ specific mechanisms outside the scope of this specification. (For
+ example, on a Linux system it can be sent over a UNIX domain
+ socket using sendmsg/recvmsg.)
+
+ Call
+
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLNativeFileDescriptorKHR file_descriptor);
+
+ to create an EGLStreamKHR handle. <file_descriptor> must be a
+ file descriptor returned by eglGetStreamFileDescriptorKHR or a
+ file descriptor duplicated from such a file descriptor (possibly
+ in a different process). The EGLStream must be in the
+ EGL_STREAM_STATE_CREATED_KHR or EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+ On success an EGLStreamKHR handle is returned. This EGLStreamKHR
+ handle refers to the same EGLStream which was used to create the
+ <file_descriptor> or the file descriptor from which
+ <file_descriptor> was duplicated.
+
+ After the file descriptor is passed to
+ eglCreateStreamFromFileDescriptorKHR it may no longer be used to
+ create a new EGLStream.
+
+ On failure EGL_NO_STREAM_KHR is returned and an error is
+ generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ initialized EGLDisplay
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> is
+ EGL_NO_FILE_DESCRIPTOR_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> is
+ not an open file descriptor referring to an EGLStream
+ created on the same Native Display as <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> has
+ already been used to create a stream handle via a previous
+ call to eglCreateStreamFromFileDescriptorKHR.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in the
+ EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_CONNECTING_KHR state.
+
+ The application should close the file descriptor and any file
+ descriptors duplicated from it once
+ eglCreateStreamFromFileDescriptorKHR has returned. Open file
+ descriptors will consume resources until they are closed or until
+ all processes that hold them open have terminated. Closing the
+ file descriptors after calling
+ eglCreateStreamFromFileDescriptorKHR will not affect the
+ associated EGLStream. If an application calls
+ eglGetStreamFileDescriptorKHR and then determines that the file
+ descriptor and/or the EGLStream is no longer needed then it may
+ (and should) close the file descriptor and destroy the EGLStream
+ (this is not considered an error).
+
+ If a process which has successfully connected a consumer or
+ producer to the EGLStream terminates (normally or abnormally) then
+ the EGLStream state becomes EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ If a process has created an EGLStreamKHR handle either with
+ eglCreateStreamKHR or eglCreateStreamFromFileDescriptorKHR but has
+ not connected a producer or consumer to the stream, and this
+ process terminates (normally or abnormally) then this has no
+ effect on the EGLStream.
+
+Interactions with the EGL_KHR_stream_producer_eglsurface extension.
+
+ The eglCreateStreamProducerSurfaceKHR() function can be called
+ from either the process that created the original EGLStreamKHR, or
+ from the process which called eglCreateStreamFromFileDescriptorKHR.
+
+Interactions with the EGL_KHR_stream_consumer_gltexture extension.
+
+ The eglStreamConsumerGLTextureExternalKHR() function can be called
+ from either the process that created the original EGLStreamKHR, or
+ from the process which called
+ eglCreateStreamFromFileDescriptorKHR. The
+ eglStreamConsumerAcquireKHR() and eglStreamConsumerReleaseKHR()
+ functions must be called from the same process that calls
+ eglStreamConsumerGLTextureExternalKHR() (or else they will fail
+ and generate an EGL_BAD_ACCESS error).
+
+Interactions with the EGL_KHR_stream_producer_aldatalocator extension.
+
+ The CreateMediaPlayer() method can be called from either the
+ process that created the original EGLStreamKHR, or from the
+ process which called eglCreateStreamFromFileDescriptorKHR.
+
+Interactions with the EGL_KHR_stream_fifo extension.
+
+ The queries for EGL_STREAM_FIFO_LENGTH_KHR,
+ EGL_STREAM_TIME_NOW_KHR, EGL_STREAM_TIME_CONSUMER_KHR, and
+ EGL_STREAM_TIME_PRODUCER_KHR can be made from either process. The
+ time values returned by the EGL_STREAM_TIME_NOW_KHR query will be
+ consistent between the two processes (i.e. if queried at the same
+ time from both processes, the same value (plus or minus some
+ margin of error) will be returned).
+
+Interactions with the EGL_NV_stream_cross_process_fd extension.
+
+ These extensions may both exist on the same implementation and
+ are functionally equivalent. Mixing and matching file descriptors
+ from one extension with functions from the other is allowed.
+
+Interactions with the EGL_NV_stream_sync extension.
+
+ The eglCreateStreamSyncNV() function may only be called from a
+ process which has successfully connected a consumer to the
+ EGLStream. Otherwise eglCreateStreamSyncNV generates a
+ EGL_BAD_ACCESS error.
+
+Issues
+ 1. How does the application transfer the file descriptor to
+ another process?
+
+ RESOLVED: This is outside the scope of this extension. The
+ application can use existing operating system mechanisms for
+ duplicating the file descriptor into another process. For
+ example on Linux a file descriptor can be sent over a UNIX
+ domain socket using the following code (call send_fd() to
+ send the file descriptor, and receive_fd() in the other
+ process to receive the file descriptor). (The following code
+ is placed into the public domain by its author, Acorn Pooley)
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+
+ #define FATAL_ERROR() exit(1)
+ #define SOCKET_NAME "/tmp/example_socket"
+
+ /* Send <fd_to_send> (a file descriptor) to another process */
+ /* over a unix domain socket named <socket_name>. */
+ /* <socket_name> can be any nonexistant filename. */
+ void send_fd(const char *socket_name, int fd_to_send)
+ {
+ int sock_fd;
+ struct sockaddr_un sock_addr;
+ struct msghdr msg;
+ struct iovec iov[1];
+ char ctrl_buf[CMSG_SPACE(sizeof(int))];
+ struct cmsghdr *cmsg = NULL;
+
+ sock_fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock_fd < 0) FATAL_ERROR();
+
+ memset(&sock_addr, 0, sizeof(struct sockaddr_un));
+ sock_addr.sun_family = AF_UNIX;
+ strncpy(sock_addr.sun_path,
+ socket_name,
+ sizeof(sock_addr.sun_path)-1);
+
+ while (connect(sock_fd,
+ (const struct sockaddr*)&sock_addr,
+ sizeof(struct sockaddr_un))) {
+ printf("Waiting for reciever\n");
+ sleep(1);
+ }
+
+ memset(&msg, 0, sizeof(msg));
+
+ iov[0].iov_len = 1; // must send at least 1 byte
+ iov[0].iov_base = "x"; // any byte value (value ignored)
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+
+ memset(ctrl_buf, 0, sizeof(ctrl_buf));
+ msg.msg_control = ctrl_buf;
+ msg.msg_controllen = sizeof(ctrl_buf);
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = SOL_SOCKET;
+ cmsg->cmsg_type = SCM_RIGHTS;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(int));
+ *((int *) CMSG_DATA(cmsg)) = fd_to_send;
+
+ msg.msg_controllen = cmsg->cmsg_len;
+
+ if (sendmsg(sock_fd, &msg, 0) <= 0) FATAL_ERROR();
+
+ close(sock_fd);
+ }
+
+ /* Listen on a unix domain socket named <socket_name> and */
+ /* receive a file descriptor from another process. */
+ /* Returns the file descriptor. Note: the integer value */
+ /* of the file descriptor may be different from the */
+ /* integer value in the other process, but the file */
+ /* descriptors in each process will refer to the same file */
+ /* object in the kernel. */
+ int receive_fd(const char *socket_name)
+ {
+ int listen_fd;
+ struct sockaddr_un sock_addr;
+ int connect_fd;
+ struct sockaddr_un connect_addr;
+ socklen_t connect_addr_len = 0;
+ struct msghdr msg;
+ struct iovec iov[1];
+ char msg_buf[1];
+ char ctrl_buf[CMSG_SPACE(sizeof(int))];
+ struct cmsghdr *cmsg;
+
+ listen_fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (listen_fd < 0) FATAL_ERROR();
+
+ unlink(socket_name);
+
+ memset(&sock_addr, 0, sizeof(struct sockaddr_un));
+ sock_addr.sun_family = AF_UNIX;
+ strncpy(sock_addr.sun_path,
+ socket_name,
+ sizeof(sock_addr.sun_path)-1);
+
+ if (bind(listen_fd,
+ (const struct sockaddr*)&sock_addr,
+ sizeof(struct sockaddr_un)))
+ FATAL_ERROR();
+
+ if (listen(listen_fd, 1)) FATAL_ERROR();
+
+ connect_fd = accept(
+ listen_fd,
+ (struct sockaddr *)&connect_addr,
+ &connect_addr_len);
+ close(listen_fd);
+ unlink(socket_name);
+ if (connect_fd < 0) FATAL_ERROR();
+
+ memset(&msg, 0, sizeof(msg));
+
+ iov[0].iov_base = msg_buf;
+ iov[0].iov_len = sizeof(msg_buf);
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+
+ msg.msg_control = ctrl_buf;
+ msg.msg_controllen = sizeof(ctrl_buf);
+
+ if (recvmsg(connect_fd, &msg, 0) <= 0) FATAL_ERROR();
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ if (!cmsg) FATAL_ERROR();
+ if (cmsg->cmsg_level != SOL_SOCKET) FATAL_ERROR();
+ if (cmsg->cmsg_type != SCM_RIGHTS) FATAL_ERROR();
+
+ return *(int *) CMSG_DATA(cmsg);
+ }
+
+ 2. Does this extension work with all consumers and all producers?
+
+ RESOLVED: This extension is compatible with
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_producer_aldatalocator
+ EGL_KHR_stream_fifo
+ as described in the Interactions sections. Whether an
+ EGLStream that has been duplicated into another process will
+ work with other types of consumers and producers should be
+ mentioned in the description of those consumers and producers.
+
+ 3. Does EGL create a file descriptor for every EGLStream when the
+ EGLStream is created, or is the file descriptor be created
+ when eglGetStreamFileDescriptorKHR is called?
+
+ RESOLVED: This is implementation dependent. However,
+ recommended behavior is to create the file descriptor when
+ eglGetStreamFileDescriptorKHR is called. This avoids
+ polluting the file descriptor namespace (which may have a
+ limited size on some systems) with descriptors for EGLStreams
+ which will only be used inside a single process. The
+ eglGetStreamFileDescriptorKHR function will fail and generate
+ an EGL_BAD_ALLOC error if it is unable to allocate a file
+ descriptor for the EGLStream.
+
+ 4. Should the EGLStream be created from the file descriptor with
+ the existing eglCreateStreamKHR function or with a new
+ function dedicated to that purpose?
+
+ The advantage of creating a new function is that a new
+ parameter can be added with a specific type. This is not
+ really necessary for this extension since a file descriptor is
+ a small integer which can fit into the EGLint in the
+ eglCreateStreamKHR attrib_list. However, other similar
+ extensions may be invented that use other types of handles
+ (not file descriptors) which may not fit into an EGLint.
+ Creating a dedicated function allows these other extensions to
+ use a similar function.
+
+ RESOLVED: Use a different function.
+
+ 5. How does this extension interact with the
+ EGL_NV_stream_cross_process_fd extension?
+
+ RESOLVED: These extensions may both exist on the same
+ implementation and are functionally equivalent. Mixing and
+ matching file descriptors from one extension with functions
+ from the other is allowed.
+
+ 6. Who should close the file descriptors and when?
+
+ There is no way for the EGL implementation to safely close all
+ the file descriptors associated with an EGLStream because some
+ of them may have been created using OS specific duping
+ mechanisms. Also, the app may need to close a descriptor if
+ it runs into an error before it is able to call
+ eglCreateStreamFromFileDescriptorKHR. Therefore the
+ application will need to close at least some of the created
+ file descriptors. To make things simple and clear it is
+ therefore left up to the app to close all the file
+ descriptors. The app is not *required* to do this, but not
+ doing so will "leak" file descriptors which will consume
+ resources until the process terminates.
+
+ Allowing the app to close all file descriptors as soon as
+ eglCreateStreamFromFileDescriptorKHR returns simplifies the
+ app (no need to keep track of open file descriptors).
+
+ RESOLVED: Application is responsible for closing all file
+ descriptors. They can be safely closed as soon as
+ eglCreateStreamFromFileDescriptorKHR returns.
+
+ 7. What happens when an invalid file descriptor is passed to
+ eglCreateStreamFromFileDescriptorKHR()?
+
+ RESOLVED: The implementation must detect this and generate an
+ error. If the file descriptor refers to a file then the
+ implementation may not modify the file, change the seek
+ location, or otherwise modify the file descriptor.
+
+ 8. What happens if one process hangs or crashes?
+
+ RESOLVED: If either the consumer's or producer's process
+ terminates (normally or abnormally) the EGL implementation
+ must notice this and place the EGLStream in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state. If the consumer is
+ blocked in a eglStreamConsumerAcquireKHR() call, the call will
+ generate an EGL_BAD_STATE_KHR message and return EGL_FALSE.
+ If the consumer process has created a reusable sync object with
+ eglCreateStreamSyncNV() and is blocking in a
+ eglClientWaitSyncKHR() call, the call will block until the
+ timeout runs out.
+
+ If the producer process "hangs" (e.g. enters an infinite loop,
+ blocks in a kernel call, etc) then the consumer process will
+ continue to function. The consumer will continue to use the
+ last frame that the producer produced. If the producer has
+ not yet produced a frame then the EGLStream will be in
+ EGL_STREAM_STATE_EMPTY_KHR state and no frame will be
+ available. The consumer process can block in some situations:
+ - If a EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR is set then
+ eglStreamConsumerAcquireKHR() will block until the
+ timeout runs out (or indefinitely if timeout is
+ negative).
+ - eglClientWaitSyncKHR() will block until the timeout runs
+ out.
+
+ If the consumer process "hangs" then the producer process will
+ continue to function. If the EGLStream has had
+ EGL_STREAM_FIFO_LENGTH_KHR set to a nonzero value then the
+ producer will block indefinitely when it fills the fifo and
+ tries to insert another frame. Otherwise the producer will
+ not block (as new frames are inserted into the EGLStream old
+ ones will be discarded).
+
+Revision History
+
+ #8 (June 5, 2012) Acorn Pooley
+ - rename from XXX to KHR
+
+ #7 (June 5, 2012) Acorn Pooley
+ - Add issue 8.
+ - Better define EGLStream behavior when a process terminates.
+ - Add Interactions with the EGL_NV_stream_sync extension.
+
+ #6 (April 20, 2012) Ian Stewart
+ - Fix extension/function names in interactions
+ - Removed references to NV_stream_sync.
+ - Changed interactions with NV_stream_cross_process_fd such
+ that they are interchangeable.
+
+ #5 (April 18, 2012) Acorn Pooley
+ - Add issue 7
+ - define errors generated when passing invalid file descriptors
+
+ #4 (January 29, 2012) Acorn Pooley
+ - Fork EGL_XXX_stream_cross_process_fd.txt from
+ EGL_NV_stream_cross_process_fd.txt to make changes suggested
+ by working group.
+ - add issues 4, 5, and 6.
+
+ #3 (January 6, 2012) Acorn Pooley
+ - fix typos (EGLImage -> EGLStream)
+
+ #2 (December 7, 2011) Acorn Pooley
+ - Upload to Khronos for review
+
+ #1 (September 27, 2011) Acorn Pooley
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt
new file mode 100644
index 0000000..3d9d985
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt
@@ -0,0 +1,433 @@
+Name
+
+ KHR_stream_fifo
+
+Name Strings
+
+ EGL_KHR_stream_fifo
+
+Contributors
+
+ Acorn Pooley
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 6, October 12, 2011
+
+Number
+
+ EGL Extension #36
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires the EGL_KHR_stream extension.
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+ The EGL_KHR_stream_producer_eglsurface and
+ EGL_NV_stream_producer_eglsurface extensions affect the wording of
+ this extension.
+
+ The EGL_KHR_stream_producer_aldatalocator and
+ EGL_NV_stream_producer_aldatalocator extensions affect the wording
+ of this extension.
+
+ The EGL_KHR_stream_consumer_gltexture and
+ EGL_NV_stream_consumer_gltexture extensions affect the wording
+ of this extension.
+
+Overview
+
+ This extension allows an EGLStream to operate as a fifo rather
+ than as a mailbox.
+
+ The EGL_KHR_stream extension defines the EGLStream object.
+ The EGLStream object works like a 1 entry mailbox, allowing the
+ consumer to consume the frame that the producer most recently
+ inserted. If the consumer requests image frames faster than the
+ producer creates them then it gets the most recent one over and
+ over until a new one is inserted. If the producer inserts frames
+ faster than the consumer can consume them then the extra frames
+ are discarded. The producer is never stalled.
+
+ This extension allows an EGLStream to be placed into fifo mode.
+ In fifo mode no images are discarded. If the producer attempts to
+ insert a frame and the fifo is full then the producer will stall
+ until there is room in the fifo. When the consumer retrieves an
+ image frame from the EGLStream it will see the image frame that
+ immediately follows the image frame that it last retrieved (unless
+ no such frame has been inserted yet in which case it retrieves the
+ same image frame that it retrieved last time).
+
+ Timing of the EGLStream in mailbox mode, as described by the
+ EGL_KHR_stream extension, is the responsibility of the
+ producer (with help from the consumer in the form of the
+ EGL_CONSUMER_LATENCY_USEC_KHR hint).
+
+ In contrast, timing of an EGLStream in fifo mode is the
+ responsibility of the consumer. Each image frame in the fifo has
+ an associated timestamp set by the producer. The consumer can use
+ this timestamp to determine when the image frame is intended to be
+ displayed to the user.
+
+
+New Types
+
+ This type represents an absolute time in nanoseconds.
+
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR
+
+New functions
+
+ EGLBoolean eglQueryStreamTimeKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLTimeKHR *value);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglQueryStreamKHR.
+
+ EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+
+ These enums are accepted the <attribute> parameter of
+ eglQueryStreamTimeKHR.
+
+ EGL_STREAM_TIME_NOW_KHR 0x31FD
+ EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+ EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+
+Add 4 new entries to "Table 3.10.4.4 EGLStream Attributes" in the
+EGL_KHR_stream extension spec:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ---------- --------
+ EGL_STREAM_FIFO_LENGTH_KHR io EGLint 3.10.4.xx
+ EGL_STREAM_TIME_NOW_KHR ro EGLTimeKHR 3.10.4.xx
+ EGL_STREAM_TIME_CONSUMER_KHR ro EGLTimeKHR 3.10.4.xx
+ EGL_STREAM_TIME_PRODUCER_KHR ro EGLTimeKHR 3.10.4.xx
+
+Add a new paragraph to the end of section "3.10.4.2 Querying EGLStream
+Attributes" in the EGL_KHR_stream extension.
+
+ Call
+
+ EGLBoolean eglQueryStreamTimeKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLTimeKHR *value);
+
+ to query <attribute> from <stream> for attributes whose type is
+ EGLTimeKHR.
+
+ If an error occurs EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated if <attribute> is not a valid
+ EGLStream attribute with type EGLTimeKHR.
+
+
+Add new sections 3.1.4.xx at the end of section "3.10.4 EGLStream
+Attributes" in the EGL_KHR_stream extension.
+
+ 3.1.4.x EGL_STREAM_FIFO_LENGTH_KHR Attribute
+
+ The EGL_STREAM_FIFO_LENGTH_KHR may be set in the <attrib_list>
+ parameter of eglCreateStreamKHR(), but is read-only once the
+ stream is created. It can be queried with eglQueryStreamKHR().
+ Its default value is 0. Setting it to a value less than 0
+ generates an EGL_BAD_PARAMETER error.
+
+ When EGL_STREAM_FIFO_LENGTH_KHR is 0 the EGLStream operates in
+ mailbox mode as described in section "3.10.5.1 EGLStream operation
+ in mailbox mode"
+
+ When EGL_STREAM_FIFO_LENGTH_KHR is greater than 0 then the
+ EGLStream operates in fifo mode as described in section "3.10.5.2
+ EGLStream operation in fifo mode".
+
+ In fifo mode the EGLStream contains up to N image frames, where N
+ is the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute.
+
+ The value of EGL_STREAM_FIFO_LENGTH_KHR is independent from the
+ number of internal buffers used by the producer. The producer may
+ require some number of internal buffers, but those are in addition
+ to the fifo buffers described by EGL_STREAM_FIFO_LENGTH_KHR.
+
+ 3.1.4.x+1 EGL_STREAM_TIME_NOW_KHR Attribute
+
+ This indicates the current time. It is measured as the number of
+ nanoseconds since some arbitrary event (e.g. the last time the
+ system rebooted).
+
+ 3.1.4.x+2 EGL_STREAM_TIME_CONSUMER_KHR Attribute
+
+ This indicates the timestamp of the image frame that the consumer
+ most recently consumed (i.e. frame number EGL_CONSUMER_FRAME_KHR).
+ The frame should first be displayed to the user when
+ EGL_STREAM_TIME_NOW_KHR matches this value.
+
+ In mailbox mode the timestamp for an image frame is always equal
+ to the time that the producer inserted the image frame into the
+ EGLStream, minus the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ In fifo mode the timestamp for an image frame is set by the
+ producer when it is inserted into the EGLStream.
+
+ The timestamp uses the same time units as EGL_STREAM_TIME_NOW_KHR.
+
+ 3.1.4.x+3 EGL_STREAM_TIME_PRODUCER_KHR Attribute
+
+ This indicates the timestamp of the image frame that the producer
+ most recently inserted into the EGLStream (i.e. frame number
+ EGL_PRODUCER_FRAME_KHR).
+
+
+Modify the first sentence of section "3.10.5.1 EGLStream operation in
+mailbox mode" in the EGL_KHR_stream extension to:
+
+ When the EGL_STREAM_FIFO_LENGTH_KHR attribute is 0
+ then the EGLStream conceptually operates as a mailbox.
+
+
+Add a new section after section "3.10.5.1 EGLStream operation in
+mailbox mode" in the EGL_KHR_stream extension.
+
+ 3.10.5.2 EGLStream operation in fifo mode
+
+ When the EGL_STREAM_FIFO_LENGTH_KHR attribute is greater than 0
+ then the EGLStream operates in fifo mode. The length of the fifo
+ is the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute.
+
+ In fifo mode the EGLStream conceptually operates as a fifo.
+
+ When the consumer wants to consume a new image frame, behavior
+ depends on the state of the EGLStream. If the state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR then the fifo is not
+ empty and the image frame to consume is removed from the tail of
+ the fifo. If the state is
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR then the fifo is empty
+ and the consumer consumes the same frame that it most recently
+ consumed. Otherwise there are no image frames available to
+ consume (behavior in this case is described in the documentation
+ for each type of consumer - see section "3.10.2 Connecting an
+ EGLStream to a consumer").
+
+ If the fifo is empty when the consumer is finished consuming an
+ image frame then the consumer holds on to the image frame in case
+ it needs to be consumed again later (this happens if the consumer
+ wants to consume another image frame before the producer has
+ inserted a new image frame into the fifo). In this case the state
+ of the EGLStream will be EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ until the producer inserts a new image frame (or until the state
+ becomes EGL_STREAM_STATE_DISCONNECTED_KHR).
+
+ The producer inserts image frames at the head of the fifo. If the
+ fifo is full (already contains <L> image frames, where <L> is the
+ value of the EGL_STREAM_FIFO_LENGTH_KHR attribute) then producer
+ is stalled until the fifo is no longer full. When the fifo is not
+ empty the EGLStream state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR.
+
+ This operation implies:
+
+ - Frames are never discarded until the consumer has examined
+ them.
+
+ - If the consumer consumes frames slower than the producer
+ inserts frames, then the producer will stall.
+
+ - If the consumer consumes frames faster than the producer
+ inserts frames, then the consumer may see some frames more
+ than once.
+
+ - The consumer can see each frame exactly once if it always
+ waits until the stream is in the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR state before
+ retrieving an image from the stream.
+
+ In mailbox mode the producer is responsible for timing. In fifo
+ mode the consumer is responsible for timing.
+
+ In fifo mode the producer marks each image frame with a timestamp.
+ The timestamp indicates at what time the image frame should first
+ be visible to the user. Exactly how a producer sets the timestamp
+ is described in the documentation for each type of producer. If
+ the value of an image frame's timestamp is T then the producer
+ must insert that image frame *before* time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ Image frames must be inserted in increasing timestamp order.
+
+ The consumer is responsible for presenting each image frame to the
+ user at the time indicated by its timestamp. The consumer should
+ indicate its minimum latency to the producer by setting the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute.
+
+
+If the EGL_KHR_stream_producer_eglsurface or
+EGL_NV_stream_producer_eglsurface extension is present then add a
+paragraph to the end of section "3.10.3.1 Stream Surface Producer"
+from that extension:
+
+ If <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. Each time the EGLSurface is
+ passed to eglSwapBuffers() an image frame is inserted into the
+ fifo. The eglSwapBuffers call sets the timestamp of the image
+ frame to the time that eglSwapBuffers was called PLUS the value of
+ the EGL_CONSUMER_LATENCY_USEC_KHR attribute.
+
+If the EGL_KHR_stream_producer_eglsurface or
+EGL_NV_stream_producer_eglsurface extension is present then add a
+paragraph to section "3.9.x Posting to a Stream"
+from that extension, between the 2nd paragraph (which begins "If
+<surface> is the producer of an EGLStream...") and the 3rd paragraph
+(which begins "When eglSwapBuffers returns the contents..."):
+
+ If the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute, <L> is
+ greater than zero, and there are already <L> image frames in the
+ EGLStream fifo, then the eglSwapBuffers function blocks (does not
+ return and does not insert the new image frame) until there is
+ room in the EGLStream fifo (i.e. there are less than <L> image
+ frames in the fifo).
+
+If the EGL_KHR_stream_producer_aldatalocator or
+EGL_NV_stream_producer_aldatalocator extension is present then replace
+the 2nd to last paragraph (the one that starts "The OpenMAX AL object
+will use the value of...") of section "3.10.3.1 OpenMAX AL Stream
+Producer" from that extension with the following 2 paragraphs:
+
+ If <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is zero then the
+ stream operates in mailbox mode. The OpenMAX AL object will use
+ the value of the EGL_CONSUMER_LATENCY_USEC_KHR attribute of
+ <stream> to determine when to insert each image frame. If the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute is modified (by the
+ consumer and/or by the application) then then OpenMAX AL object
+ will adjust its timing within 500 milliseconds of the change. If
+ an image frame is intended to appear to the user at time T (e.g.
+ so that it is synchronized with audio) then the OpenMAX AL object
+ must insert the image frame at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ and set the image frame's timestamp to T.
+
+ If the <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. If an image frame is intended to
+ appear to the user at time T then the OpenMAX AL object will
+ insert the image frame into the fifo before time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ and set the image frame's timestamp to T.
+
+If the EGL_KHR_stream_consumer_gltexture or
+EGL_NV_stream_consumer_gltexture extension is present then replace the
+3rd to last paragraph (the one that starts "If the producer has not
+inserted any new image frames...") of section "3.10.2.1 GL Texture
+External consumer" from that extension with the following 2
+paragraphs:
+
+ When <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is zero then the
+ stream operates in mailbox mode. If the producer has not inserted
+ any new image frames since the last call to
+ eglStreamConsumerAcquireNV then eglStreamConsumerAcquireNV will
+ "latch" the same image frame it latched last time
+ eglStreamConsumerAcquireNV was called. If the producer has
+ inserted one new image frame since the last call to
+ eglStreamConsumerAcquireNV then the eglStreamConsumerAcquireNV
+ will "latch" the newly inserted image frame. If the producer has
+ inserted more than one new image frame since the last call to
+ eglStreamConsumerAcquireNV then all but the most recently inserted
+ image frames are discarded and the producer will "latch" the most
+ recently inserted image frame.
+
+ When <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. Each call to
+ eglStreamConsumerAcquireNV "latches" the next image frame in the
+ fifo into the OpenGL texture, removing that image frame from the
+ fifo. If there are no new image frames in the fifo then
+ eglStreamConsumerAcquireNV will "latch" the same image frame it
+ latched last time eglStreamConsumerAcquireNV was called.
+
+
+Issues
+ 1. Is this extension useful?
+
+ RESOLVED: Yes. Browser vendors and others have expressed
+ interest.
+
+ 2. Why not include this functionality in the base EGL_KHR_stream
+ extension?
+
+ RESOLVED: Including it there was confusing. Several
+ developers interested in EGLStream have thought at first that
+ they want to use EGLStreams in fifo mode. Later after
+ thinking about it they realize standard mode (non-fifo or
+ "mailbox" mode) is more useful.
+
+ Mailbox mode is easier to use and is less confusing for
+ aldatalocator-producer, gltexture-consumer usecase which was
+ the primary usecase for the extension at the time it was
+ devised.
+
+ Trying to describe both mailbox mode and fifo mode in
+ the same extension made the extension complicated. It was
+ confusing when the timestamps were useful (only in fifo mode).
+ It was confusing how the EGL_CONSUMER_LATENCY_USEC_KHR
+ attribute worked in different modes.
+
+ these problems the fifo functionality was split into this
+ separate extension. This also allows existing consumer and
+ producer extensions to be defined in terms of mailbox mode,
+ simplifying them and making them easier to understand. Then
+ interactions with fifo mode can be described separately.
+
+ Also, the fifo mode is more complicated to use and implement than
+ the mailbox mode. It was thought that there might be problems
+ with the fifo mode that could lead to a new extension
+ replacing the fifo mode extension. By keeping the fifo mode
+ functionality segregated into its own extension this would be
+ easier to accomplish.
+
+Revision History
+
+ #6 (October 12, 2011) Acorn Pooley
+ - Clarify fifo mode operation. (Does not change behavior.)
+
+
+ #5 (October 11, 2011) Acorn Pooley
+ - Resolve issue 1
+ - fix typos
+ - add issue 2
+
+ #4 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (version #2 skipped)
+
+ #1 (July 1, 2011) Acorn Pooley
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
new file mode 100644
index 0000000..28f8963
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
@@ -0,0 +1,178 @@
+Name
+
+ KHR_stream_producer_aldatalocator
+
+Name Strings
+
+ EGL_KHR_stream_producer_aldatalocator
+
+Contributors
+
+ Acorn Pooley
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 4, October 4, 2011
+
+Number
+
+ EGL Extension #35
+
+Dependencies
+
+ Requires EGL 1.2 or later.
+ Requires OpenMAX AL 1.1 or later.
+
+ Requires the EGL_KHR_stream extension.
+ Requires the OpenMAX_AL_EGLStream_DataLocator extension.
+
+Overview
+
+ This extension (in conjunction with the
+ OpenMAX_AL_EGLStream_DataLocator extension to OpenMAX AL)
+ allows an OpenMAX AL MediaPlayer object to be connected as the
+ producer of an EGLStream.
+
+ After the EGLStream is created and connected to a consumer, the
+ OpenMAX AL MediaPlayer object is created by calling <pEngine>'s
+ CreateMediaPlayer() method. The <pImageVideoSnk> argument points
+ to an XADataLocator_EGLStream containing the EGLStreamKHR handle
+ of the stream. The CreateMediaPlayer() method creates a
+ MediaPlayer object and connects it as the producer of the
+ EGLStream. (Note that the pFormat member of the XADataSink
+ structure is ignored in this case and may be NULL.)
+
+ Once connected the MediaPlayer inserts image frames into the
+ EGLStream.
+
+Replace section "3.10.3.1 No way to connect producer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.3.1 OpenMAX AL Stream Producer
+
+ An OpenMAX AL MediaPlayer object can act as a producer for an
+ EGLStream. First create the EGLStream and connect a consumer to
+ it so that the EGLStream is in EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+ At this point the application can create an OpenMAX AL MediaPlayer
+ object as described in the OpenMAX AL specification and the
+ OpenMAX_AL_EGLStream_DataLocator extension. The application
+ should create an XADataSink structure with pLocator pointing to an
+ XADataLocator_EGLStream structure referencing the EGLStream (in
+ the pEGLStream member) and the EGLDisplay used to create the
+ EGLStream (in the pEGLDisplay member). The pFormat field of the
+ XADataSink is ignored and should be NULL. This XADataSink
+ structure is passed as the <pImageVideoSnk> argument to
+ <pEngine>'s CreateMediaPlayer() method.
+
+ If the OpenMAX AL implementation is unable to convert image frames
+ to a format usable by <stream>'s consumer then CreateMediaPlayer
+ will fail with a XA_RESULT_CONTENT_UNSUPPORTED error.
+
+ After CreateMediaPlayer() has returned successfully, <stream>'s
+ state will be one of
+ - EGL_STREAM_STATE_EMPTY_KHR
+ - EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ - EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ and the OpenMAX AL MediaPlayer object returned in <pPlayer> will
+ be connected as the producer of <stream>. If the MediaPlayer
+ object is destroyed then <stream>'s state will become
+ EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ Image and video frame data generated by the OpenMAX AL object (as
+ described in the OpenMAX AL spec) are inserted into <stream> (as
+ described in section "3.10.5 EGLStream operation" of the
+ EGL_KHR_stream extension).
+
+ The OpenMAX AL object will use the value of the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute of <stream> to determine
+ when to insert each image frame. If the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute is modified (by the
+ consumer and/or by the application) then OpenMAX AL object
+ will adjust its timing within 500 milliseconds of the change. If
+ an image frame is intended to appear to the user at time T (e.g.
+ so that it is synchronized with audio) then the OpenMAX AL object
+ must insert the image frame at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+
+Issues
+ 1. How many image frame buffers should be used?
+
+ RESOLVED: This is left up to the OpenMAX AL implementation.
+
+ 2. How is the image frame size determined?
+
+ Could also expose EGL_WIDTH and EGL_HEIGHT in the attrib_list
+ as a hint (or as a requirement) as to what size should be
+ used. However, a MediaPlayer object typically knows what size
+ to decode based on the source of the data. So this is
+ probably not necessary. If needed it can be added with a
+ layered extension.
+
+ RESOLVED: Leave this up to the OpenMAX AL MediaPlayer object.
+
+ 3. What image frame format should be used?
+
+ RESOLVED: This is a negotiation between the consumer and
+ producer, but ultimately the producer must convert to the
+ format that the consumer requests, or fail if that is not
+ possible.
+
+ Details of any such communication is implementation dependent
+ and outside the scope of this specification.
+
+ 4. Should this extension create an XADataSink structure rather
+ than making the application create its own as described in
+ OpenMAX_AL_EGLStream_DataLocator?
+
+ RESOLVED: NO no need to do this.
+
+ 5. (This issue no longer applies)
+ Should this extension allow the application to ignore the
+ XADataSink structure returned by eglStreamProducerALDataSource
+ and instead use its own?
+
+ RESOLVED: This issue no longer applies
+
+ 6. (This issue no longer applies)
+ Should eglStreamProducerALDataSource check that <ppDataSink>
+ is not NULL and that <ppDataSink> points to a pointer that is
+ NULL?
+
+ RESOLVED: This issue no longer applies
+
+
+Revision History
+
+ #4 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #3 (September 23, 2011) Acorn Pooley
+ - Eliminate the eglStreamProducerALDataSource function.
+ - Rename AL0124b_EGLImageStream_DataLocator_Nokia to
+ OpenMAX_AL_EGLStream_DataLocator and point to new link.
+ - Resolve issue 2
+
+ #2 (July 6, 2011) Acorn Pooley
+ - remove the creation of the XADataSink by
+ eglStreamProducerALDataSource()
+
+ #1 (June 30, 2011) Acorn Pooley
+ - initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
new file mode 100644
index 0000000..321ff7a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
@@ -0,0 +1,386 @@
+Name
+
+ KHR_stream_producer_eglsurface
+
+Name Strings
+
+ EGL_KHR_stream_producer_eglsurface
+
+Contributors
+
+ Acorn Pooley
+ Jamie Gennis
+ Marcus Lorentzon
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 11, June 18, 2012
+
+Number
+
+ EGL Extension #34
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires OpenGL ES 1.1 or OpenGL ES 2.0.
+
+ Requires the EGL_KHR_stream extension.
+
+Overview
+
+ This extension allows an EGLSurface to be created as a producer of
+ images to an EGLStream. Each call to eglSwapBuffers posts a new
+ image frame into the EGLStream.
+
+New Procedures and Functions
+
+ EGLSurface eglCreateStreamProducerSurfaceKHR(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLStreamKHR stream,
+ const EGLint *attrib_list)
+
+New Tokens
+
+ Bit that can appear in the EGL_SURFACE_TYPE of an EGLConfig:
+
+ EGL_STREAM_BIT_KHR 0x0800
+
+
+
+
+Add a row to "Table 3.2: Types of surfaces supported by an EGLConfig"
+in the EGL spec, right after the EGL_PBUFFER_BIT row:
+
+ EGL Token Name Description
+ -------------- --------------------------
+ EGL_STREAM_BIT_KHR EGLConfig supports streams
+
+
+In the second paragraph of section "Other EGLConfig Attribute
+Description" in the EGL spec, replace
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT
+with
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT | EGL_STREAM_BIT_KHR
+and replace
+ "...cannot be used to create a pbuffer or pixmap."
+with
+ "...cannot be used to create a pbuffer, pixmap, or stream."
+
+
+Replace section "3.10.3.1 No way to connect producer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.3.1 Stream Surface Producer
+
+ Call
+
+ EGLSurface eglCreateStreamProducerSurfaceKHR(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLStreamKHR stream,
+ const EGLint *attrib_list)
+
+ to create an EGLSurface and connect it as the producer of
+ <stream>.
+
+ <attrib_list> specifies a list of attributes for <stream>. The
+ list has the same structure as described for eglChooseConfig. The
+ attributes EGL_WIDTH and EGL_HEIGHT must both be specified in the
+ <attrib_list>.
+
+ EGL_WIDTH and EGL_HEIGHT indicate the width and height
+ (respectively) of the images that makes up the stream.
+
+ The EGLSurface producer inserts an image frame into <stream> once
+ for each time it is passed to eglSwapBuffers(). The image frame
+ is inserted after the GL has finished previous rendering commands.
+ Refer to section "3.10.5 EGLStream operation" in the
+ EGL_KHR_stream extension specification for operation of the
+ EGLStream when an image frame is inserted into it.
+
+ If <stream> is not in the EGL_STREAM_STATE_EMPTY_KHR,
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR, or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR when passed to
+ eglSwapBuffers(), then eglSwapBuffers will return EGL_FALSE and
+ generate an EGL_BAD_CURRENT_SURFACE error.
+
+ If the application would like to have the results of rendering
+ appear on the screen at a particular time then it must query the
+ value of EGL_CONSUMER_LATENCY_USEC_KHR after calling
+ eglCreateStreamProducerSurfaceKHR. This is the estimated time that
+ will elapse between the time the image frame is inserted into the
+ EGLStream and the time that the image frame will appear to the
+ user.
+
+ The image frame is not inserted into the EGLStream until the GL
+ has finished rendering it. Therefore predicting exactly when the
+ image frame will be inserted into the stream is nontrivial.
+
+ If it is critical that this frame of data reach the screen at a
+ particular point in time, then the application can
+ - render the frame (using GL/GLES commands)
+ - call glFinish (or use other synchronization techniques to
+ ensure rendering has completed).
+ - wait until the time that the frame should appear to the user
+ MINUS the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+ - call eglSwapBuffers
+ This will allow the image frame to be inserted into the EGLStream
+ at the correct time ("Image Frame Intended Display Time" minus
+ "Consumer Latency") so that it will be displayed ("Image Frame
+ Actual Display Time" as close as possible to the desired time.
+
+ However, this will cause the GPU to operate in lockstep with the
+ CPU which can cause poor performance. In most cases it will be
+ more important for the image frame to appear to the user "as soon
+ as possible" rather than at a specific point in time. So in most
+ cases the application can ignore the value of
+ EGL_CONSUMER_LATENCY_USEC_KHR, not call glFinish, and not wait
+ before calling eglSwapBuffers.
+
+ On failure eglCreateStreamProducerSurfaceKHR returns EGL_NO_SURFACE
+ and generates an error.
+
+ - EGL_BAD_PARAMETER if EGL_WIDTH is not specified or is specified
+ with a value less than 1.
+
+ - EGL_BAD_PARAMETER if EGL_HEIGHT is not specified or is specified
+ with a value less than 1.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CONNECTING_KHR.
+
+ - EGL_BAD_MATCH is generated if <config> does not have the
+ EGL_STREAM_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ - EGL_BAD_MATCH is generated if the implementation is not able to
+ convert color buffers described by <config> into image frames
+ that are acceptable by the consumer that is connected to
+ <stream>.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+Add a section preceding "3.9.3 Posting Semantics" in the EGL
+specification:
+
+ 3.9.x Posting to a Stream
+
+ To post the color buffer to an EGLStream with an EGLSurface
+ producer, call
+
+ EGLBoolean eglSwapBuffers(
+ EGLDisplay dpy,
+ EGLSurface surface);
+
+ If <surface> is the producer of an EGLStream then the
+ contents of the color buffer are inserted as a new image frame
+ into the EGLStream.
+
+ When eglSwapBuffers returns the contents of the color buffer will
+ have been inserted into the EGLStream as described in section
+ "3.10.5 EGLStream operation" in the EGL_KHR_stream extension
+ specification, and the EGL_PRODUCER_FRAME_KHR attribute and
+ EGL_STREAM_STATE_KHR attribute values will reflect this.
+
+ The contents of the color buffer and all ancillary buffers are
+ always undefined after calling eglSwapBuffers.
+
+ eglSwapBuffers is never synchronized to a video frame when
+ <surface> is the producer for an EGLStream (it is as if the
+ swapinterval (set by eglSwapInterval, see below section "3.9.3
+ Posting Semantics") is 0).
+
+ It is implementation dependent whether eglSwapBuffers actually
+ waits for rendering to the color buffer to complete before
+ returning, but except for timing it must appear to the application
+ that all rendering to the EGLSurface (e.g. all previous gl
+ commands) completed before the image frame was inserted into the
+ EGLStream and eglSwapBuffers returned (as described below in
+ section "3.9.3 Posting Semantics").
+
+
+Add to section "3.9.4 Posting Errors" in the EGL specification a new
+sentence as the 2nd to last sentence in the first paragraph:
+
+ If eglSwapBuffers is called and the EGLStream associated with
+ surface is no longer valid, an EGL_BAD_STREAM_KHR error is
+ generated.
+
+
+Issues
+ 1. How many image frame buffers should be used?
+
+ DISCUSSION:
+ - leave up to implementation?
+ - leave up to producer?
+ - need hints from consumer?
+ - In practice 1, 2, and 3 buffers mean different semantics
+ which are visible to both the producer and consumer. Each
+ may be useful. I cannot think of a use for more than 3
+ buffers for EGL_KHR_stream_surface. (For a video producer
+ more than 3 often does make sense, but that is a different
+ extension.)
+
+ One possibility: expose EGL_BUFFER_COUNT_KHR to application.
+
+ It probably does not make sense to ever use more or less than
+ 3 buffers. One that is the EGLSurface back buffer. One that
+ is waiting for the consumer to acquire. And one that the
+ consumer has acquired and is actively consuming.
+
+ RESOLVED: remove the EGL_BUFFER_COUNT_KHR parameter and always
+ use 3 buffers. This attribute can be added back with a
+ layered extension later if needed.
+
+ 2. How is the resolution (width/height) of image frames set?
+
+ RESOLVED: The width and height are set with the required
+ EGL_WIDTH and EGL_HEIGHT attributes. These do not change for
+ the life of <stream>.
+
+ 3. How is the image format, zbuffering, etc set?
+
+ RESOLVED: These are all determined by the <config>. These do
+ not change for the life of <stream>.
+
+ 4. How does eglSwapBuffers act if there are already image frames
+ in the EGLStream when it is called.
+
+ RESOLVED: Frames are inserted into the EGLStream as described
+ in section "3.10.5 EGLStream operation" in the EGL_KHR_stream
+ extension specification. In particular:
+
+ If the value of EGL_STREAM_FIFO_LENGTH_KHR is 0 or if the
+ EGL_KHR_stream_fifo extension is not supported then the
+ new frame replaces any frames that already exist in the
+ EGLStream. If the consumer is already consuming a frame
+ then it continues to consume that same frame, but the next
+ time the consumer begins to consume a frame (e.g. the
+ next time eglStreamConsumerAcquireKHR() is called for a
+ gltexture consumer) the newly rendered image frame will be
+ consumed. (This is the standard behavior for ANY producer
+ when EGL_STREAM_FIFO_LENGTH_KHR is 0, described as "mailbox
+ mode").
+
+ If the EGL_KHR_stream_fifo extension is supported and the
+ value of EGL_STREAM_FIFO_LENGTH_KHR is greater than 0 then
+ the newly rendered frame will be inserted into the
+ EGLStream. If the EGLStream is full (already contains
+ EGL_STREAM_FIFO_LENGTH_KHR frames) then eglSwapBuffers
+ will block until there is room in the fifo. Note that
+ this can deadlock if the consumer is running in the same
+ thread as the producer since the consumer will never be
+ able to consume a frame if the thread is blocked waiting
+ for room in the fifo. This fifo-related behavior is
+ described in the EGL_KHR_stream_fifo specification (this
+ behavior is not specific to this producer; it works the
+ same for all producers and all consumers).
+
+ All rendering commands must complete before the color
+ buffer is inserted into the EGLStream, or at least this is how
+ the behavior must appear to the application.
+
+ To be precise: when eglSwapBuffers returns the rendering
+ commands may or may not actually be complete, but the
+ following must all be true:
+ - The EGL_PRODUCER_FRAME_KHR value reflects the frame that
+ was just swapped by eglSwapBuffers
+ - The EGL_STREAM_STATE_KHR indicates that the image frame
+ is available (i.e. its value is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR)
+ - In mailbox mode if the consumer consumes a new frame it
+ will get this new frame (not an older frame). (For
+ example, with a EGL_NV_stream_consumer_gltexture
+ consumer, a call to eglStreamConsumerAcquireKHR() will
+ latch this new frame.)
+ - In fifo mode (see EGL_KHR_stream_fifo extension) if the
+ consumer consumes a new frame and all previous frames
+ have been consumed it will get this new frame (not an
+ older frame). (For example, with a
+ EGL_NV_stream_consumer_gltexture consumer, a call to
+ eglStreamConsumerAcquireKHR() will latch this new
+ frame.)
+ - If a consumer consumes the swapped frame, all GL (and
+ other API) commands called prior to eglSwapBuffers
+ will take effect on the image frame before the
+ consumer consumes it. In other words, the consumer
+ will never consume a partially rendered frame. (For
+ example, with EGL_NV_stream_consumer_gltexture
+ consumer, if the app does this:
+ eglSwapBuffers() // swap the producer EGLSurface
+ eglStreamConsumerAcquireKHR() // acquire the swapped image
+ glDrawArrays() // draw something using the texture
+ then the texture used in the glDrawArrays() command
+ will contain the image rendered by all gl (and/or
+ other API) commands preceding the eglSwapBuffers call
+ as if the app had called glFinish and/or eglWaitClient
+ just before calling eglSwapBuffers (but note that this
+ is implicit in eglSwapBuffers; the app does NOT need
+ to actually call glFinish or any other synchronization
+ functions in order to get this effect, and in fact
+ explicitly calling glFinish and/or eglWaitClient there
+ may significantly and negatively affect performance).)
+
+Revision History
+
+ #11 (June 18. 2012) Acorn Pooley
+ - Replace EGLStream with EGLStreamKHR in function prototypes.
+
+ #10 (June 15, 2012) Acorn Pooley
+ - Fix eglCreateStreamProducerSurfaceKHR name (was missing KHR)
+
+ #9 (October 17, 2011) Acorn Pooley
+ - Clarify issue 4
+
+ #8 (October 12, 2011) Acorn Pooley
+ - remove interactions with EGL_KHR_stream_fifo extension (they
+ are already decribed in that extension).
+
+ #7 (October 11, 2011) Acorn Pooley
+ - Add issue 4
+ - add changes to section 3.9 of the EGL spec to clarify
+ eglSwapBuffer behavior
+
+ #6 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #5 (September 30, 2011) Acorn Pooley
+ - Remove EGL_BUFFER_COUNT_NV (0x321D) attribute and resolve issue 1.
+
+ #4 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (June 30, 2011) Acorn Pooley
+ - remove dependence on EGLImage
+ - clarify overview
+ - remove glossary (it can be seen in EGL_KHR_stream ext)
+ - Add EGL_STREAM_BIT
+ - clarify description
+ - describe attribute
+
+ #1 (April 20, 2011) Acorn Pooley
+ - initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt
new file mode 100644
index 0000000..4e8751b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt
@@ -0,0 +1,174 @@
+Name
+
+ KHR_surfaceless_context
+
+Name Strings
+
+ EGL_KHR_surfaceless_context
+
+Contributors
+
+ Acorn Pooley
+ Jon Leech
+ Kristian Hoegsberg
+ Steven Holte
+
+Contact
+
+ Acorn Pooley: apooley at nvidia dot com
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on June 6, 2012.
+ Approved by the Khronos Board of Promoters on July 27, 2012.
+
+Version
+
+ Version 4, 2012/05/03
+
+Number
+
+ EGL Extension #40
+
+Dependencies
+
+ EGL 1.0 is required.
+
+ The functionality of this extension is not supported by client OpenGL ES
+ contexts unless the GL_OES_surfaceless_context extension is supported by
+ those contexts.
+
+ Written against wording of EGL 1.4 specification.
+
+Overview
+
+ These extensions allows an application to make a context current by
+ passing EGL_NO_SURFACE for the write and read surface in the
+ call to eglMakeCurrent. The motivation is that applications that only
+ want to render to client API targets (such as OpenGL framebuffer
+ objects) should not need to create a throw-away EGL surface just to get
+ a current context.
+
+ The state of an OpenGL ES context with no default framebuffer provided
+ by EGL is the same as a context with an incomplete framebuffer object
+ bound.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL Specification section "3.7.3 Binding Contexts and
+Drawables"
+
+ Replace the following two error conditions in the
+ list of eglMakeCurrent errors:
+
+ " * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is
+ generated.
+ * If either <draw> or <read> are not valid EGL surfaces, an
+ EGL_BAD_SURFACE error is generated."
+
+ with the following error conditions:
+
+ " * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an
+ EGL_BAD_CONTEXT error is generated.
+ * If either <draw> or <read> are not valid EGL surfaces and are
+ not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated.
+ * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not
+ EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If either of <draw> or <read> is a valid surface and the other
+ is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If <ctx> does not support being bound without read and draw
+ surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an
+ EGL_BAD_MATCH error is generated."
+
+ Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and
+ <draw> and <read> are not EGL_NO_SURFACE..." with
+
+ "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is a context
+ which supports being bound without read and draw surfaces, then no error
+ is generated and the context is made current without a
+ <default framebuffer>. The meaning of this is defined by the API of the
+ supporting context. (See chapter 4 of the OpenGL 3.0 Specification, and
+ the GL_OES_surfaceless_context OpenGL ES extension.)"
+
+ Append to the paragraph starting "The first time an OpenGL or OpenGL
+ ES context is made current..." with
+
+ "If the first time <ctx> is made current, it is without a default
+ framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then
+ the viewport and scissor regions are set as though
+ glViewport(0,0,0,0) and glScissor(0,0,0,0) were called."
+
+Interactions with other extensions
+
+ The semantics of having a current context with no surface for OpenGL ES
+ 1.x and OpenGL ES 2.x are specified by the GL_OES_surfaceless_context
+ extension.
+
+Issues
+
+ 1) Do we need a mechanism to indicate which contexts may be bound with
+ <read> and <draw> set to NULL? Or is it ok to require that if this
+ extension is supported then any context of the particular API may be
+ made current with no surfaces?
+
+ RESOLVED. Because multiple API implementations may be available as
+ contexts we cannot guarantee that all OpenGL ES 1.x or OpenGL ES 2.x
+ contexts will support GL_OES_surfaceless_context. If the user attempts
+ to call eglMakeCurrent with EGL_NO_SURFACE on a context which does not
+ support it, this simply results in EGL_BAD_MATCH.
+
+ 2) Do we need to include all of the relevant "default framebuffer" language
+ from the OpenGL specification to properly specify OpenGL ES behavior
+ with no default framebuffer bound?
+
+ RESOLVED. Yes, the behaviour of the GLES contexts when no default
+ framebuffer is associated with the context has been moved to the OpenGL
+ ES extension OES_surfaceless_context.
+
+ 3) Since these EGL extensions also modify OpenGL ES behavior and introduce
+ a new error condition, do we want corresponding OpenGL ES extension
+ strings as well?
+
+ RESOLVED. Yes, see GL_OES_surfaceless_context extension.
+
+ 4) How does this document interact with EGL_KHR_create_context and OpenGL
+ contexts?
+
+ RESOLVED. Some language defining the error conditions of eglMakeCurrent
+ have been imported from the draft specification of EGL_KHR_create_context
+ and the definitions of the behaviour of the GLES contexts without a
+ default framebuffer have been moved to GL_OES_surfaceless_context. Any
+ further interactions are left to the create_context extension to define
+ when it is completed.
+
+Revision History
+
+ Version 5, 2014/01/07 (Jon Leech) - Correct references to
+ EXT_surfaceless_context with GL_OES_surfaceless_context.
+
+ Version 4, 2012/02/27 (Steven Holte) - Add language for error conditions
+ from EGL_KHR_create_context, and resolutions of issues. Combined API
+ specific extensions into a single extension.
+
+ Version 3, 2010/08/19 (Kristian Hoegsberg) - Move default framebuffer
+ language to new GLES extension (GL_OES_surfaceless_context) and make
+ this extension depend on that.
+
+ Version 2, 2010/08/03 (Jon Leech) - add default framebuffer language to
+ the OpenGL ES Specifications, including changes to initial GL state and
+ the FRAMEBUFFER_UNDEFINED incompleteness status when no default
+ framebuffer is bound.
+
+ Version 1, 2010/07/09 (Acorn Pooley) - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
new file mode 100644
index 0000000..310dc39
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
@@ -0,0 +1,449 @@
+Name
+
+ KHR_swap_buffers_with_damage
+
+Name Strings
+
+ EGL_KHR_swap_buffers_with_damage
+
+Contributors
+
+ Robert Bragg
+ Tapani Pälli
+ Kristian Høgsberg
+ Benjamin Franzke
+ Ian Stewart
+ James Jones
+ Ray Smith
+
+Contact
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on September 17, 2014.
+ Approved by the Khronos Board of Promoters on November 7, 2014.
+
+Version
+
+ Version 13, February 20, 2020
+
+Number
+
+ EGL Extension #84
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension provides a means to issue a swap buffers request to
+ display the contents of the current back buffer and also specify a
+ list of damage rectangles that can be passed to a system
+ compositor so it can minimize how much it has to recompose.
+
+ This should be used in situations where an application is only
+ animating a small portion of a surface since it enables the
+ compositor to avoid wasting time recomposing parts of the surface
+ that haven't changed.
+
+Terminology
+
+ This extension and the EGL_KHR_partial_update extension both use the word
+ "damage" for subtly but significantly different purposes:
+
+ "Surface damage" is what the EGL_KHR_swap_buffers_with_damage extension
+ is concerned with. This is the area of the *surface* that changes between
+ frames for that surface. It concerns the differences between two buffers -
+ the current back buffer and the current front buffer. It is useful only to
+ the consumer.
+
+ "Buffer damage" is what the EGL_KHR_partial_update extension is concerned
+ with. This is the area of a particular buffer that has changed since that
+ same buffer was last used. As it only concerns changes to a single buffer,
+ there is no dependency on the next or previous frames or any other buffer.
+ It therefore cannot be used to infer anything about changes to the surface,
+ which requires linking one frame or buffer to another. Buffer damage is
+ therefore only useful to the producer.
+
+ Following are examples of the two different damage types. Note that the
+ final surface content is the same in both cases, but the damaged areas
+ differ according to the type of damage being discussed.
+
+Surface damage example (EGL_KHR_swap_buffers_with_damage)
+
+ The surface damage for frame n is the difference between frame n and frame
+ (n-1), and represents the area that a compositor must recompose.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| | | | | | |
+ |@@@@@@@@@| | | |@@@@@@@@@| | | | | Surface damage
+ |@@@@@@@@@| | | | | |@@@@@@@@@| | |
+ |@@@@@@@@@| | | | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+Buffer damage example (EGL_KHR_partial_update)
+
+ The buffer damage for a frame is the area changed since that same buffer was
+ last used. If the buffer has not been used before, the buffer damage is the
+ entire area of the buffer.
+
+ The buffer marked with an 'X' in the top left corner is the buffer that is
+ being used for that frame. This is the buffer to which the buffer age and
+ the buffer damage relate.
+
+ Note that this example shows a double buffered surface - the actual number
+ of buffers could be different and variable throughout the lifetime of the
+ surface. The age *must* therefore be queried for every frame.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+ X---------+
+ | | | | |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Buffer 1 content
+ | | | | | | | | |#########|
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+
+ |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| Buffer 2 content
+ | | | | |#########| |#########|
+ | | | | | | | |
+ +---------+ +---------+ +---------+ +---------+
+
+ 0 0 2 2 2 Buffer age
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | | |
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | Buffer damage
+ |@@@@@@@@@| |@@@@@@@@@| | | |@@@@@@@@@| |@@@@@@@@@|
+ |@@@@@@@@@| |@@@@@@@@@| | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+
+New Procedures and Functions
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add the following text to subsection 3.9.1 titled "Posting to a
+ Window" after the description of eglSwapBuffers.
+
+ As an alternative to eglSwapBuffers use:
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+ to do the same thing as eglSwapBuffers but additionally report
+ a list of rectangles that define the region that has truly
+ changed since the last frame. To be clear; the entire contents
+ of the back buffer will still be swapped to the front so
+ applications using this API must still ensure that the entire
+ back buffer is consistent. The rectangles are only a hint for
+ the system compositor so it can avoid recomposing parts of the
+ surface that haven't really changed.
+ <rects> points to a list of integers in groups of four that
+ each describe a rectangle in screen coordinates in this
+ layout: {x, y, width, height}. The rectangles are specified
+ relative to the bottom-left of the surface and the x and y
+ components of each rectangle specify the bottom-left position
+ of that rectangle. <n_rects> determines how many groups of 4
+ integers can be read from <rects>. It is not necessary to
+ avoid overlaps of the specified rectangles.
+ If <n_rects> is 0 then <rects> is ignored and the entire
+ surface is implicitly damaged and the behaviour is equivalent
+ to calling eglSwapBuffers.
+ The error conditions checked for are the same as for the
+ eglSwapBuffers api.
+
+ Modify the first paragraph of Section 3.9.1 titled "Native Window
+ Resizing"
+
+ "If the native window corresponding to <surface> has been
+ resized prior to the swap, <surface> must be resized to match.
+ <surface> will normally be resized by the EGL implementation
+ at the time the native window is resized. If the
+ implementation cannot do this transparently to the client,
+ then eglSwapBuffers and eglSwapBuffersWithDamageKHR must
+ detect the change and resize surface prior to copying its
+ pixels to the native window. In this case the meaningfulness
+ of any damage rectangles forwarded by
+ eglSwapBuffersWithDamageKHR to the native window system is
+ undefined."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the
+ calling thread's current context, eglSwapBuffers,
+ eglSwapBuffersWithDamageKHR, and eglCopyBuffers perform an
+ implicit flush operation on the context (glFlush for OpenGL or
+ OpenGL ES context, vgFlush for an OpenVG context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglSwapBuffersWithDamageKHR, or a native
+ pixmap, for eglCopyBuffers) should have the same number of
+ components and component sizes as the color buffer it's being
+ copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifies the minimum number of video frame periods per color
+ buffer post operation for the window associated with the
+ current context. The interval takes effect when eglSwapBuffers
+ or eglSwapBuffersWithDamageKHR is first called subsequent to
+ the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglSwapBuffersWithDamageKHR, and
+ eglCopyBuffers return EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglSwapBuffersWithDamageKHR are called
+ and the native window associated with <surface> is no longer
+ valid, an EGL_BAD_NATIVE_WINDOW error is generated. If
+ eglSwapBuffersWithDamageKHR is called and <n_rects>, is less
+ than zero or <n_rects> is greater than zero but <rects> is
+ NULL, EGL_BAD_PARAMETER is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+1) Do applications have to make sure the rectangles don't overlap?
+
+ RESOLVED: No, that would be inconvenient for applications and we
+ see no difficulty for implementations to supporting overlapping
+ rectangles.
+
+2) Would it be valid for an implementation to discard the list of
+ rectangles internally and work just in terms of the
+ eglSwapBuffers api?
+
+ RESOLVED: Yes, the rectangles are only there for optimization
+ purposes so although it wouldn't be beneficial to applications if
+ it was convenient at times then it would be compliant for an
+ implementation to discard the rectangles and just call
+ eglSwapBuffers instead. The error conditions that should be
+ checked for are compatible with the requirements for
+ eglSwapBuffers.
+
+3) What origin should be used for damage rectangles?
+
+ RESOLVED: Bottom left since this is consistent with all other
+ uses of 2D window coordinates in EGL and OpenGL that specify a
+ bottom left origin.
+
+ Originally this specification was written with a top-left origin
+ for the damage rectangles even though it was known to be
+ inconsistent and that was because most window systems use a
+ top-left origin and there are some awkward semantic details
+ related to handling native window resizing that we had hoped to
+ simplify.
+
+ This extension and also several other existing EGL extensions
+ struggle to guarantee a reliable behaviour in response to native
+ window resizing which can happen asynchronously on some platforms
+ and this can make it difficult for applications to avoid certain
+ visual artefacts.
+
+ The crux of the problem is that when a native window is
+ asynchronously resized then the window system may maintain the old
+ buffer contents with respect to a different origin than EGL's
+ bottom left origin. For this extension that means that EGL damage
+ rectangles that are intended to map to specific surface contents
+ may end up mapping to different contents when a native window is
+ resized because the rectangles and buffer contents will be moved in
+ different directions in relation to the new window size.
+
+ In the end we decided that this issue isn't simply solved by
+ choosing to use a top-left origin and so we can instead aim for
+ consistency and clarify what guarantees we offer in relation to
+ native window resizing separate from this issue.
+
+4) What guarantees do we provide about the meaningfulness of EGL
+ damage rectangles that are forwarded to the native window system
+ when presenting to a native window that has been resized?
+
+ RESOLVED: The meaningfulness of those forwarded damage rectangles
+ is undefined since this simplifies the implementation requirements
+ and we saw very little benefit to applications from providing
+ stricter guarantees.
+
+ The number of applications that would be able to avoid fully
+ redrawing the contents of a window in response to a window resize
+ is expected to be so low that there would be almost no benefit to
+ defining strict guarantees here.
+
+ Since EGL already states that the contents of window surface
+ buffers become undefined when a native window has been resized,
+ this limitation doesn't introduce any new issue for applications
+ to consider. Applications should already fully redraw buffer
+ contents in response to a native window resize, unless they are
+ following some platform specific documentation that provides
+ additional guarantees.
+
+ For an example of the implementation details that make this an
+ awkward issue to provide guarantees for we can consider X11 based
+ platforms where native windows can be resized asynchronously with
+ respect to a client side EGL surface:
+
+ With X11 there may be multiple "gravity" transformations that can
+ affect how surface buffer content is positioned with respect to a
+ new native window size; there is the core X "bit gravity" and
+ there is the EGL driver gravity that determines how a surface's
+ contents with one size should be mapped to a native window with a
+ different size. Without very careful cooperation between the EGL
+ driver and the core X implementation and without the right
+ architecture to be able to do transforms atomically with respect
+ to different clients that may enact a window resize then it is not
+ possible to reliably map EGL damage rectangles to native window
+ coordinates.
+
+ The disadvantage of a driver that is not able to reliably map EGL
+ damage rectangles to native window coordinates is that a native
+ compositor may re-compose the wrong region of window. This may
+ result in a temporary artefact until the full window gets redrawn
+ and then re-composed. X11 already suffers other similar transient
+ artefacts when resizing windows.
+
+ The authors of this spec believe that even if a driver can't do
+ reliable mappings of EGL damage rectangles then compositors would
+ be able mitigate the majority of related artefacts by ignoring
+ sub-window damage during an interactive window resize.
+
+ The authors of this spec believe that that if an X11 driver did
+ want to reliably map EGL damage rectangles to the native window
+ coordinates then that may be technically feasible depending on the
+ driver architecture. For reference one approach that had been
+ considered (but not tested) is as follows:
+
+ 1) When eglSwapBuffersWithDamageKHR is called, send EGL damage
+ rectangles from the client to a driver component within the
+ xserver un-transformed in EGL window surface coordinates with a
+ bottom-left origin.
+
+ 2) Within the X server the driver component should look at the
+ bit-gravity of a window and use the bit-gravity convention to
+ copy EGL surface content to the front-buffer of a native window.
+
+ 3) Within the X server the driver component should use the same
+ gravity transform that was used to present the surface content
+ to also transform the EGL damage rectangle coordinates.
+
+ Note that because this transform is done in the xserver then
+ this is implicitly synchronized with all clients that would
+ otherwise be able to enact an asynchronous window resize.
+
+
+Revision History
+
+ Version 1, 29/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarify that the rectangles passed may overlap
+ Version 3, 01/09/2011
+ - Fix a missing '*' in prototype to make rects a pointer
+ Version 4, 11,02,2012
+ - Clarify that implementing in terms of eglSwapBuffers would be
+ compliant.
+ Version 5, 11,02,2012
+ - Tweak the cases where we report BAD_PARAMETER errors
+ Version 6, 05/02/2013
+ - Specify more thorough updates across the EGL 1.4 spec
+ wherever it relates to the eglSwapBuffers api
+ - Clarify that passing <n_rects> of 0 behaves as if
+ eglSwapBuffers were called.
+ Version 7, 14/02/2013
+ - Specify that a bottom-left origin should be used for rectangles
+ Version 8, 19/03/2013
+ - Add Ian and James as contributors
+ - Add an issue explaining why we changed to a bottom-left origin
+ - Clarify that the behaviour is undefined when presenting to a
+ native window that has been resized.
+ - Document the awkward details that would be involved in
+ providing more strict guarantees when presenting to a native
+ window that has been resized.
+ Version 9, 12/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 10, 19/08/2014
+ - Draft for promoting to KHR
+ - Added section on terminology and damage types
+ Version 11, 10/09/2014
+ - Marked as display extension
+ Version 12, 11/05/2014
+ - Change copyright to Khronos after signoff from Intel.
+ Version 13, 20/02/2020, Jon Leech
+ - Constify rects parameter (EGL-Registry issue 98).
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt
new file mode 100644
index 0000000..719bb11
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt
@@ -0,0 +1,138 @@
+Name
+
+ KHR_vg_parent_image
+
+Name Strings
+
+ EGL_KHR_vg_parent_image
+
+Contributors
+
+ Ignacio Llamas
+ Gary King
+ Chris Wynn
+
+Contacts
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+Version
+
+ Version 5, October 8, 2008
+
+Number
+
+ EGL Extension #4
+
+Dependencies
+
+ This extension requires EGL 1.2 and the EGL_KHR_image extension,
+ and an OpenVG implementation
+
+ This specification is written against the wording of the EGL Image
+ (EGL_KHR_image) specification.
+
+Overview
+
+ This extension provides a mechanism for creating EGLImage objects
+ from OpenVG VGImage API resources. For an overview of EGLImage
+ operation, please see the EGL_KHR_image specification.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_VG_PARENT_IMAGE_KHR 0x30BA
+
+
+Additions to the EGL Image (EGL_KHR_image) Specification:
+
+ Add the following to Table aaa (Legal values for CreateImageKHR
+ <target> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +--------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +--------------------------+--------------------------------------------+
+ | EGL_VG_PARENT_IMAGE_KHR | Used for OpenVG VGImage objects |
+ +--------------------------+--------------------------------------------+
+
+ Insert the following text after paragraph 3 ("If <target> is
+ NATIVE_PIXMAP_KHR...") of Section 2.5.1 (EGLImage Specification):
+
+ "If <target> is EGL_VG_PARENT_IMAGE_KHR, <dpy> must be a valid EGLDisplay,
+ <ctx> must be a valid OpenVG API context on that display, and <buffer>
+ must be a handle of a VGImage object valid in the specified context, cast
+ into the type EGLClientBuffer. Furthermore, the specified VGImage
+ <buffer> must not be a child image (i.e. the value returned by
+ vgGetParent(<buffer>) must be <buffer>). If the specified VGImage
+ <buffer> has any child images (i.e., vgChildImage has been previously
+ called with the parent parameter set to <buffer>), all child images will
+ be treated as EGLImage siblings after CreateImageKHR returns. Any values
+ specified in <attr_list> are ignored."
+
+ Add the following errors to the end of the list in Section 2.5.1 (EGLImage
+ Specification):
+
+ " * If <target> is EGL_VG_PARENT_IMAGE_KHR, and <dpy> is not a
+ valid EGLDisplay, the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <ctx> is not a
+ valid EGLContext, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <ctx> is not a valid
+ OpenVG context, the error EGL_BAD_MATCH is returned.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <buffer> is not a handle
+ to a VGImage object in the specified API context <ctx>, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR, and the VGImage specified by
+ <buffer> is a child image (i.e., vgGetParent(<buffer>) returns
+ a different handle), the error EGL_BAD_ACCESS is generated."
+
+Issues
+
+ 1. Should this specification allow the creation of EGLImages
+ from OpenVG child images?
+
+ RESOLVED: No. It is believed that properly addressing the
+ interaction of hardware restrictions (e.g., memory alignment),
+ arbitrary image subrectangles, scissor rectangles and viewport
+ rectangles may create an undue burden on implementers. In the
+ interest of providing a useful spec in a timely fashion, this
+ functionality has been disallowed, with the possibility of
+ providing it (if necessary) through a future layered extension.
+
+ This restriction is shared with eglCreatePbufferFromClientBuffer;
+ however, this specification allows EGL Images to be created
+ from VGImages which have child images, functionality not
+ previously available.
+
+Revision History
+
+#5 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#4 (Jon Leech, April 5, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#3 (December 14, 2006)
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - added error condition descriptions for <dpy> and <ctx>
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt
new file mode 100644
index 0000000..aeef96c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt
@@ -0,0 +1,278 @@
+Name
+
+ KHR_wait_sync
+
+Name Strings
+
+ EGL_KHR_wait_sync
+
+Contributors
+
+ Jon Leech
+ Tom Cooksey
+ Alon Or-bach
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2012-2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on October 26, 2012.
+
+Version
+
+ Version 7, March 12, 2014
+
+Number
+
+ EGL Extension #43
+
+Dependencies
+
+ EGL 1.1 is required.
+
+ EGL_KHR_fence_sync is required.
+
+ EGL_KHR_reusable_sync is affected by this extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension adds the ability to wait for signaling of sync objects
+ in the server for a client API context, rather than in the application
+ thread bound to that context. This form of wait does not necessarily
+ block the application thread which issued the wait (unlike
+ eglClientWaitSyncKHR), so the application may continue to issue commands
+ to the client API context or perform other work in parallel, leading to
+ increased performance. The best performance is likely to be achieved by
+ implementations which can perform this new wait operation in GPU
+ hardware, although this is not required.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLint eglWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags)
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to section 3.8.1 "Sync Objects" (as already modified
+ by EGL_KHR_fence_sync and/or EGL_KHR_reusable_sync):
+
+ Following the description of eglClientWaitSyncKHR, add:
+
+ "The command
+
+ EGLint eglWaitSyncKHR(EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags)
+
+ is similar to eglClientWaitSyncKHR, but instead of blocking and not
+ returning to the application until <sync> is signaled, eglWaitSyncKHR
+ returns immediately. On success, EGL_TRUE is returned, and the server
+ for the client API context [fn1] will block until <sync> is signaled
+ [fn2].
+ [fn1 - the server may choose to wait either in the CPU executing
+ server-side code, or in the GPU hardware if it supports this
+ operation.]
+ [fn2 - eglWaitSyncKHR allows applications to continue to queue
+ commands from the application in anticipation of the sync being
+ signaled, potentially increasing parallelism between application,
+ client API server code, and the GPU. The server only blocks
+ execution of commands for the specific context on which
+ eglWaitSyncKHR was issued; other contexts implemented by the same
+ server are not affected.]
+
+ <sync> has the same meaning as for eglClientWaitSyncKHR.
+
+ <flags> must be 0.
+
+ Errors
+ ------
+ eglWaitSyncKHR returns EGL_FALSE on failure and generates an error as
+ specified below, but does not cause the server for the client API
+ context to block.
+
+ * If the current context for the currently bound client API does not
+ support the client API extension indicating it can perform server
+ waits, an EGL_BAD_MATCH error is generated.
+ * If no context is current for the currently bound client API (i.e.,
+ eglGetCurrentContext returns EGL_NO_CONTEXT), an EGL_BAD_MATCH error
+ is generated.
+ * If <dpy> does not match the EGLDisplay passed to eglCreateSyncKHR
+ when <sync> was created, the behavior is undefined.
+ * If <sync> is not a valid sync object for <dpy>, an EGL_BAD_PARAMETER
+ error is generated.
+ * If <flags> is not 0, an EGL_BAD_PARAMETER error is generated.
+
+ Each client API which supports eglWaitSyncKHR indicates this support in
+ the form of a client API extension. If the GL_OES_EGL_sync extension is
+ supported by any version of OpenGL ES, a server wait may be performed
+ when the currently bound API is OpenGL ES. If the VG_KHR_EGL_sync
+ extension is supported by OpenVG, a server wait may be performed when
+ the currently bound API is OpenVG."
+
+ Add new subsubsection following eglWaitSyncKHR:
+
+ "Multiple Waiters
+ ----------------
+
+ It is possible for the application thread calling a client API to be
+ blocked on a sync object in a eglClientWaitSyncKHR command, the server
+ for that client API context to be blocked as the result of a previous
+ eglWaitSyncKHR command, and for additional eglWaitSyncKHR commands to be
+ queued in the server, all for a single sync object. When the sync object
+ is signaled in this situation, the client will be unblocked, the server
+ will be unblocked, and all such queued eglWaitSyncKHR commands will
+ continue immediately when they are reached.
+
+ Sync objects may be waited on or signaled from multiple contexts of
+ different client API types in multiple threads simultaneously, although
+ some client APIs may not support eglWaitSyncKHR. This support is
+ determined by client API-specific extensions."
+
+ Additions to the EGL_KHR_reusable_sync extension, modifying the description
+ of eglSignalSyncKHR to include both client and server syncs:
+
+ "... If as a result of calling eglSignalSyncKHR the status of <sync>
+ transitions from unsignaled to signaled, any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands blocking on <sync> will unblock. ..."
+
+ Additions to the EGL_KHR_reusable_sync extension, modifying the description
+ of eglDestroySyncKHR to include both client and server syncs:
+
+ "... If any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands are blocking on <sync> when eglDestroySyncKHR is called, they
+ will be woken up, as if <sync> were signaled."
+
+
+ Additions to the EGL_KHR_fence_sync extension, modifying the description
+ of eglCreateSyncKHR to include both client and server syncs:
+
+ "... causing any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands (see below) blocking on <sync> to unblock ..."
+
+ Additions to the EGL_KHR_fence_sync extension, modifying the description
+ of eglDestroySyncKHR to include both client and server syncs:
+
+ "... If any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands are blocking on <sync> when eglDestroySyncKHR is called, <sync>
+ is flagged for deletion and will be deleted when it is no longer
+ associated with any fence command and is no longer blocking any
+ eglClientWaitSyncKHR or eglWaitSyncKHR commands."
+
+
+Issues
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to behave as similarly as
+ possible to the glWaitSync functionality available in desktop OpenGL.
+ Server waits are functionality which was only available in GL syncs
+ until now.
+
+ In the interest of maintaining similarity with OpenGL sync objects, this
+ extension attempts to copy the glWaitSync functionality of OpenGL
+ wherever possible (both functionally and stylistically), only making
+ changes where needed to operate inside EGL (rather than a client API
+ context) and match EGL naming conventions.
+
+ 2. Must all EGL client APIs support server waits?
+
+ PROPOSED: Only if the client APIs also support fence syncs, which also
+ interacts with the server for that client API. The same client API
+ extensions defining fence sync support (GL_OES_EGL_sync and
+ VG_KHR_EGL_sync) are used here to indicate server wait ability for those
+ client APIs.
+
+ Reusable syncs in EGL_KHR_reusable_sync do not have this dependency,
+ because it is (at least in principle) possible for eglClientWaitSyncKHR
+ to be performed entirely within the EGL implementation. However,
+ eglWaitSyncKHR requires cooperation of the client API, whether fence
+ syncs or reusable syncs are being waited upon.
+
+ It would be possible to completely decouple fence syncs and the ability
+ to do server waits, but this would require new client API extensions.
+
+ 3. What is the relationship between EGL sync objects and OpenGL / OpenGL
+ ES sync objects?
+
+ RESPONSE: There is no direct relationship. GL and ES servers may not
+ even implement sync objects as defined by some versions of those APIs.
+ However, EGL sync objects are intended to be functionally equivalent to
+ GL sync objects, and the language describing them is drawn from the GL
+ specifications. Implementations supporting both forms of sync object
+ will probably use the same implementation internally.
+
+ 4. Should eglWaitSyncKHR take a timeout as a parameter as its equivalent
+ in OpenGL / OpenGL ES and eglWaitClientKHR does?
+
+ PROPOSED: No. A timeout is of limited use to a well-behaved application.
+ If a timeout was added, the result of it expiring is likely to be a
+ corrupted output. Adding a timeout would likely necessitate a way to
+ query if the wait completed because the condition was signaled or
+ because of a timeout. There doesn't seem to be an obvious, elegant API
+ mechanism to do that. If a timeout is needed in the future, it can be
+ added via an additional extension with a new entry-point.
+
+ 5. What happens if an application issues a server-side wait on a fence
+ which never gets signaled?
+
+ RESPONSE: Further rendering in the context which issued the server-side
+ wait will not progress. Any additional behavior is undefined and is
+ likely to be different depending on a particular implementation. Could
+ be handled in the same way as an extremely long-running GLSL shader.
+
+ 6. Does this extension affect the destruction behavior?
+
+ RESOLVED: No. The behavior of eglDestroySyncKHR is determined by the type
+ of sync object, and is not affected by this extension.
+
+Revision History
+
+#7 (Alon Or-bach, March 12, 2014)
+ - Clarified that eglDestroySyncKHR behavior is set in
+ EGL_KHR_fence_sync / EGL_KHR_reusable_sync and is not modified by this
+ extension (bug 11458).
+#6 (Jon Leech, January 24, 2013)
+ - eglWaitSyncKHR causes a server wait in OpenGL ES when GL_OES_EGL_sync
+ is supported, not a client wait as formerly specified (Bug 9493).
+#5 (Jon Leech, October 31, 2012)
+ - Change return type of eglWaitSyncKHR in spec body to EGLint to match
+ New Functions section, and rearrange description of return type and
+ errors section for clarity.
+#4 (Tom Cooksey, August 16, 2012)
+ - Removed timeout parameter and text relating to it. Add issue 4
+ discussing timeout parameter. Add issue 5 explaining the behavior of
+ waiting on a never-signaled fence. Minor corrections to use US English.
+#3 (Jon Leech, June 26, 2012)
+ - Fix typos (bug 9137).
+#2 (Jon Leech, June 20, 2012)
+ - Clarifications and language cleanup (Bug 9137). Some paragraph
+ reflowing. Note that eglWaitSyncKHR only blocks the server for the
+ specific context on which the wait was issued. Add issue 3 discussing
+ relationship to GL/ES sync objects.
+#1 (Jon Leech, June 6, 2012)
+ - Initial draft branched from GL 4.x API spec language.
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt
new file mode 100644
index 0000000..0937d6b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt
@@ -0,0 +1,157 @@
+Name
+
+ MESA_drm_image
+
+Name Strings
+
+ EGL_MESA_drm_image
+
+Contact
+
+ Kristian Høgsberg <krh@bitplanet.net>
+
+Status
+
+ Proposal
+
+Version
+
+ Version 4, November 23, 2017
+
+Number
+
+ EGL Extension #26
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+Overview
+
+ This extension provides entry points for integrating EGLImage with the
+ Linux DRM mode setting and memory management drivers. The extension
+ lets applications create EGLImages without a client API resource and
+ lets the application get the DRM buffer handles.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ EGLint *name,
+ EGLint *handle,
+ EGLint *stride);
+
+New Tokens
+
+ Accepted in the <attrib_list> parameter of eglCreateDRMImageMESA:
+
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+ EGL_DRM_BUFFER_USE_MESA 0x31D1
+
+ Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute:
+
+ EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+
+ Bits accepted in EGL_DRM_BUFFER_USE_MESA:
+
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x0001
+ EGL_DRM_BUFFER_USE_SHARE_MESA 0x0002
+ EGL_DRM_BUFFER_USE_CURSOR_MESA 0x0004
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_DRM_BUFFER_MESA 0x31D3
+
+ Use when importing drm buffer:
+
+ EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+
+Additions to the EGL 1.4 Specification:
+
+ To create a DRM EGLImage, call
+
+ EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ In the attribute list, pass EGL_WIDTH, EGL_HEIGHT and format and
+ use in the attrib list using EGL_DRM_BUFFER_FORMAT_MESA and
+ EGL_DRM_BUFFER_USE_MESA. The only format specified by this
+ extension is EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, where each pixel
+ is a CPU-endian, 32-bit quantity, with alpha in the upper 8 bits,
+ then red, then green, then blue. The bit values accepted by
+ EGL_DRM_BUFFER_USE_MESA are EGL_DRM_BUFFER_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_USE_SHARE_MESA and EGL_DRM_BUFFER_USE_CURSOR_MESA.
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA requests that the created EGLImage
+ should be usable as a scanout buffer with the DRM kernel
+ modesetting API. EGL_DRM_BUFFER_USE_SHARE_MESA requests that the
+ EGLImage can be shared with other processes by passing the
+ underlying DRM buffer name. EGL_DRM_BUFFER_USE_CURSOR_MESA
+ requests that the image must be usable as a cursor with KMS. When
+ EGL_DRM_BUFFER_USE_CURSOR_MESA is set, width and height must both
+ be 64.
+
+ To create a process local handle or a global DRM name for a
+ buffer, call
+
+ EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ EGLint *name,
+ EGLint *handle,
+ EGLint *stride);
+
+ If <name> is non-NULL, a global name is assigned to the image and
+ written to <name>, the handle (local to the DRM file descriptor,
+ for use with DRM kernel modesetting API) is written to <handle> if
+ non-NULL and the stride (in bytes) is written to <stride>, if
+ non-NULL.
+
+ Import a shared buffer by calling eglCreateImageKHR with
+ EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_STRIDE_MESA
+ in the attrib list.
+
+Issues
+
+ 1. Why don't we use eglCreateImageKHR with a target that
+ indicates that we want to create an EGLImage from scratch?
+
+ RESOLVED: The eglCreateImageKHR entry point is reserved for
+ creating an EGLImage from an already existing client API
+ resource. This is fine when we're creating the EGLImage from
+ an existing DRM buffer name, it doesn't seem right to overload
+ the function to also allocate the underlying resource.
+
+ 2. Why don't we use an eglQueryImageMESA type functions for
+ querying the DRM EGLImage attributes (name, handle, and stride)?
+
+ RESOLVED: The eglQueryImage function has been proposed often,
+ but it goes against the EGLImage design. EGLImages are opaque
+ handles to a 2D array of pixels, which can be passed between
+ client APIs. By referencing an EGLImage in a client API, the
+ EGLImage target (a texture, a renderbuffer or such) can be
+ used to query the attributes of the EGLImage. We don't have a
+ full client API for creating and querying DRM buffers, though,
+ so we use a new EGL extension entry point instead.
+
+Revision History
+
+ Version 1, June 3, 2010
+ Initial draft (Kristian Høgsberg)
+ Version 2, August 25, 2010
+ Flesh out the extension a bit, add final EGL tokens, capture
+ some of the original discussion in the issues section.
+ Version 3, November 29, 2010 (Jon Leech)
+ Fix typo.
+ Version 4, November 23, 2017 (Kristian Høgsberg)
+ Fix typos, add EGL_DRM_BUFFER_USE_CURSOR_MESA
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt
new file mode 100644
index 0000000..cc9497e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt
@@ -0,0 +1,147 @@
+Name
+
+ MESA_image_dma_buf_export
+
+Name Strings
+
+ EGL_MESA_image_dma_buf_export
+
+Contributors
+
+ Dave Airlie
+
+Contact
+
+ Dave Airlie (airlied 'at' redhat 'dot' com)
+
+Status
+
+ Complete, shipping.
+
+Version
+
+ Version 3, May 5, 2015
+
+Number
+
+ EGL Extension #87
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+Overview
+
+ This extension provides entry points for integrating EGLImage with the
+ dma-buf infrastructure. The extension allows creating a Linux dma_buf
+ file descriptor or multiple file descriptors, in the case of multi-plane
+ YUV image, from an EGLImage.
+
+ It is designed to provide the complementary functionality to
+ EGL_EXT_image_dma_buf_import.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Types
+
+ This extension uses the 64-bit unsigned integer type EGLuint64KHR
+ first introduced by the EGL_KHR_stream extension, but does not
+ depend on that extension. The typedef may be reproduced separately
+ for this extension, if not already present in eglext.h.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+New Procedures and Functions
+
+ EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fourcc,
+ int *num_planes,
+ EGLuint64KHR *modifiers);
+
+ EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fds,
+ EGLint *strides,
+ EGLint *offsets);
+
+New Tokens
+
+ None
+
+
+Additions to the EGL 1.4 Specification:
+
+ To mirror the import extension, this extension attempts to return
+ enough information to enable an exported dma-buf to be imported
+ via eglCreateImageKHR and EGL_LINUX_DMA_BUF_EXT token.
+
+ Retrieving the information is a two step process, so two APIs
+ are required.
+
+ The first entrypoint
+ EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fourcc,
+ int *num_planes,
+ EGLuint64KHR *modifiers);
+
+ is used to retrieve the pixel format of the buffer, as specified by
+ drm_fourcc.h, the number of planes in the image and the Linux
+ drm modifiers. <fourcc>, <num_planes> and <modifiers> may be NULL,
+ in which case no value is retrieved.
+
+ The second entrypoint retrieves the dma_buf file descriptors,
+ strides and offsets for the image. The caller should pass
+ arrays sized according to the num_planes values retrieved previously.
+ Passing arrays of the wrong size will have undefined results.
+ If the number of fds is less than the number of planes, then
+ subsequent fd slots should contain -1.
+
+ EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fds,
+ EGLint *strides,
+ EGLint *offsets);
+
+ <fds>, <strides>, <offsets> can be NULL if the infomatation isn't
+ required by the caller.
+
+Issues
+
+1. Should the API look more like an attribute getting API?
+
+ANSWER: No, from a user interface pov, having to iterate across calling
+the API up to 12 times using attribs seems like the wrong solution.
+
+2. Should the API take a plane and just get the fd/stride/offset for that
+ plane?
+
+ANSWER: UNKNOWN,this might be just as valid an API.
+
+3. Does ownership of the file descriptor remain with the app?
+
+ANSWER: Yes, the app is responsible for closing any fds retrieved.
+
+4. If number of planes and number of fds differ what should we do?
+
+ANSWER: Return -1 for the secondary slots, as this avoids having
+to dup the fd extra times to make the interface sane.
+
+Revision History
+
+ Version 3, May, 2015
+ Just use the KHR 64-bit type.
+ Version 2, March, 2015
+ Add a query interface (Dave Airlie)
+ Version 1, June 3, 2014
+ Initial draft (Dave Airlie)
+
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt
new file mode 100644
index 0000000..e40a774
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt
@@ -0,0 +1,319 @@
+Name
+
+ MESA_platform_gbm
+
+Name Strings
+
+ EGL_MESA_platform_gbm
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Kristian Høgsberg <krh@bitplanet.org>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 7, 2016/01/04
+
+Number
+
+ EGL Extension #62
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native GBM
+ resources using the functions defined by EGL_EXT_platform_base. (GBM is
+ a Generic Buffer Manager for Linux).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_GBM_MESA 0x31D7
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay from an GBM device, call eglGetPlatformDisplayEXT with
+ <platform> set to EGL_PLATFORM_GBM_MESA. The <native_display> parameter
+ specifies the GBM device to use and must either point to a `struct
+ gbm_device` or be NULL. If <native_display> is NULL, then the resultant
+ EGLDisplay will be backed by some implementation-chosen GBM device.
+
+ For each EGLConfig that belongs to the GBM platform, the
+ EGL_NATIVE_VISUAL_ID attribute is a GBM color format, such as
+ GBM_FORMAT_XRGB8888.
+
+ To obtain a rendering surface from a GBM surface, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to the GBM
+ platform and a <native_window> that points to a `struct gbm_surface`. If
+ <native_window> was created without the GBM_BO_USE_RENDERING flag, or if
+ the color format of <native_window> differs from the EGL_NATIVE_VISUAL_ID
+ of <config>, then the function fails and generates EGL_BAD_MATCH.
+
+ It is not valid to call eglCreatePlatformPixmapSurfaceEXT with a <dpy> that
+ belongs to the GBM platform. Any such call fails and generates
+ EGL_BAD_PARAMETER.
+
+Issues
+
+ 1. Should this extension permit NULL as input to eglGetPlatformDisplayEXT?
+
+ RESOLUTION: Yes. When given NULL, eglGetPlatformDisplayEXT returns an
+ EGLDisplay backed by an implementation-chosen GBM device.
+
+Example Code
+
+ // This example program creates an EGL surface from a GBM surface.
+ //
+ // If the macro EGL_MESA_platform_gbm is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lgbm -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
+ #include <EGL/egl.h>
+ #include <gbm.h>
+
+ struct my_display {
+ struct gbm_device *gbm;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ struct gbm_surface *gbm;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef EGL_MESA_platform_gbm
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_MESA_platform_gbm")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ int fd = open("/dev/dri/card0", O_RDWR | FD_CLOEXEC);
+ if (fd < 0) {
+ abort();
+ }
+
+ dpy.gbm = gbm_create_device(fd);
+ if (!dpy.gbm) {
+ abort();
+ }
+
+
+ #ifdef EGL_MESA_platform_gbm
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, dpy.gbm, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.gbm);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglGetConfigs(dpy.egl, NULL, 0, &num_configs)) {
+ abort();
+ }
+
+ EGLConfig *configs = malloc(num_configs * sizeof(EGLConfig));
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs,
+ configs, num_configs, &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ // Find a config whose native visual ID is the desired GBM format.
+ for (int i = 0; i < num_configs; ++i) {
+ EGLint gbm_format;
+
+ if (!eglGetConfigAttrib(dpy.egl, configs[i],
+ EGL_NATIVE_VISUAL_ID, &gbm_format)) {
+ abort();
+ }
+
+ if (gbm_format == GBM_FORMAT_XRGB8888) {
+ config.egl = configs[i];
+ free(configs);
+ return config;
+ }
+ }
+
+ // Failed to find a config with matching GBM format.
+ abort();
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.gbm = gbm_surface_create(config.dpy.gbm,
+ 256, 256,
+ GBM_FORMAT_XRGB8888,
+ GBM_BO_USE_RENDERING);
+ if (!window.gbm) {
+ abort();
+ }
+
+ #ifdef EGL_MESA_platform_gbm
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 8, 2018-05-25 (Krzysztof Kosiński)
+ - Corrected EGL_DEFAULT_DISPLAY to NULL. The second argument to
+ eglGetPlatformDisplayEXT has type void*, while EGL_DEFAULT_DISPLAY has
+ type EGLNativeDisplayType, which is not guaranteed to be convertible
+ to void* - it could be int, long or intptr_t.
+
+ Version 7, 2016-01-04 (Jon Leech)
+ - Free config memory allocated in sample code (Public Bug 1445).
+
+ Version 6, 2014-02-12 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplayEXT accepts EGL_DEFAULT_DISPLAY for GBM.
+
+ Version 5, 2013-010-15 (Chad Versace)
+ - Specify that EGL_NATIVE_VISUAL_ID is a GBM color format.
+ - Require for eglCreatePlatformWindowSurfaceEXT that the GBM color
+ format not differ between the EGLConfig and gbm_surface. (Suggested
+ by Kristian).
+ - Update example code to find matching EGL_NATIVE_VISUAL_ID.
+
+ Version 4, 2013-09-13 (Chad Versace)
+ - Update the text and example code to wording of version 7 of
+ EGL_EXT_platform_base spec.
+ - Add section "Extension Type".
+ - Resolve issue #1 to "No".
+ - Add issue #2.
+
+ Version 3, 2013-04-26 (Chad Versace)
+ - Add missing MESA suffix to new token.
+
+ Version 2, 2013-04-23 (Chad Versace)
+ - Add issue #1 regarding EGL_DEFAULT_DISPLAY.
+
+ Version 1, 2013.03.24 (Chad Versace)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt
new file mode 100644
index 0000000..6ba562c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt
@@ -0,0 +1,120 @@
+Name
+
+ MESA_platform_surfaceless
+
+Name Strings
+
+ EGL_MESA_platform_surfaceless
+
+Contributors
+
+ Chad Versace <chadversary@google.com>
+ Haixia Shi <hshi@google.com>
+ Stéphane Marchesin <marcheu@google.com>
+ Zach Reizner <zachr@chromium.org>
+ Gurchetan Singh <gurchetansingh@google.com>
+
+Contacts
+
+ Chad Versace <chadversary@google.com>
+
+Status
+
+ DRAFT
+
+Version
+
+ Version 2, 2016-10-13
+
+Number
+
+ EGL Extension #104
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+ This extension interacts with EGL_EXT_platform_base as follows. If the
+ implementation supports EGL_EXT_platform_base, then text regarding
+ eglGetPlatformDisplay applies also to eglGetPlatformDisplayEXT;
+ eglCreatePlatformWindowSurface to eglCreatePlatformWindowSurfaceEXT; and
+ eglCreatePlatformPixmapSurface to eglCreatePlatformPixmapSurfaceEXT.
+
+Overview
+
+ This extension defines a new EGL platform, the "surfaceless" platform. This
+ platfom's defining property is that it has no native surfaces, and hence
+ neither eglCreatePlatformWindowSurface nor eglCreatePlatformPixmapSurface
+ can be used. The platform is independent of any native window system.
+
+ The platform's intended use case is for enabling OpenGL and OpenGL ES
+ applications on systems where no window system exists. However, the
+ platform's permitted usage is not restricted to this case. Since the
+ platform is independent of any native window system, it may also be used on
+ systems where a window system is present.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay on the surfaceless platform, call
+ eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_SURFACELESS_MESA.
+ The <native_display> parameter must be EGL_DEFAULT_DISPLAY.
+
+ eglCreatePlatformWindowSurface fails when called with a <display> that
+ belongs to the surfaceless platform. It returns EGL_NO_SURFACE and
+ generates EGL_BAD_NATIVE_WINDOW. The justification for this unconditional
+ failure is that the surfaceless platform has no native windows, and
+ therefore the <native_window> parameter is always invalid.
+
+ Likewise, eglCreatePlatformPixmapSurface also fails when called with a
+ <display> that belongs to the surfaceless platform. It returns
+ EGL_NO_SURFACE and generates EGL_BAD_NATIVE_PIXMAP.
+
+ The surfaceless platform imposes no platform-specific restrictions on the
+ creation of pbuffers, as eglCreatePbufferSurface has no native surface
+ parameter. Specifically, if the EGLDisplay advertises an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_PBUFFER_BIT, then the EGLDisplay
+ permits the creation of pbuffers with that config.
+
+Issues
+
+ None.
+
+Revision History
+
+ Version 2, 2016-10-13 (Chad Versace)
+ - Assign enum values
+ - Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
+ - Add Gurchetan as contributor, as he implemented the pbuffer support.
+
+ Version 1, 2016-09-23 (Chad Versace)
+ - Initial version
+ - Posted for review at
+ https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt
new file mode 100644
index 0000000..bf260bd
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt
@@ -0,0 +1,95 @@
+Name
+
+ MESA_query_driver
+
+Name Strings
+
+ EGL_MESA_query_driver
+
+Contact
+
+ Rob Clark <robdclark 'at' gmail.com>
+ Nicolai Hähnle <Nicolai.Haehnle 'at' amd.com>
+
+Contibutors
+
+ Veluri Mithun <velurimithun38 'at' gmail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, 2019-01-24
+
+Number
+
+ EGL Extension 131
+
+Dependencies
+
+ EGL 1.0 is required.
+
+Overview
+
+ When an application has to query the name of a driver and for
+ obtaining driver's option list (UTF-8 encoded XML) of a driver
+ the below functions are useful.
+
+ XML file formally describes all available options and also
+ includes verbal descriptions in multiple languages. Its main purpose
+ is to be automatically processed by configuration GUIs.
+ The XML shall respect the following DTD:
+
+ <!ELEMENT driinfo (section*)>
+ <!ELEMENT section (description+, option+)>
+ <!ELEMENT description (enum*)>
+ <!ATTLIST description lang CDATA #REQUIRED
+ text CDATA #REQUIRED>
+ <!ELEMENT option (description+)>
+ <!ATTLIST option name CDATA #REQUIRED
+ type (bool|enum|int|float) #REQUIRED
+ default CDATA #REQUIRED
+ valid CDATA #IMPLIED>
+ <!ELEMENT enum EMPTY>
+ <!ATTLIST enum value CDATA #REQUIRED
+ text CDATA #REQUIRED>
+
+New Procedures and Functions
+
+ char* eglGetDisplayDriverConfig(EGLDisplay dpy);
+ const char* eglGetDisplayDriverName(EGLDisplay dpy);
+
+Description
+
+ By passing EGLDisplay as parameter to `eglGetDisplayDriverName` one can retrieve
+ driverName. Similarly passing EGLDisplay to `eglGetDisplayDriverConfig` we can retrieve
+ driverConfig options of the driver in XML format.
+
+ The string returned by `eglGetDisplayDriverConfig` is heap-allocated and caller
+ is responsible for freeing it.
+
+ EGL_BAD_DISPLAY is generated if `disp` is not an EGL display connection.
+
+ EGL_NOT_INITIALIZED is generated if `disp` has not been initialized.
+
+ If the implementation does not have enough resources to allocate the XML then an
+ EGL_BAD_ALLOC error is generated.
+
+New Tokens
+
+ No new tokens
+
+Issues
+
+ None
+
+
+Revision History
+
+ Version 1, 2018-11-05 - First draft (Veluri Mithun)
+ Version 2, 2019-01-23 - Final version (Veluri Mithun)
+ Version 3, 2019-01-24 - Mark as complete, add Khronos extension
+ number, fix parameter name in prototypes,
+ write revision history (Eric Engestrom)
diff --git a/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt
new file mode 100644
index 0000000..b09f551
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt
@@ -0,0 +1,227 @@
+Name
+
+ NOK_swap_region2
+
+Name Strings
+
+ EGL_NOK_swap_region2
+
+Notice
+
+ Copyright 2010 Nokia. All rights reserved.
+
+Contributors
+
+ Robert Palmer
+ Sami Kyöstilä
+
+Contacts
+
+ Robert Palmer, Nokia (robert.palmer 'at' nokia.com)
+ Sami Kyöstilä, Nokia (sami.kyostila 'at' nokia.com)
+
+Status
+
+ Internally reviewed
+
+Version
+
+ 2 - April 29, 2010
+
+Number
+
+ EGL Extension #23
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension adds a new function which provides an alternative to
+ eglSwapBuffers. eglSwapBuffersRegion2NOK accepts two new parameters
+ in addition to those in eglSwapBuffers. The new parameters consist
+ of a pointer to a list of 4-integer blocks defining rectangles
+ (x, y, width, height) and an integer specifying the number of
+ rectangles in the list.
+
+ The new parameters allow users to declare the region of the surface
+ that has been updated. The implementation uses this information to transfer
+ the updated region to the front buffer. Only the pixels within the
+ specified region are copied; any rendering outside that region will not
+ become visible on the window surface. This in contrast with the
+ EGL_NOK_swap_region extension which treats the modified region only as a
+ hint.
+
+ This functional change is aimed at further reducing the processing and
+ bandwidth requirements of optimizations of applications whose graphics are
+ commonly subjected to region-based changes. Specifically, this extension
+ enables partial surface updates without requiring the use of preserved
+ swaps.
+
+New Procedures and Functions
+
+ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint numRects,
+ const EGLint* rects);
+
+New Types
+
+ None
+
+New Tokens
+
+ None
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions
+and Errors)
+
+ Add the following text to the end of the first subsection in
+ section 3.9.1 (prior to 'Native Window Resizing' subsection):
+
+ "eglSwapBuffersRegion2NOK is an alternative to eglSwapBuffers
+ that allows the client to provide the region of the surface
+ which has been updated. This will allow processing and
+ bandwidth optimizations for applications whose graphics are
+ commonly subject to region-based changes.
+
+ eglSwapBuffersRegion2NOK behaves in the same way as
+ eglSwapBuffers with the following modification: the additional
+ parameters <numRects> and <rects> provide specify a region which was
+ rendered to by the application. The implementation uses this
+ information to combine the modified backbuffer region with the previous
+ frontbuffer to form the new frontbuffer. The implementation guarantees
+ that all of the pixels within the modified region are posted for
+ display and none of the pixels outside the region are sourced. Only
+ back buffered surfaces can be used with eglSwapBuffersRegion2NOK.
+
+ <rects> specifies a pointer to a list of 4-integer blocks
+ defining rectangles. The area covered by the rectangles
+ constitutes the region of the color buffer which has been
+ updated by the client. <numRects> specifies the number of
+ rectangles in the <rects> list. If <numRects> is set to zero
+ the update region is set to the width and height of the
+ surface.
+
+ Each rectangle is specified as an integer 4-tuple in the form
+ (x, y, width, height). The x and y values provided by the client
+ must specify the bottom left corner of each rectangle as the
+ origin of the coordinate system is bottom left. Rectangles are
+ clipped (restricted) to the bounds of the EGLSurface. A
+ rectangle with width or height less than or equal 0 is ignored.
+ The region is defined by the union of all the specified
+ rectangles. The rectangles as specified must be disjoint. If
+ the rectangles are not disjoint or the user has rendered
+ outside of the region declared, the rendering results are
+ undefined."
+
+ Insert "eglSwapBuffersRegion2NOK" appropriately after each instance
+ of "eglSwapBuffers" in the first paragraph in section 3.9.4
+
+ Add the following before the last sentence in the first
+ paragraph in section 3.9.4
+
+ "If eglSwapBuffersRegion2NOK is called and <numRects> is greater
+ than zero and <rects> is NULL, an EGL_BAD_PARAMETER error is
+ generated. If <numRects> is less than zero, an
+ EGL_BAD_PARAMETER error is generated."
+
+ "If eglSwapBuffersRegion2NOK is called with a single buffered
+ <surface>, an EGL_BAD_MATCH error is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+
+Issues
+
+ 1) Is there a limit on the number of rectangles that can be used?
+ Should there be a specified number which are guaranteed to be
+ supported?
+
+ RESOLVED: This is limited by the amount of resources available to the
+ implementation. The implementation is free to fail with EGL_BAD_ALLOC if a
+ given update region cannot be processed due to resource constraints.
+
+ 2) Are there any limitations on the location or size of rectangles?
+
+ RESOLVED: The limitations placed on the validity of a rectangle is
+ that the width and height must be greater than zero and should not
+ overlap. Rectangles which have a width or height less than or equal
+ to zero will be ignored. If rectangles overlap the rendering
+ results are undefined. In addition all rectangles are clipped to
+ the area of the surface. Rectangles which are partially or
+ completely outside the boundary of the surface will not generate an
+ error.
+
+ 3) How does eglSwapBuffersRegion2NOK interact with incremental
+ rendering?
+
+ RESOLVED: This extension does not affect the client's ability to
+ perform incremental rendering. The ability to perform incremental
+ rendering is determined solely by the EGLSurface's
+ EGL_SWAP_BEHAVIOR attribute. The use of eglSwapBuffersRegion2NOK to
+ describe changed regions can still assist window system composition
+ optimizations even if the client is physically redrawing the entire
+ surface on every frame.
+
+ If EGL_SWAP_BEHAVIOR is EGL_BUFFER_PRESERVED, the client can
+ restrict their rendering to a particular region (e.g. using scissor
+ rects) and then declare this region using eglSwapBuffersRegion2NOK.
+
+ If EGL_SWAP_BEHAVIOR is EGL_BUFFER_DESTROYED, the client can
+ also restrict rendering to a particular region of the surface, but that
+ region must be completely re-rendered because the previous frame contents
+ are no longer available within that region. The application can then post
+ this region with eglSwapBuffersRegion2NOK. Since the buffer posting is
+ guaranteed to be limited to the declared region, the application does not
+ need to re-render or otherwise ensure pixel data outside the updated region
+ is valid.
+
+ 4) How is this extension an improvement over EGL_NOK_swap_region?
+
+ RESOLVED: This extension builds on the previous EGL_NOK_swap_region
+ extension by requiring that the implementation considers the update region
+ provided by the application as a mandate rather than a hint. This allows
+ for region-restricted rendering without requiring the use of preserved buffer
+ swaps which may be relatively expensive for the implementation.
+
+ Furthermore, whilst preserved swap behaviour is necessary for incremental
+ rendering, many applications fully re-render modified surface regions and
+ so don't require preserved swap behaviour. This extension provides a
+ lighter weight surface update mechanism for such applications.
+
+ 5) How does this extension compare to MESA_copy_sub_buffer?
+
+ RESOLVED: There are two main differences between MESA_copy_sub_buffer and
+ this extension:
+
+ 1. This extension allows for arbitrary update regions instead of a
+ single rectangle.
+
+ 2. eglSwapBuffersRegion2NOK is specified to be a frame swap, so the
+ implementation is free to apply destructive swap behavior in
+ conjunction with this function call. This may allow for a
+ performance improvement.
+
+Revision History
+
+ Version 1, 2010/04/28 (Sami Kyöstilä)
+ - First revision based on EGL_NOK_swap_region version 10.
+ Version 2, 2010/04/29 (Sami Kyöstilä)
+ - Specify operation in terms of copying from the back buffer into the
+ front buffer instead of involving the the system composition or the
+ display.
+ - Disallowed usage with anything else than back buffered surfaces.
+ - Clarified some sentences.
+ \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt
new file mode 100644
index 0000000..ebc4ee0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt
@@ -0,0 +1,321 @@
+Name
+
+ NOK_texture_from_pixmap
+
+Name Strings
+
+ EGL_NOK_texture_from_pixmap
+
+Notice
+
+ Copyright Nokia, 2009.
+
+Contributors
+
+
+Contact
+
+ Roland Scheidegger, Tungsten Graphics, sroland@tungstengraphics.com
+
+Status
+
+ Shipping on N900
+
+Version
+
+ 0.2 (13 Nov 2009)
+
+Number
+
+ EGL Extension #14
+
+Dependencies
+
+ EGL 1.1 is required.
+ Written against wording of EGL 1.4 specification.
+ OpenGL ES 2.0 is required.
+ GL_OES_texture_npot affects the definition of this extension.
+
+Overview
+
+ This extension allows a color buffer to be used for both rendering and
+ texturing.
+
+ EGL allows the use of color buffers of pbuffer drawables for texturing,
+ this extension extends this to allow the use of color buffers of pixmaps
+ too.
+ Other types of drawables could be supported by future extensions layered
+ on top of this extension, though only windows are really left which
+ are problematic.
+
+ The functionality of this extension is similar to WGL_ARB_render_texture
+ which was incorporated into EGL 1.1.
+ However, the purpose of this extension is not to provide
+ "render to texture" like functionality but rather the ability to bind
+ existing native drawables (for instance X pixmaps) to a texture. Though,
+ there is nothing that prohibits it from being used for "render to
+ texture".
+
+ - Windows are problematic as they can change size and therefore are not
+ supported by this extension.
+
+ - Only a color buffer of a EGL pixmap created using an EGLConfig with
+ attribute EGL_BIND_TO_TEXTURE_RGB or EGL_BIND_TO_TEXTURE_RGBA
+ set to TRUE can be bound as a texture.
+
+ - The texture internal format is determined when the color buffer
+ is associated with the texture, guaranteeing that the color
+ buffer format is equivalent to the texture internal format.
+
+ - A client can create a complete set of mipmap images.
+
+
+IP Status
+
+ There are no known IP issues.
+
+Issues
+
+ 1. What should this extension be called?
+
+ EGL_EXT_texture_from_pixmap seemed most appropriate, but eventually
+ was changed to EGL_NOK_texture_from_pixmap since it's unknown if other
+ vendors are interested in implementing this. Even though it builds
+ on top of the EGL render_to_texture functionality and thus the
+ specifiation wording is quite different to the GLX version, keep the
+ name from the GLX version (except the vendor prefix) since the intention
+ is the same. Layering of future extensions on top of this extension for
+ using other type of drawables as textures follows the same conventions
+ as vertex/pixel buffer objects and vertex/fragment programs.
+
+
+ 2. What should the default value for EGL_TEXTURE_TARGET be? Should
+ users be required to set this value if EGL_TEXTURE_FORMAT is not
+ EGL_TEXTURE_FORMAT_NONE ?
+
+ Unlike in OpenGL, in OES there is no difference between pot and npot
+ sized textures as far as the texture target is concerned, so
+ for all sizes EGL_TEXTURE_2D will be used for all pixmap sizes.
+ npot texture sizes (with reduced functionality) are only available
+ in OES 2.0 hence this version is required. While in theory it would be
+ possible to support this in OES 1.0 if pixmaps are restricted to power
+ of two sizes, it seems for all practical uses of this extension pixmap
+ sizes will be arbitrary.
+
+
+ 3. Should users be required to re-bind the drawable to a texture after
+ the drawable has been rendered to?
+
+ It is difficult to define what the contents of the texture would be if
+ we don't require this. Also, requiring this would allow implementations
+ to perform an implicit copy at this point if they could not support
+ texturing directly out of renderable memory.
+
+ The problem with defining the contents of the texture after rendering
+ has occured to the associated drawable is that there is no way to
+ synchronize the use of the buffer as a source and as a destination.
+ Direct OpenGL rendering is not necessarily done in the same command
+ stream as X rendering. At the time the pixmap is used as the source
+ for a texturing operation, it could be in a state halfway through a
+ copyarea operation in which half of it is say, white, and half is the
+ result of the copyarea operation. How is this defined? Worse, some
+ other OpenGL application could be halfway through a frame of rendering
+ when the composite manager sources from it. The buffer might just
+ contain the results of a "glClear" operation at that point.
+
+ To gurantee tear-free rendering, a composite manager (in this case
+ using X) would run as follows:
+
+ -receive request for compositing:
+ XGrabServer()
+ eglWaitNative() or XSync()
+ eglBindTexImage()
+
+ <Do rendering/compositing>
+
+ eglReleaseTexImage()
+ XUngrabServer()
+
+ Apps that don't synchronize like this would get what's available,
+ and that may or may not be what they expect.
+
+
+ 4. Rendering done by the window system may be y-inverted compared
+ to the standard OpenGL texture representation. More specifically:
+ the X Window system uses a coordinate system where the origin is in
+ the upper left; however, the GL uses a coordinate system where the
+ origin is in the lower left. Should we define the contents of the
+ texture as the y-inverted contents of the drawable?
+
+ X implementations may represent their drawables differently internally,
+ so y-inversion should be exposed as an EGLConfig attribute.
+ Applications will need to query this attribute and adjust their rendering
+ appropriately.
+
+ If a drawable is y-inverted and is bound to a texture, the contents of the
+ texture will be y-inverted with respect to the standard GL memory layout.
+ This means the contents of a pixmap of size (width, height) at pixmap
+ coordinate (x, y) will be at location (x, height-y-1) in the texture.
+ Applications will need to adjust their texture coordinates accordingly to
+ avoid drawing the texture contents upside down.
+
+
+
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <Attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_Y_INVERTED_NOK 0x307F
+
+
+Additions to the OpenGL ES 2.0 Specification
+
+ None.
+
+
+Additions to the EGL Specification
+
+ Add to table 3.1, EGLConfig Attributes:
+
+ Attribute Type Notes
+ ------------------------------- ------- -----------------------------------
+ EGL_Y_INVERTED_NOK boolean True if the drawable's framebuffer
+ is y-inverted. This can be used to
+ determine if y-inverted texture
+ coordinates need to be used when
+ texturing from this drawable when
+ it is bound to a texture target.
+
+ Additions to table 3.4, Default values and match criteria for EGLConfig attributes:
+
+ Attribute Default Selection Criteria Priority
+ ------------------------------- -------------------- ------------------ ---------
+ EGL_Y_INVERTED_NOK EGL_DONT_CARE Exact
+
+ Modifications to 3.4, "Configuration Management"
+
+ Modify 3rd last paragraph ("EGL BIND TO TEXTURE RGB and..."):
+
+ EGL BIND TO TEXTURE RGB and EGL BIND TO TEXTURE RGBA are booleans
+ indicating whether the color buffers of a pbuffer or a pixmap created with
+ the EGLConfig can be bound to a OpenGL ES RGB or RGBA texture respectively.
+ Currently only pbuffers or pixmaps can be bound as textures, so these
+ attributes may only be EGL TRUE if the value of the EGL SURFACE TYPE
+ attribute includes EGL PBUFFER BIT or EGL_PIXMAP_BIT. It is possible to
+ bind a RGBA visual to a RGB texture, in which case the values in the alpha
+ component of the visual are ignored when the color buffer is used as a RGB
+ texture.
+
+ Add after this:
+
+ EGL_Y_INVERTED_NOK is a boolean describing the memory layout used for
+ drawables created with the EGLConfig. The attribute is True if the
+ drawable's framebuffer will be y-inverted. This can be used to determine
+ if y-inverted texture coordinates need to be used when texturing from this
+ drawable when it is bound to a texture target.
+
+ Modifications to 3.5.4, "Creating Native Pixmap Rendering Surfaces"
+
+ Modify paragraph 4 of the description of eglCreatePixmapSurface:
+
+ <attrib_list> specifies a list of attributes for the pixmap. The list has
+ the same structure as described for eglChooseConfig. Attributes that can
+ be specified in <attrib_list> include EGL_TEXTURE_FORMAT,
+ EGL_TEXTURE_TARGET, EGL_MIPMAP_TEXTURE, EGL_VG_COLORSPACE and
+ EGL_VG_ALPHA_FORMAT.
+ EGL_TEXTURE_FORMAT, EGL_TEXTURE_TARGET and EGL_MIPMAP_TEXTURE have the same
+ meaning and default values as when used with eglCreatePbufferSurface.
+
+
+ Modifications to section 3.6.1, "Binding a Surface to a OpenGL ES Texture"
+
+ Modify paragraph 2 of the description of eglBindTexImage:
+
+ The texture target, the texture format and the size of the texture
+ components are derived from attributes of the specified <surface>, which
+ must be a pbuffer or pixmap supporting one of the EGL_BIND_TO_TEXTURE_RGB
+ or EGL_BIND_TO_TEXTURE_RGBA attributes.
+
+ Modify paragraph 6 of the description of eglBindTexImage:
+
+ ...as though glFinish were called on the last context to which that surface
+ were bound. If <surface> is a pixmap, it also waits for all effects of
+ native drawing to complete.
+
+ Modify paragraph 7 of the description of eglBindTexImage:
+
+ After eglBindTexImage is called, the specified <surface> is no longer
+ available for reading or writing by client APIs. Any read operation,
+ such as glReadPixels or eglCopyBuffers, which reads values from any of the
+ surface’s color buffers or ancillary buffers will produce indeterminate
+ results. In addition, draw operations that are done to the surface before
+ its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context
+ and thread then rendering commands will be processed and the context state
+ will be updated, but the surface may or may not be written.
+ If the surface is a pixmap, it can still be accessed for reading or
+ writing by native rendering calls, however reading and writing will produce
+ indeterminate results and will leave the texture in an undefined state. It
+ is up to the application to implement any synchronization required.
+ eglSwapBuffers has no effect if it is called on a bound surface.
+
+ Modify paragraph 10 of the description of eglBindTexImage:
+
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling eglBindTexImage:
+
+ - The EGL_MIPMAP_TEXTURE attribute of the pbuffer or pixmap being bound
+ is EGL_TRUE.
+ - The OpenGL ES texture parameter GL_GENERATE_MIPMAP is GL_TRUE for the
+ currently bound texture.
+ - The value of the EGL_MIPMAP_LEVEL attribute of the pbuffer or pixmap
+ being bound is equal to the value of the texture parameter
+ GL_TEXTURE_BASE_LEVEL.
+
+
+ Modifications to section 3.6.2, "Releasing a Surface from an OpenGL ES Texture"
+
+ Modify paragraph 1 of the description of eglReleaseTexImage:
+
+ ...The specified color buffer is released back to the surface. The surface
+ is made avalaible for reading and writing by client APIs when it no longer
+ has any color buffers bound as textures.
+
+ Modify paragraph 2 of the description of eglReleaseTexImage:
+
+ If the surface is a pixmap, the contents of the color buffer are
+ unaffected by eglReleaseTexImage. If the surface is a pbuffer,
+ the contents of the color buffer are undefined when it is first
+ released, in particular there is no guarantee that the texture
+ image is still present. In all cases, the contents of other
+ color buffers are unaffected by this call. ...
+
+ Modify paragraph 5 of the description of eglReleaseTexImage:
+
+ ...If <surface> is not a valid EGLSurface, or is not a bound pbuffer or
+ pixmap surface, then an EGL_BAD_SURFACE error is returned.
+
+
+
+Usage Examples
+
+(skipped for now)
+
+
+
+Version History
+
+ 0. 12 Aug 2008 - RS
+ Initial version derived from GLX_EXT_texture_from_pixmap and EGL.
+ 0.1 30 Sept 2008 - RS
+ Changed name from EXT to NOKIA.
+ Clarified / fixed wording wrt differences to pbuffers.
+ 0.2 13 Nov 2009 - Sami Kyöstilä <sami.kyostila@nokia.com>
+ Changed extension and token names to comply with Nokia extension naming
+ scheme. Clarified interaction with native rendering. Formatting.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt
new file mode 100644
index 0000000..c190687
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt
@@ -0,0 +1,94 @@
+Name
+
+ EGL_NV_3dvision_surface
+
+Name Strings
+
+ EGL_NV_3dvision_surface
+
+Contact
+
+ Greg Roth, NVIDIA (groth 'at' nvidia.com)
+
+Contributors
+
+ Swaminathan Narayanan, NVIDIA
+
+IP Status
+
+ NVIDIA Proprietary.
+
+Status
+
+ Complete
+
+Version
+
+ Last Modified Date: 02 December 2011
+ Revision: 1
+
+Number
+
+ EGL Extension #46
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+Overview
+
+ NVIDIA 3D Vision provides stereoscopic 3d rendering without
+ requiring applications to change their rendering methods. However
+ there are cases where applications can benefit from adjusting 3D
+ vision parameters directly to experiment with this functionality in
+ applications not yet known to 3D Vision, to assist 3D Vision in
+ setting parameters correctly for unusual situations, or to present
+ application-specific user-accessible controls for 3D Vision
+ parameters.
+
+ This extension provides the ability to explicitly create a surface
+ with 3D Vision support regardless of application detection.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute to the <attrib_list> parameter of
+ CreateWindowSurface and CreatePbufferSurface
+
+ EGL_AUTO_STEREO_NV 0x3136
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ Additions to section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ Alter the end of the second to last paragraph:
+
+ Attributes that can be specified in <attrib_list> include
+ EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT,
+ and EGL_AUTO_STEREO_NV.
+
+ Add before the last paragraph of section 3.5.1:
+
+ EGL_AUTO_STEREO_NV specifies whether 3D Vision stereo
+ (stereo override) should be enabled in the driver. The default
+ value of EGL_AUTO_STEREO_NV is zero.
+
+Issues
+
+ None
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------- --------- ----------------------------------------
+ 1 02 Dec 2011 groth Split 3D Vision capability from previous extension.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt
new file mode 100644
index 0000000..5435c8c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt
@@ -0,0 +1,195 @@
+Name
+
+ NV_context_priority_realtime
+
+Name Strings
+
+ EGL_NV_context_priority_realtime
+
+Contributors
+
+ Sandeep Shinde
+ Kirill Artamonov
+ Sami Kiminki
+ Donghan Ryu
+ Daniel Koch
+ Mark Kilgard
+
+Contacts
+
+ Sandeep Shinde, NVIDIA (sashinde 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - November 21, 2017
+
+Number
+
+ EGL Extension #124
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ Requires EGL_IMG_context_priority
+
+ This extension is written against the wording of the EGL 1.5
+ Specification - August 27, 2014 (but may be implemented against earlier
+ versions).
+
+Overview
+
+ This extension allows an EGLContext to be created with one extra
+ priority level in addition to three priority levels that are part of
+ EGL_IMG_context_priority extension.
+
+ This new level has extra privileges that are not available to other three
+ levels. Some of the privileges may include:
+ - Allow realtime priority to only few contexts
+ - Allow realtime priority only to trusted applications
+ - Make sure realtime priority contexts are executed immediately
+ - Preempt any current context running on GPU on submission of
+ commands for realtime context
+
+ The mechanism for determining which EGL context is allowed to use this
+ priority level is platform dependent.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New attribute value accepted for the EGL_CONTEXT_PRIORITY_LEVEL_IMG
+ attribute in the <attrib_list> argument of eglCreateContext:
+
+ EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+
+Additions to Chapter 3 of the EGL 1.5 Specification (EGL Functions and Errors)
+
+ Add a NEW section "3.7.1.7 Context Priority" to specify the context
+ priority attribute for EGL_IMG_context_priority and values:
+
+ "3.7.1.7 Context Priority
+
+ The attribute EGL_CONTEXT_PRIORITY_LEVEL_IMG specifies a context
+ priority hint for a context supporting context priority. This
+ attribute's value may be one of EGL_CONTEXT_PRIORITY_HIGH_IMG,
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG, EGL_CONTEXT_PRIORITY_LOW_IMG,
+ or EGL_CONTEXT_PRIORITY_REALTIME_NV. The default value for
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG is EGL_CONTEXT_PRIORITY_MEDIUM_IMG.
+
+ This attribute is a hint, as an implementation may not support
+ multiple contexts at some priority levels and system policy may limit
+ access to high priority contexts to appropriate system privilege
+ level.
+
+ The value EGL_CONTEXT_PRIORITY_REALTIME_NV requests the created
+ context run at the highest possible priority and be capable of
+ preempting the current executing context when commands are flushed
+ by such a realtime context.
+
+ This attribute is supported only for OpenGL and OpenGL ES contexts."
+
+ Within section 3.7.4 "Context Queries" amend the eglQueryContext
+ discussion as follows:
+
+ Change the sentence describing the attribute parameter to include
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG so it reads:
+
+ "attribute must be set to EGL_CONFIG_ID, EGL_CONTEXT_CLIENT_TYPE,
+ EGL_CONTEXT_CLIENT_VERSION, EGL_RENDER_BUFFER, or
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG."
+
+ After the discussion of "Querying EGL_RENDER_BUFFER", add:
+
+ "Querying EGL_CONTEXT_PRIORITY_LEVEL_IMG returns the priority this
+ context was actually created with. Note: this may not be the same
+ as specified at context creation time, due to implementation limits
+ on the number of contexts that can be created at a specific priority
+ level in the system."
+
+Issues
+
+ 1) The EGL_IMG_context_priority extension is written to amend the EGL
+ 1.4 specification. Should this extension amend EGL 1.5 or 1.4?
+
+ RESOLVED: EGL 1.5 because it is newer and better organized to
+ extend context attributes.
+
+ EGL 1.5 rewrites 3.7.1 "Creating Rendering Contexts" to have subsections
+ for different context attributes. This extension adds a new such section
+ that includes the EGL_IMG_context_priority attribute and values too.
+
+ 2) Is context priority hint supported for both OpenGL and OpenGL ES contexts?
+
+ RESOLVED: Yes.
+
+ 3) What is the intended application of the realtime priority level?
+
+ RESOLVED: One anticipated application is the system compositor
+ for a Head Mounted Display (HMD) requires realtime recomposition
+ for time-warping.
+
+ 4) What action causes a context with realtime priority to preempt
+ other contexts?
+
+ RESOLVED: Preemption by a context with realtime priority should
+ occur when there are pending rendering commands and an implicit or
+ explicit flush (i.e. glFlush or glFinish) occurs.
+
+ 5) What does "trusted" or "appropriate system privilege level"
+ mean in practice for a Linux-based operating system such as Android?
+
+ RESOLVED: Trusted means an application that has higher privileges
+ than other apps such as having CAP_SYS_NICE capability. On Android
+ such applications have to be registered in advance with the OS;
+ unpriviledged third party app cannot acquire this capability.
+
+ This restriction exists so arbitrary applications do not starve or
+ otherwise compromise the interactivity of the system overall.
+
+ 6) In practice how many realtime priority contexts can exist in a system to
+ get best performance?
+
+ RESOLVED: Only one realtime priority context should be active at a given
+ moment to get best performance.
+
+ 7) Can a context created with a realtime priority hint that is
+ in fact given a realtime priority, subsequently find that realtime
+ priority revoked and, if revoked, can it be restored?
+
+ RESOLVED: No, once a context is created with specific priority level, the
+ priority will not change for lifetime of the context. This means there will
+ not be revoking or restoring of realtime priority to already created context.
+
+ 8) The attrib_list for eglCreateContext could list the attribute
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG multiple times with different valid values.
+ What happens in this case?
+
+ RESOLVED: Behavior is undefined in this case.
+
+ NVIDIA's EGL implementation handles such case by using the last (valid) attribute
+ value listed in the attrib_list array as the effective attribute value for
+ creating the context.
+
+ The EGL specification is unfortunately silent on this issue.
+
+
+Revision History
+ Version 1, 2016/11/23 (Sandeep Shinde)
+ - Initial version
+ Version 2, 2017/10/13 (Mark Kilgard)
+ - Complete and convert to NV extension
+ Version 3, 2017/10/31 (Sandeep Shinde)
+ - Few minor corrections. Issue 6 resolved.
+ Version 4, 2017/11/21 (Sandeep Shinde)
+ - Update enum value and add extension number
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt
new file mode 100644
index 0000000..e016a6f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt
@@ -0,0 +1,554 @@
+Name
+
+ NV_coverage_sample
+
+Name Strings
+
+ GL_NV_coverage_sample
+ EGL_NV_coverage_sample
+
+Contact
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2005 - 2007
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified Date: 2007/03/20
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #17
+ OpenGL ES Extension #72
+
+Dependencies
+
+ Written based on the wording of the OpenGL 2.0 specification
+ and the EXT_framebuffer_object specification.
+
+ Written based on the wording of the EGL 1.2 specification.
+
+ Requires OpenGL-ES 2.0 and OES_framebuffer_object.
+
+ Requires EGL 1.1.
+
+Overview
+
+ Anti-aliasing is a critical component for delivering high-quality
+ OpenGL rendering. Traditionally, OpenGL implementations have
+ implemented two anti-aliasing algorithms: edge anti-aliasing
+ and multisampling.
+
+ Edge anti-aliasing computes fractional fragment coverage for all
+ primitives in a rendered frame, and blends edges of abutting
+ and/or overlapping primitives to produce smooth results. The
+ image quality produced by this approach is exceptionally high;
+ however, applications are render their geometry perfectly ordered
+ back-to-front in order to avoid artifacts such as bleed-through.
+ Given the algorithmic complexity and performance cost of performing
+ exact geometric sorts, edge anti-aliasing has been used very
+ sparingly, and almost never in interactive games.
+
+ Multisampling, on the other hand, computes and stores subpixel
+ (a.k.a. "sample") coverage for rasterized fragments, and replicates
+ all post-alpha test operations (e.g., depth test, stencil test,
+ alpha blend) for each sample. After the entire scene is rendered,
+ the samples are filtered to compute the final anti-aliased image.
+ Because the post-alpha test operations are replicated for each sample,
+ all of the bleed-through and ordering artifacts that could occur with
+ edge anti-aliasing are avoided completely; however, since each sample
+ must be computed and stored separately, anti-aliasing quality is
+ limited by framebuffer storage and rendering performance.
+
+ This extension introduces a new anti-aliasing algorithm to OpenGL,
+ which dramatically improves multisampling quality without
+ adversely affecting multisampling's robustness or significantly
+ increasing the storage required, coverage sampling.
+
+ Coverage sampling adds an additional high-precision geometric
+ coverage buffer to the framebuffer, which is used to produce
+ high-quality filtered results (with or without the presence of a
+ multisample buffer). This coverage information is computed and stored
+ during rasterization; since applications may render objects where the
+ specified geometry does not correspond to the visual result (examples
+ include alpha-testing for "imposters," or extruded volume rendering
+ for stencil shadow volumes), coverage buffer updates may be masked
+ by the application, analagous to masking the depth buffer.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ void CoverageMaskNV( boolean mask )
+ void CoverageOperationNV( enum operation )
+
+New Tokens
+
+
+ Accepted by the <attrib_list> parameter of eglChooseConfig
+ and eglCreatePbufferSurface, and by the <attribute>
+ parameter of eglGetConfigAttrib
+
+ EGL_COVERAGE_BUFFERS_NV 0x30E0
+ EGL_COVERAGE_SAMPLES_NV 0x30E1
+
+ Accepted by the <internalformat> parameter of
+ RenderbufferStorageEXT and the <format> parameter of ReadPixels
+
+ COVERAGE_COMPONENT_NV 0x8ED0
+
+ Accepted by the <internalformat> parameter of
+ RenderbufferStorageEXT
+
+ COVERAGE_COMPONENT4_NV 0x8ED1
+
+ Accepted by the <operation> parameter of CoverageOperationNV
+
+ COVERAGE_ALL_FRAGMENTS_NV 0x8ED5
+ COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
+ COVERAGE_AUTOMATIC_NV 0x8ED7
+
+ Accepted by the <attachment> parameter of
+ FramebufferRenderbuffer, and GetFramebufferAttachmentParameteriv
+
+ COVERAGE_ATTACHMENT_NV 0x8ED2
+
+ Accepted by the <buf> parameter of Clear
+
+ COVERAGE_BUFFER_BIT_NV 0x8000
+
+ Accepted by the <pname> parameter of GetIntegerv
+
+ COVERAGE_BUFFERS_NV 0x8ED3
+ COVERAGE_SAMPLES_NV 0x8ED4
+
+Changes to Chapter 4 of the OpenGL 2.0 Specification
+
+ Insert a new section, after Section 3.2.1 (Multisampling)
+
+ "3.2.2 Coverage Sampling
+
+ Coverage sampling is a mechanism to antialias all GL primitives: points,
+ lines, polygons, bitmaps and images. The technique is similar to
+ multisampling, with all primitives being sampled multiple times at each
+ pixel, and a sample resolve applied to compute the color values stored
+ in the framebuffer's color buffers. As with multisampling, coverage
+ sampling resolves color sample and coverage values to a single, displayable
+ color each time a pixel is updated, so antialiasing appears to be automatic
+ at the application level. Coverage sampling may be used simultaneously
+ with multisampling; however, this is not required.
+
+ An additional buffer, called the coverage buffer, is added to
+ the framebuffer. This buffer stores additional coverage information
+ that may be used to produce higher-quality antialiasing than what is
+ provided by conventional multisampling.
+
+ When the framebuffer includes a multisample buffer (3.5.6), the
+ samples contain this coverage information, and the framebuffer
+ does not include the coverage buffer.
+
+ If the value of COVERAGE_BUFFERS_NV is one, the rasterization of
+ all primitives is changed, and is referred to as coverage sample
+ rasterization. Otherwise, primitive rasterization is referred to
+ as multisample rasterization (if SAMPLE_BUFFERS is one) or
+ single-sample rasterization (otherwise). The value of
+ COVERAGE_BUFFERS_NV is queried by calling GetIntegerv with <pname>
+ set to COVERAGE_BUFFERS_NV.
+
+ During coverage sample rasterization the pixel fragment contents
+ are modified to include COVERAGE_SAMPLES_NV coverage values. The
+ value of COVERAGE_SAMPLES_NV is an implementation-dependent
+ constant, and is queried by calling GetIntegerv with <pname> set
+ to COVERAGE_SAMPLES_NV.
+
+ The command
+
+ CoverageOperationNV(enum operation)
+
+ may be used to modify the manner in which coverage sampling is
+ performed for all primitives. If <operation> is
+ COVERAGE_ALL_FRAGMENTS_NV, coverage sampling will be performed and the
+ coverage buffer updated for all fragments generated during rasterization.
+ If <operation> is COVERAGE_EDGE_FRAGMENTS_NV, coverage sampling will
+ only be performed for fragments generated at the edge of the
+ primitive (by only updating fragments at the edges of primitives,
+ applications may get better visual results when rendering partially
+ transparent objects). If <operation> is COVERAGE_AUTOMATIC_NV,
+ the GL will automatically select the appropriate coverage operation,
+ dependent on the GL blend mode and the use of gl_LastFragColor /
+ gl_LastFragData in the bound fragment program. If blending is enabled,
+ or gl_LastFragColor / gl_LastFragData appears in the bound fragment
+ program, COVERAGE_AUTOMATIC_NV will behave identically to
+ COVERAGE_EDGE_FRAGMENTS_NV; otherwise, COVERAGE_AUTOMATIC_NV will behave
+ identically to COVERAGE_ALL_FRAGMENTS_NV. The default coverage operation
+ is COVERAGE_AUTOMATIC_NV."
+
+ Insert a new section, after Section 3.3.3 (Point Multisample
+ Rasterization)
+
+ "3.3.4 Point Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then points are
+ rasterized using the following algorithm, regardless of whether
+ point antialiasing (POINT_SMOOTH) is enabled or disabled. Point
+ rasterization produces fragments using the same algorithm described
+ in section 3.3.3; however, sample points are divided into SAMPLES
+ multisample points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described
+ in section 3.3.3. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing the results
+ in the coverage buffer."
+
+ Insert a new section, after Section 3.4.4 (Line Multisample
+ Rasterization)
+
+ "3.4.5 Line Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then lines are
+ rasterized using the following algorithm, regardless of whether
+ line antialiasing (LINE_SMOOTH) is enabled or disabled. Line
+ rasterization produces fragments using the same algorithm described
+ in section 3.4.4; however, sample points are divided into SAMPLES
+ multisample points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described in
+ section 3.4.4. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing results in
+ the coverage buffer."
+
+ Insert a new section, after Section 3.5.6 (Polygon Multisample
+ Rasterization)
+
+ "3.5.7 Polygon Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then polygons are
+ rasterized using the following algorithm, regardless of whether
+ polygon antialiasing (POLYGON_SMOOTH) is enabled or disabled. Polygon
+ rasterization produces fragments using the same algorithm described in
+ section 3.5.6; however, sample points are divided into SAMPLES multisample
+ points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described in
+ section 3.5.7. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing results in the
+ coverage buffer."
+
+ Insert a new section, after Section 3.6.6 (Pixel Rectangle Multisample
+ Rasterization)
+
+ "3.6.7 Pixel Rectangle Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then pixel rectangles are
+ rasterized using the algorithm described in section 3.6.6."
+
+ Modify the first sentence of the second-to-last paragraph of section
+ 3.7 (Bitmaps) to read:
+
+ "Bitmap Multisample and Coverage Sample Rasterization
+
+ If MULTISAMPLE is enabled, and the value of SAMPLE_BUFFERS is one;
+ or if the value of COVERAGE_BUFFERS_NV is one, then bitmaps are
+ rasterized using the following algorithm. [...]"
+
+ Insert after the first paragraph of Section 4.2.2 (Fine Control of
+ Buffer Updates):
+
+ "The coverage buffer can be enabled or disabled for writing coverage
+ sample values using
+
+ void CoverageMaskNV( boolean mask );
+
+ If <mask> is non-zero, the coverage buffer is enabled for writing;
+ otherwise, it is disabled. In the initial state, the coverage
+ buffer is enabled for writing."
+
+ And change the text of the last 2 paragraphs of Section 4.2.2 to read:
+
+ "The state required for the various masking operations is three
+ integers and two bits: an integer for color indices, an integer for
+ the front and back stencil values, a bit for depth values, and a
+ bit for coverage sample values. A set of four bits is also required
+ indicating which components of an RGBA value should be written. In the
+ initial state, the integer masks are all ones, as are the bits
+ controlling the depth value, coverage sample value and RGBA component
+ writing.
+
+ Fine Control of Multisample Buffer Updates
+
+ When the value of SAMPLE_BUFFERS is one, ColorMask, DepthMask,
+ CoverageMask, and StencilMask or StencilMaskSeparate control the
+ modification of values in the multisample buffer. [...]"
+
+ Change paragraph 2 of Section 4.2.3 (Clearing the Buffers) to read:
+
+ "is the bitwise OR of a number of values indicating which buffers are to
+ be cleared. The values are COLOR_BUFFER_BIT, DEPTH_BUFFER_BIT,
+ STENCIL_BUFFER_BIT, ACCUM_BUFFER_BIT and COVERAGE_BUFFER_BIT_NV, indicating
+ the buffers currently enabled for color writing, the depth buffer,
+ the stencil buffer, the accumulation buffer and the virtual-coverage
+ buffer, respectively. [...]"
+
+ Insert a new paragraph after paragraph 4 of Section 4.3.2 (Reading Pixels)
+ (beginning with "If there is a multisample buffer ..."):
+
+ "If the <format> is COVERAGE_COMPONENT_NV, then values are taken from the
+ coverage buffer; again, if there is no coverage buffer, the error
+ INVALID_OPERATION occurs. When <format> is COVERAGE_COMPONENT_NV,
+ <type> must be GL_UNSIGNED_BYTE. Any other value for <type> will
+ generate the error INVALID_ENUM. If there is a multisample buffer, the
+ values are undefined."
+
+
+
+Modifications to the OES_framebuffer_object specification
+
+ Add a new table at the end of Section 4.4.2.1 (Renderbuffer Objects)
+
+ "+-------------------------+-----------------------+-----------+
+ | Sized internal format | Base Internal Format | C Samples |
+ +-------------------------+-----------------------+-----------+
+ | COVERAGE_COMPONENT4_NV | COVERAGE_COMPONENT_NV | 4 |
+ +-------------------------+-----------------------+-----------+
+ Table 1.ooo Desired component resolution for each sized internal
+ format that can be used only with renderbuffers"
+
+ Add to the bullet list in Section 4.4.4 (Framebuffer Completeness)
+
+ "An internal format is 'coverage-renderable' if it is COVERAGE_COMPONENT_NV
+ or one of the COVERAGE_COMPONENT_NV formats from table 1.ooo. No other
+ formats are coverage-renderable"
+
+ Add to the bullet list in Section 4.4.4.1 (Framebuffer Attachment
+ Completeness)
+
+ "If <attachment> is COVERAGE_ATTACHMENT_NV, then <image> must have a
+ coverage-renderable internal format."
+
+ Add a paragraph at the end of Section 4.4.4.2 (Framebuffer Completeness)
+
+ "The values of COVERAGE_BUFFERS_NV and COVERAGE_SAMPLES_NV are derived from
+ the attachments of the currently bound framebuffer object. If the current
+ FRAMEBUFFER_BINDING_OES is not 'framebuffer-complete', then both
+ COVERAGE_BUFFERS_NV and COVERAGE_SAMPLES_NV are undefined. Otherwise,
+ COVERAGE_SAMPLES_NV is equal to the number of coverage samples for the
+ image attached to COVERAGE_ATTACHMENT_NV, or zero if COVERAGE_ATTACHMENT_NV
+ is zero."
+
+Additions to the EGL 1.2 Specification
+
+ Add to Table 3.1 (EGLConfig attributes)
+ +---------------------------+---------+-----------------------------------+
+ | Attribute | Type | Notes |
+ +---------------------------+---------+-----------------------------------+
+ | EGL_COVERAGE_BUFFERS_NV | integer | number of coverage buffers |
+ | EGL_COVERAGE_SAMPLES_NV | integer | number of coverage samples per |
+ | | | pixel |
+ +---------------------------+---------+-----------------------------------+
+
+ Modify the first sentence of the last paragraph of the "Buffer
+ Descriptions and Attributes" subsection of Section 3.4 (Configuration
+ Management), p. 16
+
+ "There are no single-sample depth, stencil or coverage buffers for a
+ multisample EGLConfig; the only depth, stencil and coverage buffers are
+ those in the multisample buffer. [...]"
+
+ And add the following text at the end of that paragraph:
+
+ "The <coverage buffer> is used only by OpenGL ES. It contains primitive
+ coverage information that is used to produce a high-quality anti-aliased
+ image. The format of the coverage buffer is not specified, and its
+ contents are not directly accessible. Only the existence of the coverage
+ buffer, and the number of coverage samples it contains, are exposed by EGL.
+
+ EGL_COVERAGE_BUFFERS_NV indicates the number of coverage buffers, which
+ must be zero or one. EGL_COVERAGE_SAMPLES_NV gives the number of coverage
+ samples per pixel; if EGL_COVERAGE_BUFFERS_NV is zero, then
+ EGL_COVERAGE_SAMPLES_NV will also be zero."
+
+ Add to Table 3.4 (Default values and match criteria for EGLConfig
+ attributes)
+
+ +---------------------------+-----------+-------------+---------+---------+
+ | Attribute | Default | Selection | Sort | Sort |
+ | | | Criteria | Order | Priority|
+ +---------------------------+-----------+-------------+---------+---------+
+ | EGL_COVERAGE_BUFFERS_NV | 0 | At Least | Smaller | 7 |
+ | EGL_COVERAGE_SAMPLES_NV | 0 | At Least | Smaller | 8 |
+ +---------------------------+-----------+-------------+---------+---------+
+ And renumber existing sort priorities 7-11 as 9-13.
+
+ Modify the list in "Sorting of EGLConfigs" (Section 3.4.1, pg 20)
+
+ " [...]
+ 5. Smaller EGL_SAMPLE_BUFFERS
+ 6. Smaller EGL_SAMPLES
+ 7. Smaller EGL_COVERAGE_BUFFERS_NV
+ 8. Smaller EGL_COVERAGE_SAMPLES_NV
+ 9. Smaller EGL_DEPTH_SIZE
+ 10. Smaller EGL_STENCIL_SIZE
+ 11. Smaller EGL_ALPHA_MASK_SIZE
+ 12. Special: [...]
+ 13. Smaller EGL_CONFIG_ID [...]"
+
+Usage Examples
+
+ (1) Basic Coverage Sample Rasterization
+
+ glCoverageMaskNV(GL_TRUE);
+ glDepthMask(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+
+ while (1)
+ {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+ glDrawElements(...);
+ eglSwapBuffers(...);
+ }
+
+ (2) Multi-Pass Rendering Algorithms
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // first render pass: render Z-only (occlusion surface), with
+ // coverage info. color writes are disabled
+
+ glCoverageMaskNV(GL_TRUE);
+ glDepthMask(GL_TRUE);
+ glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ glDepthFunc(GL_LESS);
+ glDrawElements(...);
+
+ // second render pass: set Z test to Z-equals, disable Z-writes &
+ // coverage writes. enable color writes. coverage may be
+ // disabled, because subsequent rendering passes are rendering
+ // identical geometry -- since the final coverage buffer will be
+ // unchanged, we can disable coverage writes as an optimization.
+
+ glCoverageMaskNV(GL_FALSE);
+ glDepthMask(GL_FALSE);
+ glDepthFunc(GL_EQUAL);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glDrawElements(...);
+
+ eglSwapBuffers();
+ }
+
+ (3) Rendering Translucent Objects on Top of Opaque Objects
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // render opaque, Z-buffered geometry with coverage info for the
+ // entire primitive. Overwrite coverage data for all fragments, so
+ // that interior fragments do not get resolved incorrectly.
+
+ glDepthFunc(GL_LESS);
+ glCoverageOperationNV(GL_COVERAGE_ALL_FRAGMENTS_NV);
+ glDrawElements(...);
+
+ // render translucent, Z-buffered geometry. to ensure that visible
+ // edges of opaque geometry remain anti-aliased, change the
+ // coverage operation to just edge fragments. this will maintain
+ // the coverage information underneath the translucent geometry,
+ // except at translucent edges.
+
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glCoverageOperationNV(GL_COVERAGE_EDGE_FRAGMENTS_NV);
+ glEnable(GL_BLEND);
+ glDrawElements(...);
+ glDisable(GL_BLEND);
+
+ eglSwapBuffers();
+ }
+
+ (4) Rendering Opacity-Mapped Particle Systems & HUDs on Top of Opaque
+ Geometry
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // render opaque, Z-buffered geometry, with coverage info.
+ glDepthFunc(GL_LESS);
+ glDrawElements(...);
+
+ // render opacity-mapped geometry. disable Z writes, enable alpha
+ // blending. also, disable coverage writes -- the edges of the
+ // geometry used for the HUD/particle system have alpha values
+ // tapering to zero, so edge coverage is uninteresting, and
+ // interior coverage should still refer to the underlying opaque
+ // geometry, so that opaque edges visible through the translucent
+ // regions remain anti-aliased.
+
+ glCoverageMaskNV(GL_FALSE);
+ glDepthMask(GL_FALSE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ glDrawElements(...);
+ glDisable(GL_BLEND);
+
+ eglSwapBuffers();
+ }
+
+
+Issues
+
+ 1. Is any specific discussion of coverage sampling resolves required,
+ particularly with respect to application-provided framebuffer objects?
+
+ RESOLVED: No. Because the coverage sampling resolve is an
+ implementation-dependent algorithm, it is always legal behavior for
+ framebuffer read / copy functions to return the value in the selected
+ ReadBuffer as if COVERAGE_BUFFERS_NV was zero. This allows
+ textures attached to the color attachment points of framebuffer objects
+ to behave predictably, even when COVERAGE_BUFFERS_NV is one.
+
+ Implementations are encouraged, whenever possible, to use the highest-
+ quality coverage sample resolve supported for calls to eglSwapBuffers,
+ eglCopyBuffers, ReadPixels, CopyPixels and CopyTex{Sub}Image.
+
+ 2. Should all render buffer & texture types be legal sources for image
+ resolves and coverage attachment?
+
+ RESOLVED: This spec should not place any arbitrary limits on usage;
+ however, there are many reasons why implementers may not wish to
+ support coverage sampling for all surface types.
+
+ Implementations may return FRAMEBUFFER_UNSUPPORTED_OES from
+ CheckFramebufferStatusOES if an object bound to COVERAGE_ATTACHMENT_NV
+ is incompatible with one or more objects bound to DEPTH_ATTACHMENT_OES,
+ STENCIL_ATTACHMENT_OES, or COLOR_ATTACHMENTi_OES.
+
+Revision History
+
+#1.0 - 20.03.2007
+
+ Renumbered enumerants. Reformatted to 80 columns.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt
new file mode 100644
index 0000000..fa5cc15
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt
@@ -0,0 +1,127 @@
+Name
+
+ NV_coverage_sample_resolve
+
+Name Strings
+
+ EGL_NV_coverage_sample_resolve
+
+Contact
+
+ James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2011
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified Date: 2011/04/13
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #30
+
+Dependencies
+
+ Written based on the wording of the EGL 1.4 specification.
+
+ Trivially interacts with EGL_NV_coverage_sample
+
+ Requires EGL 1.2.
+
+Overview
+
+ NV_coverage_sample introduced a method to improve rendering quality
+ using a separate buffer to store coverage information for pixels in
+ the color buffers. It also provided a mechanism to disable writing
+ to the coverage buffer when coverage sample filtering was not needed
+ or undesirable. However, it did not provide a way to disable
+ reading data from the coverage buffer at resolve time. In some
+ cases performance can be improved by eliminating these memory reads.
+ To that end, this extension exposes a surface attribute that allows
+ applications to specify when no coverage sample resolve is desired.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglSurfaceAttrib and
+ eglQuerySurface:
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+
+ Accepted by the <value> parameter of eglSurfaceAttrib and returned
+ in the <value> parameter of eglQuerySurface when <attribute> is
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV:
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ Additions to section 3.5.6 (Surface Attributes)
+
+ Replace the last sentence of paragraph 2 (p. 35):
+
+ "Attributes that can be specified are
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV, EGL_MIPMAP_LEVEL,
+ EGL_MULTISAMPLE_RESOLVE, and EGL_SWAP_BEHAVIOR."
+
+ Add the following paragraphs between paragraphs 2 and 3 (p. 35):
+
+ "If <attribute> is EGL_COVERAGE_SAMPLE_RESOLVE_NV, then <value>
+ specifies the filter to use when resolving the coverage sample
+ buffer. A <value> of EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV chooses
+ the default implementation-defined filtering method, while
+ EGL_MULTISAMPLE_RESOLVE_NONE_NV disables filtering based on coverage
+ data.
+
+ "The initial value of EGL_COVERAGE_SAMPLE_RESOLVE_NV is
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV."
+
+ Add the following paragraph after paragraph 13 (p. 36):
+
+ "Querying EGL_COVERAGE_SAMPLE_RESOLVE_NV returns the filtering
+ method used when performing coverage buffer resolution. The filter
+ may be either EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV or
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV, as described above for
+ eglSurfaceAttrib."
+
+Interactions with EGL_NV_coverage_sample:
+
+ This extension relies on language in EGL_NV_coverage_sample to
+ describe the coverage sample buffer.
+
+ If EGL_NV_coverage_sample is not present, this extension has no
+ effect on rendering.
+
+Issues
+
+ 1. Should it be an error to set EGL_COVERAGE_SAMPLE_RESOLVE_NV on
+ surfaces that don't have a coverage buffer?
+
+ RESOLVED: No. EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV will behave
+ the same as EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV in this case.
+
+Revision History
+
+#1 (James Jones, 2011-04-13)
+
+ - Initial revision.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt
new file mode 100644
index 0000000..cc54749
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt
@@ -0,0 +1,206 @@
+Name
+
+ NV_cuda_event
+
+Name Strings
+
+ EGL_NV_cuda_event
+
+Contributors
+
+ Debalina Bhattacharjee
+ Michael Chock
+ James Jones
+ Daniel Kartch
+
+Contact
+
+ Michael Chock (mchock 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, June 28, 2018
+
+Number
+
+ EGL Extension #75
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 and the
+ EGL_EXT_sync_reuse extension.
+
+ Either EGL_KHR_fence_sync and the EGLAttrib type or EGL 1.5 are
+ required.
+
+ This extension interacts with, but does not require,
+ EGL_EXT_sync_reuse.
+
+ This extension interacts with EGL_NV_device_cuda.
+
+Overview
+
+ This extension allows creating an EGL sync object linked to a CUDA
+ event object, potentially improving efficiency of sharing images and
+ compute results between the two APIs.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ A pointer to type cudaEvent_t, defined in the CUDA header files, may
+ be included in the attribute list passed to eglCreateSync.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSync:
+
+ EGL_CUDA_EVENT_HANDLE_NV 0x323B
+
+ Returned in <values> for eglGetSyncAttrib <attribute>
+ EGL_SYNC_TYPE:
+
+ EGL_SYNC_CUDA_EVENT_NV 0x323C
+
+ Returned in <values> for eglGetSyncAttrib <attribute>
+ EGL_SYNC_CONDITION:
+
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+
+Add to section 3.8.1 (Sync Objects) of the EGL 1.5 specification, after
+the sixth paragraph:
+
+ Likewise, a <CUDA event sync object> reflects the status of a
+ corresponding CUDA object. Waiting on this type of sync object is
+ equivalent to waiting for completion of the corresponding linked
+ CUDA event object.
+
+Add a new section following section 3.8.1.2 (Creating and Signaling
+OpenCL Event Sync Objects):
+
+ Section 3.8.1.X Creating and Signaling CUDA Event Sync Objects
+
+ If <type> is EGL_SYNC_CUDA_EVENT_NV, a CUDA event sync object is
+ created. The <attrib_list> may contain the attribute
+ EGL_CUDA_EVENT_HANDLE_NV, set to a pointer to a cudaEvent_t object.
+ If it does not contain this attribute, the sync object will start in
+ the signaled state, and an event attribute must be provided the
+ first time eglUnsignalSyncEXT is called. Otherwise, a call to
+ eglUnsignalSyncEXT may replace this event attribute or leave it
+ unspecified, causing the previous object to be reused.
+
+ A cudaEvent_t object provided to eglCreateSync or eglUnsignalSyncEXT
+ must be properly initialized and recorded by the CUDA API (using
+ cudaEventCreate and cudaEventRecord), and the CUDA device
+ used to create the event must correspond to <dpy>[fn1]. Note that
+ EGL_CUDA_EVENT_HANDLE_NV is not a queryable property of a sync
+ object.
+
+ [fn1] If EGL_NV_device_cuda is supported, it is sufficient that the
+ CUDA device used to create the CUDA event matches the
+ EGL_CUDA_DEVICE_NV attribute of <dpy>'s underlying EGL
+ device.
+
+ Attributes of the CUDA event sync object are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE EGL_SYNC_CUDA_EVENT_NV
+ EGL_SYNC_STATUS Depends on status of <event>
+ EGL_SYNC_CONDITION EGL_SYNC_CUDA_EVENT_COMPLETE_NV
+
+ If an <event> is linked to the sync object, the status of this type
+ of sync object depends on the state of <event> evaluated at the time
+ of the most recent call to eglCreateSync or eglUnsignalSyncEXT. If
+ all device work preceding the most recent call to cudaEventRecord on
+ the event has not yet completed, the status of the linked sync
+ object will be EGL_UNSIGNALED. If all such work has completed, the
+ status of the linked sync object will be EGL_SIGNALED. Calling
+ cudaEventRecord to modify an event has no effect on the sync object
+ while its status is EGL_UNSIGNALED, but will have an effect if the
+ event is reevaluated at a subsequent eglUnsignalSyncEXT call.
+
+ The only condition supported for CUDA event sync objects is
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV. It is satisfied when all device
+ work prior to the most recent call to cudaEventRecord at sync
+ unsignaling time has completed.
+
+If EGL_EXT_sync_reuse is not present, then change the second sentence of
+3.8.1.X above to "The <attrib_list> must contain ..." and omit the
+remaining sentences in the paragraph. Omit all references to
+eglUnsignalSyncEXT.
+
+In 3.8.1 (Sync Objects), if EGL_EXT_sync_reuse is present, then add the
+following to the error list for eglUnsignalSyncEXT. Otherwise add it to
+the error list for eglCreateSync:
+
+ If <type> is EGL_SYNC_CUDA_EVENT_NV and a EGL_CUDA_EVENT_HANDLE_NV
+ is not linked to the sync object, then an EGL_BAD_ATTRIBUTE error is
+ generated. If its attribute value is not a valid CUDA event pointer
+ or has not been initialized as described above, then
+ EGL_BAD_ATTRIBUTE may be generated, but the results are undefined
+ and may include program termination.
+
+Modify the third paragraph of section 3.8.1.4 (Querying Sync Object
+Attributes):
+
+ If any eglClientWaitSync or eglWaitSync commands are blocking on
+ <sync> when eglDestroySync is called, <sync> is flagged for deletion
+ and will be deleted when the associated fence command, OpenCL event
+ object, or CUDA event object has completed, and <sync> is no longer
+ blocking any such egl*WaitSync command. Otherwise, the sync object
+ is destroyed immediately.
+
+Replace the EGL_SYNC_CONDITION row of table 3.9 with:
+
+ Attribute Description Supported Sync Objects
+ ------------------ ----------------------- ----------------------
+ EGL_SYNC_CONDITION Signaling condition EGL_SYNC_FENCE,
+ EGL_SYNC_CL_EVENT, or
+ EGL_SYNC_CUDA_EVENT_NV
+
+ Table 3.9 Attributes Accepted by eglGetSyncAttrib
+
+
+Interactions with EGL versions prior to 1.5
+
+ This extension may be used with earlier versions of EGL, provided
+ that the EGL_KHR_fence_sync extension is supported. In this case,
+ replace all references to sync functions and tokens with
+ corresponding KHR-suffixed versions (e.g., replace eglCreateSync
+ with eglCreateSyncKHR).
+
+ Additionally, this extension may be used with the 64-bit types and
+ functions added to EGL_KHR_fence_sync introduced by
+ EGL_KHR_cl_event2 (EGLAttribKHR and eglCreateSync64KHR). Support
+ for OpenCL events is not required.
+
+Issues
+
+ None
+
+Revision History
+
+ Version 2, 2018/06/28 (Daniel Kartch)
+ - Rewritten to clearly define interactions with
+ EGL_EXT_sync_reuse, without requiring it
+ - Fixed incorrect CUDA function name
+ - Fixed table spacing
+
+ Version 1, 2014/06/20 (Michael Chock)
+ - initial version.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt
new file mode 100644
index 0000000..b46b3ca
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt
@@ -0,0 +1,142 @@
+Name
+
+ NV_depth_nonlinear
+
+Name Strings
+
+ GL_NV_depth_nonlinear
+ EGL_NV_depth_nonlinear
+
+Contact
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2005 - 2007.
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified: 2007/03/20
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #18
+ OpenGL ES Extension #73
+
+Dependencies
+
+ Written based on the wording of the OpenGL 2.0 Specification and
+ EGL 1.2 Specification.
+
+ Requires EGL 1.1.
+
+ Requires OpenGL-ES 1.0.
+
+ OES_framebuffer_object affects the wording of this specification.
+
+Overview
+
+ Due to the perspective divide, conventional integer Z-buffers have
+ a hyperbolic distribution of encodings between the near plane
+ and the far plane. This can result in inaccurate depth testing,
+ particularly when the number of depth buffer bits is small
+ and objects are rendered near the far plane.
+
+ Particularly when the number of depth buffer bits is limited
+ (desirable and/or required in low-memory environments), artifacts
+ due to this loss of precision may occur even with relatively
+ modest far plane-to-near plane ratios (e.g., greater than 100:1).
+
+ Many attempts have been made to provide alternate encodings for
+ Z-buffer (or alternate formulations for the stored depth) to
+ reduce the artifacts caused by perspective division, such as
+ W-buffers, Z-complement buffers and floating-point 1-Z buffers.
+
+ This extension adds a non-linear encoded Z buffer to OpenGL,
+ which can improve the practically useful range of, e.g. 16-bit
+ depth buffers by up to a factor of 16, greatly improving depth
+ test quality in applications where the ratio between the near
+ and far planes can not be as tightly controlled.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a valid sized internal format by all functions accepting
+ sized internal formats with a base format of DEPTH_COMPONENT
+
+ DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
+
+ Accepted by the <attrib_list> parameter of eglChooseConfig and
+ eglCreatePbufferSurface, and by the <attribute> parameter of
+ eglGetConfigAttrib
+
+ EGL_DEPTH_ENCODING_NV 0x30E2
+
+ Accepted as a value in the <attrib_list> parameter of eglChooseConfig
+ and eglCreatePbufferSurface, and returned in the <value> parameter
+ of eglGetConfigAttrib
+
+ EGL_DEPTH_ENCODING_NONE_NV 0
+ EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+
+Changes to the OpenGL 2.0 Specification
+
+ Add the following line to table 3.16 (p. 154)
+
+ +--------------------------------+-----------------+------+
+ | Sized Internal Format | Base Internal | D |
+ | | Format | Bits |
+ +--------------------------------+-----------------+------+
+ | DEPTH_COMPONENT16_NONLINEAR_NV | DEPTH_COMPONENT | 16 |
+ +--------------------------------+-----------------+------+
+
+Changes to the EGL 1.2 Specification
+
+ Add the following line to table 3.1 (p. 14)
+
+ +--------------------------+------+---------------------------------------+
+ | Attribute | Type | Notes |
+ +--------------------------+------+---------------------------------------+
+ | EGL_DEPTH_ENCODING_NV | enum | Type of depth-buffer encoding employed|
+ +--------------------------+------+---------------------------------------+
+
+ Modify the description of the depth buffer in Section 3.4 (p. 15)
+
+ "The depth buffer is used only by OpenGL ES. It contains fragment depth
+ (Z) information generated during rasterization. EGL_DEPTH_SIZE indicates
+ the depth of this buffer in bits, and EGL_DEPTH_ENCODING_NV indicates which
+ alternate depth-buffer encoding (if any) should be used. Legal values for
+ EGL_DEPTH_ENCODING_NV are: EGL_DONT_CARE, EGL_DEPTH_ENCODING_NONE_NV and
+ EGL_DEPTH_ENCODING_NONLINEAR_NV."
+
+ Add the following line to table 3.4 (p. 20)
+
+ +-----------------------+---------------+-----------+-------+----------+
+ | Attribute | Default | Selection | Sort | Sort |
+ | | | Criteria | Order | Priority |
+ +-----------------------+---------------+-----------+-------+----------+
+ | EGL_DEPTH_ENCODING_NV | EGL_DONT_CARE | Exact | None | - |
+ +-----------------------+---------------+-------------------+----------+
+
+Issues
+
+ None
+
+Revision History
+
+#1.0 - 20.03.2007
+
+ Renumbered enumerants. Reformatted to 80 columns.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt
new file mode 100644
index 0000000..1fdc5d6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt
@@ -0,0 +1,91 @@
+Name
+
+ NV_device_cuda
+
+Name Strings
+
+ EGL_NV_device_cuda
+
+Contributors
+
+ Michael Chock
+ James Jones
+
+Contact
+
+ Michael Chock (mchock 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, June 21, 2014
+
+Number
+
+ EGL Extension #74
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 as
+ modified by EGL_EXT_device_base.
+
+ EGL_EXT_device_base is required.
+
+Overview
+
+ EGL and CUDA both have the capability to drive multiple devices,
+ such as GPUs, within a single system. To interoperate with one
+ another, both APIs must have compatible notions of such devices.
+ This extension defines a mapping from an EGL device to a CUDA device
+ enumerant.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
+
+ EGL_CUDA_DEVICE_NV 0x323A
+
+Add a new section 2.1.3 (CUDA Devices) after 2.1.2 (Devices)
+
+ "Somewhat analogous to an EGL device, a CUDA device establishes a
+ namespace for CUDA operations. In the CUDA API, such a device is
+ represented by a C int. For more details, see the CUDA
+ documentation."
+
+Changes to section 3.2 (Device Enumeration)
+
+ Replace the paragraph immediately following the prototype for
+ eglQueryDeviceAttribEXT:
+
+ "The only valid value of <attribute> is EGL_CUDA_DEVICE_NV. On
+ success, EGL_TRUE is returned, and a valid CUDA device handle
+ corresponding to the EGL device is returned in <value>. This handle
+ is compatible with CUDA API functions."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 1, 2014/06/24 (Michael Chock)
+ - initial version.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt
new file mode 100644
index 0000000..9004652
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt
@@ -0,0 +1,157 @@
+Name
+
+ NV_triple_buffer
+ NV_quadruple_buffer
+
+Name Strings
+
+ EGL_NV_triple_buffer
+ EGL_NV_quadruple_buffer
+
+Contributors
+
+ Daniel Kartch, NVIDIA Corporation
+ Tom McReynolds, NVIDIA Corporation
+ Santanu Thangaraj, NVIDIA Corporation
+
+Contact
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - February 28, 2019
+
+Number
+
+ 133
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.3
+ Specification.
+
+Overview
+
+ NV_triple_buffer and NV_quadruple_buffer allow applications to
+ request additional back buffers, in order to produce greater and
+ less variable frame rates.
+
+ This document describes two related extensions, one dependent on
+ the other. Implementations may choose to support only
+ NV_triple_buffer and not NV_quadruple_buffer, but not vice versa.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by NV_triple_buffer:
+
+ Accepted as a value for EGL_RENDER_BUFFER in the <attrib_list>
+ parameter of eglCreateWindowSurface:
+
+ EGL_TRIPLE_BUFFER_NV 0x3230
+
+ Added by NV_quadruple_buffer:
+
+ Accepted as a value for EGL_RENDER_BUFFER in the <attrib_list>
+ parameter of eglCreateWindowSurface:
+
+ EGL_QUADRUPLE_BUFFER_NV 0x3231
+
+Additions to the EGL 1.3 Specification:
+
+ Insert after third sentence of second paragraph of Section 2.2.2
+ (Rendering Models):
+
+ Windows may have more than one back buffer, allowing rendering
+ of a new frame to proceed while the copy requested by
+ eglSwapBuffers is still pending.
+
+ Replace the third sentence of the EGL_RENDER_BUFFER description in
+ Section 3.5.1 (Creating On-Screen Rendering Surfaces):
+
+ If its value is EGL_BACK_BUFFER, EGL_TRIPLE_BUFFER_NV, or
+ EGL_QUADRUPLE_BUFFER_NV, then client APIs should render into
+ the current back buffer. The implementation should provide
+ at least one, two, or three back buffers, respectively, which
+ will be used in rotation each frame.
+
+ Change first sentence of third bullet point of eglQueryContext
+ description in Section 3.7.4 (Context Queries):
+
+ If the context is bound to a window surface, then either
+ EGL_SINGLE_BUFFER, EGL_BACK_BUFFER, EGL_TRIPLE_BUFFER_NV, or
+ EGL_QUADRUPLE_BUFFER_NV may be returned.
+
+ Replace first sentence of eglSwapBuffers description in
+ Section 3.9.1
+ (Posting to a Window):
+
+ If surface is a back-buffered window surface, then the current
+ color buffer is copied to the native window associated with
+ that surface. If there is more than one back buffer, then the
+ next color buffer in rotation becomes current, and rendering
+ of the next frame may proceed before the copy takes place,
+ provided any previous swaps from the new current buffer have
+ completed.
+
+Issues
+
+ 1. Why do we need triple-buffering?
+
+ RESOLVED: With only a single back buffer and a non-zero swap
+ interval, eglSwapBuffers must block rendering to the back-
+ buffer until the copy has completed. This can leave the CPU
+ and/or GPU idle, wasting valuable compute time, and possibly
+ cause the next frame to be delivered later than otherwise could
+ have been. Additional buffers allow rendering to continue even
+ when a frame is awaiting display, maximizing our use of
+ computational resources.
+
+ 2. Why quadruple-buffering? Isn't triple-buffering enough to
+ produce frames as fast as the processor(s) and swap interval
+ allow?
+
+ RESOLVED: When there is only a single rendering stream
+ operating on a system, triple-buffering is sufficient. However,
+ if other threads are contending for resources, variable
+ latencies may be introduced. This is especially problematic
+ with video, where any deviation in frame rate from the recorded
+ media can produce visible artifacts. Additional buffers smooth
+ out these latencies, allowing a steady frame rate.
+
+ 3. Then why not arbitrary n-buffering?
+
+ RESOLVED: The TRIPLE/QUADRUPLE buffer specification fits nicely
+ into the RENDER_BUFFER attribute already in use for
+ eglCreateWindowSurface. Arbitrary buffer counts would require a
+ new attribute. Additionally, case studies indicated no
+ significant benefit to using more than three back buffers,
+ especially when factoring in the added memory cost.
+
+Revision History
+
+ #2 (February 28, 2019) Santanu Thangaraj
+ - Marked issues 1,2 and 3 as resolved.
+ - Included extension type section.
+ - Corrected line length violations.
+
+ #1 (August 12, 2008) Daniel Kartch
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt
new file mode 100644
index 0000000..ce35633
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt
@@ -0,0 +1,137 @@
+Name
+
+ NV_native_query
+
+Name Strings
+
+ EGL_NV_native_query
+
+Contributors
+
+ Mathias Heyer, NVIDIA
+ Daniel Kartch, NVIDIA
+ Peter Pipkorn, NVIDIA
+ Acorn Pooley, NVIDIA
+ Greg Roth, NVIDIA
+
+Contacts
+
+ Peter Pipkorn, NVIDIA Corporation (ppipkorn 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 0.4, 25 Sept, 2012
+
+Number
+
+ EGL Extension #45
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows an application to query which native display,
+ pixmap and surface corresponds to a EGL object.
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryNativeDisplayNV(
+ EGLDisplay dpy,
+ EGLNativeDisplayType* display_id);
+
+ EGLBoolean eglQueryNativeWindowNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativeWindowType* window);
+
+ EGLBoolean eglQueryNativePixmapNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativePixmapType* pixmap);
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ In Chapter 3.2, after the description of eglInitialize and before the
+ description of eglTerminate insert
+
+ "While initialized, the native display that corresponds to an
+ EGLDisplay can retrieved by
+
+ EGLBoolean eglQueryNativeDisplayNV(
+ EGLDisplay dpy,
+ EGLNativeDisplayType* display_id);
+
+ If the <dpy> is a valid and initialized EGLDisplay, EGL_TRUE
+ will be returned and the native display handle will be written
+ to <display_id>. Otherwise EGL_FALSE will be returned and the
+ contents of <display_id> are left untouched. If the <dpy> is
+ not valid, an EGL_BAD_DISPLAY error will be generated. If <dpy>
+ is not initialized, an EGL_NOT_INITIALIZED error will be
+ generated. If <display_id> is NULL, an EGL_BAD_PARAMETER error
+ will be generated.
+
+ In Chapter 3.5 Rendering Surfaces, after section 3.5.1 insert
+
+ "The native window that corresponds to an EGLSurface can be
+ retrieved by
+
+ EGLBoolean eglQueryNativeWindowNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativeWindowType* win);
+
+ The corresponding native window will be written to <win>,
+ and EGL_TRUE will be returned. If the call fails, EGL_FALSE
+ will be returned, and content of <win> will not be modified.
+ If <dpy> is not a valid EGLDisplay, an EGL_BAD_DISPLAY error
+ will be generated. If <dpy> is not initialized, an EGL_NOT_-
+ INITIALIZED error will be generated. If <surf> is not a valid
+ EGLSurface, or <surf> does not have a corresponding native
+ window, an EGL_BAD_SURFACE error will be generated." If <win>
+ is NULL, an EGL_BAD_PARAMETER error will be generated.
+
+ After section 3.5.4 Creating Native Pixmap Rendering Surfaces insert
+
+ "The native pixmap that corresponds to an EGLSurface can be
+ retrieved by
+
+ EGLBoolean eglQueryNativePixmapNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativePixmapType* pixmap);
+
+ The corresponding native pixmap will be written to <pixmap>,
+ and EGL_TRUE will be returned. If the call fails, EGL_FALSE
+ will be returned, and the content of <pixmap> will not be
+ modified. If <dpy> is not a valid EGLDisplay, an EGL_BAD_-
+ DISPLAY error will be generated. If <dpy> is not initialized,
+ an EGL_NOT_INITIALIZED error will be generated. If <surf> is
+ not a valid EGLSurface, or <surf> does not have a corresponding
+ native pixmap, an EGL_BAD_SURFACE error will be generated." If
+ <pixmap> is NULL, an EGL_BAD_PARAMETER error will be
+ generated.
+
+Issues
+
+Revision History
+#4 (Greg Roth, Sept 25, 2012)
+ - Further document all potential errors for all functions
+
+#3 (Daniel Kartch, August 30, 2011)
+ - Add restriction that EGLDisplay be initialized
+
+#2 (Peter Pipkorn, December 16, 2009)
+ - Minor cleanup
+
+#1 (Peter Pipkorn, December 15, 2009)
+ - First Draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt
new file mode 100644
index 0000000..6b7c340
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt
@@ -0,0 +1,85 @@
+Name
+
+ NV_post_convert_rounding
+
+Name Strings
+
+ EGL_NV_post_convert_rounding
+
+Contributors
+
+ Bryan Eyler, NVIDIA
+ Daniel Kartch, NVIDIA
+ Greg Roth, NVIDIA
+ Mark Vojkovich, NVIDIA
+ Nicolai de Haan Brogger, NVIDIA
+ Peter Pipkorn, NVIDIA
+
+Contacts
+
+ Nicolai de Haan Brogger, NVIDIA Corporation (nicolaid 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Last Modified 17 Oct 2012
+ Version 2
+
+Number
+
+ EGL Extension #44
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension defines the conversions for posting operations
+ when the destination's number of components or component sizes do
+ not match the color buffer. This extension supports posting a 24 bit
+ (888) color buffer to a 16 bit (565) destination buffer, posting a
+ 16 bit (565) color buffer to a 24 bit (888) destination buffer, and
+ posting a component that is present in the source buffer, but not
+ present in the destination buffer.
+
+New Procedures and Functions
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ In Chapter 3.9.3, replace paragraph 3 with:
+ " For each color component, if the bit depth of the color
+ buffer being posted is 24 (888) and the destination buffer is
+ 16 (565), the lower order bits of the color buffer are
+ truncated.
+
+ If the bit depth of the destination buffer is 24 (888) and the
+ color buffer being posted is 16 bit (565), a RGB gain and
+ rounding operation is applied to the color buffer values prior
+ to posting. The destination buffer will contain the rounded
+ (nearest) and clamped result of the vector product of [1.03125,
+ 1.015625, 1.03125] with the RGB values of the color buffer.
+
+ For cases where a component is present in the color buffer but
+ the matching component is not present in the destination
+ buffer, that component will be dropped."
+
+ In Chapter 3.9.3, remove paragraph 5.
+
+Issues
+
+Revision History
+#2 (Greg Roth, Oct 17, 2012)
+ - Clarify limitations and reformat a bit.
+
+#1 (Nicolai de Haan Brogger, July 07, 2010)
+ - First Draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt
new file mode 100644
index 0000000..69c113c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt
@@ -0,0 +1,241 @@
+Name
+
+ NV_post_sub_buffer
+
+Name Strings
+
+ EGL_NV_post_sub_buffer
+
+Contributors
+
+ Arcady Goldmints-Orlov
+ James Jones
+ Daniel Kartch
+
+Contact
+
+ James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)
+
+Status
+
+ Draft.
+
+Version
+
+ Version 3, November 5, 2010
+
+Number
+
+ EGL Extension #27
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.4
+ Specification
+
+Overview
+
+ Many EGL client APIs do not support rendering to window surfaces
+ directly, so there is no way to efficiently make small updates to
+ window surfaces. Applications that need to perform many small updates
+ must either use the back-buffer preservation flag which forces
+ eglSwapBuffers to copy the entire back surface, or redraw the entire
+ back buffer on every update and hope eglSwapBuffers is implemented
+ using buffer-flipping. This extension provides a 3rd alternative: a
+ function which posts a sub-rectangle of a window surface and
+ preserves the back-buffer contents.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint x, EGLint y,
+ EGLint width, EGLint height);
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface and by the
+ <attrib_list> parameter of eglCreateWindowSurface:
+
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the second paragraph of Section 3.5.1, page 27
+ (Creating On-Screen Rendering Surfaces)
+
+ "<attrib_list> specifies a list of attributes for the window. The list
+ has the same structure as described for eglChooseConfig. Attributes
+ that can be specified in <attrib_list> include EGL_POST_SUB_BUFFER_-
+ SUPPORTED_NV, EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_-
+ FORMAT."
+
+ Add the following between paragraphs 4 and 5 of Section 3.5.1, page 27
+ (Creating On-Screen Rendering Surfaces)
+
+ "EGL_POST_SUB_BUFFER_SUPPORTED_NV specifies whether the application
+ would perfer a surface that supports sub-buffer post operations, as
+ described in section 3.9.1. Its values can be EGL_TRUE, in which case
+ the implementation will attempt to allocate a surface that supports
+ sub-buffer posts, or EGL_FALSE, in which case the implementation will
+ not take sub-buffer post capabilities into account.
+
+ "Implementations may not be able to support sub-buffer post
+ mechanisms, or may support them only on some native windows. Use
+ eglQuerySurface to determine a surface's capabilities (see section
+ 3.5.6)."
+
+ Add the following entry to Table 3.5, page 36
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ -------------------------------- ------- ------------------------
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV boolean Surface can be used with
+ eglPostSubBufferNV
+
+ Add the following paragraph to Section 3.5.6, page 37
+ (Surface Attributes)
+
+ "Querying EGL_POST_SUB_BUFFER_SUPPORTED_NV returns EGL_TRUE if the
+ surface can use eglPostSubBufferNV (See section 3.9.1) to post sub-
+ rectangles of the back color buffer. Otherwise, EGL_FALSE is
+ returned."
+
+ Replace all but the last paragraph of section Section 3.9.1, page 50
+ (Posting to a Window)
+
+ "To post the color buffer to a window, call
+
+ EGLBoolean eglSwapBuffers(EGLDisplay dpy,
+ EGLSurface surface);
+
+ "To post a sub-rectangle of the color buffer to a window, call
+
+ EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
+ EGLSurface surface, EGLint x, EGLint y,
+ EGLint width, EGLint height);
+
+ "Where <x> and <y> are pixel offsets from the bottom-left corner of
+ <surface>.
+
+ "If <surface> is a back-buffered surface, then the requested portion
+ of the color buffer is copied to the native window associated with
+ that surface. If <surface> is a single-buffered window, pixmap, or
+ pbuffer surface, eglSwapBuffers and eglPostSubBufferNV have no
+ effect.
+
+ "The contents of ancillary buffers are always undefined after calling
+ eglSwapBuffers or eglPostSubBufferNV. The contents of the color
+ buffer are unchanged if eglPostSubBufferNV is called, or if
+ eglSwapBuffers is called and the value of the EGL_SWAP_BEHAVIOR
+ attribute of <surface> is EGL_BUFFER_PRESERVED. The value of EGL_-
+ SWAP_BEHAVIOR can be set for some surfaces using eglSurfaceAttrib, as
+ described in section 3.5.6.
+
+ "Native Window Resizing
+
+ "If the native window corresponding to <surface> has been resized
+ prior to the swap, <surface> must be resized to match. <surface> will
+ normally be resized by the EGL implementation at the time the native
+ window is resized. If the implementation cannot do this transparently
+ to the client, then eglSwapBuffers and eglPostSubBufferNV must
+ detect the change and resize <surface> prior to copying its pixels to
+ the native window. The sub-rectangle defined by <x>, <y>, <width>, and
+ <height> parameters to eglPostSubBufferNV will be clamped to the
+ extents of <surface>. If, after clamping, the rectangle contains no
+ pixels, eglPostSubBufferNV will have no effect."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the calling
+ thread's current context, eglSwapBuffers, eglPostSubBufferNV, and
+ eglCopyBuffers perform an implicit flush operation on the context
+ (glFlush for OpenGL or OpenGL ES context, vgFlush for an OpenVG
+ context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglPostSubBufferNV, or a native pixmap, for
+ eglCopyBuffers) should have the same number of components and
+ component sizes as the color buffer it's being copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifes the minimum number of video frame periods per color buffer
+ post operation for the window associated with the current context. The
+ interval takes effect when eglSwapBuffers or eglPostSubBufferNV is
+ first called subsequent to the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglPostSubBufferNV, and eglCopyBuffers return
+ EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglPostSubBufferNV are called and the native
+ window associated with <surface> is no longer valid, an EGL_BAD_-
+ NATIVE_WINDOW error is generated. If eglPostSubBufferNV is called
+ and <x>, <y>, <width>, or <height> are less than zero, EGL_BAD_-
+ PARAMETER is generated."
+
+Issues
+
+ 1. Should all surfaces be required to support sub-buffer posts if
+ this extension is supported?
+
+ RESOLVED: No. Some implementations may support multiple types of
+ native windows. Support for sub-surface posting is therefore a
+ per-surface property, so a surface query should be used to determine
+ which surfaces support sub-surface posts.
+
+ 2. What should this extension be called?
+
+ RESOLVED: Names considered EGL_NV_copy_sub_buffer, EGL_NV_present_sub-
+ surface, EGL_NV_post_sub_buffer. eglCopySubBuffer() sounded too
+ similar to eglCopyBuffer(), which operates on different types of
+ surfaces. EGL_present_sub_surface was originally chosen as it was
+ sufficiently different than eglCopyBuffer(), but based on internal
+ feedback, the term "Post" is preferable to "Present" because it is
+ already used in the EGL spec to describe buffer presentation
+ operations. "Buffer" was chosen over "surface" at this point as well,
+ because it is more consistent with the eglSwapBuffers() and
+ eglCopyBuffer() commands, and eglPostSubBuffer() is still
+ differentiated enough from eglCopyBuffer() that the two won't be
+ confused.
+
+Revision History
+
+#3 (James Jones, November 5, 2010)
+ -Renamed from NV_present_sub_surface to NV_post_sub_buffer based on
+ feedback from internal reviews.
+
+ -Allowed EGL_POST_SUB_BUFFER_SUPPORTED_NV to be used as a hint when
+ creating window surfaces.
+
+ -Clarified that eglSwapInterval applies to all color-buffer post
+ operations affecting on-screen surfaces, not just eglSwapBuffers.
+
+#2 (James Jones, November 1, 2010)
+ - Fixed a few typos.
+
+#1 (James Jones, October 22, 2010)
+ - Initial revision, based on GLX_MESA_copy_sub_buffer
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt
new file mode 100644
index 0000000..432fdbf
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt
@@ -0,0 +1,367 @@
+Name
+
+ NV_stream_consumer_eglimage
+
+Name Strings
+
+ EGL_NV_stream_consumer_eglimage
+
+Contributors
+
+ Mukund Keshava
+ James Jones
+ Daniel Kartch
+ Sandeep Shinde
+ Pyarelal Knowles
+ Leo Xu
+
+Contacts
+
+ Mukund Keshava, NVIDIA (mkeshava 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - November 27, 2019
+
+Number
+
+ EGL Extension #139
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Requires the EGL_EXT_sync_reuse extension.
+
+ This extension is written against the wording of the EGL 1.5
+ Specification
+
+Overview
+
+ An EGLStream consists of a sequence of image frames. This extension
+ allows these frames to be acquired as EGLImages. Frames from the
+ stream would be used as the content for the EGLImage.
+
+New Procedures and Functions
+
+ EGLBoolean eglStreamImageConsumerConnectNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint num_modifiers,
+ const EGLuint64KHR *modifiers,
+ const EGLAttrib* attrib_list);
+
+ EGLint eglQueryStreamConsumerEventNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLTime timeout,
+ EGLenum *event,
+ EGLAttrib *aux);
+
+ EGLBoolean eglStreamAcquireImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage *pImage,
+ EGLSync sync);
+
+ EGLBoolean eglStreamReleaseImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage image,
+ EGLSync sync);
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImage:
+
+ EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+
+ Returned as an <event> from eglQueryStreamConsumerEventNV:
+
+ EGL_STREAM_IMAGE_ADD_NV 0x3374
+ EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+ EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+
+Add to section "3.9 EGLImage Specification and Management" of
+the EGL 1.5 Specification, in the description of eglCreateImage:
+
+ "Values accepted for <target> are listed in Table 3.10, below.
+
+ +-------------------------------+-----------------------------------+
+ | <target> | Notes |
+ +-------------------------------+-----------------------------------+
+ | EGL_STREAM_CONSUMER_IMAGE_NV | Used with EGLStream objects |
+ +-------------------------------+-----------------------------------+
+ Table 3.10: Legal values for eglCreateImage target parameter.
+
+ If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, a new EGLImage will be
+ created for the next consumer image frame in the EGLStream
+ referenced by <buffer> which is not currently bound to an EGLImage.
+ If the stream's producer reuses memory buffers for multiple image
+ frames, then an EGLImage obtained in this way will persist for the
+ next image frame that uses the same buffer, unless destroyed in
+ the interim. Otherwise, the user must create a new EGLImage for
+ every frame. Creating the EGLImage does not guarantee that the
+ image contents will be ready for use. The EGLImage must first be
+ acquired from the stream after creation.
+
+ If the EGLImage created for a consumer image frame is destroyed via
+ eglDestroyImage, a new EGLImage needs to be created via
+ eglCreateImage for the same consumer image frame.
+
+ <dpy> must be a valid initialized display. <ctx> must be
+ EGL_NO_CONTEXT. <buffer> must be a handle to a valid EGLStream
+ object, cast into the type EGLClientBuffer.
+
+ Add to the list of error conditions for eglCreateImage:
+
+ "* If <target> is EGL_STREAM_CONSUMER_IMAGE_NV and <buffer> is
+ not a valid stream handle associated with <dpy>, the error
+ EGL_BAD_STREAM_KHR is generated.
+
+ * If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, and there are no
+ buffers in the <stream> currently or if there are no buffers
+ associated with the stream that are not already bound to
+ EGLImages EGL_BAD_ACCESS is generated.
+
+ eglCreateImage needs to be called with EGL_STREAM_CONSUMER_IMAGE_NV
+ as the <target> for every valid buffer in the EGLStream.
+
+Add section "3.10.2 Connecting an EGLStream to a consumer" in the
+EGL_KHR_stream extension with this:
+
+ 3.10.2.2 EGLImage consumer
+
+ Call
+
+ EGLBoolean eglStreamImageConsumerConnectNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint num_modifiers,
+ const EGLuint64KHR *modifiers,
+ const EGLAttrib* attrib_list);
+
+ to connect the EGLImage consumer to the <stream>. An EGLImage
+ consumer allows image frames inserted in the stream to be received
+ as EGLImages, which can then be bound to any other object which
+ supports EGLImage. For each image frame, an EGLImage must first be
+ created as described in section "3.9 EGLImage Specification and
+ Management" of the EGL 1.5 Specification, and then the frame
+ contents must be latched to the EGLImage as described below.
+
+ In <modifiers> the consumer can advertise an optional list of
+ supported DRM modifiers as described in
+ EXT_image_dma_buf_import_modifiers. This information could be
+ used by the producer to generate consumer supported image frames.
+
+ If not NULL, <attrib_list> points to an array of name/value
+ pairs, terminated by EGL_NONE. Currently no attributes are
+ supported.
+
+ On success, EGL_TRUE is returned.
+
+ - <stream> state is set to EGL_STREAM_STATE_CONNECTING_KHR
+ allowing the producer to be connected.
+
+ On failure, EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not the handle of a
+ valid EGLDisplay object.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if the <stream> state is not
+ EGL_STREAM_STATE_CREATED_KHR before
+ eglStreamImageConsumerConnectNV is called.
+
+ Call
+
+ EGLint eglQueryStreamConsumerEventNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLTime timeout,
+ EGLenum *event,
+ EGLAttrib *aux);
+
+ to query the <stream> for the next pending event.
+ eglQueryStreamConsumerEventNV returns in <event> the event type
+ and returns in <aux> additional data associated with some events.
+
+ If no event is pending at the time eglQueryStreamConsumerEventNV is
+ called, it will wait up to <timeout> nanoseconds for one to arrive
+ before returning. If <timeout> is EGL_FOREVER, the function will
+ not time out and will only return if an event arrives or the stream
+ becomes disconnected.
+
+ On success, EGL_TRUE is returned. A new event will be returned.
+ The valid events are as follows:
+
+ - EGL_STREAM_IMAGE_ADD_NV is returned if a buffer is present in
+ the stream which has not yet been bound to an EGLImage with
+ eglCreateImage.
+
+ - EGL_STREAM_IMAGE_REMOVE_NV indicates that a buffer has been
+ removed from the stream and its EGLImage, whose handle is
+ returned in <aux>, can be destroyed when the consumer
+ application no longer requires it.
+
+ - EGL_STREAM_IMAGE_AVAILABLE_NV indicates that there is a
+ new frame available in the stream that can be acquired via
+ eglStreamAcquireImageNV.
+
+ On failure, EGL_FALSE is returned and an error is generated and
+ <event> and <aux> are not modified.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ EGL_TIMEOUT_EXPIRED is returned if the <timeout> duration is
+ complete, and there are no valid events that occured in this
+ duration. The <event> and <aux> parameters are not modified.
+
+ Call
+
+ EGLBoolean eglStreamAcquireImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage *pImage,
+ EGLSync sync);
+
+ to "latch" the next image frame in the image stream from <stream>
+ into an EGLImage.
+
+ If <sync> is not EGL_NO_SYNC, then it must be an EGLSync with a type
+ of EGL_SYNC_FENCE, and it must be signaled (e.g., created with
+ EGL_SYNC_STATUS set to EGL_SIGNALED). eglStreamAcquireImageNV will
+ reset the state of <sync> to unsignaled, and <sync> will be signaled
+ when the producer is done writing to the frame.
+
+ If <sync> is EGL_NO_SYNC, then eglStreamAcquireImageNV ignores the
+ sync object.
+
+ On success, EGL_TRUE is returned.
+
+ - <pImage> will have the most recent frame from the <stream>
+
+ On failure, eglStreamAcquireImageNV returns EGL_FALSE, and an error
+ is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ - EGL_BAD_ACCESS is generated if there are no frames in the
+ <stream> that are available to acquire.
+
+ - EGL_BAD_PARAMETER is generated if <sync> is not a valid
+ EGLSync object or EGL_NO_SYNC.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not a fence sync.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not in the signaled state.
+
+ Call
+
+ EGLBoolean eglStreamReleaseImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage image,
+ EGLSync sync);
+
+ to release the <image> frame back to the stream. This takes a
+ <sync> that indicates when the consumer will be done using the
+ frame. Before calling eglStreamReleaseImageNV, the <image>
+ needs to have previously been acquired with
+ eglStreamAcquireImageNV.
+
+ If <sync> is not EGL_NO_SYNC, then it must be an EGLSync with a
+ typeof EGL_SYNC_FENCE. eglStreamReleaseImageNV makes a copy of the
+ sync object, so the caller is free to delete or reuse <sync> as it
+ chooses.
+
+ If <sync> is EGL_NO_SYNC, then the sync object is ignored.
+
+ On success, EGL_TRUE is returned, and the frame is successfully
+ returned back to the stream.
+
+ On failure, eglStreamReleaseImageNV returns EGL_FALSE, and an
+ error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_PARAMETER is generated if <image> is either invalid,
+ or is not held by the consumer.
+
+ - EGL_BAD_PARAMETER is generated if <sync> is not a valid
+ EGLSync object or EGL_NO_SYNC.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not a fence sync.
+
+ If an acquired EGLImage has not yet released when eglDestroyImage
+ is called, then, then an implicit eglStreamReleaseImageNV will be
+ called.
+
+Add a new subsection 3.10.4.3.1 at the end of section "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute" in the EGL_KHR_stream extension spec:
+
+ 3.10.4.3.1 Interaction with EGL_STREAM_STATE_KHR
+
+ Image frames that have been presented to the stream on the producer
+ side, but have not been bound to an EGLImage on the consumer side
+ yet, do not affect the EGLStream state.
+
+ If a new frame is presented to the stream, the stream state goes
+ into EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR only if this frame is
+ bound to an EGLImage on the consumer, and if it has not already
+ been acquired.
+
+ If an EGLImage bound on the consumer side has been destroyed via
+ eglDestroyImage, then the stream goes into
+ EGL_STREAM_STATE_EMPTY_KHR if there are no consumer frames left,
+ that are bound to an EGLImage.
+
+Issues
+
+
+Revision History
+
+ #5 (December 15, 2021) Kyle Brenneman
+ - Corrected and clarified the <sync> parameters
+
+ #4 (December 10, 2021) Kyle Brenneman
+ - Added the missing const modifier for input parameters
+
+ #3 (November 27, 2019) Mukund Keshava
+ - Refined some subsections with more details
+
+ #2 (November 22, 2019) Mukund Keshava
+ - Refined some subsections with more details
+ - Added new subsection 3.10.4.3.1
+
+ #1 (November 13, 2019) Mukund Keshava
+ - initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
new file mode 100644
index 0000000..4aa0a66
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
@@ -0,0 +1,280 @@
+Name
+
+ NV_stream_consumer_gltexture_yuv
+
+Name Strings
+
+ EGL_NV_stream_consumer_gltexture_yuv
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+ Nikhil Mahale
+ Daniel Koch
+ Jeff Gilbert
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - November 14, 2017
+
+Number
+
+ EGL Extension #94
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_consumer_gltexture
+ References EGL_EXT_yuv_surface
+
+Interactions with EGL_EXT_yuv_surface
+
+ This extension makes use of several tokens defined in the
+ EGL_EXT_yuv_surface extension spec. However support for this
+ EGLStream extension does not require the EGLSurface extension, or
+ vice versa. Only the tokens are shared.
+
+Overview
+
+ The EGL_KHR_stream_consumer_gltexture extension allows EGLStream
+ frames to be latched to a GL texture for use in rendering. These
+ frames are assumed to be stored in RGB format and accessed as such
+ by shader programs. If the producer uses a different color space,
+ the stream implementation must perform an implicit conversion.
+
+ In cases where the producer operates in a native YUV color space, it
+ may be desirable for shaders to directly access the YUV components,
+ without conversion. This extension adds a new variant of the
+ function to bind GL textures as stream consumers which allows
+ attributes to specify the color space.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list)
+
+New Tokens
+
+ Accepted as attribute name in <attrib_list> by
+ eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+ EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+ EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+
+Reused Tokens From EGL_EXT_yuv_surface
+
+ Accepted as attribute name in <attrib_list> by
+ eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+
+ Accepted as value for EGL_COLOR_BUFFER_TYPE attribute in
+ <attrib_list> by eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_BUFFER_EXT 0x3300
+
+Replace entire description of eglStreamConsumerGLTextureExternalKHR in
+section "3.10.2.1 GL Texture External consumer" of
+EGL_KHR_stream_consumer_gltexture extension.
+
+ Call
+
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list)
+
+ to connect one or more texture objects in the OpenGL or OpenGL ES
+ context current to the calling thread as the consumer(s) of
+ <stream>. The identity and format of the texture objects used are
+ determined by <attrib_list> and the current context state.
+
+ <attrib_list> must either be NULL or point to an array of name/value
+ pairs terminated by EGL_NONE. Valid attribute names are
+ EGL_COLOR_BUFFER_TYPE, EGL_YUV_NUMBER_OF_PLANES_EXT, and
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV.
+
+ If the value of EGL_COLOR_BUFFER_TYPE is EGL_RGB_BUFFER (the
+ default), then the stream will be connected to a single texture
+ whose contents are available to shaders as RGB values. If the value
+ of EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT the stream will be
+ connected to some number of planar textures, determined by the value
+ of EGL_YUV_NUMBER_OF_PLANES_EXT, whose contents are available to
+ shaders as YUV values. The mapping between YUV values and texture
+ contents is described in table 3.10.2.1.
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT, the default value of
+ EGL_YUV_NUMBER_OF_PLANES_EXT is 2. Otherwise it is 0.
+
+ PLANE0 PLANE1 PLANE2
+ # Planes Values Fields Values Fields Values Fields
+ --------------------------------------------------------------
+ 1 YUV XYZ unused unused
+ 2 Y X UV XY unused
+ 3 Y X U X V X
+
+ Table 3.10.2.1 YUV Planar Texture Mappings
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_RGB_BUFFER, the stream is connected
+ to the texture object currently bound to the active texture unit's
+ GL_TEXTURE_EXTERNAL_OES texture target in the current context.
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT, attribute values
+ must be specified for EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV for all <n>
+ less than the number of planes. The value of each attribute must
+ either be a valid texture unit index or EGL_NONE. No two of these
+ attributes may specify the same valid texture unit index or
+ reference separate texture units bound to the same texture object.
+ Plane <n> of the stream contents will be connected to the texture
+ object currently bound to the indexed texture unit's
+ GL_TEXTURE_EXTERNAL_OES texture target in the current context, or
+ will be left unused if the index is EGL_NONE.
+
+ Once connected, the stream will remain associated with the initial
+ texture object(s) even if the texture units are bound to new
+ textures.
+
+ (Note: Before this can succeed a GL_TEXTURE_EXTERNAL_OES texture
+ must be bound to the appropriate texture units of the GL context
+ current to the calling thread. To create a GL_TEXTURE_EXTERNAL_OES
+ texture and bind it to the current context, call glBindTexture()
+ with <target> set to GL_TEXTURE_EXTERNAL_OES and <texture> set to
+ the name of the GL_TEXTURE_EXTERNAL_OES (which may or may not have
+ previously been created). This is described in the
+ GL_NV_EGL_stream_consumer_external extension.)
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if any attribute name in
+ <attrib_list> is not a valid attribute.
+
+ - EGL_BAD_PARAMETER is generated if the value of
+ EGL_COLOR_BUFFER_TYPE is not EGL_RGB_BUFFER or
+ EGL_YUV_BUFFER_EXT.
+
+ - EGL_BAD_MATCH is generated if EGL_COLOR_BUFFER_TYPE is
+ EGL_RGB_BUFFER and EGL_YUV_NUMBER_OF_PLANES_EXT is not 0, or
+ if EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT and
+ EGL_YUV_NUMBER_OF_PLANES_EXT is not 1, 2, or 3.
+
+ - EGL_BAD_MATCH is generated if any
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV is not specified for any <n>
+ less than EGL_YUV_NUMBER_OF_PLANES_EXT, or if it is specified
+ for any <n> greater than or equal to
+ EGL_YUV_NUMBER_OF_PLANES_EXT.
+
+ - EGL_BAD_ACCESS is generated if any
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV is set to anything other than
+ a valid texture unit index or EGL_NONE.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated unless nonzero texture object
+ names are bound the GL_TEXTURE_EXTERNAL_OES texture target
+ of each of the appropriate texture units of the GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated if more than one planar surface
+ would be bound to the same texture object.
+
+ - EGL_BAD_ACCESS is generated if the implementation cannot
+ support the requested planar arrangement.
+
+ On success the texture(s) are connected to the <stream>, <stream>
+ is placed in the EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE
+ is returned.
+
+ When a producer is later connected, if it cannot support the planar
+ arrangement of the GL texture connection, it will fail with an
+ EGL_BAD_ACCESS error.
+
+ If any texture is later deleted, connected to a different
+ EGLStream, or connected to an EGLImage, then <stream> will be
+ placed into the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ If the <stream> is later destroyed then the textures will be
+ "incomplete" until they are connected to a new EGLStream, connected
+ to a new EGLImage, or deleted.
+
+ The function
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ is equivalent to eglStreamConsumerGLTextureExternalAttribsNV with
+ <attrib_list> list set to NULL.
+
+In the remainder of section "3.10.2.1 GL Texture External consumer",
+replace all singular references to "texture" with "textures" and make
+appropriate grammatical modifications.
+
+Issues
+
+ 1. This competes with GL_EXT_yuv_target as a means for specifying
+ how YUV values can be directly accessed by a texture shader
+ without conversion to RGB. However, that extension also requires
+ a means to render to YUV surfaces in addition to using them as
+ textures. Should we go with the approach used here or create a
+ GL extension which defines a subset GL_EXT_yuv_target?
+
+ RESOLVED: The extension as is serves immediate needs. Conflicts
+ and overlap with other extensions will be addressed if and when
+ there is a need to promote to EXT.
+
+ 2. This also contradicts how previous extensions for EXTERNAL GL
+ textures bind multiplanar surfaces, using separate texture
+ objects rather than a single virtual texture object which
+ requires multiple texture units. This allows the application
+ greater control of the planar arrangement, and the ability to
+ leave planes unbound, which may reduce overhead for the
+ producer. But it makes applications less portabile if the
+ desired arrangement isn't supported.
+
+ RESOLVED: The extension as is serves immediate needs. Conflicts
+ and overlap with other extensions will be addressed if and when
+ there is a need to promote to EXT.
+
+Revision History
+
+ #4 (November 14, 2017) Mozilla Corporation
+ - Const-qualify attrib_list.
+
+ #3 (August 19, 2015) NVIDIA Corporation
+ - Added enum values.
+ - Cleaned up and added contact info for publication.
+
+ #2 (May 6, 2015) NVIDIA Corporation
+ - Consolidated error codes to make GL interaction simpler.
+
+ #1 (April 15, 2015) NVIDIA Corporation
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt
new file mode 100644
index 0000000..16716b0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt
@@ -0,0 +1,137 @@
+Name
+
+ NV_stream_dma
+
+Name Strings
+
+ EGL_NV_stream_dma
+
+Contributors
+
+ Santanu Thangaraj
+ Daniel Kartch
+ Arihant Jejani
+
+Contacts
+
+ Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
+ Arihant Jejani, NVIDIA (ajejani 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - April 15, 2019
+
+Number
+
+ 135
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_NV_stream_remote extension.
+
+ Requires EGL_NV_stream_cross_system extension.
+
+ Interacts with EGL_NV_stream_socket extensions.
+
+Overview:
+
+ This extension provides the framework for performing DMA transfers
+ between opposite ends of a single stream, if there is no shared
+ memory available between them.
+
+ In case of cross system streams the buffer contents of one end of
+ the stream is transferred to other end using sockets by
+ EGL_NV_stream_socket extension. Transferring buffer contents
+ through sockets is slower compared to DMA transfers. Since DMA
+ transfers have higher throughput compared to sockets, using
+ EGL_NV_stream_dma extension, applications can request EGL to
+ utilize DMA channels to perform buffer copies.
+
+New types
+
+ None
+
+New Procedures and functions
+
+ None
+
+New Tokens
+
+ Accepted as attribute names in eglCreateStreamKHR,
+ eglCreateStreamAttribKHR, eglQueryStreamKHR, and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_DMA_NV 0x3371
+ EGL_STREAM_DMA_SERVER_NV 0x3372
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in
+EGL_KHR stream:
+ - EGL_BAD_MATCH is generated if the value of EGL_STREAM_DMA_NV is
+ neither EGL_TRUE nor EGL_FALSE.
+ - EGL_BAD_MATCH is generated if the value of
+ EGL_STREAM_DMA_SERVER_NV is not EGL_DONT_CARE or a valid
+ DMA server identifier as defined by the platform.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ ------------------------ ----------- ------ ----------
+ EGL_STREAM_DMA_NV io EGLint 3.10.4.x
+ EGL_STREAM_DMA_SERVER_NV io platform dependent 3.10.4.x+1
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_DMA_NV Attribute
+
+ The EGL_STREAM_DMA_NV attribute may be set when the stream is
+ created, and indicates whether the DMA channels have to be used to
+ transfer the buffer contents from producer to consumer. Legal
+ values are EGL_TRUE or EGL_FALSE. The default value is EGL_FALSE.
+
+ A value of EGL_TRUE indicates that EGL has to use DMA channels to
+ transfer buffers from producer to consumer.
+
+ If EGL_FALSE is specified, DMA channels will not be utilized for
+ buffer transfers.
+
+ 3.10.4.x+1 EGL_STREAM_DMA_SERVER_NV Attribute
+
+ The EGL_STREAM_DMA_SERVER_NV attribute is a platform dependent
+ identifier which may be set when the stream is created and it
+ indicates the server, which must be contacted to handle DMA
+ transfers, if that server is not local. Legal values, aside from
+ EGL_DONT_CARE, are determined by the implementation. The default
+ value is EGL_DONT_CARE.
+
+Issues
+
+ 1. What happens when application requests DMA copy using
+ EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
+ eglCreateStreamAttribKHR API, but the system does not support
+ access to DMA channels?
+
+ RESOLVED: The functions return EGL_NO_STREAM_KHR and
+ EGL_BAD_ATTRIBUTE error is set.
+
+ 2. What happens when application requests DMA copy using
+ EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
+ eglCreateStreamAttribKHR API, and the system supports DMA
+ channels, but currently none of the channels are available for
+ use?
+
+ RESOLVED: The functions return EGL_NO_STREAM_KHR and
+ EGL_BAD_ATTRIBUTE error is set.
+
+Revision History
+
+ #1 (April 15, 2019) Santanu Thangaraj
+ - Initial version
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt
new file mode 100644
index 0000000..8199487
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt
@@ -0,0 +1,105 @@
+Name
+
+ NV_stream_fifo_next
+
+Name Strings
+
+ EGL_NV_stream_fifo_next
+
+Contributors
+
+ Daniel Kartch
+ Miguel A. Vico
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - October 27, 2016
+
+Number
+
+ EGL Extension #110
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_fifo
+
+Overview
+
+ When operating on a FIFO stream, a consumer may need to know the
+ timestamp associated with the next frame in the stream before
+ deciding whether to acquire it or reuse the previous frame. In the
+ case of a FIFO size of 1, the EGL_STREAM_TIME_PRODUCER_KHR attribute
+ is sufficient to determine this. However, when the size is greater
+ than 1, there may be frames available with earlier time stamps than
+ the one most recently inserted by the producer. This extension
+ enables querying of the next pending frame in a stream.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <attribute> parameter of eglQueryStreamu64KHR
+
+ EGL_PENDING_FRAME_NV 0x3329
+
+ Accepted as the <attribute> parameter of eglQueryStreamTimeKHR
+
+ EGL_STREAM_TIME_PENDING_NV 0x332A
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in the EGL_KHR_stream
+extension spec:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------------ --------
+ EGL_PENDING_FRAME_NV ro EGLuint64KHR 3.10.4.x
+ EGL_STREAM_TIME_PENDING_NV ro EGLTimeKHR 3.10.4.y
+
+Add new subsections to section "3.10.4 EGLStream Attributes" in the
+EGL_KHR_stream extension spec
+
+ 3.10.4.x EGL_PENDING_FRAME_NV Attribute
+
+ The EGL_PENDING_FRAME_NV attribute indicates the frame number of the
+ image frame that would be obtained if an acquire operation were
+ performed at the time of the query. This is the value that
+ EGL_PRODUCER_FRAME_KHR contained just after this image frame was
+ inserted into the stream.
+
+ 3.10.4.y EGL_STREAM_TIME_PENDING_NV Attribute
+
+ The EGL_STREAM_TIME_PENDING_NV attribute indicates the timestamp of
+ the image frame that would be obtained if an acquire operation were
+ performed at the time of the query.
+
+Issues
+
+ None
+
+Revision History
+
+ #3 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #2 (April 2nd, 2015) Miguel A. Vico
+ - Assigned enumerated values for constants.
+
+ #1 (March 20th, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt
new file mode 100644
index 0000000..f34804f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt
@@ -0,0 +1,211 @@
+Name
+
+ NV_stream_fifo_synchronous
+
+Name Strings
+
+ EGL_NV_stream_fifo_synchronous
+
+Contributors
+
+ Daniel Kartch
+ Adam Cheney
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - October 27, 2016
+
+Number
+
+ EGL Extension #111
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_fifo
+
+Interactions with EGL_NV_stream_sync and
+EGL_KHR_stream_consumer_gltexture
+
+ This extension affects implementations of stream synchronization and
+ GL texture consumer extensions in that it alters when functions
+ waiting for new frames will be unblocked. However, as these waits
+ are still tied to transitions to the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILALBLE_KHR state, no changes are
+ required to the wording of those specifications.
+
+Overview
+
+ On platforms which support asynchronous rendering, frames may be
+ inserted into a stream by the producer and become available to the
+ consumer before rendering of the images has completed. When this
+ happens, commands issued by the consumer which read from the image
+ must implicitly wait before they can be executed. In many use cases,
+ this is desirable behavior. Rendering pipelines are kept full, and
+ frames are created and processed as fast as possible.
+
+ However, in the case of a compositor which is consuming frames from
+ multiple producers at once, combining them into a single output
+ image, this can slow the compositor to the frame rate of the slowest
+ producer. If the application acquires and uses an image from one
+ producer which requires a long time to finish rendering, it will be
+ prevented from presenting new frames from faster producers in a
+ timely fashion. In this case, the compositor would prefer to reuse
+ an older frame from the slower producer until the new one is ready.
+
+ This could be handled with existing interfaces by the producer
+ issuing appropriate Finish call before inserting the frame into the
+ stream. However this requires the producer to have knowledge of the
+ consumer's use case, and also introduces undesirable bubbles into
+ the producer's pipeline which will slow it even further.
+
+ This extension allows streams to be configured to defer the
+ availability of new frames inserted by the producer until they are
+ ready to be used. The producer proceeds as normal, but the frames
+ visible to the consumer through query and acquire operations do not
+ update immediately.
+
+ Interactions of this feature with a stream operating in mailbox mode
+ would be hard to define. Because newly inserted frames replace
+ previous unacquired ones, it is possible that the consumer would
+ never see a completed frame become available. Therefore this feature
+ is only available for streams operating in FIFO mode.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateStreamKHR and a the <attribute> parameter of
+ eglQueryStreamKHR:
+
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+
+Add new entry to table "3.10.4.4 EGLStream Attributes" in the
+EGL_KHR_stream extension
+
+ Attribute Read/Write Type Section
+ ------------------------------ ---------- ---------- --------
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV io EGLBoolean 3.10.4.y
+
+Add new subsection to section "3.10.4 EGLStream Attributes" in the
+EGL_KHR_stream extension
+
+ 3.10.4.y EGL_STREAM_FIFO_SYNCHRONOUS_NV Attribute
+
+ The EGL_STREAM_FIFO_SYNCHRONOUS_NV attribute controls whether frames
+ inserted by the producer become available to the consumer
+ synchronously or asynchronously. If set to EGL_FALSE, then when a
+ present operation for a new frame successfully completes, the state
+ will immediately become EGL_STREAM_NEW_FRAME_AVAILABLE_KHR, queries
+ of the most recently produced frame will indicate this frame, and
+ acquire operations will be able to retrieve this frame. If set to
+ EGL_TRUE, then until any asynchronous rendering for this frame
+ completes, the state will not update, any queries of the most
+ recently produced frame will only indicate the frame whose rendering
+ most recently completed, and acquire operations will only obtain
+ older completed frames.
+
+ The default value is EGL_FALSE. If set to EGL_TRUE, the value of
+ EGL_STREAM_FIFO_LENGTH_KHR must be non-zero, or an EGL_BAD_MATCH
+ error will be generated.
+
+Replace first two sentences of section "3.10.4.4 EGL_PRODUCER_FRAME
+Attribute" in the EGL_KHR_stream extension
+
+ The EGL_PRODUCER_FRAME_KHR attribute indicates how many image
+ frames have become available for the consumer to acquire. This is
+ also known as the "frame number" of the most recent ready frame
+ (where the first frame inserted has a frame number of 1). In
+ asynchronous operation, this is the frame most recently inserted by
+ the producer. In synchronous operation, this is the frame whose
+ image content generation has most recently finished.
+
+Replace contents of section "3.10.4.x+3 EGL_STREAM_TIME_PRODUCER_KHR" in
+the EGL_KHR_stream_fifo extension
+
+ This indicates the timestamp of the most recent ready frame in the
+ EGLStream (i.e. frame number EGL_PRODUCER_FRAME_KHR).
+
+Replace the second through fifth paragraphs of "3.10.5.2 EGLStream operation
+in fifo mode" in the EGL_KHR_stream_fifo extension.
+
+ In fifo mode the EGLStream conceptually operates as a fifo. An image
+ frame in the fifo is considered "ready" if all operations on the
+ image scheduled prior to its insertion in the stream have completed,
+ or if the value of EGL_STREAM_FIFO_SYNCHRONOUS_NV is EGL_FALSE.
+
+ When the consumer wants to consume a new image frame, behavior
+ depends on the state of the EGLStream. If the state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR then the image frame at the
+ tail of the fifo is ready, and is removed from the fifo. If the
+ state is EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR then the fifo has
+ no ready image frames and the consumer consumes the same frame that
+ it most recently consumed. Otherwise there are no image frames
+ available to consume (behavior in this case is described in the
+ documentation for each type of consumer - see section "3.10.2
+ Connecting an EGLStream to a consumer").
+
+ When EGL_STREAM_FIFO_SYNCHRONOUS_NV is EGL_FALSE, any consumer
+ operations which read from the image frame must implicitly wait for
+ any producer operations used to generate the image contents to
+ complete. Apart from the assumption that any such operations will
+ eventually finish, there are no guaranteed bounds on the time
+ required, and therefore no guaranteed bounds on when the consumer's
+ operations will complete. In cases where reusing a previous frame is
+ preferable to unknown latency between the time a consumer acquires a
+ new frame and the time its processing of that frame is done,
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV should be set to EGL_TRUE.
+
+ If there is no new ready frame at the tail of the fifo when the
+ consumer is finished consuming an image frame then the consumer
+ holds on to the image frame in case it needs to be consumed again
+ later (this happens if the consumer wants to consume another image
+ frame before the producer has inserted a new image frame into the
+ fifo, or before any such frame has finished rendering in the case of
+ synchronous operation). In this case the state of the EGLStream
+ will be EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR until a new image
+ frame is ready (or until the state becomes
+ EGL_STREAM_STATE_DISCONNECTED_KHR).
+
+ The producer inserts image frames at the head of the fifo. If the
+ fifo is full (already contains <L> image frames, where <L> is the
+ value of the EGL_STREAM_FIFO_LENGTH_KHR attribute) then the producer
+ is stalled until the fifo is no longer full. When there is at
+ least one ready frame at the tail of the fifo, the EGLStream state
+ is EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR.
+
+Issues
+
+ None
+
+Revision History
+
+ #4 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #3 (September 30, 2015) Daniel Kartch
+ - Reserve enum.
+
+ #2 (March 30, 2015) Daniel Kartch
+ - Fix grammatical and typographical errors.
+
+ #1 (March 27, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt
new file mode 100644
index 0000000..0b26508
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt
@@ -0,0 +1,132 @@
+Name
+
+ NV_stream_flush
+
+Name Strings
+
+ EGL_NV_stream_flush
+
+Contributors
+
+ Santanu Thangaraj
+ Daniel Kartch
+
+Contacts
+
+ Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - April 11, 2018
+
+Number
+
+ 127
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Requires either the EGL_KHR_stream_cross_process_fd or
+ EGL_NV_stream_remote extensions.
+
+ This extension is written based on the wording of version 27 of
+ the EGL_KHR_stream extension.
+
+Overview:
+
+ The EGL_KHR_stream_cross_process_fd and EGL_NV_stream_remote
+ extensions do not guarantee that when the state of the EGLStream
+ object representing one endpoint of the stream changes,
+ the state of the other endpoint will immediately reflect
+ that change. Depending on the implementation, there may be some
+ latency in the propagation of state changes.
+
+ This latency will not affect any applications which rely solely
+ on the stream itself for communication. State changes made on
+ one side will eventually be visible on the other side,
+ and can then be responded to.
+
+ This only affects applications which use some additional means of
+ communication outside of the stream itself, which may encounter
+ race conditions. In particular, if an application inserts a frame
+ into a stream, then sends a message to the other side indicating
+ that the frame is ready, the other side may encounter an error if
+ it tries to acquire the frame and it is not yet available.
+
+ One solution is to force all operations that change state of one
+ endpoint to behave synchronously, and not return until the change
+ is reflected on the other endpoint. However this adds undesirable
+ delays for the majority of applications and operations where such
+ synchronization is not required. This extension instead provides
+ a means for applications to explicitly invoke such
+ synchronization only where required.
+
+New types
+
+ None
+
+New Procedures and functions
+
+ EGLBoolean eglStreamFlushNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ None
+
+Add a new subsection "3.10.x EGLStream flush" at the end of section
+"3.10 EGLStreams" in EGL_KHR_stream extension.
+
+ The command
+
+ EGLBoolean eglStreamFlushNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ When called with either producer or consumer endpoint of the
+ stream, will block until any state changes made to this endpoint
+ prior to the call are visible on the EGLStream object of the other
+ endpoint.
+
+ On success, EGL_TRUE will be returned. On failure, EGL_FALSE will
+ be returned and an error will be generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+Issues
+
+ 1. When both producer and consumer are connected to a single
+ EGLStream object, what happens when eglStreamFlushNV is called?
+
+ RESOLVED: The function returns without any blocking.
+
+Revision History
+
+ #3 (April 11, 2018) Jon Leech
+ - Add missing NV suffix to eglStreamFlushNV
+
+ #2 (April 2, 2018) Santanu Thangaraj
+ - Update based on comments from Daniel Kartch
+ - General cleanup
+
+ #1 (March 26, 2018) Santanu Thangaraj
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt
new file mode 100644
index 0000000..75c0e49
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt
@@ -0,0 +1,152 @@
+Name
+
+ NV_stream_frame_limits
+
+Name Strings
+
+ EGL_NV_stream_frame_limits
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - October 27, 2016
+
+Number
+
+ EGL Extension #113
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_EXT_stream_consumer_egloutput
+
+Overview
+
+ Some stream consumers may allow more than one frame to be acquired
+ at a time, so that applications can operate on sequences of images
+ rather than individual images. This in turn may lead to producers
+ allocating additional buffers to keep the fifo full while fulfilling
+ the consumer's needs. Applications may wish to limit the resources
+ allocated for a given stream, and some stream implementations may be
+ able to operate more efficiently if they know in advance how many
+ buffers will be used.
+
+ This extension defines two new stream attributes which provide hints
+ as to how many frames the application will require, allowing the
+ implementation to plan accordingly.
+
+New functions
+
+ None
+
+New tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglQueryStreamKHR.
+
+ EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+ EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+
+
+Add to "Table 3.10.4.4 EGLStream Attributes"
+
+ Attribute Read/Write Type Section
+ ------------------------------ ---------- ------ ----------
+ EGL_PRODUCER_MAX_FRAME_HINT_NV io EGLint 3.10.4.x
+ EGL_CONSUMER_MAX_FRAME_HINT_NV io EGLint 3.10.4.x+1
+
+Add new subsections to section "3.10.4 EGLStream Attributes"
+
+ 3.10.4.x EGL_PRODUCER_MAX_FRAME_HINT_NV Attribute
+
+ The EGL_PRODUCER_MAX_FRAME_HINT_NV attribute indicates a limit on how
+ many outstanding frames the producer application intends to have at
+ any given time. This includes all frames currently being generated,
+ waiting in in the stream's mailbox or FIFO, and held by the consumer.
+ Its default value is EGL_DONT_CARE.
+
+ The implementation may make use of this hint to determine how many
+ buffers or other resources to allocate for the stream. It is not
+ necessarily an error for an application to attempt to insert more
+ than this many frames into the stream at once. However, exceeding
+ available resources may cause a producer to block or return an error,
+ as per its specification.
+
+ 3.10.4.x+1 EGL_CONSUMER_MAX_FRAME_HINT_NV Attribute
+
+ The EGL_CONSUMER_MAX_FRAME_HINT_NV attribute indicates a limit on how
+ many frames the consumer application intends to acquire at the same
+ time. Its default value EGL_DONT_CARE.
+
+ The implementation may make use of this hint to determine how many
+ buffers or other resources to allocate for the stream. It is not
+ necessarily an error for an application to attempt to acquire more
+ than this many frames at once. However, exceeding available resources
+ may cause the consumer or producer to block or return an error, as per
+ their specifications.
+
+Add to the description of eglStreamConsumerOutputEXT in the
+EGL_KHR_stream_consumer_egloutput extension
+
+ When the producer generates frames faster than the output device can
+ display them, <stream>'s EGL_CONSUMER_MAX_FRAME_HINT_NV attribute can
+ be used to throttle the output. No more than the specified number of
+ frames will be scheduled for display at a time. If specified, the value
+ should be set to at least 2, to allow one frame to be displayed while
+ another is acquired and scheduled for display.
+
+Issues
+
+ 1. Is a generic stream extension really necessary, or can such
+ limits instead be imposed in the producer and consumer
+ interfaces?
+
+ RESOLVED: Yes, it is necessary. There are several use cases
+ where an application may need to impose limits and cannot do so
+ through the producer and consumer interfaces:
+ a) The producer and client interfaces are already published and
+ do not allow room for extension to impose limits.
+ b) The stream is cross-process, and one process needs to impose
+ limits on the endpoint provided by the other process.
+ In addition, a common method for imposing such limits simplifies
+ programming of large application suites which make use of
+ multiple types of producers and consumers, and allows the limits
+ on producer and consumer endpoints to be set to compatible
+ values.
+
+ 2. Should the attributes be hints or hard limits?
+
+ RESOLVED: Hints. The variety of possible producers and consumers
+ makes it difficult to specify what the behavior should be if a
+ hard limit is exceeded. The goal here is to allow the application
+ to coordinate its resource requirements with the implementation.
+ If it fails to limit itself to the hinted values, we allow
+ producers or consumers to block or fail as appropriate for their
+ interfaces, but do not require it.
+
+Revision History
+
+ #4 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #3 (September 14, 2106) Daniel Kartch
+ - Switched from hard limits to hints
+
+ #2 (January 8, 2016) Daniel Kartch
+ - Assigned enum values
+
+ #1 (October 30, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt
new file mode 100644
index 0000000..d5a613e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt
@@ -0,0 +1,335 @@
+Name
+
+ NV_stream_metadata
+
+Name Strings
+
+ EGL_NV_stream_metadata
+
+Contributors
+
+ Daniel Kartch
+ Gajanan Bhat
+ Laszlo Weber
+ Lawrence Ibarria
+ Miguel A. Vico
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 8 - July 31, 2015
+
+Number
+
+ EGL Extension #93
+
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_EXT_device_base
+
+Overview
+
+ Application suites which make use of streams to transmit images may
+ need to communicate additional data between the producer and
+ consumer, synchronized with the frame updates. This data may change
+ infrequently, such as a movie title and track number to be displayed
+ to the user, or every frame, such as a focal length and exposure
+ time used to process the image. Transmitting this data outside the
+ scope of the stream may be inconvenient, particularly in the case of
+ cross-process streams. But the nature of the data is highly
+ application-dependent, so it is not feasible for an EGL
+ implementation to define specific extensions for a broad range of
+ application data.
+
+ This extension provides a means for an application (or application
+ suite in the cross-process case) to associate arbitrary metadata
+ with a stream. Multiple metadata fields are available, allowing them
+ to be updated and used independently by separate subcomponents of
+ producers and consumers, respectively. The format of the data is
+ determined by the application, which is responsible for writing and
+ reading it correctly.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDisplayAttribNV(
+ EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib* value);
+
+ EGLBoolean eglSetStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ const void* data);
+
+ EGLBoolean eglQueryStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum name,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ void* data);
+
+New Tokens
+
+ Accepted as <attribute> by eglQueryDisplayAttribNV:
+
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+
+ Accepted as <name> by eglQueryStreamMetatdataNV:
+
+ EGL_PRODUCER_METADATA_NV 0x3253
+ EGL_CONSUMER_METADATA_NV 0x3254
+ EGL_PENDING_METADATA_NV 0x3328
+
+ Accepted in <attrib_list> by eglCreateStreamKHR and as <attribute>
+ by eglQueryStreamKHR:
+
+ EGL_METADATA0_SIZE_NV 0x3255
+ EGL_METADATA1_SIZE_NV 0x3256
+ EGL_METADATA2_SIZE_NV 0x3257
+ EGL_METADATA3_SIZE_NV 0x3258
+
+ EGL_METADATA0_TYPE_NV 0x3259
+ EGL_METADATA1_TYPE_NV 0x325A
+ EGL_METADATA2_TYPE_NV 0x325B
+ EGL_METADATA3_TYPE_NV 0x325C
+
+
+Add to section "3.3 EGL Queries"
+
+ To query attributes of an initialized display, call
+
+ EGLBoolean eglQueryDisplayAttribNV(
+ EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib* value)
+
+ On success, EGL_TRUE is returned, and the value associated with
+ attribute <name> is returned in <value>.
+
+ If <name> is EGL_MAX_STREAM_METADATA_BLOCKS_NV, the total number
+ of independent metadata blocks supported by each stream is returned.
+ If <name> is EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV, the maximum size
+ supported for an individual metadata block is returned. If <name> is
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV, the maximum combined size of
+ all metadata blocks supported by a single stream is returned.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_DISPLAY error is
+ generated if <dpy> is not a valid initialized display. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ attribute name.
+
+If EGL_EXT_device_base is present, eglQueryDisplayAttribNV is equivalent
+to eglQueryDisplayAttribEXT, and calls to either will return the same
+values.
+
+Add to table "3.10.4.4 EGLStream Attributes" in EGL_KHR_stream
+
+ Attribute Read/Write Type Section
+ ------------------------ ---------- ------ ----------
+ EGL_METADATA<n>_SIZE_NV io EGLint 3.10.4.x
+ EGL_METADATA<n>_TYPE_NV io EGLint 3.10.4.x+1
+
+Add new subsections to section "3.10.4 EGLStream Attributes" of
+EGL_KHR_stream
+
+ 3.10.4.x EGL_METADATA<n>_SIZE_NV
+
+ The EGL_METADATA<n>_SIZE_NV attribute indicates the size of the
+ <n>th metadata block associated with a stream. If <n> is not less
+ than the value of EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent
+ EGLDisplay, the attribute is treated as unknown.
+
+ These attributes may only be set when the stream is created. The
+ default value is 0. The value may not exceed that of
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV for the parent EGLDisplay.
+ Furthermore, the total size of all metadata blocks may not exceed
+ the value of EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV. If either of
+ these restrictions are exceeded, an EGL_BAD_PARAMETER error is
+ generated.
+
+ 3.10.4.x+1 EGL_METADATA<n>_TYPE_NV
+
+ The EGL_METADATA<n>_TYPE_NV attribute indicates an optional
+ application-defined type associated with the stream's <n>th metadata
+ block. If <n> is not less than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent EGLDisplay, the
+ attribute is treated as unknown.
+
+ These attributes may only be set when the stream is created. The
+ default value is 0. It is not required that a type be provided for
+ every metadata block for which a size has been specified. These may
+ be used to help separate application components coordinate their use
+ of the stream's metadata blocks.
+
+Add new section to "3.10 EGLStreams" of EGL_KHR_stream
+
+ 3.10.y EGLStream metadata
+
+ An application may associate arbitrary blocks of additional data
+ with the stream, to be updated in sync with the frames. The contents
+ and format of these data blocks are left to the application, subject
+ to size restrictions imposed by the implementation. The application
+ must specify the sizes of its metadata blocks at the time the stream
+ is created. The contents may be completely or partially modified
+ every frame or less frequently, as the application chooses. When a
+ new frame is inserted into the stream, a snapshot of the current
+ metadata contents are associated with the frame, and may then be
+ queried from the stream.
+
+ The contents of all metadata blocks of non-zero size are initialized
+ to zeroes. To modify the contents of a portion of a metadata block,
+ call
+
+ EGLBoolean eglSetStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ const void* data)
+
+ On success, EGL_TRUE is returned and the first <size> bytes pointed
+ to by <data> will be copied to the <n>th metadata block of <stream>,
+ starting at <offset> bytes from the beginning of the block. This
+ data will be associated with all subsequent frames inserted into the
+ stream until the contents are next modified.
+
+ On failure, EGL_FALSE is returned
+ - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
+ display.
+ - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
+ valid stream associated with <dpy>.
+ - An EGL_BAD_STATE_KHR error is generated if the state of
+ <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR,
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR, or
+ EGL_STREAM_STATE_EMPTY_KHR.
+ - An EGL_BAD_ACCESS error is generated if the producer and
+ consumer endpoints of the stream are represented by separate
+ EGLStream objects, and the producer is not attached to
+ <stream>.
+ - An EGL_BAD_PARAMETER error is generated if <n> is negative or
+ is equal to or greather than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
+ - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
+ are negative, or if <offset>+<size> is greater than the value
+ of EGL_METADATA<n>_SIZE_NV for <stream>.
+
+ If <data> does not point to valid readable memory of at least <size>
+ bytes, undefined behavior will result. If the value of <size> is
+ zero, no error will occur, but the function will have no effect.
+
+ To query the contents of a metadata block for a frame, call
+
+ EGLBoolean eglQueryStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum name,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ void* data)
+
+ On success, EGL_TRUE is returned and <size> bytes starting from the
+ <offset>th byte of the <n>th metadata block of <stream> will be
+ copied into the memory pointed to by <data>. If <name> is
+ EGL_PRODUCER_METADATA_NV, the metadata will be taken from the frame
+ most recently inserted into the stream by the producer. If <name> is
+ EGL_CONSUMER_METADATA_NV, the metadata will be taken from the frame
+ most recently acquired by the consumer. If <name> is
+ EGL_PENDING_METADATA_NV, the metadata will be taken from the frame
+ which would be obtained if an acquire operation were performed at
+ the time of the query.
+
+ On failure, EGL_FALSE is returned
+ - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
+ display.
+ - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
+ valid stream associated with <dpy>.
+ - An EGL_BAD_STATE_KHR error is generated if the state of
+ <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+ - An EGL_BAD_ATTRIBUTE error is generated if <name> is not
+ EGL_PRODUCER_METADATA_NV, EGL_CONSUMER_METADATA_NV, or
+ EGL_PENDING_METADATA_NV.
+ - An EGL_BAD_PARAMETER error is generated if <n> is negative or
+ is equal to or greater than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
+ - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
+ are negative, or if <offset>+<size> is greater than the value
+ of EGL_METADATA<n>_SIZE_NV for <stream>.
+
+ If <data> does not point to valid writeable memory of at least
+ <size> bytes, undefined behavior will result. If the value of <size>
+ is zero, no error will occur, but the function will have no effect.
+
+Issues
+
+ 1. What happens if multiple calls are made to
+ eglSetStreamMetadataNV without presenting a new frame?
+
+ RESOLVED: If the calls specify overlapping ranges of the same
+ metadata block, the earlier data in the overlapped portion is
+ overwritten. Only the most recent values are associated with
+ the next frame when it is inserted into the stream.
+
+ 2. What happens if multiple frames are presented without calling
+ eglSetStreamMetadataNV?
+
+ RESOLVED: The most recently provided data is reused.
+
+Revision History
+
+ #8 (July 31, 2015) Daniel Kartch
+ - Cleaned up and added contact info for publication.
+
+ #7 (April 2, 2015) Miguel A. Vico
+ - Assigned enumerated value for metadata of pending frame.
+
+ #6 (March 20, 2015) Daniel Kartch
+ - Add query for metadata of pending frame.
+
+ #5 (January 15, 2015) Daniel Kartch
+ - Add paragraph of supported attributes to description of
+ eglQueryDisplayAttribNV.
+ - Added/updated error conditions to set/query functions.
+ - Fixed errors in prototypes.
+
+ #4 (January 6, 2015) Daniel Kartch
+ - Fixed errors in prototypes.
+ - Added enum values.
+
+ #3 (December 12, 2014) Daniel Kartch
+ - Clarified language on how metadata becomes associated with
+ frames inserted into the stream.
+ - Fixed typos.
+
+ #2 (December 12, 2014) Daniel Kartch
+ - Added offset and size to Set and Query functions.
+
+ #1 (December 11, 2014) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt
new file mode 100644
index 0000000..5f56646
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt
@@ -0,0 +1,298 @@
+Name
+
+ NV_stream_origin
+
+Name Strings
+
+ EGL_NV_stream_origin
+
+Contributors
+
+ Miguel A. Vico
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ Miguel A. Vico (mvicomoya 'AT' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 5 - May 20, 2019
+
+Number
+
+ 134
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ This extension is written based on the wording of version 26 of the
+ EGL_KHR_stream extension.
+
+Overview
+
+ EGL does not define a frame orientation. However, window systems or
+ rendering APIs might.
+
+ Ideally, when using EGL streams, frame orientation is agreed upon by
+ both the connected consumer and producer and appropriate handling is
+ performed within EGL to satisfy both endpoints needs. Thus,
+ applications will rarely have to worry about frame orientation.
+
+ However, in some cases consumer applications such as compositors
+ might still need to access the frame data as provided by the
+ consumer. Hence, they need to know what orientation was set for the
+ stream frames. This will allow applications to adjust the way they
+ access the frame data.
+
+ Similarly, producer applications might need to adjust how rendering
+ commands are issued depending on the orientation set for the stream
+ frames.
+
+ This extension provides new attributes to allow EGL stream users to
+ query frame orientation and whether it is handled automatically by
+ the producer or consumer endpoints so that clients are not required
+ to take further actions.
+
+New Functions
+
+ None.
+
+New Tokens
+
+ Accepted as the <attribute> parameter of eglQueryStreamKHR and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+ EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+ EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_ORIGIN_X_NV:
+
+ EGL_LEFT_NV 0x336B
+ EGL_RIGHT_NV 0x336C
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_ORIGIN_Y_NV:
+
+ EGL_TOP_NV 0x336D
+ EGL_BOTTOM_NV 0x336E
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_MAJOR_AXIS_NV:
+
+ EGL_X_AXIS_NV 0x336F
+ EGL_Y_AXIS_NV 0x3370
+
+Add to table "3.10.4.4 EGLStream Attributes"
+
+ Attribute Read/Write Type Section
+ --------------------------------- ---------- ---------- -----------
+ EGL_STREAM_FRAME_ORIGIN_X_NV ro EGLint 3.10.4.x
+ EGL_STREAM_FRAME_ORIGIN_Y_NV ro EGLint 3.10.4.x+1
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV ro EGLint 3.10.4.x+2
+ EGL_CONSUMER_AUTO_ORIENTATION_NV ro EGLBoolean 3.10.4.x+3
+ EGL_PRODUCER_AUTO_ORIENTATION_NV ro EGLBoolean 3.10.4.x+4
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_FRAME_ORIGIN_X_NV
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV is a read-only attribute that
+ indicates the position on the X axis of the origin relative to the
+ stream images surface as agreed upon by consumer and producer.
+
+ The relative position on X may be one of the following:
+
+ - EGL_LEFT_NV - Coordinates on the X axis will be 0 on the left
+ border and increase towards the right border until <frame
+ width> is reached.
+
+ - EGL_RIGHT_NV - Coordinates on the X axis will be <frame width>
+ on the left border and decrease towards the right border until
+ 0 is reached.
+
+ - EGL_DONT_CARE - No orientation on the X axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+1 EGL_STREAM_FRAME_ORIGIN_Y_NV
+
+ EGL_STREAM_FRAME_ORIGIN_Y_NV is a read-only attribute that
+ indicates the position on the Y axis of the origin relative to the
+ stream images surface as agreed upon by consumer and producer.
+
+ The relative position on Y may be one of the following:
+
+ - EGL_TOP_NV - Coordinates on the Y axis will be 0 on the top
+ border and increase towards the bottom border until <frame
+ height> is reached.
+
+ - EGL_BOTTOM_NV - Coordinates on the Y axis will be <frame
+ height> on the top border and decrease towards the bottom
+ border until 0 is reached.
+
+ - EGL_DONT_CARE - No orientation on the Y axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_ORIGIN_Y_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+2 EGL_STREAM_FRAME_MAJOR_AXIS_NV
+
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV is a read-only attribute that
+ indicates whether the stream images are X-major or Y-major.
+
+ The major axis may be one of the following:
+
+ - EGL_X_AXIS_NV - Frames are laid out such that consecutive
+ pixels with same Y coordinate reside next to each other in
+ memory.
+
+ - EGL_Y_AXIS_NV - Frames are laid out such that consecutive
+ pixels with same X coordinate reside next to each other in
+ memory.
+
+ - EGL_DONT_CARE - No major axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+3 EGL_CONSUMER_AUTO_ORIENTATION_NV
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV is a read-only attribute that
+ indicates whether the consumer endpoint will handle frame orientation
+ automatically so that the consumer application is not required to
+ take further actions.
+
+ The following values can be returned:
+
+ - EGL_TRUE - The consumer application can read frames as normal.
+ The consumer will flip images as needed if the expected
+ orientation does not match.
+
+ - EGL_FALSE - The consumer application is expected to query the
+ frame orientation and process images accordingly if it does not
+ match with the expected orientation.
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+4 EGL_PRODUCER_AUTO_ORIENTATION_NV
+
+ EGL_PRODUCER_AUTO_ORIENTATION_NV is a read-only attribute that
+ indicates whether the producer endpoint will handle frame orientation
+ automatically so that the producer application is not required to
+ take further actions.
+
+ The following values can be returned:
+
+ - EGL_TRUE - The producer application can generate frames as
+ normal. The producer will flip images as needed if the
+ expected orientation does not match.
+
+ - EGL_FALSE - The producer application is expected to query the
+ frame orientation and generate images accordingly if it does
+ not match with the expected orientation.
+
+ EGL_PRODUCER_AUTO_ORIENTATION_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+Add to the error list in section "3.10.4.2 Querying EGLStream
+Attributes":
+
+ - EGL_BAD_STATE_KHR is generated if <attribute> is any of
+ EGL_STREAM_FRAME_ORIGIN_X_NV, EGL_STREAM_FRAME_ORIGIN_Y_NV,
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV, EGL_CONSUMER_AUTO_ORIENTATION_NV,
+ or EGL_PRODUCER_AUTO_ORIENTATION_NV and the stream is in
+ EGL_STREAM_STATE_CREATED_KHR or EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+Issues
+
+ 1. Frame orientation is only needed for and relevant to specific
+ consumers and producers. What should the query of either
+ EGL_STREAM_FRAME_ORIGIN_X_NV, EGL_STREAM_FRAME_ORIGIN_Y_NV,
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV when consumers or producers that do
+ not define a frame orientation are connected to the stream?
+
+ RESOLVED: If the consumer or producer connected to the stream does
+ not define a frame orientation, the queries will return
+ EGL_DONT_CARE and applications must coordinate what they do.
+
+ 2. What should the query return when the connected consumer or
+ producer defines a frame orientation but can actually handle any?
+
+ RESOLVED: Quering EGL_STREAM_FRAME_ORIGIN_X_NV,
+ EGL_STREAM_FRAME_ORIGIN_Y_NV, or EGL_STREAM_FRAME_MAJOR_AXIS_NV
+ will return the default frame orientation.
+
+ Querying EGL_CONSUMER_AUTO_ORIENTATION_NV or
+ EGL_PRODUCER_AUTO_ORIENTATION_NV will return whether the consumer
+ or producer can handle any orientation automatically so that
+ applications do not need to worry about it.
+
+ If querying EGL_CONSUMER_AUTO_ORIENTATION_NV or
+ EGL_PRODUCER_AUTO_ORIENTATION_NV returns EGL_FALSE, the
+ corresponding application is expected to query the frame
+ orientation and take the appropriate action if that does not match
+ the expected orientation.
+
+Revision History
+
+ #5 (May 20th, 2019) Miguel A. Vico
+ - Allocate extension number
+ - Mark extension as complete
+
+ #4 (January 30th, 2019) Miguel A. Vico
+ - Allocate values for added enumerants
+ - Minor fixes to the major axis attribute description
+
+ #3 (October 8th, 2018) Miguel A. Vico
+ - Collapsed producer and consumer orientation attributes
+ - Added major axis attribute to fully define orientation
+ - Added two new attributes to indicate whether the producer or
+ consumer can handle orientation automatically.
+ - Rewritten issue #1
+ - Added issue #2 and its resolution
+ - Overall spec changes to reflect the above points
+
+ #2 (August 19th, 2016) Miguel A. Vico
+ - Rename newly added attributes as consumer and producer
+ attributes
+ - Added both issue #1 and its resolution
+ - Overall spec changes to reflect the above points
+
+ #1 (August 1st, 2016) Miguel A. Vico
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt
new file mode 100644
index 0000000..c8eb464
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt
@@ -0,0 +1,472 @@
+Name
+
+ NV_stream_remote
+ NV_stream_cross_object
+ NV_stream_cross_display
+ NV_stream_cross_process
+ NV_stream_cross_partition
+ NV_stream_cross_system
+
+Name Strings
+
+ EGL_NV_stream_remote
+
+Contributors
+
+ Daniel Kartch
+ Bogdan Naodovic
+ James Jones
+ Zander Clucas
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - June 01, 2016
+
+Number
+
+ EGL Extension #114
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_KHR_stream_cross_process_fd
+
+ All EGL_NV_stream_cross_* extensions require EGL_NV_stream_remote,
+ but are independent of each other.
+
+Overview
+
+ This extension provides a generic framework for establishing stream
+ connections when the producer and consumer endpoints are not
+ associated with the same EGLStream object. The cross-process streams
+ allowed by the EGL_KHR_stream_cross_process_fd extension are one
+ example of such a connection. Other potential examples include
+ streams between objects associated with different EGLDisplays in a
+ single process, streams between processes residing in separate
+ virtual machine partitions on a single system, or streams between
+ entirely separate systems connected via the internet.
+
+ The approach used by EGL_KHR_stream_cross_process_fd has several
+ drawbacks:
+ - It creates a new pair of stream creation and query functions
+ which are specific to both the type of stream and the method
+ used for communicating the stream's identity. Extending this
+ methodology would require new pairs of functions for every new
+ type of stream connection.
+ - It allows creation of the connected stream objects without any
+ indication of which side will be the consumer and which will be
+ the producer. It even allows, although this was probably not
+ intended, a cross-process stream to be established, but have
+ both producer and consumer exist in the same process, with the
+ other process acting as a voyeur that can observe state and
+ perhaps modify attributes, but not operate on frames.
+ - The use of file descriptors generated by EGL in one process
+ and accessed by EGL in another to establish communication has
+ potential security flaws, and may not be available at all on
+ some real-time operating systems.
+
+ Rather than implement new connection types using this model, we
+ propose a more generic approach that does not require a
+ proliferation of new interfaces and avoids any ambiguities in how
+ the stream will be used. These extensions can coexist with
+ EGL_KHR_stream_cross_process_fd, but allow for more control of
+ stream communication by the applications.
+
+ These extensions provide the framework with which arbitrary stream
+ object pairs can be established, but by themselves are insufficient
+ to create such pairs. In addition, a separate extension must be
+ used to determine the protocol by which the two objects will
+ communicate. See for example the EGL_NV_stream_socket extension.
+
+ Several optional types of separate stream objects are defined,
+ with successive levels of remoteness. It should be assumed that
+ a more remote type will be less efficient in transfering images,
+ and therefore applications should choose the least remote type
+ available that is compatible with their use cases.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_STATE_KHR:
+
+ EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+
+ Accepted as attribute names in eglCreateStreamKHR,
+ eglCreateStreamAttribKHR, eglQueryStreamKHR, and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_TYPE_NV 0x3241
+ EGL_STREAM_PROTOCOL_NV 0x3242
+ EGL_STREAM_ENDPOINT_NV 0x3243
+
+ Accepted by eglCreateStreamKHR and eglCreateStreamAttribKHR, and
+ returned by eglQueryStreamKHR and eglQueryStreamAttribKHR, as value
+ when attribute is EGL_STREAM_TYPE_NV, EGL_STREAM_PROTOCOL_NV or
+ EGL_STREAM_ENDPOINT_NV:
+
+ EGL_STREAM_LOCAL_NV 0x3244
+
+ When EGL_NV_stream_cross_object is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_OBJECT_NV 0x334D
+
+ When EGL_NV_stream_cross_display is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+
+ When EGL_NV_stream_cross_process is present, accepted as
+ value for attribute EGL_STREAM_TYPE_NV by eglCreateStreamKHR
+ and eglCreateStreamAttribKHR. When either
+ EGL_NV_stream_cross_process or EGL_KHR_stream_cross_process_fd
+ is present, returned by eglQueryStreamKHR and
+ eglQueryStreamAttribKHR for attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_PROCESS_NV 0x3245
+
+ When EGL_NV_stream_cross_partition is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_PARTITION_NV 0x323F
+
+ When EGL_NV_stream_cross_system is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+
+ If EGL_KHR_stream_cross_process_fd is present, returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR when attribute is
+ EGL_STREAM_PROTOCOL_NV:
+
+ EGL_STREAM_PROTOCOL_FD_NV 0x3246
+
+ Accepted by eglCreateStreamKHR and eglCreateStreamAttribKHR, and
+ returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_ENDPOINT_NV:
+
+ EGL_STREAM_PRODUCER_NV 0x3247
+ EGL_STREAM_CONSUMER_NV 0x3248
+
+Add to "Glossary" of EGL_KHR_stream:
+
+ Local stream
+ A stream implemented with both consumer and producer attached to a
+ single EGLStream object.
+
+ Remote stream
+ A stream implemented with two EGLStream objects that communicate
+ with each other, with the consumer attached to one object and the
+ producer attached to the other.
+
+Add to section "3.10.1 Creating an EGLStream" in EGL_KHR_stream:
+
+ If a remote EGLStream is created, as described in section "3.10.5.x
+ Remote streams", and is paired with an EGLStream object which has
+ conflicting values for some attributes, creation will succeed, but
+ the stream will enter state EGL_STREAM_STATE_DISCONNECTED_KHR once
+ communication is established.
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in
+EGL_KHR stream:
+
+ - EGL_BAD_MATCH is generated if the value of any one of the
+ EGL_STREAM_TYPE_NV, EGL_STREAM_PROTOCOL_NV, or
+ EGL_STREAM_ENDPOINT_NV attributes is EGL_STREAM_LOCAL_NV and
+ any other of these attributes is neither EGL_STREAM_LOCAL_NV
+ nor EGL_DONT_CARE.
+
+Add to section "3.10.2 Connecting an EGLStream to a consumer" in
+EGL_KHR_stream:
+
+ Any function which connects a consumer to an EGLStream will fail and
+ generate an EGL_BAD_ACCESS error if the value of the EGLStream's
+ EGL_STREAM_ENDPOINT_NV attribute is EGL_STREAM_PRODUCER_NV.
+
+Add to section "3.10.3 Connecting an EGLStream to a producer" in
+EGL_KHR_stream:
+
+ Any function which connects a producer to an EGLStream will fail and
+ generate an EGL_BAD_ACCESS error if the value of the EGLStream's
+ EGL_STREAM_ENDPOINT_NV attribute is EGL_STREAM_CONSUMER_NV.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_STREAM_TYPE_NV io EGLint 3.10.4.x
+ EGL_STREAM_PROTOCOL_NV io EGLint 3.10.4.x+1
+ EGL_STREAM_ENDPOINT_NV io EGLint 3.10.4.x+2
+
+Add to beginning of state list in section "3.10.4.3 EGL_STREAM_STATE_KHR
+Attribute" in EGL_KHR_stream:
+
+ - EGL_STREAM_STATE_INITIALIZING_NV - The EGLStream object
+ represents one endpoint of a remote stream and has not yet
+ established communication with the opposite endpoint.
+
+Replace the first entry in the state transition table in section
+"3.10.4.3 EGL_STREAM_STATE_KHR Attribute" in EGL_KHR_stream:
+
+ -> EGL_STREAM_STATE_INITIALIZING_NV
+ A new remote EGLStream is created in this state.
+
+ EGL_STREAM_STATE_INITIALIZING_NV ->
+ EGL_STREAM_STATE_CREATED_KHR
+ Occurs when a remote EGLStream object establishes communication with
+ the opposite endpoint.
+
+ -> EGL_STREAM_STATE_CREATED_KHR
+ A new local EGLStream or EGLStream of undetermined type is created
+ in this state.
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_TYPE_NV Attribute
+
+ The EGL_STREAM_TYPE_NV attribute may be set when the stream
+ is created, and indicates the type of connection between the
+ EGLStream objects to which the consumer and producer are attached.
+ Legal values are EGL_DONT_CARE and EGL_STREAM_LOCAL_NV. The
+ default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+ Other possible values for EGL_STREAM_TYPE_NV may be defined by
+ additional extensions to indicate a remote stream. Where used,
+ the EGL_STREAM_PROTOCOL_NV attribute must also be set to a
+ communication protocol compatible with the stream type.
+
+ 3.10.4.x+1 EGL_STREAM_PROTOCOL_NV Attribute
+
+ The EGL_STREAM_PROTOCOL_NV attribute may be set when the stream is
+ created, and indicates the manner in which communication is
+ established between the EGLStream objects to which the consumer
+ and producer are attached. Legal values are EGL_DONT_CARE and
+ EGL_STREAM_LOCAL_NV. The default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object, so no communication protocol is required.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+ Other possible values for EGL_STREAM_PROTOCOL_NV may be defined by
+ additional extensions to indicate the communication protocol to be
+ used for a remote stream. Not all communication protocols are
+ compatible with all stream types, and vice versa. If incompatible
+ types and protocols are specified, an EGL_BAD_MATCH error will be
+ generated.
+
+ 3.10.4.x+2 EGL_STREAM_ENDPOINT_NV Attribute
+
+ The EGL_STREAM_ENDPOINT_NV attribute may be set when the stream is
+ created, and indicates the endpoints which will be attached to the
+ EGLStream object. Legal values are EGL_DONT_CARE,
+ EGL_STREAM_LOCAL_NV, EGL_STREAM_CONSUMER_NV, and
+ EGL_STREAM_PRODUCER_NV. The default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object.
+
+ A value of EGL_STREAM_CONSUMER_NV indicates that the EGLStream
+ object represents the consumer side of a remote stream.
+
+ A value of EGL_STREAM_PRODUCER_NV indicates that the EGLStream
+ object represents the producer side of a remote stream.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+If EGL_NV_stream_cross_object is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_OBJECT_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_OBJECT_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint is obtained from the same EGLDisplay.
+
+If EGL_NV_stream_cross_display is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_DISPLAY_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_DISPLAY_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may be obtained from a different EGLDisplay in the same
+ process.
+
+If EGL_NV_stream_cross_process or EGL_NV_stream_cross_process_fd is
+present, in section "3.10.4.x" above, add EGL_STREAM_CROSS_PROCESS_NV
+to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_PROCESS_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside in a separate process.
+
+If EGL_NV_stream_cross_partition is present, in section 3.10.4.x
+above, add EGL_STREAM_CROSS_PARTITION_NV to the list of legal values,
+and insert
+
+ A value of EGL_STREAM_CROSS_PARTITION_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside in a separate virtual machine partition on
+ the same system. The partitions are not required to be using the
+ same operating systems, but must support compatible communication
+ protocols.
+
+If EGL_NV_stream_cross_system is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_SYSTEM_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_SYSTEM_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside on an independent hardware system with no
+ directly sharable memory resources.
+
+If EGL_KHR_stream_cross_process_fd is present, in section 3.10.4.x+1
+above, add EGL_STREAM_PROTOCOL_FD_NV to the list of legal values, and
+insert
+
+ A value of EGL_STREAM_PROTOCOL_FD_NV indicates that the stream is
+ a remote stream whose communication is established using a file
+ descriptor. The details of what this file descriptor represents
+ are implementation dependent. If the EGL_STREAM_PROTOCOL_NV
+ attribute is initialized with this value, the EGL_STREAM_TYPE_NV
+ attribute must specify a value of EGL_STREAM_CROSS_PROCESS_NV or
+ an EGL_BAD_MATCH failure is generated.
+
+ If an initial value of EGL_DONT_CARE is specified and a file
+ descriptor is subsequently obtained with
+ eglGetStreamFileDescriptorKHR, the value will be automatically
+ changed to EGL_STREAM_PROTOCOL_FD_NV.
+
+Add a new subsection to the end of "3.10.5 EGLStream operation":
+
+ 3.10.5.x Remote streams
+
+ An EGLStream object may be created as the endpoint of a remote
+ stream by specifying EGL_STREAM_PRODUCER_NV or
+ EGL_STREAM_CONSUMER_NV as the value for its EGL_STREAM_ENDPOINT_NV
+ attribute. Valid and compatible EGL_STREAM_TYPE_NV and
+ EGL_STREAM_PROTOCOL_NV values other than EGL_DONT_CARE or
+ EGL_STREAM_LOCAL_NV must also be specified.
+
+ If a value for EGL_STREAM_ENDPOINT_NV is not specified, the stream
+ is assumed to be local, but other extensions (see for example
+ EGL_KHR_stream_cross_process_fd) may allow it to be converted to a
+ remote stream before the producer has been attached.
+
+ When an EGLStream object is created as remote, any unspecified
+ attribute will be initially set to a value of EGL_DONT_CARE. Pairs
+ of EGLStream objects representing opposite endpoints of a stream are
+ not required to specify the same attribute lists, but their
+ attributes must be compatible. When communication is established
+ between the endpoints, they will exchange attribute settings:
+ - If both endpoints have a value of EGL_DONT_CARE for an
+ attribute, the default value will be assigned.
+ - If one endpoint has a value of EGL_DONT_CARE for an attribute,
+ it will be set to the other endpoint's value.
+ - If neither endpoint has a value of EGL_DONT_CARE for an
+ attribute, their values must agree. In most cases, this means
+ the values must be identical, but this may not be true for all
+ attributes. In particular, one endpoint must specify an
+ EGL_STREAM_ENDPOINT_NV value of EGL_STREAM_CONSUMER_NV, and
+ the other must specify a value of EGL_STREAM_PRODUCER_NV.
+ If the values for any attribute are not compatible, the stream will
+ transition to the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ Additionally, if the two EGLStream objects representing a remote
+ stream are created for EGLDisplays which cannot share resources,
+ the stream will transition to the EGL_STREAM_STATE_DISCONNECTED_KHR
+ state.
+
+ When using remote streams, there may be latency in communicating
+ state changes between the EGLStream objects representing the two
+ endpoints. For instance, when a new frame is inserted into the
+ stream by the producer, the consumer endpoint may not immediately
+ transition to EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR. Similarly,
+ when a frame is acquired by the consumer, the producer endpoint may
+ not immediately transition to
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR. Applications should rely
+ only on the state of the endpoint on which they are operating to
+ determine the expected results of that operation.
+
+In section "3.10.1.1 Duplicating an EGLStream from a file descriptor" of
+the EGL_KHR_stream_cross_process_fd extension, add to the failure list
+for eglGetStreamFileDescriptor
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_TYPE_NV
+ attribute of <stream> is anything other than EGL_DONT_CARE or
+ EGL_STREAM_CROSS_PROCESS_NV.
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_PROTOCOL_NV
+ attribute of <stream> is anything other than EGL_DONT_CARE or
+ EGL_STREAM_PROTOCOL_FD_NV.
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_ENDPOINT_NV
+ attribute of <stream> is EGL_STREAM_LOCAL_NV.
+
+Issues
+
+ None
+
+Revision History
+
+ #4 (June 01, 2016)
+ - Removed sync object definition. It will be provided by a
+ separate extension.
+ - Folded in cross-partition extension.
+ - Added types for cross-object, cross-display, and
+ cross-system streams.
+ - General cleanup in preparation for publication.
+
+ #3 (September 16, 2015) Zander Clucas
+ - Removed dependence of the CROSS_PROCESS type on the
+ EGL_NV_cross_process_fd extension
+ - Added CROSS_PROCESS to the list of STREAM_TYPE legal values
+ - Added CROSS_PROCESS requirement for cross_process_fd protocol
+
+ #2 (December 11, 2014) Daniel Kartch
+ - Rewrote as NV draft for earlier release.
+ - Added section for creation of sync object.
+ - Reserved enum values.
+
+ #1 (October 10, 2014) Daniel Kartch
+ - Initial EXT draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt
new file mode 100644
index 0000000..1cb0d06
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt
@@ -0,0 +1,306 @@
+Name
+
+ NV_stream_reset
+
+Name Strings
+
+ EGL_NV_stream_reset
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 6 - October 27, 2016
+
+Number
+
+ EGL Extension #112
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Modifies the EGL_KHR_stream_fifo extension.
+
+ Modifies the EGL_KHR_stream_consumer_gltexture extension.
+
+ Modifies the EGL_EXT_stream_consumer_egloutput extension.
+
+ Interacts with the EGL_KHR_stream_cross_process_fd and
+ EGL_NV_stream_remote extensions.
+
+ This extension is written based on the wording of version 26 of the
+ EGL_KHR_stream extension.
+
+Overview
+
+ The base stream extension requires that, once the producer inserts
+ the first frame into the stream, at least one frame is always
+ available to be acquired by the consumer until the stream
+ disconnects. However, there are some use cases in which the producer
+ or the consumer may wish to allow the stream to empty without
+ permanently disconnecting.
+
+ An example of a use case where the producer may wish to empty the
+ stream is a security or rear-view camera which temporarily stops
+ producing new frames, perhaps due to a hardware reset. Continuing to
+ display the last frame available would produce a false impression of
+ the current state, and should be avoided for safety reasons. A
+ better solution would be to let the consumer know there was no
+ available image, so that it could take appropriate actions, and then
+ recover when the camera begins streaming again.
+
+ This use case could be handled with existing functionality by
+ disconnecting and destroying the stream and then recreating and
+ reconnecting it when new frames are available. However, this can be
+ burdensome, particularly when the producer and consumer reside in
+ separate processes.
+
+ An example of a use case where the consumer may wish to empty the
+ stream is an image processer which operates on each frame exactly
+ once. After processing, it will not waste resources operating on the
+ same frame a second time. This use case can be handled by carefully
+ monitoring the availability of a new frame before performing an
+ acquire operation. But returning the buffer(s) as soon as they are
+ no longer needed allows for better resource management.
+
+ This extension allows a stream to be completely drained of existing
+ frames by the consumer or flushed of existing frames by the producer
+ without disconnecting, so that processing may continue again when
+ new frames are produced.
+
+New Functions
+
+ EGLBoolean eglResetStreamNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and the <attrib> parameter of eglQueryStreamKHR:
+
+ EGL_SUPPORT_RESET_NV 0x3334
+ EGL_SUPPORT_REUSE_NV 0x3335
+
+To table "3.10.4.4 EGLStream Attributes", add entry
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_SUPPORT_RESET_NV io EGLint 3.10.4.x
+ EGL_SUPPORT_REUSE_NV io EGLint 3.10.4.x+1
+
+Modify entries in the list of state transitions in "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute"
+
+ EGL_STREAM_STATE_EMPTY_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts the first image frame and any
+ subsequent frame after the stream has been drained.
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts a new image frame and only
+ previously consumed frames are available.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ Occurs when the consumer begins examining the last unconsumed
+ frame and reuse of old frames is enabled.
+
+Add entries to the list of state transitions in "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute"
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when the stream is reset.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when the stream is reset or, if reuse of old frames is
+ disabled, when the consumer begins examining the last unconsumed
+ frame.
+
+Add new sections at the end of section "3.10.4 EGLStream Attributes"
+
+ 3.10.4.x EGL_SUPPORT_RESET_NV Attribute
+
+ The EGL_SUPPORT_RESET_NV attribute may only be set when the stream
+ is created. By default, it is EGL_FALSE. If set to EGL_TRUE, the
+ stream will allow restoration of the stream state back to
+ EGL_STREAM_STATE_EMPTY_KHR state from
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR, releasing existing frames,
+ as described in section 3.10.5.x.
+
+ Not all consumers are required to support stream resets. Attempting
+ to attach a consumer which does not support resets to a stream with
+ EGL_SUPPORT_RESET_NV set to EGL_TRUE will fail with an
+ EGL_BAD_MATCH error.
+
+ Not all producers will provide a means to reset streams themselves,
+ but any producer may be connected to a stream which supports resets
+ and may be used with the eglStreamResetNV function.
+
+ 3.10.4.x+1 EGL_SUPPORT_REUSE_NV Attribute
+
+ The EGL_SUPPORT_REUSE_NV attribute may only be set when the stream
+ is created. By default, it is EGL_TRUE. If EGL_TRUE, then when the
+ consumer acquires the last available image frame from the stream, it
+ will be held for reuse until a new frame is inserted to replace it.
+ If EGL_FALSE, no frames will be available to the consumer until the
+ producer inserts a new one.
+
+Modify third paragraph of "3.10.5.1 EGLStream operation in mailbox mode"
+
+ The consumer retrieves the image frame from the mailbox and
+ examines it. When the consumer is finished examining the image
+ frame it is either placed back in the mailbox (if the mailbox is
+ empty, supports reuse of frames, and has not been reset) or
+ discarded (otherwise).
+
+If EGL_KHR_stream_fifo is present, insert at beginning of fourth paragraph
+of "3.10.5.2 EGLStream operation in fifo mode"
+
+ If the EGL_SUPPORT_REUSE_NV attribute is EGL_TRUE and the stream has
+ not been reset since the image frame was consumed, then if the fifo
+ is empty ...
+
+Insert a new paragraph after the above
+
+ If the EGL_SUPPORT_REUSE_NV attribute is EGL_FALSE or the stream has
+ been reset, then if the fifo is empty when the consumer is finished
+ consuming an image frame, the frame is discarded and the stream is
+ left in the EGL_STREAM_STATE_EMPTY_KHR state until new frames are
+ produced.
+
+Add a new section to "3.10.5 EGLStream operation"
+
+ 3.10.5.x EGLStream reset
+
+ For resource management or safety reasons, it may be necessary to
+ invalidate and reclaim frames pending in the stream. This is only
+ possible if the stream's EGL_SUPPORT_RESET_NV attribute is set to
+ EGL_TRUE.
+
+ Stream resets cause any unconsumed image frames waiting in the
+ stream to be immediately discarded, and place the stream in the
+ EGL_STREAM_STATE_EMPTY_KHR state. Frames currently held by the
+ consumer are not immediately affected, but will be discarded once
+ released, even if the stream would normally hold old frames for
+ reuse. After the reset, new frames inserted by the producer are
+ processed normally.
+
+ Stream resets may be issued by some producers as described in their
+ specifications, and may also be triggered by the application calling
+
+ EGLBoolean eglResetStreamNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ On success, EGL_TRUE is returned and a reset of the stream is
+ initiated. On failure, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_CREATED_KHR, EGL_STREAM_STATE_CONNECTING_KHR,
+ or EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_ACCESS is generated if <stream>'s
+ EGL_SUPPORT_RESET_NV attribute is not EGL_TRUE.
+
+ If a stream is already in the EGL_STREAM_STATE_EMPTY_KHR state, a
+ reset will have no effect.
+
+If EGL_KHR_stream_cross_process_fd or EGL_NV_stream_remote is present,
+add to the list of errors above
+
+ - EGL_BAD_ACCESS is generated if <stream> represents the
+ consumer endpoint of a stream whose producer endpoint is
+ represented by a different EGLStreamKHR handle (e.g. for
+ cross-process streams).
+
+If EGL_KHR_stream_consumer_gltexture is supported, modify the first
+sentence of the fifth paragraph of the description of
+eglStreamConsumerAcquireKHR
+
+ If the producer has not inserted any new image frames since the
+ last call to eglStreamConsumerAcquireKHR, and the stream has been
+ reset or does not support reuse of frames, then
+ eglStreamConsumerAcquireKHR will fail. If it has not been reset and
+ reuse is supported, then eglStreamConsumerAcquireKHR will "latch"
+ the same image frame it latched last time
+ eglStreamConsumerAcquireKHR was called.
+
+If EGL_EXT_stream_consumer_egloutput is supported, add to the
+description if eglStreamConsumerOutputEXT
+
+ If the stream is reset to the EGL_STREAM_STATE_EMPTY_KHR state, any
+ currently displayed frame will be released, and the displayed image
+ will be reset to some default state determined by the display
+ hardware and the implementation. Possible behavior includes, but is
+ not limited to, displaying a black screen, displaying a default
+ splash screen, displaying a "no input" message, or powering off the
+ display. If and when the stream again enters the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR state, processing of frames
+ will resume as described above.
+
+Issues
+
+ 1. When this extension is present, should all streams automatically
+ support resetting?
+
+ RESOLVED: No. Applications which are not aware of this extension
+ may not be prepared to handle an unexpected return to the EMPTY
+ state. Therefore support for this feature must be explicitly
+ requested.
+
+Revision History
+
+ #6 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #5 (July 23rd, 2015) Daniel Kartch
+ - Added interaction with cross-process streams.
+
+ #4 (July 22nd, 2015) Daniel Kartch
+ - Added enum values.
+
+ #3 (July 20th, 2015) Daniel Kartch
+ - Changed to NV specification
+ - Removed flush option from eglResetStream. Resetting will
+ always flush pending frames.
+ - Added EGL_SUPPORT_REUSE_NV flag to control whether released
+ frames are saved or discarded immediately.
+ - Removed reference to unpublished stream_sequence extension.
+
+ #2 (August 21th, 2014) Daniel Kartch
+ - Added paragraph to indicate that producers do not impose
+ restrictions on use of reset.
+ - Clarified consumer behavior on reset.
+ - Added interactions with GL texture and EGLOutput consumers.
+
+ #1 (August 12th, 2014) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt
new file mode 100644
index 0000000..2d5e209
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt
@@ -0,0 +1,229 @@
+Name
+
+ NV_stream_socket
+ NV_stream_socket_unix
+ NV_stream_socket_inet
+
+Name Strings
+
+ EGL_NV_stream_socket
+ EGL_NV_stream_socket_unix
+ EGL_NV_stream_socket_inet
+
+Contributors
+
+ Daniel Kartch
+ Bogdan Naodovic
+ James Jones
+ Zander Clucas
+ Tarun Bansal
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 6 - October 27, 2016
+
+Number
+
+ EGL Extension #115
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL_NV_stream_socket requires EGL_NV_stream_remote.
+
+ EGL_NV_stream_socket_unix requires EGL_NV_stream_socket.
+
+ EGL_NV_stream_socket_inet requires EGL_NV_stream_socket.
+
+Overview
+
+ These extensions build on the framework for remote streams provided
+ in EGL_NV_stream_remote to define a means for two EGLStream objects
+ representing opposite ends of a single stream to establish
+ communication using a socket. The application is expected to create
+ and connnect both ends of the socket before creating the stream
+ objects.
+
+ The base EGL_NV_stream_socket extension defines most of the
+ attributes required to initialize the stream objects. The
+ EGL_NV_stream_socket_unix and EGL_NV_stream_socket_inet extensions
+ indicate support for UNIX domain and internet protocol socket types,
+ respectively. Additional extensions may provide support for other
+ socket types. The type of socket is important, as certain operations
+ are only available with certain types, which may influence how the
+ streams are implemented. For instance, UNIX domain sockets allow
+ file descriptors to be passed between processes, while internet
+ protocol sockets do not. This ability may allow more efficient
+ sharing of resources between the socket endpoints.
+
+ An application using this extension will bear some similarity to the
+ example code from the EGL_KHR_stream_cross_process_fd extension,
+ which also uses sockets to establish the communication between two
+ processes and then create a pair of EGLStream objects. The key
+ difference is that in that case, the sockets are merely a temporary
+ means to an end to pass a file descriptor between the processes.
+ Once that is accomplished, the sockets are discarded.
+
+ The file descriptor used by that extension may represent an
+ underlying object such as shared memory which allows more efficient
+ communication than the sockets themselves. However, there is nothing
+ preventing an implementation of EGL_NV_stream_socket from creating
+ and passing such a file descriptor as well, gaining the same
+ efficiency. Therefore, a protocol based on sockets will work at
+ least as well as one based on file descriptors, with the added
+ benefit of being more portable.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens for EGL_NV_stream_socket
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_STREAM_PROTOCOL_NV:
+
+ EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+
+ Accepted as attribute names by eglCreateStreamKHR and
+ eglQueryStreamKHR functions
+
+ EGL_SOCKET_HANDLE_NV 0x324C
+ EGL_SOCKET_TYPE_NV 0x324D
+
+New Tokens for EGL_NV_stream_socket_unix
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_SOCKET_TYPE_NV:
+
+ EGL_SOCKET_TYPE_UNIX_NV 0x324E
+
+New Tokens for EGL_NV_stream_socket_inet
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_SOCKET_TYPE_NV:
+
+ EGL_SOCKET_TYPE_INET_NV 0x324F
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in EGL_KHR stream:
+
+ - EGL_BAD_MATCH is generated if the value of EGL_STREAM_PROTOCOL_NV
+ is EGL_STREAM_PROTOCOL_SOCKET_NV and values are not provided for
+ EGL_SOCKET_HANDLE_NV and EGL_SOCKET_TYPE_NV.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_SOCKET_HANDLE_NV io EGLint 3.10.4.y
+ EGL_SOCKET_TYPE_NV io EGLint 3.10.4.y+1
+
+In section "3.10.4.x+1 EGL_STREAM_PROTOCOL_NV Attribute" of
+EGL_NV_stream_remote, add EGL_STREAM_PROTOCOL_SOCKET_NV to the list of
+legal values and add
+
+ A value of EGL_STREAM_PROTOCOL_SOCKET_NV indicates that the stream
+ is a remote stream whose communication is established using a socket
+ connection provided by the application. The details of the messages
+ passed through the socket are implementation dependent, and may be
+ influenced by the stream and socket types. This value for the
+ EGL_STREAM_PROTOCOL_NV attribute is compatible with values of
+ EGL_STREAM_CROSS_OBJECT_NV, EGL_STREAM_CROSS_DISPLAY_NV,
+ EGL_STREAM_CROSS_PROCESS_NV, and EGL_STREAM_CROSS_PARTITION_NV for
+ the EGL_STREAM_TYPE_NV attribute.
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.y EGL_SOCKET_HANDLE_NV Attribute
+
+ The EGL_SOCKET_HANDLE_NV attribute may be set when the stream
+ is created, and provides the handle to a blocking socket which will
+ be used to communicate with the other endpoint of the stream. If the
+ value of EGL_STREAM_PROTOCOL_NV is not EGL_STREAM_PROTOCOL_SOCKET_NV,
+ this attribute is ignored.
+
+ The type of this value is operating system dependent, and the
+ default value will be an invalid socket handle for the operating
+ system. In particular, for unix-like operating systems, the value is
+ a socket file descriptor as returned by socket() and related
+ functions, and the default value is -1.
+
+ Prior to creating the EGLStream object, the application may use the
+ socket handle as it wishes. But once the EGLStream object has been
+ successfully created, it assumes full ownership of this socket. If
+ the application subsequently writes to, reads from, or closes the
+ socket, undefined behavior will result. Furthermore, if any data
+ sent over the socket prior to creating the EGLStream object is not
+ consumed before the opposite EGLStream object is created, undefined
+ behavior will result.
+
+ When the EGLStream object is deleted, the socket handle will be
+ closed by the stream.
+
+ 3.10.4.y+1 EGL_SOCKET_TYPE_NV Attribute
+
+ The EGL_SOCKET_TYPE_NV attribute may be set when the stream is
+ created, and indicates the type of the socket provided by the
+ EGL_STREAM_SOCKET_HANDLE_NV attribute. If the value of
+ EGL_STREAM_PROTOCOL_NV is not EGL_STREAM_PROTOCOL_SOCKET_NV this
+ attribute is ignored.
+
+ The default value is EGL_NONE.
+
+If EGL_NV_stream_socket_unix is present, add to section "3.10.4.y+1
+EGL_SOCKET_TYPE_NV Attribute" above:
+
+ A value of EGL_SOCKET_TYPE_UNIX_NV indicates that the socket handle
+ represents a Unix domain socket, created with SOCK_STREAM type.
+
+If EGL_NV_stream_socket_inet is present, add to section "3.10.4.y+1
+EGL_SOCKET_TYPE_NV Attribute" above:
+
+ A value of EGL_SOCKET_TYPE_INET_NV indicates that the socket handle
+ represents an internet protocol socket, created with SOCK_STREAM
+ type.
+
+Issues
+
+ None
+
+Revision History
+
+ #6 (October 27, 2016) Daniel Kartch
+ - Indicate that the socket handle provided should represent
+ a blocking socket.
+
+ #5 (June 7, 2016) Daniel Kartch
+ - Add contact and clean up in preparation for publication.
+
+ #4 (September 16, 2015) Zander Clucas
+ - Indicated STREAM_SOCKET_PROTOCOL as compatible with socket
+ type CROSS_PROCESS.
+
+ #3 (December 16, 2014) Daniel Kartch
+ - Refined overview to clarify comparison with
+ EGL_KHR_cross_process_fd.
+ - Indicated SOCK_STREAM as a requirement for the socket types.
+
+ #2 (December 11, 2014) Daniel Kartch
+ - Rewrote as NV draft for earlier release.
+ - Reserved enum values.
+
+ #1 (October 10, 2014) Daniel Kartch
+ - Initial EXT draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt
new file mode 100644
index 0000000..5604c4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt
@@ -0,0 +1,198 @@
+Name
+
+ NV_stream_sync
+
+Name Strings
+
+ EGL_NV_stream_sync
+
+Contributors
+
+ Acorn Pooley
+ Marcus Lorentzon
+
+Contacts
+
+ Ian Stewart, NVIDIA (istewart 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 6, June 5, 2012
+
+Number
+
+ EGL Extension #56
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires EGL_KHR_stream extension
+ Requires EGL_KHR_reusable_sync
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+Overview
+
+ This extension defines a new type of reusable sync object. This
+ sync object will be signaled each time a new image frame becomes
+ available in an EGLStream for the consumer to consume.
+
+New functions
+
+ EGLSyncKHR eglCreateStreamSyncNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_NEW_FRAME_NV 0x321F
+
+
+Add a new paragraph to section "3.8.1 Sync Objects" in the
+EGL_KHR_reusable_sync extension, just before the paragraph that
+mentions the eglClientWaitSyncKHR function:
+
+ The command
+
+ EGLSyncKHR eglCreateStreamSyncNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy> and the specified EGLStream <stream>, and
+ returns a handle to the new object. <attrib_list> is an
+ attribute-value list specifying other attributes of the sync
+ object, terminated by an attribute entry EGL_NONE. Attributes not
+ specified in the list will be assigned their default values. The
+ state of <stream> must not be EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ If <type> is EGL_SYNC_NEW_FRAME_NV, a stream-new-frame reusable
+ sync object is created. In this case <attrib_list> must be NULL or
+ empty (containing only EGL_NONE). Attributes of the reusable
+ stream-new-frame sync object are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_NEW_FRAME_NV
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+
+ Any time the state of <stream> transitions to
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR (from any other state),
+ the returned stream-new-frame reusable sync object is signaled.
+ (This effectively means the sync object will become signaled
+ whenever the producer inserts a new image frame into the
+ EGLStream.)
+
+ EGL does not automatically unsignal the stream-new-frame reusable
+ sync object. Generally applications will want to unsignal the
+ sync object after it has been signaled so that the availability
+ of the next frame can
+ be detected.
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <stream> is not a valid EGLStream created for <dpy>,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_STREAM error is
+ generated.
+ * If <stream>'s state is EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_DISCONNECTED_KHR then EGL_NO_SYNC_KHR is
+ returned and an EGL_BAD_ACCESS error is generated.
+ * If a sync object of <type> has already been created for
+ <stream> (and not destroyed), EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ACCESS error is generated.
+ * If <type> is not a supported type of stream sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+Issues
+ 1. Is this extension useful, or does the built in blocking
+ behavior of the consumer described by the
+ EGL_NV_stream_consumer_gltexture extension render this
+ un-useful?
+
+ RESOLVED: Yes. It is useful to have a thread waiting on the
+ signal.
+
+ 2. Does EGL automatically unsignal the sync object?
+
+ RESOLVED: No. After the sync object has been signaled, it is
+ up to the application to unsignal it before waiting on it
+ again. It is important to check for the availability of
+ another frame by querying EGL_PRODUCER_FRAME_KHR after
+ unsignaling the sync object and before waiting on the sync
+ object to prevent a race condition. This can be done using
+ the following code:
+
+ void ConsumeFrames(EGLDisplay dpy, EGLStreamKHR stream)
+ {
+ EGLuint64KHR last_frame = 0;
+ EGLuint64KHR new_frame = 0;
+ EGLSyncKHR sync;
+
+ sync = eglCreateStreamSyncNV(dpy,
+ stream,
+ EGL_SYNC_NEW_FRAME_NV,
+ 0);
+
+ for(;;) {
+ eglSignalSyncKHR(dpy, sync, EGL_UNSIGNALED_KHR);
+ eglQueryStreamu64KHR(dpy,
+ stream,
+ EGL_PRODUCER_FRAME_KHR,
+ &new_frame);
+ if (new_frame != last_frame) {
+ last_frame = new_frame;
+ ConsumeNewFrame(stream);
+ } else {
+ eglClientWaitSyncKHR(dpy, sync, 0, EGL_FOREVER_KHR);
+ }
+ }
+ }
+
+Revision History
+
+ #7 (July 10, 2013) Jon Leech
+ - Fix spelling of 'signalled' -> 'signaled' and assign extension
+ number for publication.
+
+ #6 (June 5, 2012) Acorn Pooley
+ - Add error if stream is in state EGL_STREAM_STATE_CREATED_KHR
+ or EGL_STREAM_STATE_DISCONNECTED_KHR when sync is created.
+
+ #5 (September 30, 2011) Acorn Pooley
+ - Change eglCreateStreamSyncKHR to eglCreateStreamSyncNV
+
+ #4 (September 28, 2011) Acorn Pooley
+ - Add issue 2
+ - Fix return type of eglCreateStreamSyncNV
+
+ #3 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #2 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #1 (June 30, 2011) Acorn Pooley
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt
new file mode 100644
index 0000000..0bf0077
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt
@@ -0,0 +1,554 @@
+Name
+
+ NV_sync
+
+Name Strings
+
+ EGL_NV_sync
+
+Contributors
+
+ Gary King
+ Gregory Prisament
+ Acorn Pooley
+ Jon Leech
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 7, July 27, 2010
+
+Number
+
+ EGL Extension #19
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows heavily from the GL_ARB_sync extension, and like that
+ extension, introduces only a single type of sync object, the
+ "fence sync object." Additional types of sync objects may be
+ introduced in later extensions.
+
+ Fence sync objects have corresponding fences, which are inserted
+ into client API command streams. A sync object can be queried
+ for a given condition, such as completion of the corresponding
+ fence. Fence completion allows applications to request a partial
+ Finish of an API command stream, wherein all commands issued in
+ a particular client API context will be forced to complete before
+ control is returned to the calling thread.
+
+ This extension is nearly identical to NVIDIA's original proposal for the
+ EGL_KHR_sync extension, which some minor differences outlined in Issue 7
+ below.
+
+New Types
+
+ /*
+ * EGLSyncNV is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncNV;
+
+ /*
+ * EGLTimeNV is a 64-bit unsigned integer representing intervals in
+ * nanoseconds (unadjusted standard time). A type defined in the
+ * standard Khronos <KHR/khrplatform.h> header is used instead of
+ * a less-portable native C type.
+ */
+ #include <KHR/khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeNV;
+
+New Procedures and Functions
+
+ EGLSyncNV eglCreateFenceSyncNV( EGLDisplay dpy,
+ EGLenum condition,
+ const EGLint *attrib_list );
+
+ EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
+
+ EGLBoolean eglFenceNV( EGLSyncNV sync );
+
+ EGLint eglClientWaitSyncNV( EGLSyncNV sync,
+ EGLint flags, EGLTimeNV timeout );
+
+ EGLBoolean eglSignalSyncNV( EGLSyncNV sync, EGLenum mode );
+
+ EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
+ EGLint *value );
+
+
+New Tokens
+
+ Accepted in the <condition> parameter of eglCreateFenceSyncNV, and
+ returned in <value> when eglGetSyncAttribNV is called with <attribute>
+ EGL_SYNC_CONDITION_NV:
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateFenceSyncNV, and by the <attribute> parameter of
+ eglGetSyncAttribNV:
+
+ EGL_SYNC_STATUS_NV 0x30E7
+
+ Accepted as an attribute value in the <attrib_list> parameter of
+ eglCreateFenceSyncNV for the EGL_SYNC_STATUS_NV attribute, by
+ the <mode> parameter of eglSignalSyncNV and returned in <value>
+ when eglGetSyncAttribNV is called with <attribute>
+ EGL_SYNC_STATUS_NV:
+
+ EGL_SIGNALED_NV 0x30E8
+ EGL_UNSIGNALED_NV 0x30E9
+
+ Accepted in the <flags> parameter of eglClientWaitSyncNV:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncNV:
+
+ EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncNV:
+
+ EGL_ALREADY_SIGNALED_NV 0x30EA
+ EGL_TIMEOUT_EXPIRED_NV 0x30EB
+ EGL_CONDITION_SATISFIED_NV 0x30EC
+
+ Accepted in the <attribute> parameter of eglGetSyncAttribNV:
+
+ EGL_SYNC_TYPE_NV 0x30ED
+ EGL_SYNC_CONDITION_NV 0x30EE
+
+ Returned in <value> when eglGetSyncAttribNV is called with
+ <attribute> EGL_SYNC_TYPE_NV:
+
+ EGL_SYNC_FENCE_NV 0x30EF
+
+ Returned by eglCreateFenceSyncNV in the event of an error:
+
+ EGL_NO_SYNC_NV ((EGLSyncNV)0)
+
+
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, "Sync Objects" are provided to enable
+ synchronization of client API operations between threads and/or between
+ API contexts. Sync objects may be tested or waited upon by application
+ threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Events may be associated with a sync object. When an
+ event is initially associated with a sync object, the object is
+ unsignaled (its status is set to unsignaled). Once a sync object has
+ been created, EGL may be asked to wait for a sync object to become
+ signaled. Sync objects may also be signaled or unsignaled explicitly.
+ Sync objects are associated with an EGLDisplay; this association
+ is made when the sync object is created.
+
+ Only one type of sync object is defined, the fence sync object, whose
+ associated events are triggered by fence commands which are inserted
+ into the command streams of client API contexts. Fence sync objects may
+ be used to wait for partial completion of a client API command stream,
+ as a more flexible form of glFinish / vgFinish.
+
+ The command
+
+ EGLSyncNV eglCreateFenceSyncNV( EGLDisplay dpy,
+ enum condition,
+ EGLint *attrib_list );
+
+ creates a fence sync object for the specified display <dpy> and returns
+ a handle to the new object. The sync object is assigned a type of
+ EGL_SYNC_FENCE_NV. <condition> must be
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV. <attrib_list> is an attribute-value
+ list specifying other attributes of the sync object, terminated by an
+ attribute entry EGL_NONE. Attributes not specified in the list will be
+ assigned their default values. Attributes accepted by fence sync objects
+ are listed in table 3.aa
+
+ Attribute Name Attribute Value(s) Default Value
+ --------------- ------------------------------------ --------------
+ EGL_SYNC_STATUS_NV EGL_SIGNALED_NV, EGL_UNSIGNALED_NV EGL_SIGNALED_NV
+
+ Table 3.aa Fence Sync Object Attributes
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_NV is returned and an EGL_BAD_DISPLAY error is generated.
+
+ * If <condition> is not EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV,
+ EGL_NO_SYNC_NV is returned and an EGL_BAD_PARAMETER error is generated.
+
+ * If any attribute not appearing in table 3.?? is specified in
+ <attrib_list>, EGL_NO_SYNC_NV is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+
+ The command
+
+ EGLBoolean eglFenceNV( EGLSyncNV sync );
+
+ inserts a fence command into the command stream of the bound API's current
+ context (i.e., the context returned by eglGetCurrentContext), and
+ assoicates it with sync object <sync>. <sync> must be a sync object
+ created with eglCreateFenceSyncNV, and the display associated with <sync>
+ must match the current display (i.e., the display returned by
+ eglGetCurrentDisplay). Calling eglFenceNV unsignals <sync>.
+
+ When the condition of <sync> is satisfied by the fence command, <sync> is
+ signaled by the associated client API context, causing any
+ eglClientWaitSyncNV commands (see below) blocking on <sync> to unblock.
+ The condition EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV is satisfied by completion
+ of the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. <sync>
+ will not be signaled until all effects from these commands on the client
+ API's internal and framebuffer state are fully realized. No other state
+ is affected by execution of the fence command.
+
+ Multiple fence commands may be inserted in any client API command stream
+ for a single sync object. The sync object is unsignaled every time a new
+ fence command is issued, and signaled every time a previous fence command
+ completes, so its status is indeterminate until all fence commands
+ associated with the sync object have completed. However, each time a fence
+ command completes (signaling the sync object), at least one
+ eglClientWaitSyncNV command blocking on that sync object will unblock.
+
+ EGL_TRUE is returned upon successful insertion of the fence command.
+
+ * If <sync> is not a valid sync object with a type of EGL_SYNC_FENCE_NV,
+ EGL_FALSE is returned and an EGL_BAD_PARAMETER error is generated.
+
+ * If the display associated with <sync> does not match the current
+ display, EGL_FALSE is returned and an EGL_BAD_MATCH error is generated.
+
+ * If no context is current for the bound API (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT), EGL_FALSE is returned and an EGL_BAD_MATCH error
+ is generated.
+
+ The command
+
+ EGLint eglClientWaitSyncNV( EGLSyncNV sync, uint flags,
+ EGLTimeNV timeout );
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until a specified timeout value expires. If <sync> is
+ signaled at the time eglClientWaitSyncNV is called then eglClientWaitSyncNV
+ will not block. If <sync> is unsignaled at the time eglClientWaitSyncNV is
+ called then eglClientWaitSyncNV will wait up to <timeout> nanoseconds for
+ <sync> to become signaled.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncNV will never
+ block and simply tests the current status of <sync>. If the value of
+ <timeout> is the special value EGL_FOREVER_NV then eglClientWaitSyncNV
+ does not time out.
+
+ eglClientWaitSyncNV returns one of three status values describing the
+ reason for returning. A return value of EGL_ALREADY_SIGNALED_NV will
+ always be returned if <sync> was signaled when eglClientWaitSyncNV was
+ called, even if <timeout> is zero. A return value of
+ EGL_TIMEOUT_EXPIRED_NV indicates that indicates that the specified
+ timeout period expired before <sync> was signaled. A return value of
+ EGL_CONDITION_SATISFIED_NV indicates that <sync> was signaled before
+ the timeout expired.
+
+ Note that a fence sync object can be in the signaled state because one of
+ three events has occured:
+
+ 1. A previously inserte fence has completed and has signaled the sync
+ object.
+ 2. The sync object was created. Creation of a sync object sets it in the
+ signaled state by default, unless the attribute EGL_SYNC_STATUS_NV
+ is set to EGL_UNSIGNALED_NV in the attribute list.
+ 3. The sync object was signaled by a previously issued
+ eglSignalSyncNV(sync, EGL_SIGNALED_NV) command.
+
+ If the sync object being blocked upon will not be signaled in finite time
+ (for example, by an associated fence command issued previously, but not
+ yet flushed to the graphics pipeline), then eglClientWaitSyncNV may
+ wait forever. To help prevent this behavior (footnote1), if the
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV bit is set in <flags>, and <sync> is
+ unsignaled when eglClientWaitSyncNV is called, then the equivalent of
+ Flush() will be performed for the current API context (i.e., the context
+ returned by eglGetCurrentContext()) before blocking on <sync>. If no
+ context is current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_NV
+ bit is ignored.
+
+ (footnote 1): The simple Flush behavior defined by
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV will not help when waiting for a fence
+ command issued in a different context's command stream. Applications
+ which block on a fence sync object must take additional steps to ensure
+ that the context from which the associated fence command was issued
+ has flushed that command to the graphics pipeline.
+
+ If a sync object is deleted when an eglClientWaitSyncNV is blocking on
+ that object, the behavior of eglClientWaitSyncNV is undefined. Some
+ possible behaviors are to return immediately, to wait for fence commands
+ associated with the deleted sync to complete, or to not return until the
+ timeout period expires.
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+
+ The command
+
+ EGLBoolean eglSignalSyncNV( EGLSyncNV sync, enum mode );
+
+ signals or unsignals the sync object <sync> by changing its status to
+ <mode>, which must be one of the values in table 3.bb. If, as a
+ result of calling eglSignalSyncNV, the status of <sync> transitions
+ from unsignaled to signaled, then at least one eglClientWaitSyncNV
+ commands blocking on <sync> will unblock.
+
+ Assuming no errors are generated, EGL_TRUE is returned.
+
+ Mode Effect
+ ------------------ -------------
+ EGL_SIGNALED_NV Set the status of <sync> to signaled
+ EGL_UNSIGNALED_NV Set the status of <sync> to unsignaled
+
+ Table 3.bb Modes Accepted by eglSignalSyncNV Command
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
+ EGLint *value );
+
+ is used to query attributes of the sync object <sync>. Legal values for
+ <attribute> depend on the type of sync object; these are listed in table 3.cc.
+ Assuming no errors are generated, EGL_TRUE is returned and the value of
+ the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ---------------------
+ EGL_SYNC_TYPE_NV Type of the sync object All
+ EGL_SYNC_STATUS_NV Status of the sync object All
+ EGL_SYNC_CONDITION_NV Signaling condition EGL_SYNC_FENCE_NV
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+ The command
+
+ EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
+
+ is used to destroy an existing sync object. If any eglClientWaitSyncNV
+ commands are blocking on <sync> when eglDestroySyncNV is called, their
+ behavior is undefined. After calling eglDestroySyncNV, <sync> is no
+ longer a valid sync object. Assuming no errors are generated, EGL_TRUE
+ is returned.
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+Issues
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to enable adoption to be as wide
+ as possible, and to behave as similarly as possible to synchronization
+ primitives available in desktop OpenGL (e.g., NV_fence, ARB_sync).
+
+ In the interest of enabling widespread adoption, this extension (following
+ the ARB_sync model) has foregone the inclusion of synchronization primitives
+ and synchronization tests which may be performed entirely inside client
+ API command streams, instead performing synchronization tests
+ (eglClientWaitSyncNV) inside the application & host CPU.
+
+ In the interest of maintaining similarity with previous synchronization
+ primitives, this extension attempts to copy the ARB_sync specification
+ wherever possible (both functionally and stylistically), only making
+ changes where needed to operate inside EGL (rather than a client API
+ context) and match EGL naming conventions.
+
+ 2. Why place this behavior in EGL, rather than in the client APIs?
+
+ RESPONSE: Ultimately, synchronization between multiple asynchronous client
+ API contexts (potentially executing in different threads) is a problem
+ which affects or will affect all EGL client APIs. Rather than creating
+ separate synchronization primitives in each of the client APIs (and then
+ wrapping them in an EGL container), in the interest of developer simplicity
+ & consistency this behavior is being placed inside EGL.
+
+ 3. What does this extension provide that can not be accomplished with the
+ existing, more efficient eglWaitClient and eglWaitNative API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in extremely
+ lightweight manners, in some cases not blocking the calling thread at
+ all; however, they can not be used to synchronize between client API
+ contexts and native APIs executing in separate threads (or simply between
+ client API contexts executing in separate threads), such as between a
+ thread with an active OpenGL context and a second thread performing
+ video decode.
+
+ 4. What does this extension provide that could not be accomplished with
+ native platform synchronization primitives and the existing client API
+ Finish commands?
+
+ RESPONSE: This extension provides a lighter-weight mechanism for
+ synchronizing an application with client API command streams than the
+ all-or-nothing Finish commands, enabling applications to block until
+ a subset of issued client API commands have completed.
+
+ 5. Should integration with native platform synchronization objects be
+ included in this extension, or reserved for future (platform-specific)
+ extensions?
+
+ RESOLVED: Integration with native platform synchronization objects should
+ not be part of this extension, but can be added as future layered
+ extensions if needed. These layered extensions can be platform-specific,
+ or perhaps OpenKODE based.
+
+ Originally, this extension included the ability to create native platform
+ synchronization objects from EGLSync objects. This feature was removed
+ for a few reasons:
+
+ i) The proposed mechanism suggested mapping EGLSync objects to pthread
+ conditional variables on platforms with pthread support. However,
+ pthread conditional variables require an associated mutex and there
+ was no mechanism to relay this associated mutex to the application.
+
+ ii) On certain platforms support for converting to native platform
+ synchronization objects adds great complexity to the implementation.
+
+ iii) Now that OpenKODE is more mature, it would be better to allow
+ conversion from EGLSyncNV objects to OpenKODE synchronization
+ primitives rather than platform-specific ones. We suggest that this
+ functionality, if needed, be added as a layered extension instead of
+ being included here. This way, EGL_NV_sync remains minimal and easy
+ to implement on a variety of platforms.
+
+ 6. Please provide a more detailed description of how ClientWaitSyncNV
+ behaves.
+
+ RESPONSE: Issue 18 in the ARB_sync specification includes a very
+ detailed description of ClientWaitSyncARB (the ARB_sync equivalent of
+ ClientWaitSyncNV). This is provided (unmodified) below:
+
+ Does ClientWaitSyncARB wait on an event, or on sync object
+ status? What is the meaning of sync object status?
+
+ RESOLVED: ClientWaitSyncARB blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these need to be imbedded into the actual
+ spec language):
+
+ R1) A sync object has two possible status values: signaled or
+ unsignaled (corresponding to SYNC_STATUS_ARB values of
+ SIGNALED_ARB or UNSIGNALED_ARB, respectively).
+
+ R2) When created, the state of the sync object is signaled by
+ default, but may be explicitly set to unsignaled.
+
+ R3) A fence command is inserted into a command stream. A sync
+ object is not.
+
+ R4) When a fence command is inserted into a command stream using
+ FenceARB(), the status of the sync object associated with
+ that fence command is set to the unsignaled state.
+
+ R5) Multiple fence commands can be associated with the same sync
+ object.
+
+ R6) A fence command, once its condition has been met, will set
+ its associated sync object to the signaled state. The only
+ condition currently supported is
+ SYNC_PRIOR_COMMANDS_COMPLETE_ARB.
+
+ R7) A wait function, such as ClientWaitSyncARB, waits on a sync
+ object, not on a fence.
+
+ R8) A wait function, such as ClientWaitSyncARB, called on a sync
+ object in the unsignaled state will block. It unblocks
+ (note, not "returns to the application") when the sync
+ object transitions to the signaled state.
+
+ Some of the behaviors resulting from these rules are:
+
+ B1) Calling ClientWaitSyncARB with a timeout of 0 will return
+ TRUE if the sync object is in the signaled state. Note that
+ calling ClientWaitSyncARB with a timeout of 0 in a loop can
+ miss state transitions.
+ B2) Stacking fences is allowed. Each fence, once its condition
+ has been met, will set its associated sync object to the
+ signaled state. If the sync object is already in the
+ signaled state, it stays in that state.
+ B3) ClientWaitSyncARB could take a timeout parameter and return
+ a boolean. If the timeout period has expired,
+ ClientWaitSyncARB will unblock and return FALSE to the
+ caller. If ClientWaitSyncARB unblocks because the sync
+ object it was waiting on is in the signaled state, it will
+ return TRUE.
+ B4) We could define a FinishMultipleSync() command that will
+ unblock once all (or any) of the sync objects passed to it
+ are in the signaled state (also see issue 12).
+ B5) We could define a set/resetSyncObject function to manually
+ set the sync object in the signaled or unsignaled state.
+ This makes it easy for apps to reuse a sync object in the
+ multi-context case, so the sync object can be blocked upon
+ before a fence command is associated with it in the command
+ stream.
+ B6) We could define an API to convert a sync object into an OS
+ specific synchronization primitive (Events on Windows, file
+ descriptors or X-events or semaphores on Unix?)
+
+ 7) How does this extension differ from (relate to) EGL_KHR_sync:
+
+ RESPONSE:
+ As of the time of writing this, the EGL_KHR_sync specification has not
+ been finalized by Khronos and continues to undergo revision. However,
+ NVIDIA has the functionality outlined in this specification implemented
+ and has decided to make it available to developers immediately.
+
+ For the most part, EGL_KHR_sync is identical to revision 5 of EGL_KHR_sync
+ with the following changes:
+
+ a) Enum values are different
+ b) EGLTimeNV is unsigned long long instead of uint64_t.
+ c) Behaviour when there are multiple waiting threads is undefined.
+
+Revision History
+
+#7 (Jon Leech, July 27, 2010)
+ - Redefine EGLTimeNV type to use a typedef from the standard
+ Khronos headers instead of a native C type, for portability.
+#6 (Greg Prisament, May 28, 2009)
+ - Branch spec & turn it into an _NV extension.
+#5 (Greg Prisament, July 22, 2008)
+ - Removed NativeSyncKHR, CreateNativeSyncKHR, and corresponding wording.
+ - Correct EGLuint to EGLint (EGLuint doesn't exist).
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt
new file mode 100644
index 0000000..2f45147
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt
@@ -0,0 +1,99 @@
+Name
+
+ NV_system_time
+
+Name Strings
+
+ EGL_NV_system_time
+
+Contact
+
+ Jason Allen, NVIDIA Corporation (jallen 'at' nvidia.com)
+
+Status
+
+ TBD
+
+Version
+
+ Version 1, July 7, 2011
+
+Number
+
+ EGL Extension #31
+
+Dependencies
+
+ Requires EGL 1.2
+
+Overview
+
+ This extension exposes an alternative method of querying the system time
+ from the driver instead of the operating system.
+
+Issues
+
+ Add 64 bit types?
+
+ Yes, EGL doesn't support any 64 bit types so this extension adds int64
+ and uint64 types.
+
+New Types
+
+ EGLint64NV: 64bit signed integer
+ EGLuint64NV: 64bit unsigned integer
+
+New Procedures and Functions
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV(void);
+ EGLuint64NV eglGetSystemTimeNV(void);
+
+New Tokens
+
+ None
+
+Description
+
+ The command:
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV(void);
+
+ returns the frequency of the system timer, in counts per second. The
+ frequency will not change while the system is running.
+
+ The command:
+
+ EGLuint64NV eglGetSystemTimeNV(void);
+
+ returns the current value of the system timer. The system time in seconds
+ can be calculated by dividing the returned value by the frequency returned
+ by the eglGetSystemTimeFrequencyNV command.
+
+ Multiple calls to eglGetSystemTimeNV may return the same values, applications
+ need to be careful to avoid divide by zero errors when using the interval
+ calculated from successive eglGetSystemTimeNV calls.
+
+Usage Example
+
+ EGLuint64NV frequency = eglGetSystemTimeFrequencyNV();
+
+ loop
+ {
+ EGLuint64NV start = eglGetSystemTimeNV() / frequency;
+
+ // draw
+
+ EGLuint64NV end = eglGetSystemTimeNV() / frequency;
+
+ EGLuint64NV interval = end - start;
+ if (interval > 0)
+ update_animation(interval);
+
+ eglSwapBuffers(dpy, surface);
+ }
+
+Revision History
+
+#1 (Jon Leech, 2011/07/07)
+ - Add missing fields, assign extension number, and publish in the registry.
+
diff --git a/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
new file mode 100644
index 0000000..72710b7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
@@ -0,0 +1,114 @@
+Name
+
+ TIZEN_image_native_buffer
+
+Name Strings
+
+ EGL_TIZEN_image_native_buffer
+
+Contributors
+
+ Dongyeon Kim
+ Minsu Han
+ Inpyo Kang
+ Zeeshan Anwar
+
+Contact
+
+ Dongyeon Kim, Samsung Electronics (dy5.kim 'at' samsung.com)
+ Zeeshan Anwar, Samsung Electronics (z.anwar 'at' samsung.com)
+
+Status
+
+ This extension is obsolete and has been replaced by
+ EGL_TIZEN_image_native_buffer
+
+Version
+
+ Version 2, July 23, 2014
+
+Number
+
+ EGL Extension #76
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension enables using a Tizen native buffer (struct
+ native_buffer) as an EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_TIZEN 0x32A0
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------+
+ | EGL_NATIVE_BUFFER_TIZEN | Used for Tizen native_buffer objects |
+ +-------------------------+--------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_TIZEN, <dpy> must be a valid display,
+ <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer to a valid
+ native_buffer object (cast into the type EGLClientBuffer), and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_BUFFER_TIZEN and <buffer> is not a
+ pointer to a valid native_buffer, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_TIZEN and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_TIZEN and <buffer> was created
+ with properties (format, usage, dimensions, etc.) not supported by
+ the EGL implementation, the error EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of native_buffer
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change with
+ future Tizen releases. The minimum requirements for a given Tizen
+ version should be documented by that version.
+
+
+Revision History
+
+#2 (Zeeshan Anwar, July 01, 2014)
+ - Assigned the value to EGL_NATIVE_BUFFER_TIZEN
+#1 (Dongyeon Kim, June 05, 2013)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
new file mode 100644
index 0000000..3d8ed3c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
@@ -0,0 +1,121 @@
+Name
+
+ TIZEN_image_native_surface
+
+Name Strings
+
+ EGL_TIZEN_image_native_surface
+
+Contributors
+
+ Dongyeon Kim
+ Zeeshan Anwar
+ Minsu Han
+ Inpyo Kang
+
+Contact
+
+ Dongyeon Kim, Samsung Electronics (dy5.kim 'at' samsung.com)
+ Zeeshan Anwar, Samsung Electronics (z.anwar 'at' samsung.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, August 13, 2014
+
+Number
+
+ EGL Extension #77
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ Tizen Buffer Manager (TBM) is a user space, generic memory
+ management framework to create and share memory buffers between
+ different system components. This extension enables using a Tizen
+ Buffer Manager (TBM) surface object (struct tbm_surface_h) as an
+ EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_SURFACE_TIZEN 0x32A1
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +---------------------------+------------------------------------+
+ | <target> | Notes |
+ +---------------------------+------------------------------------+
+ | EGL_NATIVE_SURFACE_TIZEN | Used for Tizen tbm_surface_h objects |
+ +---------------------------+------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_SURFACE_TIZEN, <dpy> must be a valid
+ display, <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer
+ to a valid tbm_surface_h object (cast into the type EGLClientBuffer),
+ and attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_SURFACE_TIZEN and <buffer> is not
+ a pointer to a valid tbm_surface_h, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_SURFACE_TIZEN and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_SURFACE_TIZEN and <buffer> was
+ created with properties (format, usage, dimensions, etc.) not
+ supported by the EGL implementation, the error
+ EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of tbm_surface_h
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change
+ with future Tizen releases. The minimum requirements for a given
+ Tizen version should be documented by that version.
+
+
+Revision History
+#3 (Zeeshan Anwar, August 13, 2014)
+ - Changed tbm_surface to tbm_surface_h
+
+#2 (Zeeshan Anwar, July 23, 2014)
+ - Changed extension name and target name
+ - Assigned value to EGL_NATIVE_SURFACE_TIZEN
+
+#1 (Zeeshan Anwar, July 18, 2014)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt
new file mode 100644
index 0000000..2b2dd59
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt
@@ -0,0 +1,217 @@
+Name
+
+ WL_bind_wayland_display
+
+Name Strings
+
+ EGL_WL_bind_wayland_display
+
+Contact
+
+ Kristian Høgsberg <krh@bitplanet.net>
+ Benjamin Franzke <benjaminfranzke@googlemail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 6, July 14, 2017
+
+Number
+
+ EGL Extension #136
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_image_base is required.
+
+Overview
+
+ This extension provides entry points for binding and unbinding the
+ wl_display of a Wayland compositor to an EGLDisplay. Binding a
+ wl_display means that the EGL implementation should provide one or
+ more interfaces in the Wayland protocol to allow clients to create
+ wl_buffer objects. On the server side, this extension also
+ provides a new target for eglCreateImageKHR, to create an EGLImage
+ from a wl_buffer.
+
+ Adding an implementation-specific Wayland interface, allows the
+ EGL implementation to define specific wayland requests and events,
+ needed for buffer sharing in an EGL Wayland platform.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy,
+ struct wl_resource *buffer,
+ EGLint attribute, EGLint *value);
+
+New Tokens
+
+ Accepted as <target> in eglCreateImageKHR
+
+ EGL_WAYLAND_BUFFER_WL 0x31D5
+
+ Accepted in the <attrib_list> parameter of eglCreateImageKHR:
+
+ EGL_WAYLAND_PLANE_WL 0x31D6
+
+ Possible values for EGL_TEXTURE_FORMAT:
+
+ EGL_TEXTURE_Y_U_V_WL 0x31D7
+ EGL_TEXTURE_Y_UV_WL 0x31D8
+ EGL_TEXTURE_Y_XUXV_WL 0x31D9
+ EGL_TEXTURE_EXTERNAL_WL 0x31DA
+
+ Accepted in the <attribute> parameter of eglQueryWaylandBufferWL:
+
+ EGL_TEXTURE_FORMAT 0x3080
+ EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+
+
+Additions to the EGL 1.4 Specification:
+
+ To bind a server-side wl_display to an EGLDisplay, call
+
+ EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ To unbind a server-side wl_display from an EGLDisplay, call
+
+ EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ eglBindWaylandDisplayWL returns EGL_FALSE when there is already a
+ wl_display bound to EGLDisplay otherwise EGL_TRUE.
+
+ eglUnbindWaylandDisplayWL returns EGL_FALSE when there is no
+ wl_display bound to the EGLDisplay currently otherwise EGL_TRUE.
+
+ XXXXXXXX
+ EGL_WAYLAND_BUFFER_WL
+
+
+ To query attributes of a wl_buffer created by the EGL
+ implementation installed by eglBindWaylandDisplayWL, call:
+
+ EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy,
+ struct wl_resource *buffer,
+ EGLint attribute,
+ EGLint *value);
+
+ A wl_buffer can have several planes, typically in case of planar
+ YUV formats. Depending on the exact YUV format in use, the
+ compositor will have to create one or more EGLImages for the
+ various planes. The eglQueryWaylandBufferWL function should be
+ used to first query the wl_buffer texture format using
+ EGL_TEXTURE_FORMAT as the attribute. If the wl_buffer object is
+ not an EGL wl_buffer (wl_shm and other wayland extensions can
+ create wl_buffer objects of different types), this query will
+ return EGL_FALSE. In that case the wl_buffer can not be used with
+ EGL and the compositor should have another way to get the buffer
+ contents.
+
+ If eglQueryWaylandBufferWL succeeds, the returned value will be
+ one of EGL_TEXTURE_RGB, EGL_TEXTURE_RGBA, EGL_TEXTURE_Y_U_V_WL,
+ EGL_TEXTURE_Y_UV_WL, EGL_TEXTURE_Y_XUXV_WL. The value returned
+ describes how many EGLImages must be used, which components will
+ be sampled from each EGLImage and how they map to rgba components
+ in the shader. The naming conventions separates planes by _ and
+ within each plane, the order or R, G, B, A, Y, U, and V indicates
+ how those components map to the rgba value returned by the
+ sampler. X indicates that the corresponding component in the rgba
+ value isn't used.
+
+ RGB and RGBA buffer types:
+
+ EGL_TEXTURE_RGB
+ One plane, samples RGB from the texture to rgb in the
+ shader. Alpha channel is not valid.
+
+ EGL_TEXTURE_RGBA
+ One plane, samples RGBA from the texture to rgba in the
+ shader.
+
+ YUV buffer types:
+
+ EGL_TEXTURE_Y_U_V_WL
+ Three planes, samples Y from the first plane to r in
+ the shader, U from the second plane to r, and V from
+ the third plane to r.
+
+ EGL_TEXTURE_Y_UV_WL
+ Two planes, samples Y from the first plane to r in
+ the shader, U and V from the second plane to rg.
+
+ EGL_TEXTURE_Y_XUXV_WL
+ Two planes, samples Y from the first plane to r in
+ the shader, U and V from the second plane to g and a.
+
+ EGL_TEXTURE_EXTERNAL_WL
+ Treated as a single plane texture, but sampled with
+ samplerExternalOES according to OES_EGL_image_external
+
+ After querying the wl_buffer layout, create EGLImages for the
+ planes by calling eglCreateImageKHR with wl_buffer as
+ EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target, NULL
+ context. If no attributes are given, an EGLImage will be created
+ for the first plane. For multi-planar buffers, specify the plane
+ to create the EGLImage for by using the EGL_WAYLAND_PLANE_WL
+ attribute. The value of the attribute is the index of the plane,
+ as defined by the buffer format. Writing to an EGLImage created
+ from a wl_buffer in any way (such as glTexImage2D, binding the
+ EGLImage as a renderbuffer etc) will result in undefined behavior.
+
+ Further, eglQueryWaylandBufferWL accepts attributes EGL_WIDTH and
+ EGL_HEIGHT to query the width and height of the wl_buffer.
+
+ Also, eglQueryWaylandBufferWL may accept
+ EGL_WAYLAND_Y_INVERTED_WL attribute to query orientation of
+ wl_buffer. If EGL_WAYLAND_Y_INVERTED_WL is supported
+ eglQueryWaylandBufferWL returns EGL_TRUE and value is a boolean
+ that tells if wl_buffer is y-inverted or not. If
+ EGL_WAYLAND_Y_INVERTED_WL is not supported
+ eglQueryWaylandBufferWL returns EGL_FALSE, in that case
+ wl_buffer should be treated as if value of
+ EGL_WAYLAND_Y_INVERTED_WL was EGL_TRUE.
+
+Issues
+
+Revision History
+
+ Version 1, March 1, 2011
+ Initial draft (Benjamin Franzke)
+ Version 2, July 5, 2012
+ Add EGL_WAYLAND_PLANE_WL attribute to allow creating an EGLImage
+ for different planes of planar buffer. (Kristian Høgsberg)
+ Version 3, July 10, 2012
+ Add eglQueryWaylandBufferWL and the various buffer
+ formats. (Kristian Høgsberg)
+ Version 4, July 19, 2012
+ Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA,
+ and just define the new YUV texture formats. Add support for
+ EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg)
+ Version 5, July 16, 2013
+ Change eglQueryWaylandBufferWL to take a resource pointer to the
+ buffer instead of a pointer to a struct wl_buffer, as the latter has
+ been deprecated. (Ander Conselvan de Oliveira)
+ Version 6, September 16, 2013
+ Add EGL_WAYLAND_Y_INVERTED_WL attribute to allow specifying
+ wl_buffer's orientation.
+ Version 7, July 14, 2017
+ Add EGL_WAYLAND_BUFFER_WL EGLImage target. Reword for inclusion in
+ Khronos registry.
diff --git a/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
new file mode 100644
index 0000000..8395cae
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
@@ -0,0 +1,101 @@
+Name
+
+ WL_create_wayland_buffer_from_image
+
+Name Strings
+
+ EGL_WL_create_wayland_buffer_from_image
+
+Contributors
+
+ Neil Roberts
+ Axel Davy
+ Daniel Stone
+
+Contact
+
+ Neil Roberts <neil.s.roberts@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, October 25, 2013
+
+Number
+
+ EGL Extension #137
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+Overview
+
+ This extension provides an entry point to create a wl_buffer which shares
+ its contents with a given EGLImage. The expected use case for this is in a
+ nested Wayland compositor which is using subsurfaces to present buffers
+ from its clients. Using this extension it can attach the client buffers
+ directly to the subsurface without having to blit the contents into an
+ intermediate buffer. The compositing can then be done in the parent
+ compositor.
+
+ The nested compositor can create an EGLImage from a client buffer resource
+ using the existing WL_bind_wayland_display extension. It should also be
+ possible to create buffers using other types of images although there is
+ no expected use case for that.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
+ EGLImageKHR image);
+
+New Tokens
+
+ None.
+
+Additions to the EGL 1.4 Specification:
+
+ To create a client-side wl_buffer from an EGLImage call
+
+ struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
+ EGLImageKHR image);
+
+ The returned buffer will share the contents with the given EGLImage. Any
+ updates to the image will also be updated in the wl_buffer. Typically the
+ EGLImage will be generated in a nested Wayland compositor using a buffer
+ resource from a client via the EGL_WL_bind_wayland_display extension.
+
+ If there was an error then the function will return NULL. In particular it
+ will generate EGL_BAD_MATCH if the implementation is not able to represent
+ the image as a wl_buffer. The possible reasons for this error are
+ implementation-dependant but may include problems such as an unsupported
+ format or tiling mode or that the buffer is in memory that is inaccessible
+ to the GPU that the given EGLDisplay is using.
+
+Issues
+
+ 1) Under what circumstances can the EGL_BAD_MATCH error be generated? Does
+ this include for example unsupported tiling modes?
+
+ RESOLVED: Yes, the EGL_BAD_MATCH error can be generated for any reason
+ which prevents the implementation from representing the image as a
+ wl_buffer. For example, these problems can be but are not limited to
+ unsupported tiling modes, inaccessible memory or an unsupported pixel
+ format.
+
+Revision History
+
+ Version 1, September 6, 2013
+ Initial draft (Neil Roberts)
+ Version 2, October 25, 2013
+ Added a note about more possible reasons for returning EGL_BAD_FORMAT.
diff --git a/glew/auto/EGL-Registry/index.php b/glew/auto/EGL-Registry/index.php
new file mode 100644
index 0000000..c5522f5
--- /dev/null
+++ b/glew/auto/EGL-Registry/index.php
@@ -0,0 +1,382 @@
+<?php
+$static_title = 'Khronos EGL Registry';
+
+include_once("../../assets/static_pages/khr_page_top.php");
+?>
+
+<p> The EGL registry contains specifications of the core API; specifications
+ of Khronos- and vendor-approved EGL extensions; header files
+ corresponding to the specifications; an enumerant and function registry;
+ and other related documentation. </p>
+
+<h6> EGL Core API Specification and Headers </h6>
+
+<p> The current version of EGL is EGL 1.5. </p>
+
+<ul>
+<li> <a href="specs/eglspec.1.5.pdf"> EGL 1.5 Specification </a> (updated
+ August 27, 2014) and <a href="specs/eglspec.1.5.withchanges.pdf">
+ Specification with changes marked </a>. </li>
+<li> <a href="api/EGL/egl.h"> &lt;EGL/egl.h&gt; </a> for EGL 1.5. </li>
+<li> <a href="api/EGL/eglext.h"> &lt;EGL/eglext.h&gt; </a> for EGL 1.5. </li>
+<li> <a href="api/EGL/eglplatform.h"> &lt;EGL/eglplatform.h&gt; </a> for EGL
+ 1.5. </li>
+<li> <a href="api/KHR/khrplatform.h"> &lt;KHR/khrplatform.h&gt; </a>
+ (required by the current EGL and OpenGL ES headers). </li>
+</ul>
+
+<h6> Reference Pages, Technical Notes and White Papers </h6>
+
+<ul>
+<li> <a href="sdk/docs/man/"> EGL 1.5 reference pages </a>
+<li> <a href="specs/EGLTechNote0001.html">EGL Technical Note #1 - EGL 1.4 and
+ ancillary buffer preservation </a>
+</ul>
+
+<h6> Older Specifications </h6>
+
+<p> Older versions of the EGL Specification provided for reference. </p>
+
+<ul>
+<li> <a href="specs/eglspec.1.4.pdf"> EGL 1.4 Specification </a> and
+ <a href="specs/eglspec.1.4.withchanges.pdf"> Specification with changes
+ marked </a>. </li>
+<li> <a href="specs/eglspec.1.3.pdf"> EGL 1.3 Specification </a> </li>
+<li> <a href="specs/eglspec.1.2.pdf"> EGL 1.2 Specification </a>
+ and corresponding
+ <a href="api/1.2/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+<li> <a href="specs/eglspec.1.1.pdf"> EGL 1.1 Specification </a>
+ and corresponding
+ <a href="api/1.1/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+<li> <a href="specs/eglspec.1.0.pdf"> EGL 1.0 Specification </a>
+ and corresponding
+ <a href="api/1.0/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+</ul>
+
+<h6> EGL XML API Registry </h6>
+
+<p> The database from which EGL enumerant ranges are reserved and the
+ <tt>EGL/egl.h</tt> and <tt>EGL/eglext.h</tt> headers are built is called
+ <a href="api/egl.xml"> egl.xml </a>. It uses an XML schema and
+ processing scripts shared with the OpenGL and OpenGL ES registries. If
+ you need to generate modified headers or modify egl.xml, clone the <a
+ href="https://github.com/KhronosGroup/EGL-Registry"> EGL-Registry </a>
+ git repository and see the <a href="README.md"> README.md </a>
+ file to get started. </p>
+
+
+<h6> <a name="otherextspecs"></a>
+ Extension Specifications</h6>
+<ol>
+<li value=1> <a href="extensions/KHR/EGL_KHR_config_attribs.txt">EGL_KHR_config_attribs</a>
+</li>
+<li value=2> <a href="extensions/KHR/EGL_KHR_lock_surface.txt">EGL_KHR_lock_surface</a>
+</li>
+<li value=3> <a href="extensions/KHR/EGL_KHR_image.txt">EGL_KHR_image</a>
+</li>
+<li value=4> <a href="extensions/KHR/EGL_KHR_vg_parent_image.txt">EGL_KHR_vg_parent_image</a>
+</li>
+<li value=5> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_2D_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_cubemap_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_3D_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_renderbuffer_image</a>
+</li>
+<li value=6> <a href="extensions/KHR/EGL_KHR_reusable_sync.txt">EGL_KHR_reusable_sync</a>
+</li>
+<li value=8> <a href="extensions/KHR/EGL_KHR_image_base.txt">EGL_KHR_image_base</a>
+</li>
+<li value=9> <a href="extensions/KHR/EGL_KHR_image_pixmap.txt">EGL_KHR_image_pixmap</a>
+</li>
+<li value=10> <a href="extensions/IMG/EGL_IMG_context_priority.txt">EGL_IMG_context_priority</a>
+</li>
+<li value=14> <a href="extensions/NOK/EGL_NOK_texture_from_pixmap.txt">EGL_NOK_texture_from_pixmap</a>
+</li>
+<li value=16> <a href="extensions/KHR/EGL_KHR_lock_surface2.txt">EGL_KHR_lock_surface2</a>
+</li>
+<li value=17> <a href="extensions/NV/EGL_NV_coverage_sample.txt">EGL_NV_coverage_sample</a>
+</li>
+<li value=18> <a href="extensions/NV/EGL_NV_depth_nonlinear.txt">EGL_NV_depth_nonlinear</a>
+</li>
+<li value=19> <a href="extensions/NV/EGL_NV_sync.txt">EGL_NV_sync</a>
+</li>
+<li value=20> <a href="extensions/KHR/EGL_KHR_fence_sync.txt">EGL_KHR_fence_sync</a>
+</li>
+<li value=23> <a href="extensions/NOK/EGL_NOK_swap_region2.txt">EGL_NOK_swap_region2</a>
+</li>
+<li value=24> <a href="extensions/HI/EGL_HI_clientpixmap.txt">EGL_HI_clientpixmap</a>
+</li>
+<li value=25> <a href="extensions/HI/EGL_HI_colorformats.txt">EGL_HI_colorformats</a>
+</li>
+<li value=26> <a href="extensions/MESA/EGL_MESA_drm_image.txt">EGL_MESA_drm_image</a>
+</li>
+<li value=27> <a href="extensions/NV/EGL_NV_post_sub_buffer.txt">EGL_NV_post_sub_buffer</a>
+</li>
+<li value=28> <a href="extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt">EGL_ANGLE_query_surface_pointer</a>
+</li>
+<li value=29> <a href="extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt">EGL_ANGLE_surface_d3d_texture_2d_share_handle</a>
+</li>
+<li value=30> <a href="extensions/NV/EGL_NV_coverage_sample_resolve.txt">EGL_NV_coverage_sample_resolve</a>
+</li>
+<li value=31> <a href="extensions/NV/EGL_NV_system_time.txt">EGL_NV_system_time</a>
+</li>
+<li value=32> <a href="extensions/KHR/EGL_KHR_stream.txt">EGL_KHR_stream</a>
+ <br> <a href="extensions/KHR/EGL_KHR_stream.txt">EGL_KHR_stream_attrib</a>
+</li>
+<li value=33> <a href="extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt">EGL_KHR_stream_consumer_gltexture</a>
+</li>
+<li value=34> <a href="extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt">EGL_KHR_stream_producer_eglsurface</a>
+</li>
+<li value=35> <a href="extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt">EGL_KHR_stream_producer_aldatalocator</a>
+</li>
+<li value=36> <a href="extensions/KHR/EGL_KHR_stream_fifo.txt">EGL_KHR_stream_fifo</a>
+</li>
+<li value=37> <a href="extensions/EXT/EGL_EXT_create_context_robustness.txt">EGL_EXT_create_context_robustness</a>
+</li>
+<li value=38> <a href="extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt">EGL_ANGLE_d3d_share_handle_client_buffer</a>
+</li>
+<li value=39> <a href="extensions/KHR/EGL_KHR_create_context.txt">EGL_KHR_create_context</a>
+</li>
+<li value=40> <a href="extensions/KHR/EGL_KHR_surfaceless_context.txt">EGL_KHR_surfaceless_context</a>
+</li>
+<li value=41> <a href="extensions/KHR/EGL_KHR_stream_cross_process_fd.txt">EGL_KHR_stream_cross_process_fd</a>
+</li>
+<li value=42> <a href="extensions/EXT/EGL_EXT_multiview_window.txt">EGL_EXT_multiview_window</a>
+</li>
+<li value=43> <a href="extensions/KHR/EGL_KHR_wait_sync.txt">EGL_KHR_wait_sync</a>
+</li>
+<li value=44> <a href="extensions/NV/EGL_NV_post_convert_rounding.txt">EGL_NV_post_convert_rounding</a>
+</li>
+<li value=45> <a href="extensions/NV/EGL_NV_native_query.txt">EGL_NV_native_query</a>
+</li>
+<li value=46> <a href="extensions/NV/EGL_NV_3dvision_surface.txt">EGL_NV_3dvision_surface</a>
+</li>
+<li value=47> <a href="extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt">EGL_ANDROID_framebuffer_target</a>
+</li>
+<li value=48> <a href="extensions/ANDROID/EGL_ANDROID_blob_cache.txt">EGL_ANDROID_blob_cache</a>
+</li>
+<li value=49> <a href="extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt">EGL_ANDROID_image_native_buffer</a>
+</li>
+<li value=50> <a href="extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt">EGL_ANDROID_native_fence_sync</a>
+</li>
+<li value=51> <a href="extensions/ANDROID/EGL_ANDROID_recordable.txt">EGL_ANDROID_recordable</a>
+</li>
+<li value=52> <a href="extensions/EXT/EGL_EXT_buffer_age.txt">EGL_EXT_buffer_age</a>
+</li>
+<li value=53> <a href="extensions/EXT/EGL_EXT_image_dma_buf_import.txt">EGL_EXT_image_dma_buf_import</a>
+</li>
+<li value=54> <a href="extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt">EGL_ARM_pixmap_multisample_discard</a>
+</li>
+<li value=55> <a href="extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt">EGL_EXT_swap_buffers_with_damage</a>
+</li>
+<li value=56> <a href="extensions/NV/EGL_NV_stream_sync.txt">EGL_NV_stream_sync</a>
+</li>
+<li value=57> <a href="extensions/EXT/EGL_EXT_platform_base.txt">EGL_EXT_platform_base</a>
+</li>
+<li value=58> <a href="extensions/EXT/EGL_EXT_client_extensions.txt">EGL_EXT_client_extensions</a>
+</li>
+<li value=59> <a href="extensions/EXT/EGL_EXT_platform_x11.txt">EGL_EXT_platform_x11</a>
+</li>
+<li value=60> <a href="extensions/KHR/EGL_KHR_cl_event.txt">EGL_KHR_cl_event</a>
+</li>
+<li value=61> <a href="extensions/KHR/EGL_KHR_get_all_proc_addresses.txt">EGL_KHR_get_all_proc_addresses</a>
+ <br> <a href="extensions/KHR/EGL_KHR_get_all_proc_addresses.txt">EGL_KHR_client_get_all_proc_addresses</a>
+</li>
+<li value=62> <a href="extensions/MESA/EGL_MESA_platform_gbm.txt">EGL_MESA_platform_gbm</a>
+</li>
+<li value=63> <a href="extensions/EXT/EGL_EXT_platform_wayland.txt">EGL_EXT_platform_wayland</a>
+</li>
+<li value=64> <a href="extensions/KHR/EGL_KHR_lock_surface3.txt">EGL_KHR_lock_surface3</a>
+</li>
+<li value=65> <a href="extensions/KHR/EGL_KHR_cl_event2.txt">EGL_KHR_cl_event2</a>
+</li>
+<li value=66> <a href="extensions/KHR/EGL_KHR_gl_colorspace.txt">EGL_KHR_gl_colorspace</a>
+</li>
+<li value=67> <a href="extensions/EXT/EGL_EXT_protected_surface.txt">EGL_EXT_protected_surface</a>
+</li>
+<li value=68> <a href="extensions/KHR/EGL_KHR_platform_android.txt">EGL_KHR_platform_android</a>
+</li>
+<li value=69> <a href="extensions/KHR/EGL_KHR_platform_gbm.txt">EGL_KHR_platform_gbm</a>
+</li>
+<li value=70> <a href="extensions/KHR/EGL_KHR_platform_wayland.txt">EGL_KHR_platform_wayland</a>
+</li>
+<li value=71> <a href="extensions/KHR/EGL_KHR_platform_x11.txt">EGL_KHR_platform_x11</a>
+</li>
+<li value=72> <a href="extensions/EXT/EGL_EXT_device_base.txt">EGL_EXT_device_base</a>
+</li>
+<li value=73> <a href="extensions/EXT/EGL_EXT_platform_device.txt">EGL_EXT_platform_device</a>
+</li>
+<li value=74> <a href="extensions/NV/EGL_NV_device_cuda.txt">EGL_NV_device_cuda</a>
+</li>
+<li value=75> <a href="extensions/NV/EGL_NV_cuda_event.txt">EGL_NV_cuda_event</a>
+</li>
+<li value=76> <a href="extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt">EGL_TIZEN_image_native_buffer</a>
+</li>
+<li value=77> <a href="extensions/TIZEN/EGL_TIZEN_image_native_surface.txt">EGL_TIZEN_image_native_surface</a>
+</li>
+<li value=78> <a href="extensions/EXT/EGL_EXT_output_base.txt">EGL_EXT_output_base</a>
+</li>
+<li value=79> <a href="extensions/EXT/EGL_EXT_device_drm.txt">EGL_EXT_device_drm</a>
+ <br> <a href="extensions/EXT/EGL_EXT_device_drm.txt">EGL_EXT_output_drm</a>
+</li>
+<li value=80> <a href="extensions/EXT/EGL_EXT_device_openwf.txt">EGL_EXT_device_openwf</a>
+ <br> <a href="extensions/EXT/EGL_EXT_device_openwf.txt">EGL_EXT_output_openwf</a>
+</li>
+<li value=81> <a href="extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt">EGL_EXT_stream_consumer_egloutput</a>
+</li>
+<li value=83> <a href="extensions/KHR/EGL_KHR_partial_update.txt">EGL_KHR_partial_update</a>
+</li>
+<li value=84> <a href="extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt">EGL_KHR_swap_buffers_with_damage</a>
+</li>
+<li value=85> <a href="extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt">EGL_ANGLE_window_fixed_size</a>
+</li>
+<li value=86> <a href="extensions/EXT/EGL_EXT_yuv_surface.txt">EGL_EXT_yuv_surface</a>
+</li>
+<li value=87> <a href="extensions/MESA/EGL_MESA_image_dma_buf_export.txt">EGL_MESA_image_dma_buf_export</a>
+</li>
+<li value=88> <a href="extensions/EXT/EGL_EXT_device_enumeration.txt">EGL_EXT_device_enumeration</a>
+</li>
+<li value=89> <a href="extensions/EXT/EGL_EXT_device_query.txt">EGL_EXT_device_query</a>
+</li>
+<li value=90> <a href="extensions/ANGLE/EGL_ANGLE_device_d3d.txt">EGL_ANGLE_device_d3d</a>
+</li>
+<li value=91> <a href="extensions/KHR/EGL_KHR_create_context_no_error.txt">EGL_KHR_create_context_no_error</a>
+</li>
+<li value=92> <a href="extensions/KHR/EGL_KHR_debug.txt">EGL_KHR_debug</a>
+</li>
+<li value=93> <a href="extensions/NV/EGL_NV_stream_metadata.txt">EGL_NV_stream_metadata</a>
+</li>
+<li value=94> <a href="extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt">EGL_NV_stream_consumer_gltexture_yuv</a>
+</li>
+<li value=95> <a href="extensions/IMG/EGL_IMG_image_plane_attribs.txt">EGL_IMG_image_plane_attribs</a>
+</li>
+<li value=96> <a href="extensions/KHR/EGL_KHR_mutable_render_buffer.txt">EGL_KHR_mutable_render_buffer</a>
+</li>
+<li value=97> <a href="extensions/EXT/EGL_EXT_protected_content.txt">EGL_EXT_protected_content</a>
+</li>
+<li value=98> <a href="extensions/ANDROID/EGL_ANDROID_presentation_time.txt">EGL_ANDROID_presentation_time</a>
+</li>
+<li value=99> <a href="extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt">EGL_ANDROID_create_native_client_buffer</a>
+</li>
+<li value=100> <a href="extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt">EGL_ANDROID_front_buffer_auto_refresh</a>
+</li>
+<li value=101> <a href="extensions/KHR/EGL_KHR_no_config_context.txt">EGL_KHR_no_config_context</a>
+</li>
+<li value=102> <a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt">EGL_KHR_context_flush_control</a>
+</li>
+<li value=103> <a href="extensions/ARM/EGL_ARM_implicit_external_sync.txt">EGL_ARM_implicit_external_sync</a>
+</li>
+<li value=104> <a href="extensions/MESA/EGL_MESA_platform_surfaceless.txt">EGL_MESA_platform_surfaceless</a>
+</li>
+<li value=105> <a href="extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt">EGL_EXT_image_dma_buf_import_modifiers</a>
+</li>
+<li value=106> <a href="extensions/EXT/EGL_EXT_pixel_format_float.txt">EGL_EXT_pixel_format_float</a>
+</li>
+<li value=107> <a href="extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt">EGL_EXT_gl_colorspace_bt2020_linear</a>
+ <br> <a href="extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt">EGL_EXT_gl_colorspace_bt2020_pq</a>
+</li>
+<li value=108> <a href="extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt">EGL_EXT_gl_colorspace_scrgb_linear</a>
+</li>
+<li value=109> <a href="extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt">EGL_EXT_surface_SMPTE2086_metadata</a>
+</li>
+<li value=110> <a href="extensions/NV/EGL_NV_stream_fifo_next.txt">EGL_NV_stream_fifo_next</a>
+</li>
+<li value=111> <a href="extensions/NV/EGL_NV_stream_fifo_synchronous.txt">EGL_NV_stream_fifo_synchronous</a>
+</li>
+<li value=112> <a href="extensions/NV/EGL_NV_stream_reset.txt">EGL_NV_stream_reset</a>
+</li>
+<li value=113> <a href="extensions/NV/EGL_NV_stream_frame_limits.txt">EGL_NV_stream_frame_limits</a>
+</li>
+<li value=114> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_remote</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_object</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_display</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_process</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_partition</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_system</a>
+</li>
+<li value=115> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket_unix</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket_inet</a>
+</li>
+<li value=116> <a href="extensions/EXT/EGL_EXT_compositor.txt">EGL_EXT_compositor</a>
+</li>
+<li value=117> <a href="extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt">EGL_EXT_surface_CTA861_3_metadata</a>
+</li>
+<li value=118> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt">EGL_EXT_gl_colorspace_display_p3</a>
+</li>
+<li value=118> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt">EGL_EXT_gl_colorspace_display_p3_linear</a>
+</li>
+<li value=119> <a href="extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt">EGL_EXT_gl_colorspace_scrgb (non-linear)</a>
+</li>
+<li value=120> <a href="extensions/EXT/EGL_EXT_image_implicit_sync_control.txt">EGL_EXT_image_implicit_sync_control</a>
+</li>
+<li value=121> <a href="extensions/EXT/EGL_EXT_bind_to_front.txt">EGL_EXT_bind_to_front</a>
+</li>
+<li value=122> <a href="extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt">EGL_ANDROID_get_frame_timestamps</a>
+</li>
+<li value=123> <a href="extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt">EGL_ANDROID_get_native_client_buffer</a>
+</li>
+<li value=124> <a href="extensions/NV/EGL_NV_context_priority_realtime.txt">EGL_NV_context_priority_realtime</a>
+</li>
+<li value=125> <a href="extensions/EXT/EGL_EXT_image_gl_colorspace.txt">EGL_EXT_image_gl_colorspace</a>
+</li>
+<li value=126> <a href="extensions/KHR/EGL_KHR_display_reference.txt">EGL_KHR_display_reference</a>
+</li>
+<li value=127> <a href="extensions/NV/EGL_NV_stream_flush.txt">EGL_NV_stream_flush</a>
+</li>
+<li value=128> <a href="extensions/EXT/EGL_EXT_sync_reuse.txt">EGL_EXT_sync_reuse</a>
+</li>
+<li value=129> <a href="extensions/EXT/EGL_EXT_client_sync.txt">EGL_EXT_client_sync</a>
+</li>
+<li value=130> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt">EGL_EXT_gl_colorspace_display_p3_passthrough</a>
+</li>
+<li value=131> <a href="extensions/MESA/EGL_MESA_query_driver.txt">EGL_MESA_query_driver</a>
+</li>
+<li value=132> <a href="extensions/ANDROID/EGL_ANDROID_GLES_layers.txt">EGL_ANDROID_GLES_layers</a>
+</li>
+<li value=133> <a href="extensions/NV/EGL_NV_n_buffer.txt">EGL_NV_n_buffer</a>
+</li>
+<li value=134> <a href="extensions/NV/EGL_NV_stream_origin.txt">EGL_NV_stream_origin</a>
+</li>
+<li value=135> <a href="extensions/NV/EGL_NV_stream_dma.txt">EGL_NV_stream_dma</a>
+</li>
+<li value=136> <a href="extensions/WL/EGL_WL_bind_wayland_display.txt">EGL_WL_bind_wayland_display</a>
+</li>
+<li value=137> <a href="extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt">EGL_WL_create_wayland_buffer_from_image</a>
+</li>
+<li value=139> <a href="extensions/NV/EGL_NV_stream_consumer_eglimage.txt">EGL_NV_stream_consumer_eglimage</a>
+</li>
+<li value=140> <a href="extensions/EXT/EGL_EXT_device_query_name.txt">EGL_EXT_device_query_name</a>
+</li>
+<li value=141> <a href="extensions/EXT/EGL_EXT_platform_xcb.txt">EGL_EXT_platform_xcb</a>
+</li>
+<li value=142> <a href="extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt">EGL_ANGLE_sync_control_rate</a>
+</li>
+<li value=143> <a href="extensions/EXT/EGL_EXT_device_persistent_id.txt">EGL_EXT_device_persistent_id</a>
+</li>
+<li value=144> <a href="extensions/EXT/EGL_EXT_device_drm_render_node.txt">EGL_EXT_device_drm_render_node</a>
+</li>
+<li value=145> <a href="extensions/EXT/EGL_EXT_config_select_group.txt">EGL_EXT_config_select_group</a>
+</li>
+<li value=146> <a href="extensions/EXT/EGL_EXT_present_opaque.txt">EGL_EXT_present_opaque</a>
+</li>
+<li value=147> <a href="extensions/EXT/EGL_EXT_surface_compression.txt">EGL_EXT_surface_compression</a>
+</li>
+</ol>
+
+<h6> Providing Feedback on the Registry </h6>
+
+<p> Khronos welcomes comments and bug reports. To provide feedback on the
+ EGL registry itself (such as reporting missing content, bad links,
+ etc.), file an issue in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/issues">
+ EGL-Registry </a> Github project. </p>
+
+<p> For the EGL API, extensions, and headers, file a bug on the <a
+ href="http://www.khronos.org/bugzilla/"> Khronos Bugzilla </a>. Make
+ sure to fill in the &quot;Product&quot; field in the bug entry form as
+ &quot;EGL&quot;, and pick appropriate values for the Component and other
+ fields. </p>
+
+<?php include_once("../../assets/static_pages/khr_page_bottom.php"); ?>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/registry.tcl b/glew/auto/EGL-Registry/registry.tcl
new file mode 100644
index 0000000..c2bfb63
--- /dev/null
+++ b/glew/auto/EGL-Registry/registry.tcl
@@ -0,0 +1,770 @@
+# Copyright 2006-2021 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+# registry.tcl
+#
+# This is a simple human-readable database defining the EGL extension
+# registry. For each extension, it includes an extension number, flags
+# if the extension is public, and includes a path to the extension
+# specification.
+#
+# The companion script 'regproc.tcl' uses this to build up the
+# extensions portion of the public registry, by copying out only
+# the public specifications.
+
+extension EGL_KHR_config_attribs {
+ number 1
+ flags public
+ filename extensions/KHR/EGL_KHR_config_attribs.txt
+}
+extension EGL_KHR_lock_surface {
+ number 2
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface.txt
+}
+extension EGL_KHR_image {
+ number 3
+ flags public
+ filename extensions/KHR/EGL_KHR_image.txt
+}
+extension EGL_KHR_vg_parent_image {
+ number 4
+ flags public
+ filename extensions/KHR/EGL_KHR_vg_parent_image.txt
+}
+extension EGL_KHR_gl_texture_2D_image {
+ number 5
+ flags public
+ filename extensions/KHR/EGL_KHR_gl_image.txt
+ alias EGL_KHR_gl_texture_cubemap_image
+ alias EGL_KHR_gl_texture_3D_image
+ alias EGL_KHR_gl_renderbuffer_image
+}
+extension EGL_KHR_reusable_sync {
+ number 6
+ flags public
+ filename extensions/KHR/EGL_KHR_reusable_sync.txt
+}
+extension EGL_SYMBIAN_image_preserved {
+ number 7
+ flags private incomplete
+ filename extensions/SYMBIAN/EGL_SYMBIAN_image_preserved.txt
+}
+extension EGL_KHR_image_base {
+ number 8
+ flags public
+ filename extensions/KHR/EGL_KHR_image_base.txt
+}
+extension EGL_KHR_image_pixmap {
+ number 9
+ flags public
+ filename extensions/KHR/EGL_KHR_image_pixmap.txt
+}
+extension EGL_IMG_context_priority {
+ number 10
+ flags public
+ filename extensions/IMG/EGL_IMG_context_priority.txt
+}
+extension EGL_NOK_hibernate_context {
+ number 11
+ flags private
+ filename extensions/NOK/EGL_NOK_hibernate_context.txt
+}
+extension EGL_NOK_swap_region {
+ number 12
+ flags private
+ filename extensions/NOK/EGL_NOK_swap_region.txt
+}
+extension EGL_NOK_resource_profiling {
+ number 13
+ flags private
+ filename extensions/NOK/EGL_NOK_resource_profiling.txt
+}
+extension EGL_NOK_texture_from_pixmap {
+ number 14
+ flags public
+ filename extensions/NOK/EGL_NOK_texture_from_pixmap.txt
+}
+extension EGL_NOK_resource_profiling2 {
+ number 15
+ flags private
+ filename extensions/NOK/EGL_NOK_resource_profiling2.txt
+}
+extension EGL_KHR_lock_surface2 {
+ number 16
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface2.txt
+}
+extension EGL_NV_coverage_sample {
+ number 17
+ flags public
+ filename extensions/NV/EGL_NV_coverage_sample.txt
+}
+extension EGL_NV_depth_nonlinear {
+ number 18
+ flags public
+ filename extensions/NV/EGL_NV_depth_nonlinear.txt
+}
+extension EGL_NV_sync {
+ number 19
+ flags public
+ filename extensions/NV/EGL_NV_sync.txt
+}
+extension EGL_KHR_fence_sync {
+ number 20
+ flags public
+ filename extensions/KHR/EGL_KHR_fence_sync.txt
+}
+extension EGL_NOK_surface_scaling {
+ number 21
+ flags private
+ filename extensions/NOK/EGL_NOK_surface_scaling.txt
+}
+extension EGL_NOK_image_shared {
+ number 22
+ flags private
+ filename extensions/NOK/EGL_NOK_image_shared.txt
+}
+extension EGL_NOK_swap_region2 {
+ number 23
+ flags public
+ filename extensions/NOK/EGL_NOK_swap_region2.txt
+}
+extension EGL_HI_clientpixmap {
+ number 24
+ flags public
+ filename extensions/HI/EGL_HI_clientpixmap.txt
+}
+extension EGL_HI_colorformats {
+ number 25
+ flags public
+ filename extensions/HI/EGL_HI_colorformats.txt
+}
+extension EGL_MESA_drm_image {
+ number 26
+ flags public
+ filename extensions/MESA/EGL_MESA_drm_image.txt
+}
+extension EGL_NV_post_sub_buffer {
+ number 27
+ flags public
+ filename extensions/NV/EGL_NV_post_sub_buffer.txt
+}
+extension EGL_ANGLE_query_surface_pointer {
+ number 28
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
+}
+extension EGL_ANGLE_surface_d3d_texture_2d_share_handle {
+ number 29
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
+}
+extension EGL_NV_coverage_sample_resolve {
+ number 30
+ flags public
+ filename extensions/NV/EGL_NV_coverage_sample_resolve.txt
+}
+extension EGL_NV_system_time {
+ number 31
+ flags public
+ filename extensions/NV/EGL_NV_system_time.txt
+}
+extension EGL_KHR_stream {
+ number 32
+ flags public
+ filename extensions/KHR/EGL_KHR_stream.txt
+ alias EGL_KHR_stream_attrib
+}
+extension EGL_KHR_stream_consumer_gltexture {
+ number 33
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
+}
+extension EGL_KHR_stream_producer_eglsurface {
+ number 34
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
+}
+extension EGL_KHR_stream_producer_aldatalocator {
+ number 35
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
+}
+extension EGL_KHR_stream_fifo {
+ number 36
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_fifo.txt
+}
+extension EGL_EXT_create_context_robustness {
+ number 37
+ flags public
+ filename extensions/EXT/EGL_EXT_create_context_robustness.txt
+}
+extension EGL_ANGLE_d3d_share_handle_client_buffer {
+ number 38
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
+}
+extension EGL_KHR_create_context {
+ number 39
+ flags public
+ filename extensions/KHR/EGL_KHR_create_context.txt
+}
+extension EGL_KHR_surfaceless_context {
+ number 40
+ flags public
+ filename extensions/KHR/EGL_KHR_surfaceless_context.txt
+}
+extension EGL_KHR_stream_cross_process_fd {
+ number 41
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
+}
+extension EGL_EXT_multiview_window {
+ number 42
+ flags public
+ filename extensions/EXT/EGL_EXT_multiview_window.txt
+}
+extension EGL_KHR_wait_sync {
+ number 43
+ flags public
+ filename extensions/KHR/EGL_KHR_wait_sync.txt
+}
+extension EGL_NV_post_convert_rounding {
+ number 44
+ flags public
+ filename extensions/NV/EGL_NV_post_convert_rounding.txt
+}
+extension EGL_NV_native_query {
+ number 45
+ flags public
+ filename extensions/NV/EGL_NV_native_query.txt
+}
+extension EGL_NV_3dvision_surface {
+ number 46
+ flags public
+ filename extensions/NV/EGL_NV_3dvision_surface.txt
+}
+extension EGL_ANDROID_framebuffer_target {
+ number 47
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
+}
+extension EGL_ANDROID_blob_cache {
+ number 48
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_blob_cache.txt
+}
+extension EGL_ANDROID_image_native_buffer {
+ number 49
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
+}
+extension EGL_ANDROID_native_fence_sync {
+ number 50
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
+}
+extension EGL_ANDROID_recordable {
+ number 51
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_recordable.txt
+}
+extension EGL_EXT_buffer_age {
+ number 52
+ flags public
+ filename extensions/EXT/EGL_EXT_buffer_age.txt
+}
+extension EGL_EXT_image_dma_buf_import {
+ number 53
+ flags public
+ filename extensions/EXT/EGL_EXT_image_dma_buf_import.txt
+}
+extension EGL_ARM_pixmap_multisample_discard {
+ number 54
+ flags public
+ filename extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
+}
+extension EGL_EXT_swap_buffers_with_damage {
+ number 55
+ flags public
+ filename extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
+}
+extension EGL_NV_stream_sync {
+ number 56
+ flags public
+ filename extensions/NV/EGL_NV_stream_sync.txt
+}
+extension EGL_EXT_platform_base {
+ number 57
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_base.txt
+}
+extension EGL_EXT_client_extensions {
+ number 58
+ flags public
+ filename extensions/EXT/EGL_EXT_client_extensions.txt
+}
+extension EGL_EXT_platform_x11 {
+ number 59
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_x11.txt
+}
+extension EGL_KHR_cl_event {
+ number 60
+ flags public
+ filename extensions/KHR/EGL_KHR_cl_event.txt
+}
+extension EGL_KHR_get_all_proc_addresses {
+ number 61
+ flags public
+ filename extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
+ alias EGL_KHR_client_get_all_proc_addresses
+}
+extension EGL_MESA_platform_gbm {
+ number 62
+ flags public
+ filename extensions/MESA/EGL_MESA_platform_gbm.txt
+}
+extension EGL_EXT_platform_wayland {
+ number 63
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_wayland.txt
+}
+extension EGL_KHR_lock_surface3 {
+ number 64
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface3.txt
+}
+extension EGL_KHR_cl_event2 {
+ number 65
+ flags public
+ filename extensions/KHR/EGL_KHR_cl_event2.txt
+}
+extension EGL_KHR_gl_colorspace {
+ number 66
+ flags public
+ filename extensions/KHR/EGL_KHR_gl_colorspace.txt
+}
+extension EGL_EXT_protected_surface {
+ number 67
+ flags public
+ filename extensions/EXT/EGL_EXT_protected_surface.txt
+}
+extension EGL_KHR_platform_android {
+ number 68
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_android.txt
+}
+extension EGL_KHR_platform_gbm {
+ number 69
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_gbm.txt
+}
+extension EGL_KHR_platform_wayland {
+ number 70
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_wayland.txt
+}
+extension EGL_KHR_platform_x11 {
+ number 71
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_x11.txt
+}
+extension EGL_EXT_device_base {
+ number 72
+ flags public
+ filename extensions/EXT/EGL_EXT_device_base.txt
+}
+extension EGL_EXT_platform_device {
+ number 73
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_device.txt
+}
+extension EGL_NV_device_cuda {
+ number 74
+ flags public
+ filename extensions/NV/EGL_NV_device_cuda.txt
+}
+extension EGL_NV_cuda_event {
+ number 75
+ flags public
+ filename extensions/NV/EGL_NV_cuda_event.txt
+}
+extension EGL_TIZEN_image_native_buffer {
+ number 76
+ flags public
+ filename extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
+}
+extension EGL_TIZEN_image_native_surface {
+ number 77
+ flags public
+ filename extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
+}
+extension EGL_EXT_output_base {
+ number 78
+ flags public
+ filename extensions/EXT/EGL_EXT_output_base.txt
+}
+extension EGL_EXT_device_drm {
+ number 79
+ flags public
+ filename extensions/EXT/EGL_EXT_device_drm.txt
+ alias EGL_EXT_output_drm
+}
+extension EGL_EXT_device_openwf {
+ number 80
+ flags public
+ filename extensions/EXT/EGL_EXT_device_openwf.txt
+ alias EGL_EXT_output_openwf
+}
+extension EGL_EXT_stream_consumer_egloutput {
+ number 81
+ flags public
+ filename extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
+}
+extension EGL_QCOM_gpu_perf {
+ number 82
+ flags private
+ filename extensions/QCOM/EGL_QCOM_gpu_perf.txt
+}
+extension EGL_KHR_partial_update {
+ number 83
+ flags public
+ filename extensions/KHR/EGL_KHR_partial_update.txt
+}
+extension EGL_KHR_swap_buffers_with_damage {
+ number 84
+ flags public
+ filename extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
+}
+extension EGL_ANGLE_window_fixed_size {
+ number 85
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
+}
+extension EGL_EXT_yuv_surface {
+ number 86
+ flags public
+ filename extensions/EXT/EGL_EXT_yuv_surface.txt
+}
+extension EGL_MESA_image_dma_buf_export {
+ number 87
+ flags public
+ filename extensions/MESA/EGL_MESA_image_dma_buf_export.txt
+}
+extension EGL_EXT_device_enumeration {
+ number 88
+ flags public
+ filename extensions/EXT/EGL_EXT_device_enumeration.txt
+}
+extension EGL_EXT_device_query {
+ number 89
+ flags public
+ filename extensions/EXT/EGL_EXT_device_query.txt
+}
+extension EGL_ANGLE_device_d3d {
+ number 90
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_device_d3d.txt
+}
+extension EGL_KHR_create_context_no_error {
+ number 91
+ flags public
+ filename extensions/KHR/EGL_KHR_create_context_no_error.txt
+}
+extension EGL_KHR_debug {
+ number 92
+ flags public
+ filename extensions/KHR/EGL_KHR_debug.txt
+}
+extension EGL_NV_stream_metadata {
+ number 93
+ flags public
+ filename extensions/NV/EGL_NV_stream_metadata.txt
+}
+extension EGL_NV_stream_consumer_gltexture_yuv {
+ number 94
+ flags public
+ filename extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
+}
+extension EGL_IMG_image_plane_attribs {
+ number 95
+ flags public
+ filename extensions/IMG/EGL_IMG_image_plane_attribs.txt
+}
+extension EGL_KHR_mutable_render_buffer {
+ number 96
+ flags public
+ filename extensions/KHR/EGL_KHR_mutable_render_buffer.txt
+}
+extension EGL_EXT_protected_content {
+ number 97
+ flags public
+ filename extensions/EXT/EGL_EXT_protected_content.txt
+}
+extension EGL_ANDROID_presentation_time {
+ number 98
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_presentation_time.txt
+}
+extension EGL_ANDROID_create_native_client_buffer {
+ number 99
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
+}
+extension EGL_ANDROID_front_buffer_auto_refresh {
+ number 100
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
+}
+extension EGL_KHR_no_config_context {
+ number 101
+ flags public
+ filename extensions/KHR/EGL_KHR_no_config_context.txt
+}
+extension EGL_KHR_context_flush_control {
+ number 102
+ flags public
+ filename ../OpenGL/extensions/KHR/KHR_context_flush_control.txt
+}
+extension EGL_ARM_implicit_external_sync {
+ number 103
+ flags public
+ filename extensions/ARM/EGL_ARM_implicit_external_sync.txt
+}
+extension EGL_MESA_platform_surfaceless {
+ number 104
+ flags public
+ filename extensions/MESA/EGL_MESA_platform_surfaceless.txt
+}
+extension EGL_EXT_image_dma_buf_import_modifiers {
+ number 105
+ flags public
+ filename extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
+}
+extension EGL_EXT_pixel_format_float {
+ number 106
+ flags public
+ filename extensions/EXT/EGL_EXT_pixel_format_float.txt
+}
+extension EGL_EXT_gl_colorspace_bt2020_linear {
+ number 107
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
+ alias EGL_EXT_gl_colorspace_bt2020_pq
+}
+extension EGL_EXT_gl_colorspace_scrgb_linear {
+ number 108
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
+}
+extension EGL_EXT_surface_SMPTE2086_metadata {
+ number 109
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
+}
+extension EGL_NV_stream_fifo_next {
+ number 110
+ flags public
+ filename extensions/NV/EGL_NV_stream_fifo_next.txt
+}
+extension EGL_NV_stream_fifo_synchronous {
+ number 111
+ flags public
+ filename extensions/NV/EGL_NV_stream_fifo_synchronous.txt
+}
+extension EGL_NV_stream_reset {
+ number 112
+ flags public
+ filename extensions/NV/EGL_NV_stream_reset.txt
+}
+extension EGL_NV_stream_frame_limits {
+ number 113
+ flags public
+ filename extensions/NV/EGL_NV_stream_frame_limits.txt
+}
+extension EGL_NV_stream_remote {
+ number 114
+ flags public
+ filename extensions/NV/EGL_NV_stream_remote.txt
+ alias EGL_NV_stream_cross_object
+ alias EGL_NV_stream_cross_display
+ alias EGL_NV_stream_cross_process
+ alias EGL_NV_stream_cross_partition
+ alias EGL_NV_stream_cross_system
+}
+extension EGL_NV_stream_socket {
+ number 115
+ flags public
+ filename extensions/NV/EGL_NV_stream_socket.txt
+ alias EGL_NV_stream_socket_unix
+ alias EGL_NV_stream_socket_inet
+}
+extension EGL_EXT_compositor {
+ number 116
+ flags public
+ filename extensions/EXT/EGL_EXT_compositor.txt
+}
+extension EGL_EXT_surface_CTA861_3_metadata {
+ number 117
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
+}
+extension EGL_EXT_gl_colorspace_display_p3 {
+ number 118
+ flags public
+ filename extensions/EXT/EGL_EXT_colorspace_display_p3.txt
+}
+extension EGL_EXT_gl_colorspace_scrgb {
+ number 119
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
+}
+extension EGL_EXT_image_implicit_sync_control {
+ number 120
+ flags public
+ filename extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
+}
+extension EGL_EXT_bind_to_front {
+ number 121
+ flags public
+ filename extensions/EXT/EGL_EXT_bind_to_front.txt
+}
+extension EGL_ANDROID_get_frame_timestamps {
+ number 122
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
+}
+extension EGL_ANDROID_get_native_client_buffer {
+ number 123
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
+}
+extension EGL_NV_context_priority_realtime {
+ number 124
+ flags public
+ filename extensions/NV/EGL_NV_context_priority_realtime.txt
+}
+extension EGL_EXT_image_gl_colorspace {
+ number 125
+ flags public
+ filename extensions/EXT/EGL_EXT_image_gl_colorspace.txt
+}
+extension EGL_KHR_display_reference {
+ number 126
+ flags public
+ filename extensions/KHR/EGL_KHR_display_reference.txt
+}
+extension EGL_NV_stream_flush {
+ number 127
+ flags public
+ filename extensions/NV/EGL_NV_stream_flush.txt
+}
+extension EGL_EXT_sync_reuse {
+ number 128
+ flags public
+ filename extensions/EXT/EGL_EXT_sync_reuse.txt
+}
+extension EGL_EXT_client_sync {
+ number 129
+ flags public
+ filename extensions/EXT/EGL_EXT_client_sync.txt
+}
+extension EGL_EXT_gl_colorspace_display_p3_passthrough {
+ number 130
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
+}
+extension EGL_MESA_query_driver {
+ number 131
+ flags public
+ filename extensions/MESA/EGL_MESA_query_driver.txt
+}
+extension EGL_ANDROID_GLES_layers {
+ number 132
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
+}
+extension EGL_NV_n_buffer {
+ number 133
+ flags public
+ filename extensions/NV/EGL_NV_n_buffer.txt
+}
+extension EGL_NV_stream_origin {
+ number 134
+ flags public
+ filename extensions/NV/EGL_NV_stream_origin.txt
+}
+extension EGL_NV_stream_dma {
+ number 135
+ flags public
+ filename extensions/NV/EGL_NV_stream_dma.txt
+}
+extension EGL_WL_bind_wayland_display {
+ number 136
+ flags public
+ filename extensions/WL/EGL_WL_bind_wayland_display.txt
+}
+extension EGL_WL_create_wayland_buffer_from_image {
+ number 137
+ flags public
+ filename extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
+}
+extension EGL_ARM_image_format {
+ number 138
+ flags public
+ filename extensions/ARM/EGL_ARM_image_format.txt
+}
+extension EGL_NV_stream_consumer_eglimage {
+ number 139
+ flags public
+ filename extensions/NV/EGL_NV_stream_consumer_eglimage.txt
+}
+extension EGL_NV_stream_consumer_eglimage {
+ number 140
+ flags public
+ filename extensions/EXT/EGL_EXT_device_query_name.txt
+}
+extension EGL_EXT_platform_xcb {
+ number 141
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_xcb.txt
+}
+extension EGL_ANGLE_sync_control_rate {
+ number 142
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
+}
+extension EGL_EXT_device_persistent_id {
+ number 143
+ flags public
+ filename extensions/EXT/EGL_EXT_device_persistent_id.txt
+}
+extension EGL_EXT_device_drm_render_node {
+ number 144
+ flags public
+ filename extensions/EXT/EGL_EXT_device_drm_render_node.txt
+}
+extension EGL_EXT_config_select_group {
+ number 145
+ flags public
+ filename extensions/EXT/EGL_EXT_config_select_group.txt
+}
+extension EGL_EXT_present_opaque {
+ number 146
+ flags public
+ filename extensions/EXT/EGL_EXT_present_opaque.txt
+}
+extension EGL_EXT_surface_compression {
+ number 147
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_compression.txt
+}
+extension EGL_EXT_explicit_device {
+ number 148
+ flags public
+ filename extensions/EXT/EGL_EXT_explicit_device.txt
+}
+# Next free extension number: 149
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/.htaccess b/glew/auto/EGL-Registry/sdk/docs/man/.htaccess
new file mode 100644
index 0000000..578915b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/.htaccess
@@ -0,0 +1,13 @@
+RewriteEngine on
+
+# Avoid redirect loops
+RewriteCond %{ENV:REDIRECT_STATUS} 200
+RewriteRule ^ - [L]
+
+# Unlike the OpenGL ES and OpenGL reference pages, we're not keeping
+# old versions of the EGL man pages around. Just redirect links to
+# egl/sdk/docs/man/xhtml/*.html to the new HTML 5 pages in html/*.xhtml.
+
+RewriteRule ^xhtml/$ https://www.khronos.org/registry/egl/sdk/docs/man/ [L,R=301]
+RewriteRule ^xhtml/index.html https://www.khronos.org/registry/egl/sdk/docs/man/ [L,R=301]
+RewriteRule ^xhtml/(.*)\.html https://www.khronos.org/registry/egl/sdk/docs/man/html/$1.xhtml [L,R=301]
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/NOTES b/glew/auto/EGL-Registry/sdk/docs/man/NOTES
new file mode 100644
index 0000000..710ee20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/NOTES
@@ -0,0 +1,59 @@
+egl/ -> EGL Docbook 4.3 + OpenCL stuff
+es/ -> ES Docbook 5 + OpenCL stuff
+
+Only in es/ :
+ OK> accord.js - Javascript for accordion menus
+ OK> genheaders.py - unused
+ OK> makeindex.py - make accordion index frame
+ OK> opengl-man.css - CSS equivalent to content wrapped in old/styles-css.xsl
+ OK> start.html - start page
+ OK> ../index.html - main SDK index
+ OK> ../top.php - top bar of interface
+ OK> ../bottom.php - bottom section of interface
+ OK> style-index.css - CSS for index page
+
+Only in egl/ :
+ OK> EGL_300.png - icon
+ OK> KhronosLogo.jpg - icon
+ OK> index.html - main SDK index (equivalent to es/../index.php)
+ OK> Header.html - top bar of interface
+ OK> headBackground.jpg - background for Header.html
+ NO> TOC.html - accordion index frame, equivalent to output of makeindex.py
+ OK> Intro.html - equivalent to start.html
+ OK> copyright.inc.xsl - inserted by egl-man.xsl into each page
+ NO> ctop.xsl - no longer used?
+ NO> styles-css.xsl - equivalent to es/opengl-man.css
+ NO> maketoc.pl - replaced by es/makeindex.py
+
+Similar files:
+ OK> egl/egl-man.xsl - branched from opengl-man.xsl, should be compared to es/opengl-man.xsl
+ OK> egl/style.css - equivalent to es/style-index.css, includes a couple of other .css files
+ OK> egl/undohtml.css - identical, appears to reset CSS parameters
+ OK> egl/present.css - minor tweak to CSS class name, lev1 -> Level1
+ OK> egl/bullets*gif - accordion menu navigation bullets
+
+
+----------
+ Added from ES:
+ man/index.php - navigation framework, edited for correct title and top bar height
+ man/top.php - from ES but mostly replaced by egl/Header.html
+ man/bottom.php
+ man/headBackground.jpg - from ES
+
+ accord.js
+ bullets-{contract,end,expand}.gif - accordion menus
+ makeindex.py - with edits for EGL instead of ES
+ present.css - matching output of makeindex.py
+ Makefile - with edits from egl/Makefile
+ khronos-man.css - copied from es/opengl-man.css
+ start.html - with massive edits from egl/Intro.html
+ style-index.css - equivalent to egl/style.css
+ khronos-man.xsl - merged from egl/egl-man.xsl and es/opengl-man.xsl.
+ egl-man.xsl - stuff from old egl/egl-man.xsl not being used
+ (yet) in khronos-man.xsl.
+
+ Added from EGL:
+ EGL_300.png
+ KhronosLogo.jpg
+ undohtml.css
+ copyright.inc.xsl
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/README b/glew/auto/EGL-Registry/sdk/docs/man/README
new file mode 100644
index 0000000..9355121
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/README
@@ -0,0 +1 @@
+EGL reference pages, branched from /repos/ogles/branches/1.X/doc/man/xhtml
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/bottom.php b/glew/auto/EGL-Registry/sdk/docs/man/bottom.php
new file mode 100644
index 0000000..b90da9f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/bottom.php
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>EGL Reference Pages</title>
+</head>
+<frameset cols="280,*">
+ <frame frameborder="0" marginwidth="0" marginheight="0" src="html/indexflat.php">
+ <frame name="pagedisplay" frameborder="0" marginwidth="20" marginheight="20" src="html/start.html">
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml b/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml
new file mode 100644
index 0000000..e71ca98
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<para xmlns="http://docbook.org/ns/docbook" version="5.0">
+ <refsect3 xml:id="copyright">
+ <!-- <title>Copyright</title> -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg"/>
+ </imageobject>
+ <para>
+ Copyright &#169; 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </para>
+ </refsect3>
+</para>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl b/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl
new file mode 100644
index 0000000..2d3e1cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl
@@ -0,0 +1,1455 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:db = "http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="exsl db"
+ version="1.0">
+
+<!--
+# ======================================================================
+# This file is part of DocBook V5.0CR5
+#
+# Copyright 2005 Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+#
+# Release: $Id: db4-upgrade.xsl 9828 2013-11-03 21:45:22Z tom_schr $
+#
+# Permission to use, copy, modify and distribute this stylesheet
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies. The copyright
+# holders make no representation about the suitability of the schema
+# for any purpose. It is provided "as is" without expressed or implied
+# warranty.
+#
+# Please direct all questions, bug reports, or suggestions for changes
+# to the docbook@lists.oasis-open.org mailing list. For more
+# information, see http://www.oasis-open.org/docbook/.
+#
+# ======================================================================
+-->
+
+<xsl:param name="db5.version" select="'5.0'"/> <!-- DocBook version for the output 5.0 and 5.1 only current values -->
+<xsl:param name="db5.version.string" select="$db5.version"/> <!-- Set this if you want a local version number -->
+<xsl:param name="keep.numbered.sections" select="'0'"/> <!-- Set to 1 to keep numbered sections, default changes to recursive -->
+
+<xsl:variable name="version" select="'1.1'"/> <!-- version of this transform -->
+
+<xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes"/>
+
+<xsl:preserve-space elements="*"/>
+<xsl:param name="rootid">
+ <xsl:choose>
+ <xsl:when test="/*/@id">
+ <xsl:value-of select="/*/@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>UNKNOWN</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="defaultDate" select="''"/>
+
+<xsl:template match="/">
+ <xsl:variable name="converted">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:comment>
+ <xsl:text> Converted by db4-upgrade version </xsl:text>
+ <xsl:value-of select="$version"/>
+ <xsl:text> </xsl:text>
+ </xsl:comment>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="exsl:node-set($converted)/*" mode="addNS"/>
+</xsl:template>
+
+<!-- Convert numbered sections into recursive sections, unless
+ $keep.numbered.sections is set to '1' -->
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section"
+ priority="200">
+ <xsl:choose>
+ <xsl:when test="$keep.numbered.sections = '1'">
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <section>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </section>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<!-- This is the template for the elements (book, article, set) that allow
+ title, subtitle, and titleabbrev before (or in) info, but not after.
+ If title, subtitle, or titleabbrev exist both inside and outside the
+ info block, everything is moved inside. Otherwise things are left as is. -->
+<xsl:template match="bookinfo|articleinfo|artheader|setinfo" priority="200">
+ <xsl:variable name="title.inside.info">
+ <xsl:choose>
+ <xsl:when test="./title or ./subtitle or ./titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="title.outside.info">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::title or preceding-sibling::subtitle or preceding-sibling::titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <info>
+ <xsl:if test="$title.inside.info = '1' and $title.outside.info = '1'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Found title|subtitle|titleabbrev both inside and outside </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text>. Moving all inside info element.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="preceding-sibling::title and not(./title)">
+ <xsl:apply-templates select="preceding-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="preceding-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="preceding-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </info>
+</xsl:template>
+<!-- This is the template for the elements (all except book, article, set) that
+ allow title, subtitle, and titleabbrev after (or in) info, but not before.
+ If an info element exists, and there is a title, subtitle, or titleabbrev
+ after the info element, then the element is moved inside the info block.
+ However, if a duplicate element exists inside the info element, that element
+ is kept, and the one outside is dropped.-->
+<xsl:template match="appendixinfo|blockinfo|bibliographyinfo|glossaryinfo
+ |indexinfo|setindexinfo|chapterinfo
+ |sect1info|sect2info|sect3info|sect4info|sect5info|sectioninfo
+ |refsect1info|refsect2info|refsect3info|refsectioninfo
+ |referenceinfo|partinfo
+ |objectinfo|prefaceinfo|refsynopsisdivinfo
+ |screeninfo|sidebarinfo"
+ priority="200">
+ <xsl:variable name="title.inside.info">
+ <xsl:choose>
+ <xsl:when test="./title or ./subtitle or ./titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- place title/subtitle/titleabbrev inside if any of them are already inside.
+ otherwise place them before. -->
+ <xsl:choose>
+ <xsl:when test="$title.inside.info = '0'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Keeping one or more title elements before </xsl:text><xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="following-sibling::title and not(./title)">
+ <xsl:apply-templates select="following-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </info>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Moving one or more title elements into </xsl:text><xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:if test="following-sibling::title and not(./title)">
+ <xsl:apply-templates select="following-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </info>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refentryinfo"
+ priority="200">
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding title from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="titleabbrev">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding titleabbrev from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="subtitle">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding subtitle from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </info>
+</xsl:template>
+
+<xsl:template match="refmiscinfo"
+ priority="200">
+ <refmiscinfo>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'class'"/>
+ </xsl:call-template>
+ <xsl:if test="@class">
+ <xsl:choose>
+ <xsl:when test="@class = 'source'
+ or @class = 'version'
+ or @class = 'manual'
+ or @class = 'sectdesc'
+ or @class = 'software'">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@class"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">
+ <xsl:value-of select="'other'"/>
+ </xsl:attribute>
+ <xsl:attribute name="otherclass">
+ <xsl:value-of select="@class"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </refmiscinfo>
+</xsl:template>
+
+<xsl:template match="corpauthor" priority="200">
+ <author>
+ <xsl:call-template name="copy.attributes"/>
+ <orgname>
+ <xsl:apply-templates/>
+ </orgname>
+ </author>
+</xsl:template>
+
+<xsl:template match="corpname" priority="200">
+ <orgname>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+</xsl:template>
+
+<xsl:template match="author[not(personname)]|editor[not(personname)]|othercredit[not(personname)]" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <personname>
+ <xsl:apply-templates select="honorific|firstname|surname|othername|lineage"/>
+ </personname>
+ <xsl:apply-templates select="*[not(self::honorific|self::firstname|self::surname
+ |self::othername|self::lineage)]"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="address|programlisting|screen|funcsynopsisinfo
+ |classsynopsisinfo" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'format'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Suppress attributes with default values (i.e., added implicitly by DTD) -->
+<xsl:template match="productname" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress.default" select="'class=trade'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="orderedlist" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress.default" select="'inheritnum=ignore continuation=restarts'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="literallayout" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'format'"/><!-- Dropped entirely in DB5 -->
+ <xsl:with-param name="suppress.default" select="'class=normal'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="equation" priority="200">
+ <xsl:choose>
+ <xsl:when test="not(title)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param
+ name="message"
+ >Convert equation without title to informal equation.</xsl:with-param>
+ </xsl:call-template>
+ <informalequation>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </informalequation>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="imagedata|videodata|audiodata|textdata" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'srccredit'"/>
+ </xsl:call-template>
+ <xsl:if test="@srccredit">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of srccredit </xsl:text>
+ <xsl:text>(othercredit="srccredit").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <info>
+ <othercredit class="other" otherclass="srccredit">
+ <orgname>???</orgname>
+ <contrib>
+ <xsl:value-of select="@srccredit"/>
+ </contrib>
+ </othercredit>
+ </info>
+ </xsl:if>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="sgmltag" priority="200">
+ <tag>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:if test="@class = 'sgmlcomment'">
+ <xsl:attribute name="class">comment</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </tag>
+</xsl:template>
+
+<xsl:template match="inlinegraphic[@format='linespecific']" priority="210">
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+</xsl:template>
+
+<xsl:template match="inlinegraphic" priority="200">
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </inlinemediaobject>
+</xsl:template>
+
+<xsl:template match="graphic[@format='linespecific']" priority="210">
+ <mediaobject>
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="graphic" priority="200">
+ <mediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="pubsnumber" priority="200">
+ <biblioid class="pubsnumber">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="invpartnumber" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting invpartnumber to biblioid otherclass="invpartnumber".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <biblioid class="other" otherclass="invpartnumber">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="contractsponsor" priority="200">
+ <xsl:variable name="contractnum"
+ select="preceding-sibling::contractnum|following-sibling::contractnum"/>
+
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting contractsponsor to othercredit="contractsponsor".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <othercredit class="other" otherclass="contractsponsor">
+ <orgname>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+ <xsl:for-each select="$contractnum">
+ <contrib role="contractnum">
+ <xsl:apply-templates select="node()"/>
+ </contrib>
+ </xsl:for-each>
+ </othercredit>
+</xsl:template>
+
+<xsl:template match="contractnum" priority="200">
+ <xsl:if test="not(preceding-sibling::contractsponsor
+ |following-sibling::contractsponsor)
+ and not(preceding-sibling::contractnum)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting contractnum to othercredit="contractnum".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <othercredit class="other" otherclass="contractnum">
+ <orgname>???</orgname>
+ <xsl:for-each select="self::contractnum
+ |preceding-sibling::contractnum
+ |following-sibling::contractnum">
+ <contrib>
+ <xsl:apply-templates select="node()"/>
+ </contrib>
+ </xsl:for-each>
+ </othercredit>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="isbn|issn" priority="200">
+ <biblioid class="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="biblioid[count(*) = 1
+ and ulink
+ and normalize-space(text()) = '']" priority="200">
+ <biblioid xlink:href="{ulink/@url}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates select="ulink/node()"/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="authorblurb" priority="200">
+ <personblurb>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </personblurb>
+</xsl:template>
+
+<xsl:template match="collabname" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of collabname </xsl:text>
+ <xsl:text>(orgname role="collabname").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <orgname role="collabname">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+</xsl:template>
+
+<xsl:template match="modespec" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding modespec (</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>).</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="mediaobjectco" priority="200">
+ <mediaobject>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="remark">
+ <!-- get rid of any embedded markup if the version is 5.0. If it's > 5.0, leave markup in. -->
+ <remark>
+ <xsl:copy-of select="@*"/>
+ <xsl:choose>
+ <xsl:when test="$db5.version>5.0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </remark>
+</xsl:template>
+
+<xsl:template match="biblioentry/title
+ |bibliomset/title
+ |biblioset/title
+ |bibliomixed/title" priority="400">
+ <citetitle>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </citetitle>
+</xsl:template>
+
+<xsl:template match="biblioentry/titleabbrev|biblioentry/subtitle
+ |bibliomset/titleabbrev|bibliomset/subtitle
+ |biblioset/titleabbrev|biblioset/subtitle
+ |bibliomixed/titleabbrev|bibliomixed/subtitle"
+ priority="400">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="biblioentry/contrib
+ |bibliomset/contrib
+ |bibliomixed/contrib" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of contrib </xsl:text>
+ <xsl:text>(othercontrib="contrib").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <othercredit class="other" otherclass="contrib">
+ <orgname>???</orgname>
+ <contrib>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </contrib>
+ </othercredit>
+</xsl:template>
+
+<xsl:template match="link" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="ulink" priority="200">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to link.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <link xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to uri.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <uri xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:value-of select="@url"/>
+ </uri>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" priority="200">
+ <xsl:if test="@linkmode">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding linkmode on olink.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@targetdocent">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting olink targetdocent to targetdoc.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <olink targetdoc="{unparsed-entity-uri(@targetdocent)}">
+ <xsl:for-each select="@*">
+ <xsl:if test="name(.) != 'targetdocent'
+ and name(.) != 'linkmode'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </olink>
+ </xsl:when>
+ <xsl:otherwise>
+ <olink>
+ <xsl:for-each select="@*">
+ <xsl:if test="name(.) != 'linkmode'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </olink>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry/firstname
+ |biblioentry/surname
+ |biblioentry/othername
+ |biblioentry/lineage
+ |biblioentry/honorific
+ |bibliomset/firstname
+ |bibliomset/surname
+ |bibliomset/othername
+ |bibliomset/lineage
+ |bibliomset/honorific" priority="200">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::firstname
+ |preceding-sibling::surname
+ |preceding-sibling::othername
+ |preceding-sibling::lineage
+ |preceding-sibling::honorific">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <personname>
+ <xsl:apply-templates select="../firstname
+ |../surname
+ |../othername
+ |../lineage
+ |../honorific" mode="copy"/>
+ </personname>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaset" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'coords'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="date|pubdate" priority="200">
+ <xsl:variable name="rp1" select="substring-before(normalize-space(.), ' ')"/>
+ <xsl:variable name="rp2"
+ select="substring-before(substring-after(normalize-space(.), ' '),
+ ' ')"/>
+ <xsl:variable name="rp3"
+ select="substring-after(substring-after(normalize-space(.), ' '), ' ')"/>
+
+ <xsl:variable name="p1">
+ <xsl:choose>
+ <xsl:when test="contains($rp1, ',')">
+ <xsl:value-of select="substring-before($rp1, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="p2">
+ <xsl:choose>
+ <xsl:when test="contains($rp2, ',')">
+ <xsl:value-of select="substring-before($rp2, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp2"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="p3">
+ <xsl:choose>
+ <xsl:when test="contains($rp3, ',')">
+ <xsl:value-of select="substring-before($rp3, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp3"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="string($p1+1) != 'NaN' and string($p3+1) != 'NaN'">
+ <xsl:choose>
+ <xsl:when test="$p2 = 'Jan' or $p2 = 'January'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-01-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Feb' or $p2 = 'February'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-02-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Mar' or $p2 = 'March'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-03-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Apr' or $p2 = 'April'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-04-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'May'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-05-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Jun' or $p2 = 'June'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-06-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Jul' or $p2 = 'July'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-07-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Aug' or $p2 = 'August'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-08-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Sep' or $p2 = 'September'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-09-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Oct' or $p2 = 'October'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-10-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Nov' or $p2 = 'November'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-11-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Dec' or $p2 = 'December'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-12-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="string($p2+1) != 'NaN' and string($p3+1) != 'NaN'">
+ <xsl:choose>
+ <xsl:when test="$p1 = 'Jan' or $p1 = 'January'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-01-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Feb' or $p1 = 'February'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-02-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Mar' or $p1 = 'March'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-03-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Apr' or $p1 = 'April'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-04-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'May'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-05-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Jun' or $p1 = 'June'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-06-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Jul' or $p1 = 'July'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-07-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Aug' or $p1 = 'August'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-08-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Sep' or $p1 = 'September'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-09-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Oct' or $p1 = 'October'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-10-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Nov' or $p1 = 'November'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-11-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Dec' or $p1 = 'December'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-12-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="normalize-space($date) != normalize-space(.)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converted </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> into </xsl:text>
+ <xsl:value-of select="$date"/>
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:value-of select="$date"/>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:when test="$defaultDate != ''">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Unparseable date: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (Using default: </xsl:text>
+ <xsl:value-of select="$defaultDate"/>
+ <xsl:text>)</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:copy-of select="$defaultDate"/>
+ <xsl:comment>
+ <xsl:value-of select="."/>
+ </xsl:comment>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- these don't really matter anymore
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Unparseable date: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="title|subtitle|titleabbrev" priority="300">
+ <xsl:variable name="local.name" select="local-name(.)"/>
+ <xsl:variable name="parent.name" select="local-name(..)"/>
+
+ <!-- First three tests drop element if parent ZZZ already has
+ ZZZinfo/title (or subtitle, or titleabbrev). -->
+ <xsl:choose>
+ <xsl:when test="../*[local-name(.) = concat($parent.name, 'info')]/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Before 4.0, <articleinfo> was known as <artheader> -->
+ <xsl:when test="$parent.name = 'article' and ../artheader/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../blockinfo/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- always drop title, subtitle, and titleabbrev from refentryinfo -->
+ <xsl:when test="$parent.name = 'refentryinfo'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing title in refentryinfo.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Also drop title, subtitle, and titleabbrev when they appear after info.
+ The title is picked up and moved either into or before the info element
+ in the templates that handle info elements. -->
+ <xsl:when test="preceding-sibling::*[local-name(.) = concat($parent.name, 'info')]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text> after </xsl:text><xsl:value-of select="$parent.name"/><xsl:text>info. Moved before or inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- this covers block elements that use blockinfo-->
+ <xsl:when test="preceding-sibling::blockinfo">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text> after blockinfo. Moved before or inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- The next clause removes title, subtitle, or titleabbrev if it was
+ moved inside the info block. Only happens when one or more of these
+ elements occurs both inside and outside the info element. -->
+ <xsl:when test="following-sibling::bookinfo[title|subtitle|titleabbrev] or
+ following-sibling::articleinfo[title|subtitle|titleabbrev] or
+ following-sibling::artheader[title|subtitle|titleabbrev] or
+ following-sibling::setinfo[title|subtitle|titleabbrev]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text>. Has been moved inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Allow abstract inside valid biblio* elements, and inside info elements, otherwise drop -->
+<xsl:template match="abstract" priority="300">
+ <xsl:choose>
+ <xsl:when test="not(contains(name(parent::*),'info'))
+ and not(parent::biblioentry) and not(parent::bibliomixed)
+ and not(parent::bibliomset) and not(parent::biblioset)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK abstract: removed from output (invalid location in 5.0).</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="copy"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm">
+ <!-- don't copy the defaulted significance='normal' attribute -->
+ <indexterm>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress">
+ <xsl:if test="@significance = 'normal'">significance</xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </indexterm>
+</xsl:template>
+
+<xsl:template match="ackno" priority="200">
+ <acknowledgements>
+ <xsl:copy-of select="@*"/>
+ <para>
+ <xsl:apply-templates/>
+ </para>
+ </acknowledgements>
+</xsl:template>
+
+<xsl:template match="lot|lotentry|tocback|tocchap|tocfront|toclevel1|
+ toclevel2|toclevel3|toclevel4|toclevel5|tocpart" priority="200">
+ <tocdiv>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </tocdiv>
+</xsl:template>
+
+<xsl:template match="action" priority="200">
+ <phrase remap="action">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </phrase>
+</xsl:template>
+
+<xsl:template match="beginpage" priority="200">
+ <xsl:comment> beginpage pagenum=<xsl:value-of select="@pagenum"/> </xsl:comment>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Replacing beginpage with comment</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="structname|structfield" priority="200">
+ <varname remap="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </varname>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- glossterm and term have broader content models in 4.x than 5.0.
+ Warn when an unsupported element is found under glossterm.
+ Because the synopsis elements can contain things that phrase cannot,
+ leave them as is and warn.
+ For other elements, change them into phrase recursively and lose attributes.
+-->
+<xsl:template match="glossterm|term">
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates mode="clean-terms"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- Any other elements inside term or glossterm which doesn't have a
+ template rule are copied
+-->
+<xsl:template match="*" mode="clean-terms">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+
+<!-- The synopsis elements have child elements that don't work inside phrase, plus
+ they have attributes that shouldn't be lost. So, leave as is, but warn. -->
+<xsl:template match="classsynopsis|cmdsynopsis|constructorsynopsis
+ |destructorsynopsis|fieldsynopsis|methodsynopsis|synopsis" mode="clean-terms">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK OUTPUT: Found </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> inside </xsl:text><xsl:value-of select="local-name(..)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- The following elements probably can be safely turned into phrase recursively -->
+<xsl:template match="authorinitials|corpcredit|interface|medialabel|othercredit|revhistory" mode="clean-terms">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Replacing </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> inside </xsl:text><xsl:value-of select="local-name(..)"/>
+ <xsl:text> with phrase.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- affiliation can appear in a much smaller number of elements in 5.0. But, it contains
+ elements that cannot appear in a phrase. So, replace all child elements, recursively,
+ with <phrase remap="element name"... Don't keep attributes, which won't work on phrase. -->
+
+<xsl:template match="affiliation[not(parent::author) and not(parent::collab) and not(parent::editor) and not(parent::org) and not(parent::othercredit) and not(parent::person)]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK OUTPUT: Converting </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> to phrase in </xsl:text><xsl:value-of select="local-name(..)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- This template recursively changes an element with remap="name of element".
+ Does this recursively through children. -->
+<xsl:template match="*" mode="make-phrase">
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<!-- 6 Feb 2008, ndw changed mode=copy so that it only copies the first level,
+ then it switches back to "normal" mode so that other rewriting templates
+ catch embedded fixes -->
+
+<!--
+<xsl:template match="ulink" priority="200" mode="copy">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to phrase.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <phrase xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </phrase>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to uri.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <uri xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:value-of select="@url"/>
+ </uri>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sgmltag" priority="200" mode="copy">
+ <tag>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </tag>
+</xsl:template>
+-->
+
+<xsl:template match="*" mode="copy">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!--
+<xsl:template match="comment()|processing-instruction()|text()" mode="copy">
+ <xsl:copy/>
+</xsl:template>
+-->
+
+<!-- ====================================================================== -->
+
+<xsl:template match="*">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="copy.attributes">
+ <xsl:param name="src" select="."/>
+ <xsl:param name="suppress" select="''"/>
+ <xsl:param name="suppress.default" select="''"/>
+
+ <xsl:for-each select="$src/@*">
+ <xsl:variable name="suppressed.value">
+ <xsl:choose>
+ <xsl:when test="not(contains($suppress.default, concat(local-name(.),'=')))">
+ <xsl:text>this-value-never-matches</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before(substring-after(concat($suppress.default,' '), concat(local-name(.),'=')),' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'moreinfo'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding moreinfo on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'lang'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'id'">
+ <xsl:attribute name="xml:id">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$suppress = local-name(.)"/>
+ <xsl:when test=". = $suppressed.value"/>
+ <xsl:when test="local-name(.) = 'float'">
+ <xsl:choose>
+ <xsl:when test=". = '1'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="not($src/@floatstyle)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Adding floatstyle='normal' on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="floatstyle">
+ <xsl:text>normal</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test=". = '0'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="not($src/@floatstyle)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Adding floatstyle='</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>' on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="floatstyle">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'entityref'">
+ <xsl:attribute name="fileref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'audience'">
+ <xsl:attribute name="msgaud">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'origin'">
+ <xsl:attribute name="msgorig">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'level'">
+ <xsl:attribute name="msglevel">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- * for upgrading XSL litprog params documentation -->
+ <xsl:when test="local-name($src) = 'refmiscinfo'
+ and local-name(.) = 'role'
+ and . = 'type'
+ ">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting refmiscinfo@role=type to </xsl:text>
+ <xsl:text>@class=other,otherclass=type</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="class">other</xsl:attribute>
+ <xsl:attribute name="otherclass">type</xsl:attribute>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:copy/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="*" mode="addNS">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = ''">
+ <xsl:element name="{local-name(.)}"
+ namespace="http://docbook.org/ns/docbook">
+ <xsl:if test="not(ancestor::*[namespace-uri(.)=''])">
+ <xsl:attribute name="version"><xsl:value-of select="$db5.version.string"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="addNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:if test="namespace-uri(.) = 'http://docbook.org/ns/docbook' and
+ not(ancestor::*[namespace-uri(.)='http://docbook.org/ns/docbook'])">
+ <xsl:attribute name="version"><xsl:value-of select="$db5.version.string"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="addNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()" mode="addNS">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="emit-message">
+ <xsl:param name="message"/>
+ <xsl:message>
+ <xsl:value-of select="$message"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml
new file mode 100644
index 0000000..3dc1b20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglBindAPI">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglBindAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindAPI</refname>
+ <refpurpose>Set the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindAPI</function></funcdef>
+ <paramdef>EGLenum <parameter>api</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>api</parameter></term>
+ <listitem>
+ <para>
+ Specifies the client API to bind, one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglBindAPI</function> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <function>eglCreateContext</function>,
+ <function>eglGetCurrentContext</function>,
+ <function>eglGetCurrentDisplay</function>,
+ <function>eglGetCurrentSurface</function>,
+ <function>eglMakeCurrent</function>,
+ <function>eglWaitClient</function>, and
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_API</constant>, the current rendering
+ API is set to the OpenGL API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_ES_API</constant>, the current
+ rendering API is set to the OpenGL ES API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENVG_API</constant>, the current rendering
+ API is set to the OpenVG API.
+ </para>
+ <para>
+ If an error occurs, the current rendering API is unchanged.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglBindAPI</function> and the corresponding
+ <constant>EGL_OPENGL_ES_API</constant> and
+ <constant>EGL_OPENVG_API</constant>
+ <parameter>api</parameter> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <constant>EGL_OPENGL_API</constant> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be queried by calling
+ <function>eglQueryAPI</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>api</parameter> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml
new file mode 100644
index 0000000..70d05c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglBindTexImage">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglBindTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindTexImage</refname>
+ <refpurpose>
+ Defines a two-dimensional texture image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The texture image consists of the image data in <parameter>buffer</parameter> for the specified surface, and need not be copied.
+ </para>
+ <para>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <constant>EGL_BIND_TO_TEXTURE_RGB</constant> or <constant>EGL_BIND_TO_TEXTURE_RGBA</constant> attributes.
+ </para>
+ <para>
+ The pbuffer attribute <constant>EGL_TEXTURE_FORMAT</constant> determines the base internal format
+ of the texture.
+ </para>
+ <para>
+ The texture target is derived from the <constant>EGL_TEXTURE_TARGET</constant> attribute of surface.
+ If the attribute value is <constant>EGL_TEXTURE_2D</constant>, then <parameter>buffer</parameter> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </para>
+ <para>
+ If <parameter>display</parameter> and <parameter>surface</parameter> are the display and surface for the calling thread's current
+ context, <function>eglBindTexImage</function> performs an implicit <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>.
+ For other surfaces, <function>eglBindTexImage</function> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry> were called on the last context to which that surface were bound.
+ </para>
+ <para>
+ After <function>eglBindTexImage</function> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </para>
+ <para>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <function>eglBindTexImage</function>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <constant>EGL_MIPMAP_TEXTURE</constant> attribute of the pbuffer being bound is
+ <constant>EGL_TRUE</constant>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The OpenGL ES texture parameter <constant>GL_GENERATE_MIPMAP</constant> is <constant>GL_TRUE</constant> for
+ the currently bound texture.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The value of the <constant>EGL_MIPMAP_LEVEL</constant> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <constant>GL_TEXTURE_BASE_LEVEL</constant>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> has no effect if it is
+ called on a bound surface.
+ </para>
+ <para>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry>
+ was called with an image of zero width).
+ </para>
+ <para>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </para>
+ <para>
+ It is not an error to call <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </para>
+ <para>
+ <function>eglBindTexImage</function> is ignored if there is no current rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>buffer</parameter> is already bound to a texture.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml
new file mode 100644
index 0000000..09fd3d7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml
@@ -0,0 +1,929 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglChooseConfig">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglChooseConfig</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglChooseConfig</refname>
+ <refpurpose>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglChooseConfig</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>Specifies attributes required to match by configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns an array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of frame buffer configurations returned.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglChooseConfig</function> returns in
+ <parameter>configs</parameter> a list of all
+ <acronym>EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <parameter>attrib_list</parameter>. The returned
+ <type>EGLConfig</type>s can be used in any
+ <acronym>EGL</acronym> function that requires an
+ <acronym>EGL</acronym> frame buffer configuration.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is not
+ <constant>NULL</constant>, up to
+ <parameter>config_size</parameter> configs will be returned
+ in the array pointed to by <parameter>configs</parameter>.
+ The number of configs actually returned will be returned in
+ *<parameter>num_config</parameter>.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is
+ <constant>NULL</constant>, no configs will be returned in
+ <parameter>configs</parameter>. Instead, the total number of
+ configs matching <parameter>attrib_list</parameter> will be
+ returned in *<parameter>num_config</parameter>. In this case
+ <parameter>config_size</parameter> is ignored. This form of
+ <function>eglChooseConfig</function> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <type>EGLConfig</type> to pass
+ into another call to <function>eglChooseConfig</function>
+ with all other parameters unchanged.
+ </para>
+ <para>
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <constant>EGL_NONE</constant>. If an attribute is not
+ specified in <parameter>attrib_list</parameter> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <constant>EGL_DEPTH_SIZE</constant> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <constant>EGL_DONT_CARE</constant> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </para>
+ <para>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <constant>EGL_LEVEL</constant>,
+ must match the specified value exactly. Others, such as,
+ <constant>EGL_RED_SIZE</constant> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </para>
+ <para>
+ For the bitmask attributes
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </para>
+ <para>
+ Attributes which may appear in
+ <parameter>attrib_list</parameter>, and their descriptions
+ and allowed values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </para>
+ <para>
+ The alpha mask buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </para>
+ <para>
+ The color buffer size is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by one of
+ <constant>EGL_RGB_BUFFER</constant> or
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para>
+ <para>
+ <constant>EGL_RGB_BUFFER</constant> indicates
+ an RGB color buffer; in this case,
+ attributes <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant> and
+ <constant>EGL_BLUE_SIZE</constant> must be non-zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be zero.
+ </para>
+ <para>
+ <constant>EGL_LUMINANCE_BUFFER</constant> indicates a luminance color
+ buffer. In this case <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant> must be zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be non-zero.
+ </para>
+ <para>
+ For both RGB and luminance color buffers,
+ <constant>EGL_ALPHA_SIZE</constant> may be zero or
+ non-zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para>
+ <para>
+ If <constant>EGL_DONT_CARE</constant> is specified,
+ then configs are not matched for this attribute. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ If <constant>EGL_NONE</constant> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <constant>EGL_SLOW_CONFIG</constant> or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>) will
+ be considered.
+ </para>
+ <para>
+ If <constant>EGL_SLOW_CONFIG</constant> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </para>
+ <para>
+ If <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </para>
+ <para>
+ If the EGL version is 1.3 or later, caveat
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ obsolete, since the same information can be
+ specified via the
+ <constant>EGL_CONFORMANT</constant> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <constant>EGL_CONFIG_ID</constant> is specified, all
+ other attributes are ignored. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES2_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENVG_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenVG contexts.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_OPENGL_ES_BIT</constant>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </para>
+ <para>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </para>
+ <para>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </para>
+ <para>
+ Most imlementations do not support overlay or
+ underlay planes (buffer levels other than zero).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MATCH_NATIVE_PIXMAP</constant></term>
+ <listitem>
+ <para>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <type>EGLint</type>, or
+ <constant>EGL_NONE</constant>. If the value is not
+ <constant>EGL_NONE</constant>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>
+ will match this attribute. If the value is
+ <constant>EGL_NONE</constant>, then configs are not
+ matched for this attribute. The default value is
+ <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant> was
+ introduced due to the difficulty of determining an
+ <type>EGLConfig</type> compatibile with a native
+ pixmap using only color component sizes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </para>
+ <para>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>).
+ Mask bits are the same as for attribute
+ <constant>EGL_CONFORMANT</constant>. The default
+ value is <constant>EGL_OPENGL_ES_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PBUFFER_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixel buffer surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXMAP_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixmap surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant></term>
+ <listitem><para>
+ Config allows setting swap behavior for
+ color buffers with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WINDOW_BIT</constant></term>
+ <listitem><para>
+ Config supports creating window surfaces.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <inlineequation>
+ <mml:math>
+ <mml:mi><constant>EGL_WINDOW_BIT</constant></mml:mi>
+ <mml:mo>|</mml:mo>
+ <mml:mi><constant>EGL_PIXMAP_BIT</constant></mml:mi>
+ </mml:math>
+ </inlineequation>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <constant>EGL_WINDOW_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_NONE</constant> or
+ <constant>EGL_TRANSPARENT_RGB</constant>. If
+ <constant>EGL_NONE</constant> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <constant>EGL_TRANSPARENT_RGB</constant> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </para>
+ <orderedlist>
+ <listitem><para>
+ Special: by <constant>EGL_CONFIG_CAVEAT</constant>,
+ where the precedence is <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: by <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ where the precedence is
+ <constant>EGL_RGB_BUFFER</constant>,
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ <listitem>
+ <para>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>; for a luminance
+ color buffer, the sum of
+ <constant>EGL_LUMINANCE_SIZE</constant> and
+ <constant>EGL_ALPHA_SIZE</constant>). If the requested
+ number of bits in <parameter>attrib_list</parameter> is
+ <constant>0</constant> or
+ <constant>EGL_DONT_CARE</constant> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </para>
+ <para>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </para>
+ </listitem>
+ <listitem><para>
+ Smaller <constant>EGL_BUFFER_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLE_BUFFERS</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLES</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_DEPTH_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_STENCIL_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_ALPHA_MASK_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: <constant>EGL_NATIVE_VISUAL_TYPE</constant>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_CONFIG_ID</constant> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </para></listitem>
+ </orderedlist>
+ <para>
+ <type>EGLConfigs</type> are not sorted with respect to the
+ attributes <constant>EGL_BIND_TO_TEXTURE_RGB</constant>,
+ <constant>EGL_BIND_TO_TEXTURE_RGBA</constant>,
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_LEVEL</constant>,
+ <constant>EGL_NATIVE_RENDERABLE</constant>,
+ <constant>EGL_MAX_SWAP_INTERVAL</constant>,
+ <constant>EGL_MIN_SWAP_INTERVAL</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_SURFACE_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_RED_VALUE</constant>,
+ <constant>EGL_TRANSPARENT_GREEN_VALUE</constant>, and
+ <constant>EGL_TRANSPARENT_BLUE_VALUE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="examples"><title>Examples</title>
+ <para>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </para>
+ <programlisting>EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</programlisting>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant> and
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant> are
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_ES2_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> and
+ <constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant> are
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> bits
+ <constant>EGL_OPENGL_ES_BIT</constant> and
+ <constant>EGL_OPENVG_BIT</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <constant>GL_RED_BITS</constant> equal to
+ <constant>EGL_LUMINANCE_SIZE</constant> and the values of
+ <constant>GL_GREEN_BITS</constant> and
+ <constant>GL_BLUE_BITS</constant> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </para>
+ <para>
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <function>eglChooseConfig</function>. Call
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </para>
+ <para>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <function>eglChooseConfig</function>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and
+ <parameter>num_config</parameter> are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute_list</parameter> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml
new file mode 100644
index 0000000..e493378
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCopyBuffers">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCopyBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCopyBuffers</refname>
+ <refpurpose>
+ copy <acronym>EGL</acronym> surface color buffer to a native pixmap
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglCopyBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native pixmap as target of the copy.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCopyBuffers</function> copies the color buffer of
+ <parameter>surface</parameter> to <parameter>native_pixmap</parameter>.
+ </para>
+ <para>
+ <function>eglCopyBuffers</function> performs an implicit
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <function>eglCopyBuffers</function>,
+ but are not executed until copying of the color buffer is completed.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The color buffer of <parameter>surface</parameter> is left unchanged
+ after calling <function>eglCopyBuffers</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> is generated if
+ the implementation does not support native pixmaps.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the format of <parameter>native_pixmap</parameter> is not compatible
+ with the color buffer of <parameter>surface</parameter>.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml
new file mode 100644
index 0000000..3a05314
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreateContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreateContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateContext</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglCreateContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLContext <parameter>share_context</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the
+ <acronym>EGL</acronym>
+ display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>share_context</parameter></term>
+ <listitem><para>
+ Specifies another
+ <acronym>EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <parameter>share_context</parameter> shares data.
+ <constant>EGL_NO_CONTEXT</constant> indicates that
+ no sharing is to take place.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> may
+ be specified.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreateContext</function> creates an EGL
+ rendering context for the current rendering API (as set with
+ <function>eglBindAPI</function>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <function>eglCreateContext</function>
+ fails to create a rendering context,
+ <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ <para>
+ If <parameter>share_context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <parameter>share_context</parameter>, all other contexts
+ <parameter>share_context</parameter> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <function>eglChooseConfig</function>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer that determines which
+ version of an OpenGL ES context to create. A value
+ of 1 specifies creation of an OpenGL ES 1.x context.
+ An attribute value of 2 specifies creation of an
+ OpenGL ES 2.x context. The default value is 1. This
+ attribute can only be specified when creating a
+ OpenGL ES context (e.g. when the current rendering
+ API is <constant>EGL_OPENGL_ES_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The current rendering API is only respected if the EGL
+ version is 1.2 or greater. Otherwise, an OpenGL ES context
+ will always be created.
+ </para>
+ <para>
+ The <constant>EGL_CONTEXT_CLIENT_VERSION</constant>
+ attribute is only supported if the EGL version is 1.3 or
+ greater.
+ </para>
+ <para>
+ A <firstterm>process</firstterm> is a single execution environment,
+ implemented in a single address space, consisting of one or more threads.
+ </para>
+ <para>
+ A <firstterm>thread</firstterm> is one of a set of subprocesses that
+ share a single address space, but maintain separate program counters,
+ stack spaces, and other related global data.
+ A thread is the only member of its subprocess group is equivalent to a
+ process.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_CONTEXT</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ current rendering API is <constant>EGL_NONE</constant> (this
+ can only arise in an EGL implementation which does not
+ support OpenGL ES, prior to the first call to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ server context state for
+ <parameter>share_context</parameter> exists in an address
+ space which cannot be shared with the newly created context,
+ if <parameter>share_context</parameter> was created on a
+ different display than the one referenced by
+ <parameter>config</parameter>, or if the contexts are
+ otherwise incompatible.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer
+ configuration, or does not support the current rendering
+ API. This includes requesting creation of an OpenGL ES 1.x
+ context when the <constant>EGL_RENDERABLE_TYPE</constant>
+ attribute of <parameter>config</parameter> does not contain
+ <constant>EGL_OPENGL_ES_BIT</constant>, or creation of an
+ OpenGL ES 2.x context when the attribute does not contain
+ <constant>EGL_OPENGL_ES2_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>share_context</parameter> is not an EGL rendering
+ context of the same client API type as the newly created
+ context and is not <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid
+ context attribute or if an attribute is not recognized or
+ out of range. Note that attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ only valid when the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml
new file mode 100644
index 0000000..bb311f3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePbufferFromClientBuffer">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferFromClientBuffer</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferFromClientBuffer</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLenum <parameter>buftype</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buftype</parameter></term>
+ <listitem>
+ <para>
+ Specifies the type of client API buffer to be bound.
+ Must be <constant>EGL_OPENVG_IMAGE</constant>,
+ corresponding to an OpenVG <type>VGImage</type>
+ buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem>
+ <para>
+ Specifies the OpenVG <type>VGImage</type> handle of
+ the buffer to be bound.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferFromClientBuffer</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <parameter>config</parameter>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </para>
+ <para>
+ <parameter>buftype</parameter> must be
+ <constant>EGL_OPENVG_IMAGE</constant>, corresponding to an
+ OpenVG <type>VGImage</type> buffer.
+ <parameter>buffer</parameter> must be a valid
+ <type>VGImage</type> handle in the current OpenVG context,
+ cast into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <constant>EGL_HEIGHT</constant>,
+ <constant>EGL_WIDTH</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, respectively) of the
+ resulting surface are determined by the size and format of
+ <parameter>buffer</parameter>.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </para>
+ <para>
+ Currently
+ <function>eglCreatePbufferFromClientBuffer</function> only
+ supports binding OpenVG <type>VGImage</type> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <type>EGLImageKHR</type>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ <para>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ <orderedlist>
+ <listitem>
+ <para>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <type>VGImage</type> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <type>VGImage</type> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <type>VGImage</type> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <type>VGImage</type> is bound to a pbuffer,
+ destroying the image with
+ <function>vgDestroyImage</function> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <function>vgDestroyImage</function> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <function>eglDestroySurface</function> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <function>eglDestroySurface</function> the buffer
+ may only be referred to via the OpenVG
+ <type>VGImage</type> handle, since the EGL pbuffer
+ handle no longer exists.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>buftype</parameter> is not
+ <constant>EGL_OPENVG_IMAGE</constant>, or if
+ <parameter>buffer</parameter> is not a valid handle to a
+ <type>VGImage</type> object in the currently bound OpenVG
+ context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if there is
+ no current OpenVG context, or if
+ <parameter>buffer</parameter> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ buffers contained in <parameter>buffer</parameter> do not
+ match the bit depths for those buffers specified by
+ <parameter>config</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <type>VGImage</type> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <constant>EGL_MIPMAP_TEXTURE</constant>
+ attribute is <constant>TRUE</constant>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml
new file mode 100644
index 0000000..fbe9211
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePbufferSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferSurface</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferSurface</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem>
+ <para>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem>
+ <para>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem>
+ <para>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml
new file mode 100644
index 0000000..15f72ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePixmapSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixmap surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePixmapSurface</function> creates an
+ off-screen <acronym>EGL</acronym> pixmap surface and returns
+ its handle. If <function>eglCreatePixmapSurface</function>
+ fails to create a pixmap surface,
+ <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The <constant>EGL_MATCH_NATIVE_PIXMAP</constant> attribute
+ of
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL config.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_pixmap</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to pixmaps
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PIXMAP_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml
new file mode 100644
index 0000000..942cc73
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreateWindowSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreateWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> window surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreateWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativeWindowType <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies window surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreateWindowSurface</function> creates an EGL
+ window surface and returns its handle. If
+ <function>eglCreateWindowSurface</function> fails to create
+ a window surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <constant>EGL_SINGLE_BUFFER</constant>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <constant>EGL_BACK_BUFFER</constant>, then client
+ APIs should render into the back buffer. The default
+ value of <constant>EGL_RENDER_BUFFER</constant> is
+ <constant>EGL_BACK_BUFFER</constant>.
+ </para>
+ <para>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> when compositing
+ window surfaces.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ <parameter>native_window</parameter> is not a valid native window.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_window</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to windows
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_WINDOW_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml
new file mode 100644
index 0000000..0edbf42
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglDestroyContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglDestroyContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyContext</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>Specifies the EGL rendering context to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If the EGL rendering context <parameter>context</parameter> is not
+ current to any thread,
+ <function>eglDestroyContext</function> destroys it immediately.
+ Otherwise, <parameter>context</parameter> is destroyed when it becomes
+ not current to any thread.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the context fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml
new file mode 100644
index 0000000..9693990
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglDestroySurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglDestroySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySurface</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem><para>Specifies the EGL surface to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If the EGL surface <parameter>surface</parameter> is not current to any
+ thread, <function>eglDestroySurface</function> destroys it immediately.
+ Otherwise, <parameter>surface</parameter> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the surface fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml
new file mode 100644
index 0000000..25bccac
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetConfigAttrib">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetConfigAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigAttrib</refname>
+ <refpurpose>
+ return information about an <acronym>EGL</acronym> frame buffer
+ configuration
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration to be
+ queried.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>Specifies the EGL rendering context attribute to be
+ returned.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>Returns the requested value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigAttrib</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for
+ <parameter>config</parameter>
+ (config attributes are described in more detail in the
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ reference page).
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of alpha stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Returns the number of bits in the alpha mask buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGB texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGBA texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of blue stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>Returns the depth of the color buffer.
+ It is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem><para>
+ Returns the color buffer type. Possible types are
+ <constant>EGL_RGB_BUFFER</constant> and
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem><para>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>Returns the ID of the frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the depth buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of green stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_WIDTH</constant></term>
+ <listitem><para>Returns the maximum width of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_HEIGHT</constant></term>
+ <listitem><para>Returns the maximum height of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_PIXELS</constant></term>
+ <listitem><para>Returns the maximum size of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the maximum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the minimum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if native rendering
+ APIs can render into the surface,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_ID</constant></term>
+ <listitem><para>Returns the ID of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_TYPE</constant></term>
+ <listitem><para>Returns the type of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of red stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>Returns the number of multisample buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>Returns the number of samples per pixel.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the stencil buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>Returns the type of supported transparency.
+ Possible transparency values are:
+ <constant>EGL_NONE</constant>, and
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>Returns the transparent red value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>Returns the transparent green value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>Returns the transparent blue value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CONFORMANT</constant> is supported only if the
+ EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> are supported only
+ if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ While <constant>EGL_MATCH_NATIVE_PIXMAP</constant> can be
+ specified in the attribute list passed to
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <function>eglGetConfigAttrib</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid frame buffer
+ configuration attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml
new file mode 100644
index 0000000..4333862
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetConfigs">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetConfigs</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigs</refname>
+ <refpurpose>
+ return a list of all <acronym>EGL</acronym> frame buffer configurations
+ for a display
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigs</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns a list of configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the list of configs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of configs returned.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigs</function> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </para>
+ <para>
+ <parameter>configs</parameter> does not return values, if it is specified
+ as
+ <constant>NULL</constant>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and <parameter>num_config</parameter>
+ are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml
new file mode 100644
index 0000000..6b6bc21
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentContext</refname>
+ <refpurpose>
+ return the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglGetCurrentContext</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentContext</function> returns the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml
new file mode 100644
index 0000000..64bfa75
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentDisplay">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentDisplay</refname>
+ <refpurpose>
+ return the display for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetCurrentDisplay</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentDisplay</function> returns the current
+ <acronym>EGL</acronym> display connection for the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_DISPLAY</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml
new file mode 100644
index 0000000..075da4e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentSurface</refname>
+ <refpurpose>
+ return the read or draw surface for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglGetCurrentSurface</function></funcdef>
+ <paramdef>EGLint <parameter>readdraw</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>readdraw</parameter></term>
+ <listitem>
+ <para>
+ Specifies whether the <acronym>EGL</acronym> read or draw surface
+ is to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentSurface</function> returns the read or draw
+ surface attached to the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml
new file mode 100644
index 0000000..01efe4f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetDisplay">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetDisplay</function></funcdef>
+ <paramdef>NativeDisplayType <parameter>native_display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the display to connect to.
+ <constant>EGL_DEFAULT_DISPLAY</constant> indicates the default display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetDisplay</function> obtains the
+ <acronym>EGL</acronym> display connection for the native
+ display <parameter>native_display</parameter>.
+ </para>
+ <para>
+ If <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a default display connection is returned.
+ </para>
+ <para>
+ If no display connection matching <parameter>native_display</parameter> is
+ available, <constant>EGL_NO_DISPLAY</constant> is returned. No
+ error is generated.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ to initialize the display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml
new file mode 100644
index 0000000..86658a7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetError">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetError</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetError</refname>
+ <refpurpose>
+ return error information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglGetError</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetError</function> returns the error of the last
+ called <acronym>EGL</acronym> function in the current thread.
+ Initially, the error is set to <constant>EGL_SUCCESS</constant>.
+ </para>
+ <para>
+ The following errors are currently defined:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SUCCESS</constant></term>
+ <listitem><para>The last function succeeded without error.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NOT_INITIALIZED</constant></term>
+ <listitem><para>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ACCESS</constant></term>
+ <listitem><para>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ALLOC</constant></term>
+ <listitem><para>EGL failed to allocate resources for the requested
+ operation.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ATTRIBUTE</constant></term>
+ <listitem><para>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONTEXT</constant></term>
+ <listitem><para>An <type>EGLContext</type> argument does not name a
+ valid EGL rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONFIG</constant></term>
+ <listitem><para>
+ An <type>EGLConfig</type> argument does not name a valid
+ EGL frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CURRENT_SURFACE</constant></term>
+ <listitem><para>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_DISPLAY</constant></term>
+ <listitem><para>An <type>EGLDisplay</type> argument does not name a
+ valid EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_SURFACE</constant></term>
+ <listitem><para>An <type>EGLSurface</type> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_MATCH</constant></term>
+ <listitem><para>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_PARAMETER</constant></term>
+ <listitem><para>One or more argument values are invalid.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_PIXMAP</constant></term>
+ <listitem><para>
+ A <type>NativePixmapType</type> argument does not refer to
+ a valid native pixmap.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_WINDOW</constant></term>
+ <listitem><para>A <type>NativeWindowType</type> argument does not refer
+ to a valid native window.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_LOST</constant></term>
+ <listitem><para>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ A call to <function>eglGetError</function> sets the error to
+ <constant>EGL_SUCCESS</constant>.
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml
new file mode 100644
index 0000000..aac0bbd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetProcAddress">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetProcAddress</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetProcAddress</refname>
+ <refpurpose>
+ return a <acronym>GL</acronym> or an <acronym>EGL</acronym>
+ extension function
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void (* <function>eglGetProcAddress</function>)()</funcdef>
+ <paramdef>char const * <parameter>procname</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>procname</parameter></term>
+ <listitem>
+ <para>
+ Specifies the name of the function to return.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetProcAddress</function> returns the address of
+ the extension function named by <parameter>procname</parameter>.
+ <parameter>procname</parameter>
+ must be a null-terminated string. The pointer returned
+ should be cast to a function pointer type matching the extension
+ function's definition in that extension specification. A return value
+ of <constant>NULL</constant> indicates that the specific
+ function does not exist for the <acronym>EGL</acronym> implementation.
+ </para>
+ <para>
+ A non-<constant>NULL</constant> return value does not guarantee
+ that an extension function is actually supported at runtime. The client
+ must also query
+ <citerefentry><refentrytitle>glGetString</refentrytitle></citerefentry>(<constant>GL_EXTENSIONS</constant>) or
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>(<parameter>display</parameter>,
+ <constant>EGL_EXTENSIONS</constant>) to determine if an
+ extension is supported by a particular context or display.
+ </para>
+ <para>
+ Function pointers returned by
+ <function>eglGetProcAddress</function> are independent of the
+ display and the currently bound context and may be used by any context
+ which supports the extension.
+ </para>
+ <para>
+ <function>eglGetProcAddress</function> may be queried for all
+ <acronym>GL</acronym> and <acronym>EGL</acronym> extension functions.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glGetString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml
new file mode 100644
index 0000000..854c172
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglInitialize">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglInitialize</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglInitialize</refname>
+ <refpurpose>
+ initialize an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglInitialize</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint * <parameter>major</parameter></paramdef>
+ <paramdef>EGLint * <parameter>minor</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to initialize.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>major</parameter></term>
+ <listitem>
+ <para>
+ Returns the major version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>minor</parameter></term>
+ <listitem>
+ <para>
+ Returns the minor version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglInitialize</function> initialized the EGL display
+ connection obtained with
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </para>
+ <para>
+ <parameter>major</parameter> and <parameter>minor</parameter>
+ do not return values if they are specified as <constant>NULL</constant>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ to release resources associated with an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglInitialize</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>major</parameter> and <parameter>minor</parameter> are not
+ modified when <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> cannot be initialized.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml
new file mode 100644
index 0000000..d972451
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglIntro">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglIntro</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglIntro</refname>
+ <refpurpose>
+ introduction to managing client API rendering through the
+ <acronym>EGL</acronym> API.
+ </refpurpose>
+ </refnamediv>
+ <refsect1 id="overview"><title>Overview</title>
+ <para>
+ The <firstterm>Khronos Native Platform Graphics
+ Interface</firstterm> (EGL) provides a means for rendering
+ using a <firstterm>client API</firstterm> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a native window
+ system, such as Microsoft Windows or the X Window System.
+ </para>
+ <para>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the native window system. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>
+ and passing in a native display handle or
+ <constant>EGL_DEFAULT_DISPLAY</constant>. To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Native window systems supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the native window
+ system API.
+ </para>
+ <para>
+ An EGL <firstterm>surface</firstterm> extends a native
+ window or pixmap with additional <firstterm>auxillary
+ buffers</firstterm>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </para>
+ <para>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the native window system. EGL pixel buffers are
+ EGL only resources, and do not accept rendering through the
+ native window system.
+ </para>
+ <para>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ returns an <type>EGLConfig</type> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </para>
+ <para>
+ To create an EGL window surface from a native window, call
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <type>VGImage</type>, call
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>.
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to release previously allocated resources.
+ </para>
+ <para>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ This context/surface(s) association specifies the
+ <firstterm>current context</firstterm> and
+ <firstterm>current surface</firstterm>, and is used by all
+ client API rendering commands for the bound context until
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ is called with different arguments.
+ </para>
+ <para>
+ Both native and client API commands may be used to operate
+ on certain surfaces, however, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <citerefentry><refentrytitle>eglWaitCLient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ and possibly by calling other native window system commands.
+ </para>
+ </refsect1>
+ <refsect1 id="examples"><title>Examples</title>
+ <para>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </para>
+<programlisting>
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</programlisting>
+ </refsect1>
+ <refsect1 id="usingeglextensions"><title>Using EGL Extensions</title>
+ <para>
+ All supported EGL extensions will have a corresponding definition in
+ <filename>egl.h</filename> and a token in the extensions string returned
+ by
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 id="futureeglversions"><title>Future EGL Versions</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <constant>EGL_VERSION_<replaceable>x</replaceable>_<replaceable>y</replaceable></constant>
+ is defined, where <replaceable>x</replaceable> and
+ <replaceable>y</replaceable> are the major and minor version
+ numbers.
+ </para>
+ </refsect1>
+ <refsect1 id="files"><title>Files</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>GLES/egl.h</filename></term>
+ <listitem><para>
+ EGL header file
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+<!--
+ <citerefentry><refentrytitle>glIntro</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+-->
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml
new file mode 100644
index 0000000..b237907
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglMakeCurrent">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglMakeCurrent</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglMakeCurrent</refname>
+ <refpurpose>
+ attach an EGL rendering context to EGL surfaces
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglMakeCurrent</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>draw</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>read</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> display connection.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>draw</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> draw surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>read</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> read surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglMakeCurrent</function> binds <parameter>context</parameter>
+ to the current rendering thread and to the <parameter>draw</parameter>
+ and <parameter>read</parameter> surfaces. <parameter>draw</parameter>
+ is used for all GL operations except for any pixel data read back
+ (<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>),
+ which is taken from the frame buffer values of
+ <parameter>read</parameter>.
+ </para>
+ <para>
+ If the calling thread has already a current rendering context, that
+ context is flushed and marked as no longer current.
+ </para>
+ <para>
+ The first time that <parameter>context</parameter> is made current,
+ the viewport and scissor dimensions are set to the size of the
+ <parameter>draw</parameter> surface. The viewport and
+ scissor are not modified when <parameter>context</parameter> is
+ subsequently made current.
+ </para>
+ <para>
+ To release the current context without assigning a new one, call
+ <function>eglMakeCurrent</function> with <parameter>draw</parameter>
+ and <parameter>read</parameter> set to
+ <constant>EGL_NO_SURFACE</constant> and <parameter>context</parameter>
+ set to <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>
+ to query the current rendering context and associated display connection and surfaces.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. If <constant>EGL_FALSE</constant>
+ is returned, the previously current rendering context and
+ surfaces (if any) remain unchanged.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>draw</parameter> or <parameter>read</parameter> is not an
+ EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ are not compatible with
+ <parameter>context</parameter>, or if
+ <parameter>context</parameter> is set to
+ <constant>EGL_NO_CONTEXT</constant> and
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ are not set to
+ <constant>EGL_NO_SURFACE</constant>, or if
+ <parameter>draw</parameter> or
+ <parameter>read</parameter> are set to
+ <constant>EGL_NO_SURFACE</constant> and
+ <parameter>context</parameter> is not set to
+ <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>context</parameter>
+ is current to some other thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ a native pixmap underlying either
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ a native window underlying either
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the previous context has unflushed commands and the previous surface
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> may be generated if
+ allocation of ancillary buffers for <parameter>draw</parameter> or
+ <parameter>read</parameter> were delayed until
+ <function>eglMakeCurrent</function> is called, and there are not
+ enough resources to allocate them.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml
new file mode 100644
index 0000000..359f64c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryAPI">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryAPI</refname>
+ <refpurpose>Query the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLenum <function>eglQueryAPI</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryAPI</function> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ and affects the behavior of other EGL commands.
+ </para>
+ <para>
+ The value returned will be one of the valid
+ <parameter>api</parameter> parameters to
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>, or
+ <constant>EGL_NONE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglQueryAPI</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglQueryAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be changed by calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ None.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml
new file mode 100644
index 0000000..7137ad2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryContext</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> rendering context information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQueryContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryContext</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>context</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_TYPE</constant></term>
+ <listitem><para>
+ Returns the type of client API which the context
+ supports (one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ If the context is bound to a pixmap surface,
+ then <constant>EGL_SINGLE_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a pbuffer surface,
+ then <constant>EGL_BACK_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a window surface,
+ then either <constant>EGL_BACK_BUFFER</constant>
+ or <constant>EGL_SINGLE_BUFFER</constant> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <constant>EGL_RENDER_BUFFER</constant> property
+ of the surface (which may be queried by calling
+ <function>eglQuerySurface</function>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </para></listitem>
+ <listitem><para>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <constant>EGL_NONE</constant> will
+ be returned.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_CONTEXT_CLIENT_TYPE</constant> and
+ <constant>EGL_RENDER_BUFFER</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid context attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml
new file mode 100644
index 0000000..0799e18
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryString">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryString</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryString</refname>
+ <refpurpose>
+ return a string describing an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>char const * <function>eglQueryString</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>name</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>name</parameter></term>
+ <listitem>
+ <para>
+ Specifies a symbolic constant, one of
+ <constant>EGL_CLIENT_APIS</constant>,
+ <constant>EGL_VENDOR</constant>,
+ <constant>EGL_VERSION</constant>, or
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryString</function> returns a pointer to a
+ static string describing an EGL display connection.
+ <parameter>name</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CLIENT_APIS</constant></term>
+ <listitem><para>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separate list of API names. The list must
+ include at least one of <code>OpenGL</code>,
+ <code>OpenGL_ES</code>, or <code>OpenVG</code>.
+ These strings correspond respectively to values
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, and
+ <constant>EGL_OPENVG_API</constant> of the
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <parameter>api</parameter> argument.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VENDOR</constant></term>
+ <listitem><para>
+ Returns the company responsible for this EGL implementation. This
+ name does not change from release to release.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERSION</constant></term>
+ <listitem><para>
+ Returns a version or release number.
+ The <constant>EGL_VERSION</constant> string is laid out as
+ follows:</para>
+ <para>
+ <replaceable>major_version</replaceable>.<replaceable>minor_version</replaceable>
+ space
+ <replaceable>vendor_specific_info</replaceable>
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_EXTENSIONS</constant></term>
+ <listitem><para>
+ Returns a space separated list of supported extensions to EGL.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CLIENT_APIS</constant> is supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>NULL</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>name</parameter> is not an accepted value.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml
new file mode 100644
index 0000000..1053cd2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQuerySurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQuerySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQuerySurface</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> surface information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQuerySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQuerySurface</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>surface</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem><para>
+ Returns the height of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HORIZONTAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem><para>
+ Returns the same attribute value specified when the
+ surface was created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>.
+ For a window or pixmap surface,
+ <parameter>value</parameter> is not modified.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem><para>
+ Returns <constant>EGL_TRUE</constant> if texture has
+ mipmaps, <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ or <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>,
+ as described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXEL_ASPECT_RATIO</constant></term>
+ <listitem><para>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem><para>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <constant>EGL_BACK_BUFFER</constant>. For a pixmap
+ surface, it is always
+ <constant>EGL_SINGLE_BUFFER</constant>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem><para>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ Swap behavior may be either
+ <constant>EGL_BUFFER_PRESERVED</constant> or
+ <constant>EGL_BUFFER_DESTROYED</constant>, as
+ described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem><para>
+ Returns format of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem><para>
+ Returns type of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERTICAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem><para>
+ Returns the width of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_DISPLAY_SCALING</constant>.
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>,
+ <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_SWAP_BEHAVIOR</constant>, and
+ <constant>EGL_VERTICAL_RESOLUTION</constant> are supported
+ only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Querying attributes <constant>EGL_TEXTURE_FORMAT</constant>,
+ <constant>EGL_TEXTURE_TARGET</constant>,
+ <constant>EGL_MIPMAP_TEXTURE</constant>, or
+ <constant>EGL_MIPMAP_LEVEL</constant> for a non-pbuffer
+ surface is not an error, but <parameter>value</parameter> is
+ not modified.
+ </para>
+ <para>
+ <constant>EGL_DISPLAY_SCALING</constant> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </para>
+ <para>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>, or
+ <constant>EGL_VERTICAL_RESOLUTION</constant> will return the
+ constant value <constant>EGL_UNKNOWN</constant> (-1).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml
new file mode 100644
index 0000000..408fbf5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglReleaseTexImage">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglReleaseTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseTexImage</refname>
+ <refpurpose>
+ Releases a color buffer that is being used as a texture
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </para>
+ <para>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ and <function>eglReleaseTexImage</function>.
+ </para>
+ <para>
+ After a color buffer is released from a texture (either explicitly by calling
+ <function>eglReleaseTexImage</function> or implicitly by calling a routine such as
+ <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>),
+ all texture images that were defined by the color buffer become <constant>NULL</constant>
+ (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry> was called with an image of zero width).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml
new file mode 100644
index 0000000..c37f903
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglReleaseThread">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglReleaseThread</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseThread</refname>
+ <refpurpose>Release EGL per-thread state</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseThread</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglReleaseThread</function> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <command>eglGetError</command>, the currently bound
+ rendering API defined by <command>eglBindAPI</command>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </para>
+ <para>
+ <constant>EGL_TRUE</constant> is returned on success, and the
+ following actions are taken:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <function>eglMakeCurrent</function> with ctx set to
+ <constant>EGL_NO_CONTEXT</constant> and both draw
+ and read set to <constant>EGL_NO_SURFACE</constant>
+ (see section 3.7.3).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <command>eglBindAPI</command>).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <function>eglReleaseThread</function> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </para>
+ <para>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <function>eglReleaseThread</function>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglReleaseThread</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Applications may call other EGL routines from a thread
+ following <function>eglReleaseThread</function>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <function>eglGetError</function>
+ immediately following a successful call to
+ <function>eglReleaseThread</function> will return
+ <constant>EGL_SUCCESS</constant>, but will also result in
+ reallocating per-thread state.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <function>eglReleaseThread</function> should succeed.
+ </para>
+ <para>
+ However, platform-dependent failures may be signaled through
+ the value returned from <function>eglGetError</function>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <function>eglReleaseThread</function> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml
new file mode 100644
index 0000000..0487c6b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSurfaceAttrib">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSurfaceAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSurfaceAttrib</refname>
+ <refpurpose>
+ set an <acronym>EGL</acronym> surface attribute
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSurfaceAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Specifies the attributes required value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglSurfaceAttrib</function> sets the value of
+ <parameter>attribute</parameter> for
+ <parameter>surface</parameter> to
+ <parameter>value</parameter>.
+ <parameter>attribute</parameter> can be one of the
+ following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ For mipmap textures, the
+ <constant>EGL_MIPMAP_LEVEL</constant> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <constant>0</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <parameter>value</parameter> of
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ chooses the default implementation-defined filtering
+ method, while
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem>
+ <para>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ A <parameter>value</parameter> of
+ <constant>EGL_BUFFER_PRESERVED</constant> indicates
+ that color buffer contents are unaffected, while
+ <constant>EGL_BUFFER_DESTROYED</constant> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> is chosen by
+ the implementation.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of pbuffer attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, the value of attribute
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <parameter>surface</parameter> is not a pbuffer, then
+ attribute <constant>EGL_MIPMAP_LEVEL</constant> may be set,
+ but has no effect.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_SWAP_BEHAVIOR</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml
new file mode 100644
index 0000000..6e1ad73
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSwapBuffers">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSwapBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapBuffers</refname>
+ <refpurpose>
+ post <acronym>EGL</acronym> surface color buffer to a native window
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If <parameter>surface</parameter> is a window surface,
+ <function>eglSwapBuffers</function> posts its color buffer
+ to the associated native window.
+ </para>
+ <para>
+ The contents of ancillary buffers are always undefined after
+ calling <function>eglSwapBuffers</function>. The contents of
+ the color buffer are left unchanged if the value of the
+ <constant>EGL_SWAP_BEHAVIOR</constant> attribute of
+ <parameter>surface</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and are undefined
+ if the value is <constant>EGL_BUFFER_DESTROYED</constant>.
+ The value of <constant>EGL_SWAP_BEHAVIOR</constant> can be
+ set for some surfaces using
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglSwapBuffers</function> performs an implicit
+ flush operation on the context (<function>glFlush</function>
+ for an OpenGL ES or OpenGL context,
+ <function>vgFlush</function> for an OpenVG context) bound to
+ <parameter>surface</parameter> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <function>eglSwapBuffers</function>, but are not executed
+ until the buffer exchange is completed.
+ </para>
+ <para>
+ If <parameter>surface</parameter> is a pixel buffer or a pixmap,
+ <function>eglSwapBuffers</function>
+ has no effect, and no error is generated.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater. In
+ earlier versions, behavior is as though the attribute
+ exists, and always has the value
+ <constant>EGL_BUFFER_DESTROYED</constant>.
+ </para>
+ <para>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a
+ swap, and that the <constant>EGL_SWAP_BEHAVIOR</constant>
+ attribute applies only to the color buffer. This change in
+ the specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation. Applications which
+ require preservation of ancillary buffers across a swap
+ should be aware that not all implementations can preserve
+ them, and that EGL 1.4 has no way to query whether or not
+ they are preserved.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml
new file mode 100644
index 0000000..4ec5aba
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSwapInterval">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSwapInterval</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapInterval</refname>
+ <refpurpose>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapInterval</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>interval</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>interval</parameter></term>
+ <listitem>
+ <para>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The interval takes effect when <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> is
+ first called subsequent to the <function>eglSwapInterval</function> call.
+ </para>
+ <para>
+ The <parameter>interval</parameter> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </para>
+ <para>
+ If <parameter>interval</parameter> is set to a value of <constant>0</constant>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <type>EGLConfig</type> attributes
+ <constant>EGL_MIN_SWAP_INTERVAL</constant> and <constant>EGL_MAX_SWAP_INTERVAL</constant> respectively.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The swap interval has no effect on <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The default swap interval is 1.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if there is no current context
+ on the calling thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if there is no surface
+ bound to the current context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml
new file mode 100644
index 0000000..966b8c8
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglTerminate">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglTerminate</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglTerminate</refname>
+ <refpurpose>
+ terminate an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglTerminate</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to terminate.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglTerminate</function> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <parameter>display</parameter> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ again.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglTerminate</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml
new file mode 100644
index 0000000..0ec3714
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitClient">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitClient</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitClient</refname>
+ <refpurpose>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitClient</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <function>eglWaitClient</function> are guaranteed to be
+ executed before native rendering calls made after
+ <function>eglWaitClient</function>. The same result can be
+ achieved using client API-specific commands such as
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitClient</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <constant>EGL_TRUE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml
new file mode 100644
index 0000000..3da6f96
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitGL">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitGL</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitGL</refname>
+ <refpurpose>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitGL</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <function>eglWaitGL</function> are
+ guaranteed to be executed before native rendering calls made
+ after <function>eglWaitGL</function>. The same result can be
+ achieved using
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitGL</function> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs. For backwards compatibility,
+ <function>eglWaitGL</function> continues to be supported and
+ is equivalent to the series of commands
+ </para>
+ <programlisting>
+ EGLenum api = <function>eglQueryAPI</function>();
+ <function>eglBindAPI</function>(<constant>EGL_OPENGL_ES_API</constant>);
+ <function>eglWaitClient</function>();
+ <function>eglBindAPI</function>(api);
+ </programlisting>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitGL</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml
new file mode 100644
index 0000000..0a44340
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitNative">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitNative</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitNative</refname>
+ <refpurpose>
+ complete native execution prior to subsequent GL rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitNative</function></funcdef>
+ <paramdef>EGLint <parameter>engine</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>engine</parameter></term>
+ <listitem>
+ <para>
+ Specifies a particular marking engine to be waited on.
+ Must be <constant>EGL_CORE_NATIVE_ENGINE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ Native rendering calls made prior to <function>eglWaitNative</function>
+ are guaranteed to be executed before GL rendering calls made after
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ <function>eglWaitNative</function>
+ is ignored if there is no current
+ <acronym>EGL</acronym>
+ rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>engine</parameter> is not a recognized marking engine.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml
new file mode 100644
index 0000000..0aa0603
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "DTD/docbook/docbookx.dtd">
+<!--
+ Copyright 2003-2010 Khronos Group.
+ This material may be distributed subject to the terms and conditions set forth in
+ the Open Publication License, v 1.0, 8 June 1999.
+ http://opencontent.org/openpub/
+-->
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>
+ EGL Reference Manual
+ </title>
+ <subtitle>
+ Version 1.4
+ </subtitle>
+ <bookinfo>
+ <author>
+ <firstname>Claude</firstname>
+ <surname>Knaus</surname>
+ </author>
+ <author>
+ <firstname>Jon</firstname>
+ <surname>Leech</surname>
+ </author>
+ <date>October 2010</date>
+ <releaseinfo>Draft Version 20101012</releaseinfo>
+ <subjectset>
+ <subject>EGL</subject>
+ </subjectset>
+ <keywordset>
+ <keyword>EGL</keyword>
+ <keyword>man</keyword>
+ <keyword>reference</keyword>
+ </keywordset>
+ <xi:include href="legal-notice.xml"/>
+ </bookinfo>
+ <toc>
+ <title>Contents</title>
+ <!-- generated by LaTeX -->
+ </toc>
+ <chapter>
+ <title>Preface</title>
+ <sect1>
+ <title>Style Conventions</title>
+ <para>
+ The following style conventions apply to this document:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><function>Bold</function></term>
+ <listitem><para>Command and function names</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>Italics</parameter></term>
+ <listitem>Variables and parameters</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Regular</term>
+ <listitem><para>Ordinary text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>Monospace</constant></term>
+ <listitem><para>Constants and source code</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>Summary of Commands and Routines</title>
+ <sect1>
+ <title>EGL Functions</title>
+ <para>Manage or query display connections:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request EGL and client API extension functions:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetProcAddress</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Query errors:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request or query frame buffer configurations:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query the current rendering API:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL rendering contexts:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL surfaces:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Synchronize execution:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Post and copy buffers:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Bind pixel buffer surfaces to OpenGL ES textures:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry></member>
+ </simplelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>EGL Reference Pages</title>
+ <xi:include href="eglBindAPI.xml"/>
+ <xi:include href="eglBindTexImage.xml"/>
+ <xi:include href="eglChooseConfig.xml"/>
+ <xi:include href="eglCopyBuffers.xml"/>
+ <xi:include href="eglCreateContext.xml"/>
+ <xi:include href="eglCreatePbufferSurface.xml"/>
+ <xi:include href="eglCreatePixmapSurface.xml"/>
+ <xi:include href="eglCreateWindowSurface.xml"/>
+ <xi:include href="eglDestroyContext.xml"/>
+ <xi:include href="eglDestroySurface.xml"/>
+ <xi:include href="eglGetConfigAttrib.xml"/>
+ <xi:include href="eglGetConfigs.xml"/>
+ <xi:include href="eglGetCurrentContext.xml"/>
+ <xi:include href="eglGetCurrentDisplay.xml"/>
+ <xi:include href="eglGetCurrentSurface.xml"/>
+ <xi:include href="eglGetDisplay.xml"/>
+ <xi:include href="eglGetError.xml"/>
+ <xi:include href="eglGetProcAddress.xml"/>
+ <xi:include href="eglInitialize.xml"/>
+ <xi:include href="eglIntro.xml"/>
+ <xi:include href="eglMakeCurrent.xml"/>
+ <xi:include href="eglQueryAPI.xml"/>
+ <xi:include href="eglQueryContext.xml"/>
+ <xi:include href="eglQueryString.xml"/>
+ <xi:include href="eglQuerySurface.xml"/>
+ <xi:include href="eglReleaseTexImage.xml"/>
+ <xi:include href="eglReleaseThread.xml"/>
+ <xi:include href="eglSurfaceAttrib.xml"/>
+ <xi:include href="eglSwapBuffers.xml"/>
+ <xi:include href="eglSwapInterval.xml"/>
+ <xi:include href="eglTerminate.xml"/>
+ <xi:include href="eglWaitClient.xml"/>
+ <xi:include href="eglWaitGL.xml"/>
+ <xi:include href="eglWaitNative.xml"/>
+ </chapter>
+ <xi:include href="license-full.xml"/>
+</book>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml
new file mode 100644
index 0000000..0874cb3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml
@@ -0,0 +1,123 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglBindAPI">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglBindAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindAPI</refname>
+ <refpurpose>Set the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindAPI</function></funcdef>
+ <paramdef>EGLenum <parameter>api</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>api</parameter></term>
+ <listitem>
+ <para>
+ Specifies the client API to bind, one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglBindAPI</function> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <function>eglCreateContext</function>,
+ <function>eglGetCurrentContext</function>,
+ <function>eglGetCurrentDisplay</function>,
+ <function>eglGetCurrentSurface</function>,
+ <function>eglMakeCurrent</function>,
+ <function>eglSwapInterval</function>,
+ <function>eglWaitClient</function>, and
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_API</constant>, the current rendering
+ API is set to the OpenGL API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_ES_API</constant>, the current
+ rendering API is set to the OpenGL ES API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENVG_API</constant>, the current rendering
+ API is set to the OpenVG API.
+ </para>
+ <para>
+ If an error occurs, the current rendering API is unchanged.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglBindAPI</function> and the corresponding
+ <constant>EGL_OPENGL_ES_API</constant> and
+ <constant>EGL_OPENVG_API</constant>
+ <parameter>api</parameter> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <constant>EGL_OPENGL_API</constant> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be queried by calling
+ <function>eglQueryAPI</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>api</parameter> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml
new file mode 100644
index 0000000..81779e3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml
@@ -0,0 +1,172 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglBindTexImage">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglBindTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindTexImage</refname>
+ <refpurpose>
+ Defines a two-dimensional texture image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The texture image consists of the image data in <parameter>buffer</parameter> for the specified surface, and need not be copied.
+ </para>
+ <para>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <constant>EGL_BIND_TO_TEXTURE_RGB</constant> or <constant>EGL_BIND_TO_TEXTURE_RGBA</constant> attributes.
+ </para>
+ <para>
+ The pbuffer attribute <constant>EGL_TEXTURE_FORMAT</constant> determines the base internal format
+ of the texture.
+ </para>
+ <para>
+ The texture target is derived from the <constant>EGL_TEXTURE_TARGET</constant> attribute of surface.
+ If the attribute value is <constant>EGL_TEXTURE_2D</constant>, then <parameter>buffer</parameter> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </para>
+ <para>
+ If <parameter>display</parameter> and <parameter>surface</parameter> are the display and surface for the calling thread's current
+ context, <function>eglBindTexImage</function> performs an implicit <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>.
+ For other surfaces, <function>eglBindTexImage</function> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry> were called on the last context to which that surface were bound.
+ </para>
+ <para>
+ After <function>eglBindTexImage</function> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </para>
+ <para>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <function>eglBindTexImage</function>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <constant>EGL_MIPMAP_TEXTURE</constant> attribute of the pbuffer being bound is
+ <constant>EGL_TRUE</constant>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The OpenGL ES texture parameter <constant>GL_GENERATE_MIPMAP</constant> is <constant>GL_TRUE</constant> for
+ the currently bound texture.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The value of the <constant>EGL_MIPMAP_LEVEL</constant> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <constant>GL_TEXTURE_BASE_LEVEL</constant>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> has no effect if it is
+ called on a bound surface.
+ </para>
+ <para>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry>
+ was called with an image of zero width).
+ </para>
+ <para>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </para>
+ <para>
+ It is not an error to call <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </para>
+ <para>
+ <function>eglBindTexImage</function> is ignored if there is no current rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>buffer</parameter> is already bound to a texture.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml
new file mode 100644
index 0000000..87c7ce1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml
@@ -0,0 +1,915 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglChooseConfig">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglChooseConfig</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglChooseConfig</refname>
+ <refpurpose>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglChooseConfig</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>Specifies attributes required to match by configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns an array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of frame buffer configurations returned.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglChooseConfig</function> returns in
+ <parameter>configs</parameter> a list of all
+ <acronym>EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <parameter>attrib_list</parameter>. The returned
+ <type>EGLConfig</type>s can be used in any
+ <acronym>EGL</acronym> function that requires an
+ <acronym>EGL</acronym> frame buffer configuration.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is not
+ <constant>NULL</constant>, up to
+ <parameter>config_size</parameter> configs will be returned
+ in the array pointed to by <parameter>configs</parameter>.
+ The number of configs actually returned will be returned in
+ *<parameter>num_config</parameter>.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is
+ <constant>NULL</constant>, no configs will be returned in
+ <parameter>configs</parameter>. Instead, the total number of
+ configs matching <parameter>attrib_list</parameter> will be
+ returned in *<parameter>num_config</parameter>. In this case
+ <parameter>config_size</parameter> is ignored. This form of
+ <function>eglChooseConfig</function> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <type>EGLConfig</type> to pass
+ into another call to <function>eglChooseConfig</function>
+ with all other parameters unchanged.
+ </para>
+ <para>
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <constant>EGL_NONE</constant>. If an attribute is not
+ specified in <parameter>attrib_list</parameter> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <constant>EGL_DEPTH_SIZE</constant> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <constant>EGL_DONT_CARE</constant> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </para>
+ <para>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <constant>EGL_LEVEL</constant>,
+ must match the specified value exactly. Others, such as,
+ <constant>EGL_RED_SIZE</constant> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </para>
+ <para>
+ For the bitmask attributes
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </para>
+ <para>
+ Attributes which may appear in
+ <parameter>attrib_list</parameter>, and their descriptions
+ and allowed values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </para>
+ <para>
+ The alpha mask buffer is used only by OpenVG.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </para>
+ <para>
+ The color buffer size is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by one of
+ <constant>EGL_RGB_BUFFER</constant> or
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para>
+ <para>
+ <constant>EGL_RGB_BUFFER</constant> indicates
+ an RGB color buffer; in this case,
+ attributes <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant> and
+ <constant>EGL_BLUE_SIZE</constant> must be non-zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be zero.
+ </para>
+ <para>
+ <constant>EGL_LUMINANCE_BUFFER</constant> indicates a luminance color
+ buffer. In this case <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant> must be zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be non-zero.
+ </para>
+ <para>
+ For both RGB and luminance color buffers,
+ <constant>EGL_ALPHA_SIZE</constant> may be zero or
+ non-zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para>
+ <para>
+ If <constant>EGL_DONT_CARE</constant> is specified,
+ then configs are not matched for this attribute. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ If <constant>EGL_NONE</constant> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <constant>EGL_SLOW_CONFIG</constant> or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>) will
+ be considered.
+ </para>
+ <para>
+ If <constant>EGL_SLOW_CONFIG</constant> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </para>
+ <para>
+ If <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </para>
+ <para>
+ If the EGL version is 1.3 or later, caveat
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ obsolete, since the same information can be
+ specified via the
+ <constant>EGL_CONFORMANT</constant> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <constant>EGL_CONFIG_ID</constant> is specified, all
+ other attributes are ignored. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES2_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENVG_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenVG contexts.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_OPENGL_ES_BIT</constant>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </para>
+ <para>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </para>
+ <para>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </para>
+ <para>
+ Most platforms do not support buffer levels other than
+ zero. The behavior of windows placed in overlay and
+ underlay planes depends on the underlying platform.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MATCH_NATIVE_PIXMAP</constant></term>
+ <listitem>
+ <para>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <type>EGLint</type>, or
+ <constant>EGL_NONE</constant>. If the value is not
+ <constant>EGL_NONE</constant>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>
+ will match this attribute. If the value is
+ <constant>EGL_NONE</constant>, then configs are not
+ matched for this attribute. The default value is
+ <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant> was
+ introduced due to the difficulty of determining an
+ <type>EGLConfig</type> compatibile with a native
+ pixmap using only color component sizes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </para>
+ <para>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>).
+ Mask bits are the same as for attribute
+ <constant>EGL_CONFORMANT</constant>. The default
+ value is <constant>EGL_OPENGL_ES_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PBUFFER_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixel buffer surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXMAP_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixmap surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant></term>
+ <listitem><para>
+ Config allows setting swap behavior for
+ color buffers with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WINDOW_BIT</constant></term>
+ <listitem><para>
+ Config supports creating window surfaces.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_WINDOW_BIT</constant> |
+ <constant>EGL_PIXMAP_BIT</constant>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <constant>EGL_WINDOW_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_NONE</constant> or
+ <constant>EGL_TRANSPARENT_RGB</constant>. If
+ <constant>EGL_NONE</constant> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <constant>EGL_TRANSPARENT_RGB</constant> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </para>
+ <orderedlist>
+ <listitem><para>
+ Special: by <constant>EGL_CONFIG_CAVEAT</constant>,
+ where the precedence is <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: by <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ where the precedence is
+ <constant>EGL_RGB_BUFFER</constant>,
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ <listitem>
+ <para>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>; for a luminance
+ color buffer, the sum of
+ <constant>EGL_LUMINANCE_SIZE</constant> and
+ <constant>EGL_ALPHA_SIZE</constant>). If the requested
+ number of bits in <parameter>attrib_list</parameter> is
+ <constant>0</constant> or
+ <constant>EGL_DONT_CARE</constant> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </para>
+ <para>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </para>
+ </listitem>
+ <listitem><para>
+ Smaller <constant>EGL_BUFFER_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLE_BUFFERS</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLES</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_DEPTH_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_STENCIL_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_ALPHA_MASK_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: <constant>EGL_NATIVE_VISUAL_TYPE</constant>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_CONFIG_ID</constant> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </para></listitem>
+ </orderedlist>
+ <para>
+ <type>EGLConfigs</type> are not sorted with respect to the
+ attributes <constant>EGL_BIND_TO_TEXTURE_RGB</constant>,
+ <constant>EGL_BIND_TO_TEXTURE_RGBA</constant>,
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_LEVEL</constant>,
+ <constant>EGL_NATIVE_RENDERABLE</constant>,
+ <constant>EGL_MAX_SWAP_INTERVAL</constant>,
+ <constant>EGL_MIN_SWAP_INTERVAL</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_SURFACE_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_RED_VALUE</constant>,
+ <constant>EGL_TRANSPARENT_GREEN_VALUE</constant>, and
+ <constant>EGL_TRANSPARENT_BLUE_VALUE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="examples"><title>Examples</title>
+ <para>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </para>
+ <programlisting>EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</programlisting>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant> and
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant> are
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_ES2_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> and
+ <constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant> are
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> bits
+ <constant>EGL_OPENGL_ES_BIT</constant> and
+ <constant>EGL_OPENVG_BIT</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <constant>GL_RED_BITS</constant> equal to
+ <constant>EGL_LUMINANCE_SIZE</constant> and the values of
+ <constant>GL_GREEN_BITS</constant> and
+ <constant>GL_BLUE_BITS</constant> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </para>
+ <para>
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <function>eglChooseConfig</function>. Call
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </para>
+ <para>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <function>eglChooseConfig</function>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and
+ <parameter>num_config</parameter> are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute_list</parameter> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml
new file mode 100644
index 0000000..a6b7478
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml
@@ -0,0 +1,161 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglClientWaitSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglClientWaitSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglClientWaitSync</refname>
+ <refpurpose>
+ Wait in the client for a sync object to be signalled
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglClientWaitSync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>flags</parameter></paramdef>
+ <paramdef>EGLTime <parameter>timeout</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to wait on.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>flags</parameter></term>
+ <listitem><para>
+ Specifies flags controlling wait behavior.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>timeout</parameter></term>
+ <listitem><para>
+ Specifies wait timeout interval.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglClientWaitSync</function> blocks the calling thread
+ until the specified sync object <parameter>sync</parameter> is
+ signaled, or until <parameter>timeout</parameter> nanoseconds
+ have passed.
+ </para>
+ <para>
+ More than one <function>eglClientWaitSync</function> may be
+ outstanding on the same <parameter>sync</parameter> at any given
+ time. When there are multiple threads blocked on the same
+ <parameter>sync</parameter> and the sync object is signaled, all
+ such threads are released, but the order in which they are
+ released is not defined.
+ </para>
+ <para>
+ If the value of <parameter>timeout</parameter> is zero, then
+ <function>eglClientWaitSync</function> simply tests the current
+ status of <parameter>sync</parameter>. If the value of
+ <parameter>timeout</parameter> is the special value
+ <constant>EGL_FOREVER</constant>, then
+ <function>eglClientWaitSync</function> does not time out. For
+ all other values, <parameter>timeout</parameter> is adjusted to
+ the closest value allowed by the implementation-dependent
+ timeout accuracy, which may be substantially longer than one
+ nanosecond.
+ </para>
+ <para>
+ <function>eglClientWaitSync</function> returns one of three
+ status values describing the reason for returning. A return
+ value of <constant>EGL_TIMEOUT_EXPIRED</constant> indicates that
+ the specified timeout period expired before
+ <parameter>sync</parameter> was signaled, or if
+ <parameter>timeout</parameter> is zero, indicates that
+ <parameter>sync</parameter> is not signaled. A return value of
+ <constant>EGL_CONDITION_SATISFIED</constant> indicates that
+ <parameter>sync</parameter> was signaled before the timeout
+ expired, which includes the case when
+ <parameter>sync</parameter> was already signaled when
+ <function>eglClientWaitSync</function> was called. If an error
+ occurs then an error is generated and
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ If the sync object being blocked upon will not be signaled in
+ finite time (for example, by an associated fence command issued
+ previously, but not yet flushed to the graphics pipeline), then
+ <function>eglClientWaitSync</function> may wait forever. To help
+ prevent this behavior, if the
+ <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> bit is set in
+ <parameter>flags</parameter>, and <parameter>sync</parameter> is
+ unsignaled when <function>eglClientWaitSync</function> is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ <function>eglGetCurrentContext</function>) before blocking on
+ <parameter>sync</parameter>. If no context is current for the
+ bound API, the <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant>
+ bit is ignored.
+ </para>
+ <para>
+ Note: the simple Flush behavior defined by
+ <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> will not help
+ when waiting for a fence command issued in a different context's
+ command stream. Applications which block on a fence sync object
+ must take additional steps to ensure that the context from which
+ the associated fence command was issued has flushed that command
+ to the graphics pipeline.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglClientWaitSync</function> returns
+ <constant>EGL_FALSE</constant> on failure.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> passed to
+ <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behaviour is
+ undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglClientWaitSync</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>,
+ <function>glFinish</function>,
+ <function>vgFinish</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml
new file mode 100644
index 0000000..0541f20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml
@@ -0,0 +1,120 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCopyBuffers">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCopyBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCopyBuffers</refname>
+ <refpurpose>
+ copy <acronym>EGL</acronym> surface color buffer to a native pixmap
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglCopyBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native pixmap as target of the copy.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCopyBuffers</function> copies the color buffer of
+ <parameter>surface</parameter> to <parameter>native_pixmap</parameter>.
+ </para>
+ <para>
+ <function>eglCopyBuffers</function> performs an implicit
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <function>eglCopyBuffers</function>,
+ but are not executed until copying of the color buffer is completed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The color buffer of <parameter>surface</parameter> is left unchanged
+ after calling <function>eglCopyBuffers</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> is generated if
+ the implementation does not support native pixmaps.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the format of <parameter>native_pixmap</parameter> is not compatible
+ with the color buffer of <parameter>surface</parameter>.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml
new file mode 100644
index 0000000..73c54b6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml
@@ -0,0 +1,212 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateContext">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateContext</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglCreateContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLContext <parameter>share_context</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the
+ <acronym>EGL</acronym>
+ display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>share_context</parameter></term>
+ <listitem><para>
+ Specifies another
+ <acronym>EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <parameter>share_context</parameter> shares data.
+ <constant>EGL_NO_CONTEXT</constant> indicates that
+ no sharing is to take place.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> may
+ be specified.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateContext</function> creates an EGL
+ rendering context for the current rendering API (as set with
+ <function>eglBindAPI</function>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <function>eglCreateContext</function>
+ fails to create a rendering context,
+ <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ <para>
+ If <parameter>share_context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <parameter>share_context</parameter>, all other contexts
+ <parameter>share_context</parameter> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <function>eglChooseConfig</function>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_MAJOR_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer specifying the requested
+ major version of an OpenGL or OpenGL ES context. The
+ default value is 1. This attribute is an alias of the
+ older <constant>EGL_CONTEXT_CLIENT_VERSION</constant>,
+ and the tokens may be used interchangeably.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_MINOR_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer specifying the requested
+ minor version of an OpenGL or OpenGL ES context. The
+ default value is 0.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_PROFILE_MASK</constant></term>
+ <listitem><para>
+ Must be followed by an integer bitmask specifying the
+ <firstterm>profile</firstterm> of an OpenGL context.
+ Bits which may be set include
+ <constant>EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</constant>
+ for a core profile and
+ <constant>EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT</constant>
+ for a compatibility profile. The default value is
+ <constant>EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</constant>.
+ All OpenGL 3.2 and later implementations are required to
+ implement the core profile, but implementation of the
+ compatibility profile is optional.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_DEBUG</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that an OpenGL or OpenGL ES <firstterm>debug
+ context</firstterm> should be created, or
+ <constant>EGL_FALSE</constant>, if a non-debug context
+ should be created. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that a
+ <firstterm>forward-compatible</firstterm> OpenGL context
+ should be created, or <constant>EGL_FALSE</constant>, if
+ a non-forward-compatible context should be created. The
+ default value is <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_ROBUST_ACCESS</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that an OpenGL or OpenGL ES context
+ supporting <firstterm>robust buffer access</firstterm>
+ should be created, or <constant>EGL_FALSE</constant>, if
+ a non-robust context should be created. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_LOSE_CONTEXT_ON_RESET</constant>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <constant>GL_LOSE_CONTEXT_ON_RESET_ARB</constant> should
+ be created, or
+ <constant>EGL_NO_RESET_NOTIFICATION</constant>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <constant>GL_NO_RESET_NOTIFICATION_ARB</constant> should
+ be created, as described by the
+ <constant>GL_ARB_robustness</constant> extension.
+ </para><para>
+ If the
+ <constant>EGL_CONTEXT_OPENGL_ROBUST_ACCESS</constant>
+ attribute is not set to <constant>EGL_TRUE</constant>,
+ context creation will not fail, but the resulting
+ context may not support robust buffer access, and
+ therefore may not support the requested reset
+ notification strategy The default value for
+ <constant>EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</constant>
+ is <constant>EGL_NO_RESET_NOTIFICATION</constant> .
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ There are many possible interactions between requested OpenGL
+ and OpenGL ES context creation attributes, depending on the API
+ versions and extensions supported by the implementation. These
+ interactions are described in detail in the EGL 1.5
+ Specification, but are not listed here for compactness. The
+ requested attributes may not be able to be satisfied, but
+ context creation may still succeed. Applications should ensure
+ that the OpenGL or OpenGL ES contexts supports needed features
+ before using them, by determining the actual context version,
+ supported extensions, and supported context flags using runtime
+ queries.
+ </para>
+ </refsect1>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml
new file mode 100644
index 0000000..8072ec3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml
@@ -0,0 +1,624 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateImage">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateImage</refname>
+ <refpurpose>
+ Create a new <type>EGLImage</type> object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLImage <function>eglCreateImage</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLenum <parameter>target</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>const EGLAttrib *<parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>
+ Specifies the client API context for which the image is
+ created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>target</parameter></term>
+ <listitem><para>
+ Specifies the type of resource used as the image source.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>
+ Specifies the resource to be used as the image source.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes used to select sub-sections of the
+ resource to be used as the image source.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateImage</function> is used to create an
+ <type>EGLImage</type> object from an existing image resource
+ <parameter>buffer</parameter>. <parameter>display</parameter>
+ specifies the EGL display used for this operation.
+ <parameter>context</parameter> specifies the EGL client API
+ context used for this operation, or
+ <constant>EGL_NO_CONTEXT</constant> if a client API context is
+ not required. <parameter>target</parameter> specifies the type
+ of resource being used as the <type>EGLImage</type> source
+ (examples include two-dimensional textures in OpenGL ES contexts
+ and <type>VGImage</type> objects in OpenVG contexts).
+ <parameter>buffer</parameter> is the name (or handle) of a
+ resource to be used as the <type>EGLImage</type> source, cast
+ into the type <type>EGLClientBuffer</type>.
+ <parameter>attrib_list</parameter> is a list of attribute-value
+ pairs which is used to select sub-sections of
+ <parameter>buffer</parameter> for use as the
+ <type>EGLImage</type> source, such as mipmap levels for OpenGL
+ ES texture map resources, as well as behavioral options, such as
+ whether to preserve pixel data during creation. If
+ <parameter>attrib_list</parameter> is
+ non-<constant>NULL</constant>, the last attribute specified in
+ the list must be <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ The resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter>, and
+ <parameter>attrib_list</parameter> must not itself be an
+ <type>EGLImage</type> sibling, or bound to a pbuffer
+ <type>EGLSurface</type> resource
+ (<function>eglBindTexImage</function>,
+ <function>eglCreatePbufferFromClientBuffer</function>).
+ </para>
+ <para>
+ Values accepted for <parameter>target</parameter> are shown in
+ table <xref linkend="tab-imagetarget"/>.
+ </para>
+ <table frame="all" xml:id="tab-imagetarget">
+ <title>
+ Legal values for <function>eglCreateImage</function> <parameter>target</parameter>
+ </title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry><parameter>target</parameter></entry>
+ <entry>Notes</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_2D</constant></entry>
+ <entry>Used for GL 2D texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</constant></entry>
+ <entry>Used for the +X face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</constant></entry>
+ <entry>Used for the -X face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</constant></entry>
+ <entry>Used for the +Y face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</constant></entry>
+ <entry>Used for the -Y face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</constant></entry>
+ <entry>Used for the +Z face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</constant></entry>
+ <entry>Used for the -Z face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_3D</constant></entry>
+ <entry>Used for OpenGL and OpenGL ES 3D texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_RENDERBUFFER</constant></entry>
+ <entry>Used for OpenGL and OpenGL ES renderbuffer images</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ Attribute names accepted in <parameter>attrib_list</parameter>
+ are shown in table <xref linkend="tab-imageattr"/>, together
+ with the <parameter>target</parameter> for which each attribute
+ name is valid, and the default value used for each attribute if
+ it is not included in <parameter>attrib_list</parameter>.
+ </para>
+ <table frame="all" xml:id="tab-imageattr">
+ <title>
+ Legal attributes for <function>eglCreateImage</function>
+ <parameter>attrib_list</parameter> parameter
+ </title>
+ <tgroup cols="4" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry><parameter>target</parameter></entry>
+ <entry>Notes</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Valid <parameter>target</parameter>s</entry>
+ <entry>Default Value</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_NONE</constant></entry>
+ <entry>Marks the end of the attribute-value list</entry>
+ <entry>All</entry>
+ <entry>N/A</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_LEVEL</constant></entry>
+ <entry>
+ Specifies the mipmap level used as the
+ <type>EGLImage</type> source. Must be part of
+ the complete texture object
+ <parameter>buffer</parameter>
+ </entry>
+ <entry>
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>, or
+ <constant>EGL_GL_TEXTURE_3D</constant>
+ </entry>
+ <entry>0</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_ZOFFSET</constant></entry>
+ <entry>
+ Specifies the depth offset of the image to use
+ as the <type>EGLImage</type> source. Must be
+ part of the complete texture object
+ <parameter>buffer</parameter>
+ </entry>
+ <entry><constant>EGL_GL_TEXTURE_3D</constant></entry>
+ <entry>0</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_IMAGE_PRESERVED</constant></entry>
+ <entry>Whether to preserve pixel data</entry>
+ <entry>All</entry>
+ <entry><constant>EGL_FALSE</constant></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <function>eglCreateImage</function> returns an
+ <type>EGLImage</type> object corresponding to the image data
+ specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> which may be referenced by
+ client API operations.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</constant>, or
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</constant>,
+ <parameter>display</parameter> must be a valid
+ <type>EGLDisplay</type>, and <parameter>context</parameter> must
+ be a valid OpenGL or OpenGL ES API context on that display.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_2D</constant> target texture object, cast
+ into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ If <parameter>target</parameter> is one of the
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> enumerants,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_CUBE_MAP</constant> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_3D</constant> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> should specify the mipmap
+ level (<constant>EGL_GL_TEXTURE_LEVEL</constant>) and, where
+ applicable, z-offset
+ (<constant>EGL_GL_TEXTURE_ZOFFSET</constant>) which will be used
+ as the <type>EGLImage</type> source; If not specified, the
+ default values listed in table <xref linkend="tab-imageattr"/>
+ will be used instead. Additional values specified in are
+ ignored.
+ </para>
+ <para>
+ There must exist some levels <emphasis>x</emphasis> and
+ <emphasis>y</emphasis> such that the mipmap level requested lies
+ between <emphasis>x</emphasis> and <emphasis>y</emphasis>
+ (inclusive), the texture would be mipmap complete were
+ <emphasis>x</emphasis> substituted for the base level and
+ <emphasis>y</emphasis> substituted for the max level, and all
+ levels less than <emphasis>x</emphasis> or greater than
+ <emphasis>y</emphasis> are unspecified. For cubemaps a single
+ pair <emphasis>x</emphasis> and <emphasis>y</emphasis> must
+ apply to all faces. For three-dimensional textures, the
+ specified z-offset must be smaller than the depth of the
+ specified mipmap level.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_RENDERBUFFER</constant>,
+ <parameter>buffer</parameter> must be the name of a complete,
+ nonzero, non-multisampled <constant>GL_RENDERBUFFER</constant>
+ (or equivalent in extensions) target object, cast into the type
+ <type>EGLClientBuffer</type>. Values specified in
+ <parameter>attrib_list</parameter> are ignored.
+ </para>
+ <para>
+ If the value of attribute
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_FALSE</constant> (the default), then all pixel
+ data values associated with <parameter>buffer</parameter> will
+ be undefined after <function>eglCreateImage</function> returns.
+ </para>
+ <para>
+ If the value of attribute
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_TRUE</constant>, then all pixel data values
+ associated with <parameter>buffer</parameter> are preserved.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglCreateImage</function> returns
+ <constant>EGL_NO_IMAGE</constant> on failure. The contents of
+ <parameter>buffer</parameter> will be unaffected.
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the handle of a valid
+ <type>EGLDisplay</type> object, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is neither the handle of a
+ valid <type>EGLContext</type> object on
+ <parameter>display</parameter> nor
+ <constant>EGL_NO_CONTEXT</constant>, the error
+ <constant>EGL_BAD_CONTEXT</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is not one of the values in
+ table <xref linkend="tab-imagetarget"/>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>display</parameter> is not a valid
+ <type>EGLDisplay</type>, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>context</parameter> is not a valid
+ <type>EGLContext</type>, the error
+ <constant>EGL_BAD_CONTEXT</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>context</parameter> is not a valid GL context, or
+ does not match the <parameter>display</parameter>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant> and
+ <parameter>buffer</parameter> is not the name of a texture
+ object of type <parameter>target</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_RENDERBUFFER</constant> and
+ <parameter>buffer</parameter> is not the name of a renderbuffer
+ object, or if <parameter>buffer</parameter> is the name of a
+ multisampled renderbuffer object, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is nonzero,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, the error <constant>EGL_BAD_PARAMETER</constant>
+ is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error <constant>EGL_BAD_PARAMETER</constant>
+ is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, and mipmap level 0 is not specified, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, and one or more faces do not have mipmap level 0
+ specified, the error <constant>EGL_BAD_PARAMETER</constant> is
+ generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant> and
+ <parameter>buffer</parameter> refers to the default GL texture
+ object (0) for the corresponding GL target, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>, or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and the value specified
+ in <parameter>attrib_list</parameter> for
+ <constant>EGL_GL_TEXTURE_LEVEL</constant> is not a valid mipmap
+ level for the specified GL texture object
+ <parameter>buffer</parameter>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_3D</constant>, and the value specified
+ in <parameter>attrib_list</parameter> for
+ <constant>EGL_GL_TEXTURE_ZOFFSET</constant> exceeds the depth of
+ the specified mipmap level-of-detail in
+ <parameter>buffer</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If an attribute specified in <parameter>attrib_list</parameter>
+ is not one of the attributes shown in table <xref
+ linkend="tab-imageattr"/>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If an attribute specified in <parameter>attrib_list</parameter>
+ is not a valid attribute for <parameter>target</parameter>, as
+ shown in table <xref linkend="tab-imageattr"/>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> has an off-screen buffer
+ bound to it (e.g., by a previous call to
+ <function>eglBindTexImage</function>), the error
+ <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> is bound to an off-screen
+ buffer (e.g., by a previous call to
+ <function>eglCreatePbufferFromClientBuffer</function>), the
+ error <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> is itself an
+ <type>EGLImage</type> sibling, the error
+ <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If insufficient memory is available to complete the specified
+ operation, the error <constant>EGL_BAD_ALLOC</constant> is
+ generated.
+ </para>
+ <para>
+ If the value specified in <parameter>attrib_list</parameter> for
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_TRUE</constant>, and an <type>EGLImage</type>
+ handle cannot be created from the specified resource such that
+ the pixel data values in <parameter>buffer</parameter> are
+ preserved, the error <constant>EGL_BAD_ACCESS</constant> is
+ generated.
+ </para>
+ <para>
+ Note that the success or failure of
+ <function>eglCreateImage</function> should not affect the
+ ability to use <parameter>buffer</parameter> in its original API
+ context (or context share group) (although the pixel data values
+ will be undefined if the command succeeds and the value of
+ <constant>EGL_IMAGE_PRESERVED</constant> is not
+ <constant>EGL_TRUE</constant>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="lifetime"><title>Lifetime and Usage of <type>EGLImage</type>s</title>
+ <para>
+ Once an <type>EGLImage</type> is created from an
+ <type>EGLImage</type> source, the memory associated with the
+ <type>EGLImage</type> source will remain allocated (and all
+ <type>EGLImage</type> siblings in all client API contexts will
+ be useable) as long as either of the following conditions is
+ true:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Any <type>EGLImage</type> siblings exist in any client
+ API context
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <type>EGLImage</type> object exists inside EGL
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The semantics for specifying, deleting and using
+ <type>EGLImage</type> siblings are client API-specific, and are
+ described in the appropriate API specifications.
+ </para>
+ <para>
+ If an application specifies an <type>EGLImage</type> sibling as
+ the destination for rendering and/or pixel download operations
+ (e.g., as an OpenGL or OpenGL ES framebuffer object,
+ <function>glTexSubImage2D</function>, etc.), the modified image
+ results will be observed by all <type>EGLImage</type> siblings
+ in all client API contexts. If multiple client API contexts
+ access <type>EGLImage</type> sibling resources simultaneously,
+ with one or more context modifying the image data, rendering
+ results in all contexts accessing <type>EGLImage</type> siblings
+ are undefined.
+ </para>
+ <para>
+ Respecification and/or deletion of any <type>EGLImage</type>
+ sibling (i.e., both <type>EGLImage</type> source and
+ <type>EGLImage</type> target resources) inside a client API
+ context (by issuing a subsequent call to commands such as
+ <function>glTexImage*</function> or
+ <function>glDeleteTextures</function>, with the
+ <type>EGLImage</type> sibling resource as the target of the
+ operation) affects only that client API context and other
+ contexts within its share group. For an OpenGL or OpenGL ES
+ context, respecification always results in
+ <firstterm>orphaning</firstterm> of the <type>EGLImage</type>,
+ and may also include allocation of additional memory for the
+ respecified resource and/or copying of the <type>EGLImage</type>
+ pixel data.
+ </para>
+ <para>
+ Note: Behavior of other types of client APIs generally follows
+ the OpenGL and OpenGL ES behavior described here, although this
+ is not mandated yet.
+ </para>
+ <para>
+ Operations inside EGL or any client API context which may affect
+ the lifetime of an <type>EGLImage</type> (or the memory
+ allocated for the <type>EGLImage</type>), such as respecifying
+ and/or deleting an <type>EGLImage</type> sibling inside a client
+ API context, must be atomic.
+ </para>
+ <para>
+ Applications may create client API resources from an
+ <type>EGLImage</type> using client API extensions outside the
+ scope of this document (such as
+ <constant>GL_OES_EGL_image</constant>, which creates OpenGL ES
+ texture and renderbuffer objects). If the <type>EGLImage</type>
+ used to create the client resource was created with the
+ <constant>EGL_IMAGE_PRESERVED</constant> attribute set to
+ <constant>EGL_TRUE</constant>, then the pixel data values
+ associated with the image will be preserved after creating the
+ client resource; otherwise, the pixel data values will be
+ undefined. If the <type>EGLImage</type> was created with the
+ <constant>EGL_IMAGE_PRESERVED</constant> attribute set to
+ <constant>EGL_TRUE</constant>, and EGL is unable to create the
+ client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreateImage</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyImage</refentrytitle></citerefentry>,
+ <function>glDeleteTextures</function>,
+ <function>glTexImage*</function>,
+ <function>glTexSubImage2D</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml
new file mode 100644
index 0000000..5c60017
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml
@@ -0,0 +1,386 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePbufferFromClientBuffer">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferFromClientBuffer</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferFromClientBuffer</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLenum <parameter>buftype</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buftype</parameter></term>
+ <listitem>
+ <para>
+ Specifies the type of client API buffer to be bound.
+ Must be <constant>EGL_OPENVG_IMAGE</constant>,
+ corresponding to an OpenVG <type>VGImage</type>
+ buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem>
+ <para>
+ Specifies the OpenVG <type>VGImage</type> handle of
+ the buffer to be bound.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferFromClientBuffer</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <parameter>config</parameter>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </para>
+ <para>
+ <parameter>buftype</parameter> must be
+ <constant>EGL_OPENVG_IMAGE</constant>, corresponding to an
+ OpenVG <type>VGImage</type> buffer.
+ <parameter>buffer</parameter> must be a valid
+ <type>VGImage</type> handle in the current OpenVG context,
+ cast into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <constant>EGL_HEIGHT</constant>,
+ <constant>EGL_WIDTH</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, respectively) of the
+ resulting surface are determined by the size and format of
+ <parameter>buffer</parameter>.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </para>
+ <para>
+ Currently
+ <function>eglCreatePbufferFromClientBuffer</function> only
+ supports binding OpenVG <type>VGImage</type> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <type>EGLImageKHR</type>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ <para>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ <orderedlist>
+ <listitem>
+ <para>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <type>VGImage</type> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <type>VGImage</type> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <type>VGImage</type> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <type>VGImage</type> is bound to a pbuffer,
+ destroying the image with
+ <function>vgDestroyImage</function> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <function>vgDestroyImage</function> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <function>eglDestroySurface</function> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <function>eglDestroySurface</function> the buffer
+ may only be referred to via the OpenVG
+ <type>VGImage</type> handle, since the EGL pbuffer
+ handle no longer exists.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>buftype</parameter> is not
+ <constant>EGL_OPENVG_IMAGE</constant>, or if
+ <parameter>buffer</parameter> is not a valid handle to a
+ <type>VGImage</type> object in the currently bound OpenVG
+ context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if there is
+ no current OpenVG context, or if
+ <parameter>buffer</parameter> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if the buffers
+ contained in <parameter>buffer</parameter> consist of any
+ <type>EGLImage</type> siblings.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to
+ pixel buffers (the <constant>EGL_SURFACE_TYPE</constant>
+ attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ buffers contained in <parameter>buffer</parameter> do not
+ match the bit depths for those buffers specified by
+ <parameter>config</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <type>VGImage</type> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <constant>EGL_MIPMAP_TEXTURE</constant>
+ attribute is <constant>TRUE</constant>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml
new file mode 100644
index 0000000..5bb7c8e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml
@@ -0,0 +1,359 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePbufferSurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferSurface</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferSurface</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem>
+ <para>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem>
+ <para>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem>
+ <para>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant>, and the
+ <constant>EGL_OPENGL_ES3_BIT</constant> bit value for attribute
+ <constant>EGL_RENDERABLE_TYPE</constant>, are supported only if
+ the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant>,
+ <constant>EGL_OPENGL_ES2_BIT</constant>, or
+ <constant>EGL_OPENGL_ES3_BIT</constant>),
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml
new file mode 100644
index 0000000..72469f4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePixmapSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> offscreen surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePixmapSurface</function> creates an off-screen
+ EGL pixmap surface and returns a handle to it. The behavior of
+ <function>eglCreatePixmapSurface</function> is identical to that
+ of
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>
+ except that the set of platforms to which
+ <parameter>display</parameter> is permitted to belong, as well
+ as the actual type of <parameter>native_pixmap</parameter>, are
+ implementation specific.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ See errors for
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml
new file mode 100644
index 0000000..66de1c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml
@@ -0,0 +1,270 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePlatformPixmapSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePlatformPixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> offscreen surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePlatformPixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>void * <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePlatformPixmapSurface</function> creates an
+ off-screen <acronym>EGL</acronym> pixmap surface and returns
+ a handle to it.
+ </para>
+ <para>
+ If <function>eglCreatePlatformPixmapSurface</function> fails to
+ create a pixmap surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ <parameter>native_pixmap</parameter> must belong to the same
+ platform as <parameter>display</parameter>, and EGL considers
+ the returned <type>EGLSurface</type> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <parameter>display</parameter> belongs also defines the
+ requirements for the <parameter>native_pixmap</parameter>
+ parameter.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The <constant>EGL_MATCH_NATIVE_PIXMAP</constant> attribute
+ of
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </para>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for the window system to
+ ignore the value of <constant>EGL_VG_ALPHA_FORMAT</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>display</parameter> and
+ <parameter>native_pixmap</parameter> do not belong to the same
+ platform, then undefined behavior occurs.
+ </para>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the surface fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL config.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there is
+ already an <type>EGLSurface</type> associated with
+ <parameter>native_pixmap</parameter> (as a result of a previous
+ <function>eglCreatePlatformPixmapSurface</function> call).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_pixmap</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to pixmaps
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PIXMAP_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml
new file mode 100644
index 0000000..ee88467
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml
@@ -0,0 +1,296 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePlatformWindowSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePlatformWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePlatformWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> on-screen rendering surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePlatformWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>void * <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLAttrib const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies a list of attributes for the window surface.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePlatformWindowSurface</function> creates an
+ on-screen EGL window surface and returns a handle to it. Any EGL
+ context created with a compatible <type>EGLConfig</type> can be
+ used to render into this surface.
+ </para>
+ <para>
+ If <function>eglCreatePlatformWindowSurface</function> fails to
+ create a window surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ <parameter>native_window</parameter> must belong to the same
+ platform as <parameter>display</parameter>, and EGL considers
+ the returned <type>EGLSurface</type> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <parameter>display</parameter> belongs also defines the
+ requirements for the <parameter>native_window</parameter>
+ parameter.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <constant>EGL_SINGLE_BUFFER</constant>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <constant>EGL_BACK_BUFFER</constant>, then client
+ APIs should render into the back buffer. The default
+ value of <constant>EGL_RENDER_BUFFER</constant> is
+ <constant>EGL_BACK_BUFFER</constant>.
+ </para>
+ <para>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for platforms to ignore the
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> when
+ compositing window surfaces.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>display</parameter> and
+ <parameter>native_window</parameter> do not belong to the same
+ platform, then undefined behavior occurs.
+ </para>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the surface fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not a valid EGL frame buffer
+ configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ <parameter>native_window</parameter> is not a valid native
+ window for the same platform as <parameter>display</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there is
+ already an <type>EGLSurface</type> associated with
+ <parameter>native_window</parameter> (as a result of a previous
+ <function>eglCreatePlatformWindowSurface</function> call).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the pixel
+ format of <parameter>native_window</parameter> does not
+ correspond to the format, type, and size of the color buffers
+ required by <parameter>config</parameter>.
+ <constant>EGL_BAD_MATCH</constant> is generated if the pixel
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to
+ windows (the <constant>EGL_SURFACE_TYPE</constant> attribute
+ does not contain <constant>EGL_WINDOW_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml
new file mode 100644
index 0000000..551d2a4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml
@@ -0,0 +1,311 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateSync</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSync <function>eglCreateSync</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLEnum <parameter>type</parameter></paramdef>
+ <paramdef>EGLAttrib const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>type</parameter></term>
+ <listitem><para>
+ Specifies the type of sync object to create.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the sync
+ object being created.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <firstterm>sync objects</firstterm> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon
+ by application threads.
+ </para>
+ <para>
+ Sync objects have a status with two possible states:
+ <firstterm>signaled</firstterm> and
+ <firstterm>unsignaled</firstterm>. Initially, sync objects are
+ unsignaled. EGL may be asked to wait for a sync object to become
+ signaled, or a sync object's status may be queried.
+ </para>
+ <para>
+ Depending on the type of a sync object, its status may be
+ changed either by an external event, or by explicitly signaling
+ and unsignaling the sync.
+ </para>
+ <para>
+ <function>eglCreateSync</function> creates a sync object of the specified
+ <parameter>type</parameter> associated with the specified display
+ <parameter>display</parameter>, and returns a handle to the new object.
+ <parameter>attrib_list</parameter> is an attribute-value list specifying
+ other attributes of the sync object, terminated by an attribute entry
+ <constant>EGL_NONE</constant>. Attributes not specified in the list will be
+ assigned their default values.
+ </para>
+ <para>
+ Once the <firstterm>condition</firstterm> of the sync object is satisfied,
+ the sync is signaled, causing any <function>eglClientWaitSync</function> or
+ <function>eglWaitSync</function> commands blocking on
+ <parameter>sync</parameter> to unblock.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="fencesync"><title>Creating Fence Sync Objects</title>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant>, a fence sync object is
+ created. In this case <parameter>attrib_list</parameter> must be
+ <constant>NULL</constant> or empty (containing only
+ <constant>EGL_NONE</constant>). Attributes of the fence sync
+ object, and their initial values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SYNC_TYPE</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_FENCE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_STATUS</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_UNSIGNALED</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_CONDITION</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_PRIOR_COMMANDS_COMPLETE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When a fence sync object is created, <function>eglCreateSync</function> also inserts a
+ fence command into the command stream of the bound client API's current
+ context (i.e., the context returned by <function>eglGetCurrentContext</function>), and
+ associates it with the newly created sync object.
+ </para>
+ <para>
+ The only condition supported for fence sync objects is
+ <constant>EGL_SYNC_PRIOR_COMMANDS_COMPLETE</constant>, which is satisfied by completion of
+ the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+ </para>
+ <para>
+ Creation of fence sync objects requires support from the bound
+ client API, and will not succeed unless the client API satisfies
+ one of the following properties. Note that
+ <function>eglWaitSync</function> also requires satisfying these
+ conditions.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ client API is OpenGL, and either the OpenGL version is
+ 3.2 or greater, or the <constant>GL_ARB_sync</constant>
+ extension is supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ client API is OpenGL ES, and either the OpenGL ES
+ version is 3.0 or greater, or the
+ <constant>GL_OES_EGL_sync</constant> extension is
+ supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ client API is OpenVG, and the
+ <constant>VG_KHR_EGL_sync</constant> extension is
+ supported.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </refsect1>
+ <refsect1 xml:id="openclsync"><title>Creating OpenCL Event Sync Objects</title>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_CL_EVENT</constant>, an OpenCL event sync
+ object is created. In this case
+ <parameter>attrib_list</parameter> must contain the attribute
+ <constant>EGL_CL_EVENT_HANDLE</constant>, set to a valid OpenCL
+ event handle returned by a call to
+ <function>clEnqueueReleaseGLObjects</function> or
+ <function>clEnqueueReleaseEGLObjects</function>; other types of
+ OpenCL event handles are not supported. Note that
+ <constant>EGL_CL_EVENT_HANDLE</constant> is not a queriable
+ property of a sync object. Attributes of the OpenCL event sync
+ object, and their initial values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SYNC_TYPE</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_CL_EVENT</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_STATUS</constant></term>
+ <listitem>
+ <para>
+ Depends on status of <parameter>event</parameter>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_CONDITION</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_CL_EVENT_COMPLETE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ The status of such a sync object depends on
+ <parameter>event</parameter>. When the status of
+ <parameter>event</parameter> is <constant>CL_QUEUED</constant>,
+ <constant>CL_SUBMITTED</constant>, or
+ <constant>CL_RUNNING</constant>, the status of the linked sync
+ object will be <constant>EGL_UNSIGNALED</constant>. When the
+ status of <parameter>event</parameter> changes to
+ <constant>CL_COMPLETE</constant>, the status of the linked sync
+ object will become <constant>EGL_SIGNALED</constant>.
+ </para>
+ <para>
+ The only condition supported for OpenCL event sync objects is
+ <constant>EGL_SYNC_CL_EVENT_COMPLETE</constant>, which is
+ satisfied when the status of the OpenCL event associated with
+ the sync object changes to <constant>CL_COMPLETE</constant>.
+ </para>
+ <para>
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the
+ reference will be removed from the event object.
+ </para>
+ <para>
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in
+ <parameter>attrib_list</parameter> may result in undefined
+ behavior up to and including program termination.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreateSync</function> is supported only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglCreateSync</function> returns
+ <constant>EGL_NO_SYNC</constant> on failure.
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the name of a valid,
+ initialized <type>EGLDisplay</type>, an
+ <constant>EGL_BAD_DISPLAY</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attrib_list</parameter> contains an attribute name
+ not defined for the type of sync object being created, an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is not a supported type of sync
+ object, an <constant>EGL_BAD_PARAMETER</constant> error is
+ generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and no context is current
+ for the bound API (i.e.,
+ <function>eglGetCurrentContext</function> returns
+ <constant>EGL_NO_CONTEXT</constant>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and
+ <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> of the currently bound context for the
+ currently bound client API (the <type>EGLDisplay</type> returned
+ by <function>eglGetCurrentDisplay</function>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and the current context for
+ the currently bound client API does not support fence commands,
+ an <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_CL_EVENT</constant> and
+ <constant>EGL_CL_EVENT_HANDLE</constant> is not specified in
+ <parameter>attrib_list</parameter>, or its attribute value is
+ not a valid OpenCL event handle as described above, then an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>clEnqueueReleaseGLObjects</function>,
+ <function>clEnqueueReleaseEGLObjects</function>,
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml
new file mode 100644
index 0000000..b098a4b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateWindowSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> window surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreateWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativeWindowType <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies window surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateWindowSurface</function> creates an on-screen
+ EGL window surface and returns a handle to it. The behavior of
+ <function>eglCreateWindowSurface</function> is identical to that
+ of
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>
+ except that the set of platforms to which
+ <parameter>display</parameter> is permitted to belong, as well
+ as the actual type of <parameter>native_window</parameter>, are
+ implementation specific.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ See errors for
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml
new file mode 100644
index 0000000..01467ee
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml
@@ -0,0 +1,75 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroyContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroyContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyContext</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>Specifies the EGL rendering context to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If the EGL rendering context <parameter>context</parameter> is not
+ current to any thread,
+ <function>eglDestroyContext</function> destroys it immediately.
+ Otherwise, <parameter>context</parameter> is destroyed when it becomes
+ not current to any thread.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the context fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml
new file mode 100644
index 0000000..96bb8bd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml
@@ -0,0 +1,85 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroyImage">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroyImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyImage</refname>
+ <refpurpose>
+ Destroy an <type>EGLImage</type> object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyImage</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLImage <parameter>image</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>image</parameter></term>
+ <listitem><para>
+ Specifies the image to destroy.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglDestroyImage</function> is used to destroy the
+ specified <type>EGLImage</type> object
+ <parameter>image</parameter>. Once destroyed,
+ <parameter>image</parameter> may not be used to create any
+ additional <type>EGLImage</type> target resources within any
+ client API contexts, although existing <type>EGLImage</type>
+ siblings may continue to be used. <constant>EGL_TRUE</constant>
+ is returned on success.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglDestroyImage</function> returns
+ <constant>EGL_FALSE</constant>
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the handle of a valid
+ <type>EGLDisplay</type> object, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>image</parameter> is not a valid
+ <type>EGLImage</type> object created with respect to
+ <parameter>display</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglDestroyImage</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml
new file mode 100644
index 0000000..31024c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml
@@ -0,0 +1,77 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroySurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySurface</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem><para>Specifies the EGL surface to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If the EGL surface <parameter>surface</parameter> is not current to any
+ thread, <function>eglDestroySurface</function> destroys it immediately.
+ Otherwise, <parameter>surface</parameter> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the surface fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml
new file mode 100644
index 0000000..d871c2c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml
@@ -0,0 +1,98 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroySync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroySync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySync</refname>
+ <refpurpose>
+ Destroy a sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to destroy.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglDestroySync</function> is used to destroy an
+ existing sync object.
+ </para>
+ <para>
+ If any <function>eglClientWaitSync</function> or
+ <function>eglWaitSync</function> commands are blocking on
+ <parameter>sync</parameter> when
+ <function>eglDestroySync</function> is called,
+ <parameter>sync</parameter> is flagged for deletion and will be
+ deleted when the associated fence command or OpenCL event object
+ has completed, and <parameter>sync</parameter> is no longer
+ blocking any such <function>egl*WaitSync</function> command.
+ Otherwise, the sync object is destroyed immediately.
+ </para>
+ <para>
+ If no errors are generated, <constant>EGL_TRUE</constant> is
+ returned, and <parameter>sync</parameter> will no longer be the
+ handle of a valid sync object.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglDestroySync</function> returns
+ <constant>EGL_FALSE</constant>.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, <constant>EGL_FALSE</constant>
+ is returned and an <constant>EGL_BAD_PARAMETER</constant> error
+ is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the display
+ passed to <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behaviour is
+ undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglDestroySync</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml
new file mode 100644
index 0000000..70313fe
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml
@@ -0,0 +1,317 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetConfigAttrib">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetConfigAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigAttrib</refname>
+ <refpurpose>
+ return information about an <acronym>EGL</acronym> frame buffer
+ configuration
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration to be
+ queried.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>Specifies the EGL rendering context attribute to be
+ returned.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>Returns the requested value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigAttrib</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for
+ <parameter>config</parameter>
+ (config attributes are described in more detail in the
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ reference page).
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of alpha stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Returns the number of bits in the alpha mask buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGB texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGBA texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of blue stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>Returns the depth of the color buffer.
+ It is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem><para>
+ Returns the color buffer type. Possible types are
+ <constant>EGL_RGB_BUFFER</constant> and
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem><para>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>Returns the ID of the frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the depth buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of green stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_WIDTH</constant></term>
+ <listitem><para>Returns the maximum width of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_HEIGHT</constant></term>
+ <listitem><para>Returns the maximum height of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_PIXELS</constant></term>
+ <listitem><para>Returns the maximum size of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the maximum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the minimum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if native rendering
+ APIs can render into the surface,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_ID</constant></term>
+ <listitem><para>Returns the ID of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_TYPE</constant></term>
+ <listitem><para>Returns the type of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of red stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>Returns the number of multisample buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>Returns the number of samples per pixel.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the stencil buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>Returns the type of supported transparency.
+ Possible transparency values are:
+ <constant>EGL_NONE</constant>, and
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>Returns the transparent red value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>Returns the transparent green value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>Returns the transparent blue value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CONFORMANT</constant> is supported only if the
+ EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> are supported only
+ if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ While <constant>EGL_MATCH_NATIVE_PIXMAP</constant> can be
+ specified in the attribute list passed to
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <function>eglGetConfigAttrib</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid frame buffer
+ configuration attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml
new file mode 100644
index 0000000..a58e722
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml
@@ -0,0 +1,105 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetConfigs">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetConfigs</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigs</refname>
+ <refpurpose>
+ return a list of all <acronym>EGL</acronym> frame buffer configurations
+ for a display
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigs</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns a list of configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the list of configs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of configs returned.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigs</function> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </para>
+ <para>
+ <parameter>configs</parameter> does not return values, if it is specified
+ as
+ <constant>NULL</constant>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and <parameter>num_config</parameter>
+ are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml
new file mode 100644
index 0000000..b646cf2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentContext</refname>
+ <refpurpose>
+ return the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglGetCurrentContext</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentContext</function> returns the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml
new file mode 100644
index 0000000..a860304
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml
@@ -0,0 +1,57 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentDisplay">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentDisplay</refname>
+ <refpurpose>
+ return the display for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetCurrentDisplay</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentDisplay</function> returns the current
+ <acronym>EGL</acronym> display connection for the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_DISPLAY</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ Passing <constant>EGL_NO_DISPLAY</constant> to any command
+ taking an <type>EGLDisplay</type> parameter will generate either
+ an <constant>EGL_BAD_DISPLAY</constant> error if the EGL
+ implementation validates <type>EGLDisplay</type> handles, or
+ undefined behavior as described at the end of section 3.1 of the
+ EGL 1.5 Specification. The only exception to this rule is that
+ <function>eglQueryString</function> will accept an
+ <type>EGLDisplay</type> parameter of
+ <constant>EGL_NO_DISPLAY</constant> when querying the client
+ extension string (see section 3.3 of the EGL 1.5 Specification).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml
new file mode 100644
index 0000000..1299718
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml
@@ -0,0 +1,58 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentSurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentSurface</refname>
+ <refpurpose>
+ return the read or draw surface for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglGetCurrentSurface</function></funcdef>
+ <paramdef>EGLint <parameter>readdraw</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>readdraw</parameter></term>
+ <listitem>
+ <para>
+ Specifies whether to return the read surface
+ (<constant>EGL_READ</constant>) or the draw surface
+ (<constant>EGL_DRAW</constant>).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentSurface</function> returns the read or draw
+ surface attached to the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml
new file mode 100644
index 0000000..a694edf
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetDisplay">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetDisplay</function></funcdef>
+ <paramdef>NativeDisplayType <parameter>native_display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the display to connect to.
+ <constant>EGL_DEFAULT_DISPLAY</constant> indicates the default display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetDisplay</function> obtains the
+ <acronym>EGL</acronym> display connection for the native
+ display <parameter>native_display</parameter>.
+ </para>
+ <para>
+ The behavior of <function>eglGetDisplay</function> is similar to
+ that of
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ but is specified in terms of implementation-specific behavior
+ rather than platform-specific extensions. As for
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ EGL considers the returned <type>EGLDisplay</type> as belonging
+ to the same platform as <parameter>display_id</parameter>.
+ However, the set of platforms to which
+ <parameter>display_id</parameter> is permitted to belong, as
+ well as the actual type of <parameter>display_id</parameter>,
+ are implementation-specific. If
+ <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a <firstterm>default
+ display</firstterm> is returned. Multiple calls made to
+ <function>eglGetDisplay</function> with the same
+ <parameter>display_id</parameter> will return the same
+ <type>EGLDisplay</type> handle.
+ </para>
+ <para>
+ If <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a default display connection is returned.
+ </para>
+ <para>
+ If no display connection matching <parameter>native_display</parameter> is
+ available, <constant>EGL_NO_DISPLAY</constant> is returned. No
+ error is generated.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ to initialize the display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml
new file mode 100644
index 0000000..3e1fd71
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml
@@ -0,0 +1,143 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetError">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetError</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetError</refname>
+ <refpurpose>
+ return error information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglGetError</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetError</function> returns the error of the last
+ called <acronym>EGL</acronym> function in the current thread.
+ Initially, the error is set to <constant>EGL_SUCCESS</constant>.
+ </para>
+ <para>
+ When an EGL function could potentially generate several
+ different errors (for example, when passed both a bad attribute
+ name, and a bad attribute value for a legal attribute name), the
+ implementation may choose to generate any one of the applicable
+ errors.
+ </para>
+ <para>
+ The following errors are currently defined:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SUCCESS</constant></term>
+ <listitem><para>The last function succeeded without error.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NOT_INITIALIZED</constant></term>
+ <listitem><para>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ACCESS</constant></term>
+ <listitem><para>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ALLOC</constant></term>
+ <listitem><para>EGL failed to allocate resources for the requested
+ operation.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ATTRIBUTE</constant></term>
+ <listitem><para>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONTEXT</constant></term>
+ <listitem><para>An <type>EGLContext</type> argument does not name a
+ valid EGL rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONFIG</constant></term>
+ <listitem><para>
+ An <type>EGLConfig</type> argument does not name a valid
+ EGL frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CURRENT_SURFACE</constant></term>
+ <listitem><para>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_DISPLAY</constant></term>
+ <listitem><para>An <type>EGLDisplay</type> argument does not name a
+ valid EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_SURFACE</constant></term>
+ <listitem><para>An <type>EGLSurface</type> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_MATCH</constant></term>
+ <listitem><para>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_PARAMETER</constant></term>
+ <listitem><para>One or more argument values are invalid.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_PIXMAP</constant></term>
+ <listitem><para>
+ A <type>NativePixmapType</type> argument does not refer to
+ a valid native pixmap.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_WINDOW</constant></term>
+ <listitem><para>A <type>NativeWindowType</type> argument does not refer
+ to a valid native window.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_LOST</constant></term>
+ <listitem><para>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ A call to <function>eglGetError</function> sets the error to
+ <constant>EGL_SUCCESS</constant>.
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml
new file mode 100644
index 0000000..f2f9108
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml
@@ -0,0 +1,122 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetPlatformDisplay">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetPlatformDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetPlatformDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetPlatformDisplay</function></funcdef>
+ <paramdef>EGLenum <parameter>platform</parameter></paramdef>
+ <paramdef>void * <parameter>native_display</parameter></paramdef>
+ <paramdef>const EGLAttrib * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>platform</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native platform to obtain a display for.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native display to connect to.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem>
+ <para>
+ Specifies attributes of the display being obtained.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> obtains an
+ <acronym>EGL</acronym> display connection for the specified
+ <parameter>platform</parameter> and
+ <parameter>native_display</parameter>.
+ </para>
+ <para>
+ Valid values for <parameter>platform</parameter> are defined by
+ EGL extensions, as are requirements for
+ <parameter>native_display</parameter>.
+ For example, an extension specification that defines support for
+ the X11 platform may require that
+ <parameter>native_display</parameter> be a pointer to an X11
+ Display, and an extension specification that defines support for
+ the Microsoft Windows platform may require that
+ <parameter>native_display</parameter> be a pointer to a Windows
+ Device Context.
+ </para>
+ <para>
+ Valid attributes are defined by EGL extensions.
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value.
+ The list is terminated with <constant>EGL_NONE</constant>.
+ If an attribute is not specified in
+ <parameter>attrib_list</parameter> but is required for the
+ specified <parameter>platform</parameter>, then a default value
+ is used (and the attribute is said to be specified implicitly).
+ </para>
+ <para>
+ Multiple calls made to
+ <function>eglGetPlatformDisplay</function> with the same
+ parameters will return the same <type>EGLDisplay</type> handle.
+ </para>
+ <para>
+ If <parameter>platform</parameter> is valid but no display
+ matching <parameter>native_display</parameter> is available,
+ then <constant>EGL_NO_DISPLAY</constant> is returned; no error
+ condition is raised in this case.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> is supported only if
+ the EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> returns
+ <constant>EGL_NO_DISPLAY</constant> on failure.
+ </para>
+ <para>
+ An <constant>EGL_BAD_PARAMETER</constant> error is generated if
+ <parameter>platform</parameter> has an invalid value.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml
new file mode 100644
index 0000000..a3d20b0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml
@@ -0,0 +1,98 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetProcAddress">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetProcAddress</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetProcAddress</refname>
+ <refpurpose>
+ return a <acronym>GL</acronym> or an <acronym>EGL</acronym>
+ extension function
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void (* <function>eglGetProcAddress</function></funcdef>
+ <paramdef>char const * <parameter>procname</parameter>))(void</paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>procname</parameter></term>
+ <listitem>
+ <para>
+ Specifies the name of the function to return.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetProcAddress</function> returns the address of
+ the client API or EGL function named by
+ <parameter>procname</parameter>. <parameter>procname</parameter>
+ must be a null-terminated string. The pointer returned should be
+ cast to a function pointer matching the function's definition in
+ the corresponding API or extension specification. A return value
+ of <constant>NULL</constant> indicates that the specific
+ function does not exist for the implementation.
+ </para>
+ <para>
+ A non-<constant>NULL</constant> return value does not guarantee
+ that an extension function is actually supported at runtime. The
+ client must also make a corresponding query, such as
+ <function>glGetString</function>(<constant>GL_EXTENSIONS</constant>)
+ for OpenGL and OpenGL ES extensions;
+ <function>vgGetString</function>(<constant>VG_EXTENSIONS</constant>)
+ for OpenVG extensions;
+ <function>eglQueryString</function>(<parameter>display</parameter>,
+ <constant>EGL_EXTENSIONS</constant>); or query the EGL or client
+ API version for non-extension functions, to determine if a
+ function is supported by EGL or a specific client API context.
+ </para>
+ <para>
+ Client API function pointers returned by
+ <function>eglGetProcAddress</function> are independent of the
+ display and the currently bound client API context, and may be
+ used by any client API context which supports the function.
+ </para>
+ <para>
+ <function>eglGetProcAddress</function> may be queried for all
+ EGL and client API functions supported by the implementation
+ (whether those functions are extensions or not, and whether they
+ are supported by the current client API context or not).
+ </para>
+ <para>
+ For functions that are queryable with
+ <function>eglGetProcAddress</function>, implementations may
+ choose to also export those functions statically from the object
+ libraries implementing those functions. However, portable
+ clients cannot rely on this behavior.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ If the EGL version is not 1.5 or greater, only queries of EGL
+ and client API <emphasis>extension</emphasis> functions will
+ succeed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>glGetString</function>
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry> </para>
+ <function>vgGetString</function>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml
new file mode 100644
index 0000000..c3f0197
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml
@@ -0,0 +1,148 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetSyncAttrib">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetSyncAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetSyncAttrib</refname>
+ <refpurpose>
+ Return an attribute of a sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetSyncAttrib</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLAttrib *<parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to query.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>
+ Specifies the EGL sync object attribute to query.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>
+ Returns the requested attribute value.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetSyncAttrib</function> is used to query
+ attributes of the sync object <parameter>sync</parameter>. Legal
+ values for <parameter>attribute</parameter> depend on the type
+ of sync object, as shown in table
+ <xref linkend="tab-syncattr"/>. Assuming no errors are
+ generated, <constant>EGL_TRUE</constant> is returned and the
+ value of the queried attribute is returned in
+ *<parameter>value</parameter>.
+ </para>
+ <table frame="all" xml:id="tab-syncattr">
+ <title>
+ Attributes accepted by <function>eglGetSyncAttrib</function>
+ </title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Supported Sync Objects</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Supported Sync Objects</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_TYPE</constant></entry>
+ <entry>Type of the sync object</entry>
+ <entry>All</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_STATUS</constant></entry>
+ <entry>Status of the sync object</entry>
+ <entry>All</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_CONDITION</constant></entry>
+ <entry>Signaling condition</entry>
+ <entry>
+ <constant>EGL_SYNC_FENCE</constant> or
+ <constant>EGL_SYNC_CL_EVENT</constant>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglGetSyncAttrib</function> returns
+ <constant>EGL_FALSE</constant> and *<parameter>value</parameter>
+ is not modified.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attribute</parameter> is not one of the attributes
+ in table <xref linkend="tab-syncattr"/>, an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attribute</parameter> is not supported for the
+ type of sync object passed in <parameter>sync</parameter>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the display
+ passed to <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, behaviour is undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglGetSyncAttrib</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml
new file mode 100644
index 0000000..367a986
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml
@@ -0,0 +1,100 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglInitialize">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglInitialize</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglInitialize</refname>
+ <refpurpose>
+ initialize an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglInitialize</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint * <parameter>major</parameter></paramdef>
+ <paramdef>EGLint * <parameter>minor</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to initialize.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>major</parameter></term>
+ <listitem>
+ <para>
+ Returns the major version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>minor</parameter></term>
+ <listitem>
+ <para>
+ Returns the minor version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglInitialize</function> initialized the EGL display
+ connection obtained with
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </para>
+ <para>
+ <parameter>major</parameter> and <parameter>minor</parameter>
+ do not return values if they are specified as <constant>NULL</constant>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ to release resources associated with an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglInitialize</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>major</parameter> and <parameter>minor</parameter> are not
+ modified when <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> cannot be initialized.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml
new file mode 100644
index 0000000..0cdd0a1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml
@@ -0,0 +1,275 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglIntro">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglIntro</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglIntro</refname>
+ <refpurpose>
+ introduction to managing client API rendering through the
+ <acronym>EGL</acronym> API.
+ </refpurpose>
+ </refnamediv>
+ <refsect1 xml:id="overview"><title>Overview</title>
+ <para>
+ The <firstterm>Khronos Native Platform Graphics
+ Interface</firstterm> (EGL) provides a means for rendering
+ using a <firstterm>client API</firstterm> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a
+ <firstterm>platform</firstterm>, such as Microsoft Windows or
+ the X Window System.
+ </para>
+ <para>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the platform. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The EGL specification does not define the set of platforms that
+ may be supported by an EGL implementation, nor does it specify
+ behavior specific to any platform. The set of supported
+ platforms and their behavior is defined by platform-specific
+ extensions. To detect if a particular platform is supported,
+ clients should query the <constant>EGL_EXTENSIONS</constant>
+ string of <constant>EGL_NO_DISPLAY</constant> using
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Platforms supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the platform APIs.
+ </para>
+ <para>
+ An EGL <firstterm>surface</firstterm> extends a native
+ window or pixmap with additional <firstterm>auxillary
+ buffers</firstterm>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </para>
+ <para>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the platform. EGL pixel buffers are
+ EGL-only resources, and do not accept rendering through the
+ platform APIs.
+ </para>
+ <para>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ returns an <type>EGLConfig</type> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </para>
+ <para>
+ To create an EGL window surface from a native window, call
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <type>VGImage</type>, call
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>.
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to release previously allocated resources.
+ </para>
+ <para>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ This context/surface(s) association specifies the
+ <firstterm>current context</firstterm> and
+ <firstterm>current surface</firstterm>, and is used by all
+ client API rendering commands for the bound context until
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ is called with different arguments.
+ </para>
+ <para>
+ Both platform and client API commands may be used to operate
+ on certain surfaces. However, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ and possibly by calling other platform APIs.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="examples"><title>Examples</title>
+ <para>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </para>
+<programlisting>
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</programlisting>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Prior to EGL 1.5, platforms were referred to as the
+ <firstterm>native window system</firstterm>, and
+ platform-specific queries and APIs were not available. Only a
+ single native window system was supported.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="usingeglextensions"><title>Using EGL Extensions</title>
+ <para>
+ All supported EGL extensions will have a corresponding definition in
+ <filename>egl.h</filename> and a token in the extension strings returned
+ by
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="futureeglversions"><title>Future EGL Versions</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <constant>EGL_VERSION_<replaceable>x</replaceable>_<replaceable>y</replaceable></constant>
+ is defined, where <replaceable>x</replaceable> and
+ <replaceable>y</replaceable> are the major and minor version
+ numbers.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="files"><title>Files</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>GLES/egl.h</filename></term>
+ <listitem><para>
+ EGL header file
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+<!--
+ <citerefentry><refentrytitle>glIntro</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+-->
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml
new file mode 100644
index 0000000..3464640
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml
@@ -0,0 +1,321 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglMakeCurrent">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglMakeCurrent</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglMakeCurrent</refname>
+ <refpurpose>
+ attach an EGL rendering context to EGL surfaces
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglMakeCurrent</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>draw</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>read</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> display connection.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>draw</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> draw surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>read</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> read surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglMakeCurrent</function> binds <parameter>context</parameter>
+ to the current rendering thread and to the <parameter>draw</parameter>
+ and <parameter>read</parameter> surfaces.
+ </para>
+ <para>
+ For an OpenGL or OpenGL ES context, <parameter>draw</parameter>
+ is used for all operations except for any pixel data read back or copied
+ (<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>),
+ which is taken from the frame buffer values of
+ <parameter>read</parameter>. Note that the same
+ <type>EGLSurface</type> may be specified for both draw and read.
+ </para>
+ <para>
+ For an OpenVG context, the same <type>EGLSurface</type> must be
+ specified for both <parameter>draw</parameter> and
+ <parameter>read</parameter>.
+ </para>
+ <para>
+ If the calling thread has already a current rendering context of
+ the same client API type as <parameter>context</parameter>, then
+ that context is flushed and marked as no longer current.
+ <parameter>context</parameter> is then made the current context
+ for the calling thread. For purposes of
+ <function>eglMakeCurrent</function>, the client API type of all
+ OpenGL ES and OpenGL contexts is considered the same. In other
+ words, if any OpenGL ES context is currently bound and
+ <parameter>context</parameter> is an OpenGL context, or if any
+ OpenGL context is currently bound and
+ <parameter>context</parameter> is an OpenGL ES context, the
+ currently bound context will be made no longer current and
+ <parameter>context</parameter> will be made current.
+ </para>
+ <para>
+ OpenGL and OpenGL ES buffer mappings created by e.g.
+ <function>glMapBuffer</function> are not affected by
+ <function>eglMakeCurrent</function>; they persist whether the
+ context owning the buffer is current or not.
+ </para>
+ <para>
+ If <parameter>draw</parameter> is destroyed after
+ <function>eglMakeCurrent</function> is called, then subsequent
+ rendering commands will be processed and the context state will
+ be updated, but the surface contents become undefined. If
+ <parameter>read</parameter> is destroyed after
+ <function>eglMakeCurrent</function> then pixel values
+ <parameter>read</parameter> from the framebuffer (e.g., as
+ result of calling glReadPixels) are undefined. If a native
+ window or pixmap underlying the <parameter>draw</parameter> or
+ <parameter>read</parameter> surfaces is destroyed, rendering and
+ <parameter>read</parameter>back are handled as above.
+ </para>
+ <para>
+ To release the current context without assigning a new one, set
+ <parameter>context</parameter> to
+ <constant>EGL_NO_CONTEXT</constant> and set
+ <parameter>draw</parameter> and <parameter>read</parameter> to
+ <constant>EGL_NO_SURFACE</constant> . The currently bound
+ context for the client API specified by the current rendering
+ API is flushed and marked as no longer current, and there will
+ be no current context for that client API after
+ <function>eglMakeCurrent</function> returns. This is the only
+ case in which <function>eglMakeCurrent</function> respects the
+ current rendering API. In all other cases, the client API
+ affected is determined by <parameter>context</parameter>. This
+ is the only case where an uninitialized display may be passed to
+ <function>eglMakeCurrent</function>.
+ </para>
+ <para>
+ If ctx is not <constant>EGL_NO_CONTEXT</constant>, then both
+ <parameter>draw</parameter> and <parameter>read</parameter> must
+ not be <constant>EGL_NO_SURFACE</constant> unless
+ <parameter>context</parameter> is a context which supports being
+ bound without read and draw surfaces. In this case the context
+ is made current without a default framebuffer. The meaning of
+ this is defined by the client API of the supporting context (see
+ chapter 4 of the OpenGL 3.0 Specification, and the
+ <constant>GL_OES_surfaceless_context</constant> OpenGL ES
+ extension.).
+ </para>
+ <para>
+ The first time a OpenGL or OpenGL ES context is made current the
+ viewport and scissor dimensions are set to the size of the
+ <parameter>draw</parameter> surface (as though
+ <function>glViewport</function>(0,0,w,h) and
+ <function>glScissor</function>(0,0,<parameter>w</parameter>,<parameter>h</parameter>)
+ were called, where <parameter>w</parameter> and
+ <parameter>h</parameter> are the width and height of the
+ surface, respectively). However, the viewport and scissor
+ dimensions are not modified when <parameter>context</parameter>
+ is subsequently made current. The client is responsible for
+ resetting the viewport and scissor in this case.
+ </para>
+ <para>
+ The first time <parameter>context</parameter> is made current,
+ if it is without a default framebuffer (e.g. both
+ <parameter>draw</parameter> and <parameter>read</parameter> are
+ <constant>EGL_NO_SURFACE</constant> ), then the viewport and
+ scissor regions are set as though
+ <function>glViewport</function>(0,0,0,0) and
+ <function>glScissor</function>(0,0,0,0) were called.
+ </para>
+ <para>
+ Implementations may delay allocation of auxiliary buffers for a
+ surface until they are required by a context (which may result
+ in the <constant>EGL_BAD_ALLOC</constant> error described
+ above). Once allocated, however, auxiliary buffers and their
+ contents persist until a surface is deleted.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>
+ to query the current rendering context and associated display connection and surfaces.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>draw</parameter> or <parameter>read</parameter>
+ are not compatible with <parameter>context</parameter>, then an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is current to some other
+ thread, or if either <parameter>draw</parameter> or
+ <parameter>read</parameter> are bound to contexts in another
+ thread, an <constant>EGL_BAD_ACCESS</constant> error is
+ generated.
+ </para>
+ <para>
+ If binding <parameter>context</parameter> would exceed the
+ number of current contexts of that client API type supported by
+ the implementation, an <constant>EGL_BAD_ACCESS</constant> error
+ is generated.
+ </para>
+ <para>
+ If either <parameter>draw</parameter> or
+ <parameter>read</parameter> are pbuffers created with
+ <function>eglCreatePbufferFromClientBuffer</function>, and the
+ underlying bound client API buffers are in use by the client API
+ that created them, an <constant>EGL_BAD_ACCESS</constant> error
+ is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is not a valid context and is
+ not <constant>EGL_NO_CONTEXT</constant>, an
+ <constant>EGL_BAD_CONTEXT</constant> error is generated.
+ </para>
+ <para>
+ If either <parameter>draw</parameter> or
+ <parameter>read</parameter> are not valid EGL surfaces and are
+ not <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_SURFACE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is
+ <constant>EGL_NO_CONTEXT</constant> and either
+ <parameter>draw</parameter> or <parameter>read</parameter> are
+ not <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If either of <parameter>draw</parameter> or
+ <parameter>read</parameter> is a valid surface and the other is
+ <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> does not support being bound
+ without <parameter>read</parameter> and
+ <parameter>draw</parameter> surfaces, and both
+ <parameter>draw</parameter> and <parameter>read</parameter> are
+ <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If a native window underlying either <parameter>draw</parameter>
+ or <parameter>read</parameter> is no longer valid, an
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>draw</parameter> and <parameter>read</parameter>
+ cannot fit into graphics memory simultaneously, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If the previous context of the calling thread has unflushed
+ commands, and the previous surface is no longer valid, an
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> error is generated.
+ </para>
+ <para>
+ If the ancillary buffers for <parameter>draw</parameter> and
+ <parameter>read</parameter> cannot be allocated, an
+ <constant>EGL_BAD_ALLOC</constant> error is generated.
+ </para>
+ <para>
+ If a power management event has occurred, an
+ <constant>EGL_CONTEXT_LOST</constant> error is generated.
+ </para>
+ <para>
+ If any of the following are true:
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>read</parameter> is not
+ <constant>EGL_NO_SURFACE</constant>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>draw</parameter> is not
+ <constant>EGL_NO_SURFACE</constant>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ then an <constant>EGL_NOT_INITIALIZED</constant> error is
+ generated if <parameter>display</parameter> is a valid but
+ uninitialized display.
+ </para>
+ <para>
+ As with other commands taking <type>EGLDisplay</type>
+ parameters, if <parameter>display</parameter> is not a valid
+ <type>EGLDisplay</type> handle, an
+ <constant>EGL_BAD_DISPLAY</constant> error is generated. (Some
+ implementations have chosen to allow
+ <constant>EGL_NO_DISPLAY</constant> as a valid
+ <parameter>display</parameter> parameter for
+ <function>eglMakeCurrent</function>. This behavior is not
+ portable to all EGL implementations, and should be considered as
+ an undocumented vendor extension).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml
new file mode 100644
index 0000000..f83b6de
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryAPI">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryAPI</refname>
+ <refpurpose>Query the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLenum <function>eglQueryAPI</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryAPI</function> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ and affects the behavior of other EGL commands.
+ </para>
+ <para>
+ The value returned will be one of the valid
+ <parameter>api</parameter> parameters to
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>, or
+ <constant>EGL_NONE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglQueryAPI</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglQueryAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be changed by calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ None.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml
new file mode 100644
index 0000000..30ace39
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml
@@ -0,0 +1,184 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryContext</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> rendering context information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQueryContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryContext</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>context</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_TYPE</constant></term>
+ <listitem><para>
+ Returns the type of client API which the context
+ supports (one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ If the context is bound to a pixmap surface,
+ then <constant>EGL_SINGLE_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a pbuffer surface,
+ then <constant>EGL_BACK_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a window surface,
+ then either <constant>EGL_BACK_BUFFER</constant>
+ or <constant>EGL_SINGLE_BUFFER</constant> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <constant>EGL_RENDER_BUFFER</constant> property
+ of the surface (which may be queried by calling
+ <function>eglQuerySurface</function>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </para></listitem>
+ <listitem><para>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <constant>EGL_NONE</constant> will
+ be returned.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_CONTEXT_CLIENT_TYPE</constant> and
+ <constant>EGL_RENDER_BUFFER</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid context attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml
new file mode 100644
index 0000000..17fa9e0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml
@@ -0,0 +1,179 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryString">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryString</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryString</refname>
+ <refpurpose>
+ return a string describing properties of the EGL client or of an
+ <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>char const * <function>eglQueryString</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>name</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>name</parameter></term>
+ <listitem>
+ <para>
+ Specifies a symbolic constant, one of
+ <constant>EGL_CLIENT_APIS</constant>,
+ <constant>EGL_VENDOR</constant>,
+ <constant>EGL_VERSION</constant>, or
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryString</function> returns a pointer to a
+ static, zero-terminated string describing properties of the EGL
+ client or of an EGL display connection.
+ <parameter>name</parameter> may be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CLIENT_APIS</constant></term>
+ <listitem><para>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separated list of API names. The list must
+ include at least one of <code>OpenGL</code>,
+ <code>OpenGL_ES</code>, or <code>OpenVG</code>.
+ These strings correspond respectively to values
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, and
+ <constant>EGL_OPENVG_API</constant> of the
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <parameter>api</parameter> argument.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VENDOR</constant></term>
+ <listitem><para>
+ Returns the name of the vendor responsible for this EGL
+ implementation. The format and contents of the string
+ are implementation-dependent.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERSION</constant></term>
+ <listitem>
+ <para>
+ Returns a version or release number. The
+ <constant>EGL_VERSION</constant> string is laid out
+ as follows:
+ </para>
+ <para>
+ <replaceable>major_version</replaceable>.<replaceable>minor_version</replaceable>
+ space
+ <replaceable>vendor_specific_info</replaceable>
+ </para>
+ <para>
+ Both the major and minor portions of the version
+ number are numeric. Their values must match the
+ <parameter>major</parameter> and
+ <parameter>minor</parameter> values returned by
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The vendor-specific information is optional; if
+ present, its format and contents are
+ implementation-specific.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_EXTENSIONS</constant></term>
+ <listitem>
+ <para>
+ Returns a space separated list of supported
+ extensions to EGL. If there are no extensions, then
+ the empty string is returned.
+ </para>
+ <para>
+ If <parameter>display</parameter> is
+ <constant>EGL_NO_DISPLAY</constant>, then the
+ <constant>EGL_EXTENSIONS</constant> string describes
+ the set of supported <firstterm>client
+ extensions</firstterm>. If
+ <parameter>display</parameter> is a valid,
+ initialized display, then the
+ <constant>EGL_EXTENSIONS</constant> string describes
+ the set of <firstterm>display extensions</firstterm>
+ supported by that display. The set of supported
+ client extensions is disjoint from the set of
+ extensions supported by any given display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CLIENT_APIS</constant> is supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ A <parameter>display</parameter> of
+ <constant>EGL_NO_DISPLAY</constant> is supported only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>NULL</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection,
+ unless <parameter>display</parameter> is
+ <constant>EGL_NO_DISPLAY</constant> and
+ <parameter>name</parameter> is
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> is a valid but uninitialized
+ EGLDisplay.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>name</parameter> is not an accepted value.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml
new file mode 100644
index 0000000..574ec71
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml
@@ -0,0 +1,310 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQuerySurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQuerySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQuerySurface</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> surface information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQuerySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQuerySurface</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>surface</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem><para>
+ Returns the color space used by OpenGL and OpenGL ES
+ when rendering to the surface, either
+ <constant>EGL_GL_COLORSPACE_SRGB</constant> or
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem><para>
+ Returns the height of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HORIZONTAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem><para>
+ Returns the same attribute value specified when the
+ surface was created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>.
+ For a window or pixmap surface,
+ <parameter>value</parameter> is not modified.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem><para>
+ Returns <constant>EGL_TRUE</constant> if texture has
+ mipmaps, <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ or <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>,
+ as described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXEL_ASPECT_RATIO</constant></term>
+ <listitem><para>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem><para>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <constant>EGL_BACK_BUFFER</constant>. For a pixmap
+ surface, it is always
+ <constant>EGL_SINGLE_BUFFER</constant>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem><para>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ Swap behavior may be either
+ <constant>EGL_BUFFER_PRESERVED</constant> or
+ <constant>EGL_BUFFER_DESTROYED</constant>, as
+ described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem><para>
+ Returns format of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem><para>
+ Returns type of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERTICAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem><para>
+ Returns the interpretation of alpha values used by
+ OpenVG when rendering to the surface, either
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant> or
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem><para>
+ Returns the color space used by OpenVG when rendering to
+ the surface, either
+ <constant>EGL_VG_COLORSPACE_sRGB</constant> or
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem><para>
+ Returns the width of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_DISPLAY_SCALING</constant>.
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>,
+ <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_SWAP_BEHAVIOR</constant>, and
+ <constant>EGL_VERTICAL_RESOLUTION</constant> are supported
+ only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Querying attributes <constant>EGL_TEXTURE_FORMAT</constant>,
+ <constant>EGL_TEXTURE_TARGET</constant>,
+ <constant>EGL_MIPMAP_TEXTURE</constant>, or
+ <constant>EGL_MIPMAP_LEVEL</constant> for a non-pbuffer
+ surface is not an error, but <parameter>value</parameter> is
+ not modified.
+ </para>
+ <para>
+ <constant>EGL_DISPLAY_SCALING</constant> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </para>
+ <para>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>, or
+ <constant>EGL_VERTICAL_RESOLUTION</constant> will return the
+ constant value <constant>EGL_UNKNOWN</constant> (-1).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml
new file mode 100644
index 0000000..eb9ef54
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml
@@ -0,0 +1,101 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglReleaseTexImage">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglReleaseTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseTexImage</refname>
+ <refpurpose>
+ Releases a color buffer that is being used as a texture
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </para>
+ <para>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ and <function>eglReleaseTexImage</function>.
+ </para>
+ <para>
+ After a color buffer is released from a texture (either explicitly by calling
+ <function>eglReleaseTexImage</function> or implicitly by calling a routine such as
+ <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>),
+ all texture images that were defined by the color buffer become <constant>NULL</constant>
+ (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry> was called with an image of zero width).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml
new file mode 100644
index 0000000..6f60215
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml
@@ -0,0 +1,125 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglReleaseThread">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglReleaseThread</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseThread</refname>
+ <refpurpose>Release EGL per-thread state</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseThread</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglReleaseThread</function> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <command>eglGetError</command>, the currently bound
+ rendering API defined by <command>eglBindAPI</command>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </para>
+ <para>
+ <constant>EGL_TRUE</constant> is returned on success, and the
+ following actions are taken:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <function>eglMakeCurrent</function> with ctx set to
+ <constant>EGL_NO_CONTEXT</constant> and both draw
+ and read set to <constant>EGL_NO_SURFACE</constant>
+ (see section 3.7.3).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <command>eglBindAPI</command>).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <function>eglReleaseThread</function> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </para>
+ <para>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <function>eglReleaseThread</function>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglReleaseThread</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Applications may call other EGL routines from a thread
+ following <function>eglReleaseThread</function>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <function>eglGetError</function>
+ immediately following a successful call to
+ <function>eglReleaseThread</function> will return
+ <constant>EGL_SUCCESS</constant>, but will also result in
+ reallocating per-thread state.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <function>eglReleaseThread</function> should succeed.
+ </para>
+ <para>
+ However, platform-dependent failures may be signaled through
+ the value returned from <function>eglGetError</function>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <function>eglReleaseThread</function> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml
new file mode 100644
index 0000000..90e626d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml
@@ -0,0 +1,207 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSurfaceAttrib">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSurfaceAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSurfaceAttrib</refname>
+ <refpurpose>
+ set an <acronym>EGL</acronym> surface attribute
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSurfaceAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Specifies the attributes required value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglSurfaceAttrib</function> sets the value of
+ <parameter>attribute</parameter> for
+ <parameter>surface</parameter> to
+ <parameter>value</parameter>.
+ <parameter>attribute</parameter> can be one of the
+ following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ For mipmap textures, the
+ <constant>EGL_MIPMAP_LEVEL</constant> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <constant>0</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <parameter>value</parameter> of
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ chooses the default implementation-defined filtering
+ method, while
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem>
+ <para>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ A <parameter>value</parameter> of
+ <constant>EGL_BUFFER_PRESERVED</constant> indicates
+ that color buffer contents are unaffected, while
+ <constant>EGL_BUFFER_DESTROYED</constant> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> is chosen by
+ the implementation.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of pbuffer attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, the value of attribute
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <parameter>surface</parameter> is not a pbuffer, then
+ attribute <constant>EGL_MIPMAP_LEVEL</constant> may be set,
+ but has no effect.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_SWAP_BEHAVIOR</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml
new file mode 100644
index 0000000..8a3de8d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml
@@ -0,0 +1,152 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSwapBuffers">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSwapBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapBuffers</refname>
+ <refpurpose>
+ post <acronym>EGL</acronym> surface color buffer to a native window
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If <parameter>surface</parameter> is a back-buffered window
+ surface, then the color
+ buffer is copied (posted) to the native window associated with that
+ surface. If <parameter>surface</parameter> is a single-buffered
+ window, pixmap, or pixel buffer surface,
+ <function>eglSwapBuffers</function> has no effect.
+ </para>
+ <para>
+ The contents of ancillary buffers are always undefined after
+ calling <function>eglSwapBuffers</function>. The contents of the
+ color buffer are undefined if the value of the
+ <constant>EGL_SWAP_BEHAVIOR</constant> attribute of
+ <parameter>surface</parameter> is not
+ <constant>EGL_BUFFER_PRESERVED</constant>. The value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> can be set for some
+ surfaces using
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ <constant>EGL_SWAP_BEHAVIOR</constant> applies only to the color
+ buffer. EGL has no way to specify or query whether or not
+ ancillary buffers are preserved, and applications should not
+ rely on this behavior.
+ </para>
+ <para>
+ <function>eglSwapBuffers</function> performs an implicit
+ flush operation on the context (<function>glFlush</function>
+ for an OpenGL ES or OpenGL context,
+ <function>vgFlush</function> for an OpenVG context) bound to
+ <parameter>surface</parameter> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <function>eglSwapBuffers</function>, but are not executed
+ until the buffer exchange is completed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="resize"><title>Native Window Resizing</title>
+ <para>
+ If the native window corresponding to
+ <parameter>surface</parameter> has been resized prior to the
+ swap, <parameter>surface</parameter> must be resized to match.
+ <parameter>surface</parameter> will normally be resized by the
+ EGL implementation at the time the native window is resized. If
+ the implementation cannot do this transparently to the client,
+ then <function>eglSwapBuffers</function> must detect the change
+ and resize surface prior to copying its pixels to the native
+ window. If <parameter>surface</parameter> shrinks as a result of
+ resizing, some rendered pixels are lost. If
+ <parameter>surface</parameter> grows, the newly allocated buffer
+ contents are undefined. The resizing behavior described here
+ only maintains consistency of EGL surfaces and native windows;
+ clients are still responsible for detecting window size changes
+ (using platform-specific means) and changing their viewport and
+ scissor regions accordingly.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is supported
+ only if the EGL version is 1.2 or greater. In earlier versions,
+ behavior is as though the attribute exists, and always has the
+ value <constant>EGL_BUFFER_DESTROYED</constant>.
+ </para>
+ <para>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a swap,
+ and that the <constant>EGL_SWAP_BEHAVIOR</constant> attribute
+ applies only to the color buffer. This change in the
+ specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>glFlush</function>,
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>,
+ <function>vgFlush</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml
new file mode 100644
index 0000000..a6add82
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml
@@ -0,0 +1,94 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSwapInterval">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSwapInterval</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapInterval</refname>
+ <refpurpose>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapInterval</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>interval</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>interval</parameter></term>
+ <listitem>
+ <para>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The interval takes effect when <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> is
+ first called subsequent to the <function>eglSwapInterval</function> call.
+ </para>
+ <para>
+ The <parameter>interval</parameter> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </para>
+ <para>
+ If <parameter>interval</parameter> is set to a value of <constant>0</constant>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <type>EGLConfig</type> attributes
+ <constant>EGL_MIN_SWAP_INTERVAL</constant> and <constant>EGL_MAX_SWAP_INTERVAL</constant> respectively.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The swap interval has no effect on <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The default swap interval is 1.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if there is no current context
+ on the calling thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if there is no surface
+ bound to the current context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml
new file mode 100644
index 0000000..70dd0c3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglTerminate">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglTerminate</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglTerminate</refname>
+ <refpurpose>
+ terminate an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglTerminate</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to terminate.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglTerminate</function> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <parameter>display</parameter> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ again.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglTerminate</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml
new file mode 100644
index 0000000..a77cf00
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml
@@ -0,0 +1,84 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitClient">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitClient</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitClient</refname>
+ <refpurpose>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitClient</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <function>eglWaitClient</function> are guaranteed to be
+ executed before native rendering calls made after
+ <function>eglWaitClient</function>. The same result can be
+ achieved using client API-specific commands such as
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitClient</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <constant>EGL_TRUE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml
new file mode 100644
index 0000000..033fd8b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml
@@ -0,0 +1,82 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitGL">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitGL</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitGL</refname>
+ <refpurpose>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitGL</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <function>eglWaitGL</function> are
+ guaranteed to be executed before native rendering calls made
+ after <function>eglWaitGL</function>. The same result can be
+ achieved using
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitGL</function> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs. For backwards compatibility,
+ <function>eglWaitGL</function> continues to be supported and
+ is equivalent to the series of commands
+ </para>
+ <programlisting>
+ EGLenum api = <function>eglQueryAPI</function>();
+ <function>eglBindAPI</function>(<constant>EGL_OPENGL_ES_API</constant>);
+ <function>eglWaitClient</function>();
+ <function>eglBindAPI</function>(api);
+ </programlisting>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitGL</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml
new file mode 100644
index 0000000..f4c4595
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitNative">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitNative</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitNative</refname>
+ <refpurpose>
+ complete native execution prior to subsequent GL rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitNative</function></funcdef>
+ <paramdef>EGLint <parameter>engine</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>engine</parameter></term>
+ <listitem>
+ <para>
+ Specifies a particular marking engine to be waited on.
+ Must be <constant>EGL_CORE_NATIVE_ENGINE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ Native rendering calls made prior to <function>eglWaitNative</function>
+ are guaranteed to be executed before GL rendering calls made after
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ <function>eglWaitNative</function>
+ is ignored if there is no current
+ <acronym>EGL</acronym>
+ rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>engine</parameter> is not a recognized marking engine.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml
new file mode 100644
index 0000000..57d5651
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml
@@ -0,0 +1,134 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitSync</refname>
+ <refpurpose>
+ Wait in the server for a sync object to be signalled
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitSync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>flags</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to wait on.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>flags</parameter></term>
+ <listitem><para>
+ Specifies flags controlling wait behavior.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglWaitSync</function> is similar to
+ <function>eglClientWaitSync</function>, but instead of blocking
+ and not returning to the application until
+ <parameter>sync</parameter> is signaled,
+ <function>eglWaitSync</function> returns immediately. On
+ success, <constant>EGL_TRUE</constant> is returned, and the
+ server for the client API context will block until
+ <parameter>sync</parameter> is signaled.
+ </para>
+ <para>
+ Note: <function>eglWaitSync</function> allows applications to
+ continue to queue commands from the application in anticipation
+ of the sync being signaled, potentially increasing parallelism
+ between application, client API server code, and the GPU. The
+ server only blocks execution of commands for the specific
+ context on which <function>eglWaitSync</function> was issued;
+ other contexts implemented by the same server are not affected..
+ </para>
+ <para>
+ <parameter>sync</parameter> has the same meaning as for
+ <function>eglClientWaitSync</function>.
+ </para>
+ <para>
+ <parameter>flags</parameter> must be 0.
+ </para>
+ <para>
+ <function>eglWaitSync</function> requires support from the bound
+ client API, and will not succeed unless the same client API
+ properties described for creation of fence syncs in
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>
+ are satisfied.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglWaitSync</function> returns
+ <constant>EGL_FALSE</constant> on failure, and does not cause
+ the server for the client API context to block.
+ </para>
+ <para>
+ If the current context for the currently bound client API does
+ not support server waits, an <constant>EGL_BAD_MATCH</constant>
+ error is generated.
+ </para>
+ <para>
+ If no context is current for the currently bound client API
+ (i.e., <function>eglGetCurrentContext</function> returns
+ <constant>EGL_NO_CONTEXT</constant>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> passed to
+ <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behavior is
+ undefined.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>flags</parameter> is not 0, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitSync</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg b/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg
new file mode 100644
index 0000000..9ae0c2f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png b/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png
new file mode 100644
index 0000000..7c20efb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg b/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg
new file mode 100644
index 0000000..f8a05f6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js b/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js
new file mode 100644
index 0000000..240489e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js
@@ -0,0 +1,58 @@
+<!-- Javascript for accordion menus, included by index.php, shared with OpenCL man pages -->
+<script type="text/javascript">
+<!--
+var temp, temp2, cookieArray, cookieArray2, cookieCount;
+function initiate(){
+ cookieCount=0;
+ if(document.cookie){
+ cookieArray=document.cookie.split(";");
+ cookieArray2=new Array();
+ for(i in cookieArray){
+ cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
+ }
+ }
+ cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();
+ temp=document.getElementById("containerul");
+ for(var o=0;o<temp.getElementsByTagName("li").length;o++){
+ if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(bullets-contract.gif)":"url(bullets-expand.gif)"):"url(bullets-expand.gif)";
+ temp2.onmousedown=function(){
+ showhide(this.parentNode);
+ writeCookie();
+ }
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
+ temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
+ if(cookieArray[cookieCount]=="true"){
+ showhide(temp.getElementsByTagName("li")[o]);
+ }
+ cookieCount++;
+ }
+ else{
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = "url(bullets-end.gif)";
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
+ }
+ }
+}
+
+function showhide(el){
+ el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
+ el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(bullets-contract.gif)":"url(bullets-expand.gif)";
+}
+
+function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
+ cookieArray=new Array()
+ for(var q=0;q<temp.getElementsByTagName("li").length;q++){
+ if(temp.getElementsByTagName("li")[q].childNodes.length>0){
+ if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
+ cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
+ }
+ }
+ }
+ document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
+}
+//-->
+</script>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif
new file mode 100644
index 0000000..bb1e955
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif
new file mode 100644
index 0000000..abd000e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif
new file mode 100644
index 0000000..e2dde60
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml
new file mode 100644
index 0000000..dbf34c3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglBindAPI - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglBindAPI">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglBindAPI — Set the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglBindAPI</strong>(</code>
+ </td>
+ <td>EGLenum <var class="pdparam">api</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>api</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API to bind, one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglBindAPI</code> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <code class="function">eglCreateContext</code>,
+ <code class="function">eglGetCurrentContext</code>,
+ <code class="function">eglGetCurrentDisplay</code>,
+ <code class="function">eglGetCurrentSurface</code>,
+ <code class="function">eglMakeCurrent</code>,
+ <code class="function">eglSwapInterval</code>,
+ <code class="function">eglWaitClient</code>, and
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_API</code>, the current rendering
+ API is set to the OpenGL API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_ES_API</code>, the current
+ rendering API is set to the OpenGL ES API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENVG_API</code>, the current rendering
+ API is set to the OpenVG API.
+ </p>
+ <p>
+ If an error occurs, the current rendering API is unchanged.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglBindAPI</code> and the corresponding
+ <code class="constant">EGL_OPENGL_ES_API</code> and
+ <code class="constant">EGL_OPENVG_API</code>
+ <em class="parameter"><code>api</code></em> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <code class="constant">EGL_OPENGL_API</code> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be queried by calling
+ <code class="function">eglQueryAPI</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>api</code></em> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryAPI</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml
new file mode 100644
index 0000000..a3c6dbb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglBindTexImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglBindTexImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglBindTexImage —
+ Defines a two-dimensional texture image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglBindTexImage</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">buffer</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The texture image consists of the image data in <em class="parameter"><code>buffer</code></em> for the specified surface, and need not be copied.
+ </p>
+ <p>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code> or <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code> attributes.
+ </p>
+ <p>
+ The pbuffer attribute <code class="constant">EGL_TEXTURE_FORMAT</code> determines the base internal format
+ of the texture.
+ </p>
+ <p>
+ The texture target is derived from the <code class="constant">EGL_TEXTURE_TARGET</code> attribute of surface.
+ If the attribute value is <code class="constant">EGL_TEXTURE_2D</code>, then <em class="parameter"><code>buffer</code></em> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> and <em class="parameter"><code>surface</code></em> are the display and surface for the calling thread's current
+ context, <code class="function">eglBindTexImage</code> performs an implicit <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>.
+ For other surfaces, <code class="function">eglBindTexImage</code> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a> were called on the last context to which that surface were bound.
+ </p>
+ <p>
+ After <code class="function">eglBindTexImage</code> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a> or
+ <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </p>
+ <p>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <code class="function">eglBindTexImage</code>:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ The <code class="constant">EGL_MIPMAP_TEXTURE</code> attribute of the pbuffer being bound is
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The OpenGL ES texture parameter <code class="constant">GL_GENERATE_MIPMAP</code> is <code class="constant">GL_TRUE</code> for
+ the currently bound texture.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The value of the <code class="constant">EGL_MIPMAP_LEVEL</code> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <code class="constant">GL_TEXTURE_BASE_LEVEL</code>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> has no effect if it is
+ called on a bound surface.
+ </p>
+ <p>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <a class="citerefentry" href="glTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a>
+ was called with an image of zero width).
+ </p>
+ <p>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <a class="citerefentry" href="eglReleaseTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </p>
+ <p>
+ It is not an error to call <a class="citerefentry" href="glTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a> or
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </p>
+ <p>
+ <code class="function">eglBindTexImage</code> is ignored if there is no current rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is already bound to a texture.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglReleaseTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml
new file mode 100644
index 0000000..ffd6b64
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml
@@ -0,0 +1,1150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglChooseConfig - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglChooseConfig">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglChooseConfig —
+ return a list of EGL frame buffer configurations that match specified attributes
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig * <var class="pdparam">configs</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">num_config</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies attributes required to match by configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns an array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of frame buffer configurations returned.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglChooseConfig</code> returns in
+ <em class="parameter"><code>configs</code></em> a list of all
+ <abbr class="acronym">EGL</abbr> frame buffer configurations that
+ match the attributes specified in
+ <em class="parameter"><code>attrib_list</code></em>. The returned
+ <span class="type">EGLConfig</span>s can be used in any
+ <abbr class="acronym">EGL</abbr> function that requires an
+ <abbr class="acronym">EGL</abbr> frame buffer configuration.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is not
+ <code class="constant">NULL</code>, up to
+ <em class="parameter"><code>config_size</code></em> configs will be returned
+ in the array pointed to by <em class="parameter"><code>configs</code></em>.
+ The number of configs actually returned will be returned in
+ *<em class="parameter"><code>num_config</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is
+ <code class="constant">NULL</code>, no configs will be returned in
+ <em class="parameter"><code>configs</code></em>. Instead, the total number of
+ configs matching <em class="parameter"><code>attrib_list</code></em> will be
+ returned in *<em class="parameter"><code>num_config</code></em>. In this case
+ <em class="parameter"><code>config_size</code></em> is ignored. This form of
+ <code class="function">eglChooseConfig</code> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <span class="type">EGLConfig</span> to pass
+ into another call to <code class="function">eglChooseConfig</code>
+ with all other parameters unchanged.
+ </p>
+ <p>
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <code class="constant">EGL_NONE</code>. If an attribute is not
+ specified in <em class="parameter"><code>attrib_list</code></em> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <code class="constant">EGL_DEPTH_SIZE</code> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <code class="constant">EGL_DONT_CARE</code> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </p>
+ <p>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <code class="constant">EGL_LEVEL</code>,
+ must match the specified value exactly. Others, such as,
+ <code class="constant">EGL_RED_SIZE</code> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </p>
+ <p>
+ For the bitmask attributes
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </p>
+ <p>
+ Attributes which may appear in
+ <em class="parameter"><code>attrib_list</code></em>, and their descriptions
+ and allowed values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </p>
+ <p>
+ The alpha mask buffer is used only by OpenVG.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ <p>
+ The color buffer size is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_RGB_BUFFER</code> or
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_RGB_BUFFER</code> indicates
+ an RGB color buffer; in this case,
+ attributes <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code> and
+ <code class="constant">EGL_BLUE_SIZE</code> must be non-zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be zero.
+ </p>
+ <p>
+ <code class="constant">EGL_LUMINANCE_BUFFER</code> indicates a luminance color
+ buffer. In this case <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code> must be zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be non-zero.
+ </p>
+ <p>
+ For both RGB and luminance color buffers,
+ <code class="constant">EGL_ALPHA_SIZE</code> may be zero or
+ non-zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_DONT_CARE</code> is specified,
+ then configs are not matched for this attribute. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_NONE</code> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <code class="constant">EGL_SLOW_CONFIG</code> or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>) will
+ be considered.
+ </p>
+ <p>
+ If <code class="constant">EGL_SLOW_CONFIG</code> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </p>
+ <p>
+ If <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </p>
+ <p>
+ If the EGL version is 1.3 or later, caveat
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ obsolete, since the same information can be
+ specified via the
+ <code class="constant">EGL_CONFORMANT</code> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <code class="constant">EGL_CONFIG_ID</code> is specified, all
+ other attributes are ignored. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENVG_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenVG contexts.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </p>
+ <p>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </p>
+ <p>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </p>
+ <p>
+ Most platforms do not support buffer levels other than
+ zero. The behavior of windows placed in overlay and
+ underlay planes depends on the underlying platform.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <span class="type">EGLint</span>, or
+ <code class="constant">EGL_NONE</code>. If the value is not
+ <code class="constant">EGL_NONE</code>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>
+ will match this attribute. If the value is
+ <code class="constant">EGL_NONE</code>, then configs are not
+ matched for this attribute. The default value is
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> was
+ introduced due to the difficulty of determining an
+ <span class="type">EGLConfig</span> compatibile with a native
+ pixmap using only color component sizes.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </p>
+ <p>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>).
+ Mask bits are the same as for attribute
+ <code class="constant">EGL_CONFORMANT</code>. The default
+ value is <code class="constant">EGL_OPENGL_ES_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PBUFFER_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixel buffer surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXMAP_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixmap surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows setting swap behavior for
+ color buffers with
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WINDOW_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating window surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_WINDOW_BIT</code> |
+ <code class="constant">EGL_PIXMAP_BIT</code>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <code class="constant">EGL_WINDOW_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_NONE</code> or
+ <code class="constant">EGL_TRANSPARENT_RGB</code>. If
+ <code class="constant">EGL_NONE</code> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <code class="constant">EGL_TRANSPARENT_RGB</code> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_CONFIG_CAVEAT</code>,
+ where the precedence is <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ where the precedence is
+ <code class="constant">EGL_RGB_BUFFER</code>,
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>; for a luminance
+ color buffer, the sum of
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and
+ <code class="constant">EGL_ALPHA_SIZE</code>). If the requested
+ number of bits in <em class="parameter"><code>attrib_list</code></em> is
+ <code class="constant">0</code> or
+ <code class="constant">EGL_DONT_CARE</code> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </p>
+ <p>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_BUFFER_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLE_BUFFERS</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLES</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_DEPTH_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_STENCIL_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_ALPHA_MASK_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_CONFIG_ID</code> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ <span class="type">EGLConfigs</span> are not sorted with respect to the
+ attributes <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>,
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>,
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_LEVEL</code>,
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>,
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_SURFACE_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>,
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>, and
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="examples">
+ <h2>Examples</h2>
+ <p>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </p>
+ <pre class="programlisting">EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</pre>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code> and
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> are
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> and
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code> are
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bits
+ <code class="constant">EGL_OPENGL_ES_BIT</code> and
+ <code class="constant">EGL_OPENVG_BIT</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <code class="constant">GL_RED_BITS</code> equal to
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and the values of
+ <code class="constant">GL_GREEN_BITS</code> and
+ <code class="constant">GL_BLUE_BITS</code> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </p>
+ <p>
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ and
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <code class="function">eglChooseConfig</code>. Call
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </p>
+ <p>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <code class="function">eglChooseConfig</code>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and
+ <em class="parameter"><code>num_config</code></em> are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute_list</code></em> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml
new file mode 100644
index 0000000..daccb25
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglClientWaitSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglClientWaitSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglClientWaitSync —
+ Wait in the client for a sync object to be signalled
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLint <strong class="fsfunc">eglClientWaitSync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">flags</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLTime <var class="pdparam">timeout</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to wait on.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>flags</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies flags controlling wait behavior.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>timeout</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies wait timeout interval.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> blocks the calling thread
+ until the specified sync object <em class="parameter"><code>sync</code></em> is
+ signaled, or until <em class="parameter"><code>timeout</code></em> nanoseconds
+ have passed.
+ </p>
+ <p>
+ More than one <code class="function">eglClientWaitSync</code> may be
+ outstanding on the same <em class="parameter"><code>sync</code></em> at any given
+ time. When there are multiple threads blocked on the same
+ <em class="parameter"><code>sync</code></em> and the sync object is signaled, all
+ such threads are released, but the order in which they are
+ released is not defined.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>timeout</code></em> is zero, then
+ <code class="function">eglClientWaitSync</code> simply tests the current
+ status of <em class="parameter"><code>sync</code></em>. If the value of
+ <em class="parameter"><code>timeout</code></em> is the special value
+ <code class="constant">EGL_FOREVER</code>, then
+ <code class="function">eglClientWaitSync</code> does not time out. For
+ all other values, <em class="parameter"><code>timeout</code></em> is adjusted to
+ the closest value allowed by the implementation-dependent
+ timeout accuracy, which may be substantially longer than one
+ nanosecond.
+ </p>
+ <p>
+ <code class="function">eglClientWaitSync</code> returns one of three
+ status values describing the reason for returning. A return
+ value of <code class="constant">EGL_TIMEOUT_EXPIRED</code> indicates that
+ the specified timeout period expired before
+ <em class="parameter"><code>sync</code></em> was signaled, or if
+ <em class="parameter"><code>timeout</code></em> is zero, indicates that
+ <em class="parameter"><code>sync</code></em> is not signaled. A return value of
+ <code class="constant">EGL_CONDITION_SATISFIED</code> indicates that
+ <em class="parameter"><code>sync</code></em> was signaled before the timeout
+ expired, which includes the case when
+ <em class="parameter"><code>sync</code></em> was already signaled when
+ <code class="function">eglClientWaitSync</code> was called. If an error
+ occurs then an error is generated and
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ If the sync object being blocked upon will not be signaled in
+ finite time (for example, by an associated fence command issued
+ previously, but not yet flushed to the graphics pipeline), then
+ <code class="function">eglClientWaitSync</code> may wait forever. To help
+ prevent this behavior, if the
+ <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code> bit is set in
+ <em class="parameter"><code>flags</code></em>, and <em class="parameter"><code>sync</code></em> is
+ unsignaled when <code class="function">eglClientWaitSync</code> is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ <code class="function">eglGetCurrentContext</code>) before blocking on
+ <em class="parameter"><code>sync</code></em>. If no context is current for the
+ bound API, the <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code>
+ bit is ignored.
+ </p>
+ <p>
+ Note: the simple Flush behavior defined by
+ <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code> will not help
+ when waiting for a fence command issued in a different context's
+ command stream. Applications which block on a fence sync object
+ must take additional steps to ensure that the context from which
+ the associated fence command was issued has flushed that command
+ to the graphics pipeline.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> returns
+ <code class="constant">EGL_FALSE</code> on failure.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> passed to
+ <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behaviour is
+ undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>,
+ <code class="function">glFinish</code>,
+ <code class="function">vgFinish</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml
new file mode 100644
index 0000000..c5c10aa
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCopyBuffers - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCopyBuffers">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCopyBuffers —
+ copy <abbr class="acronym">EGL</abbr> surface color buffer to a native pixmap
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglCopyBuffers</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativePixmapType <var class="pdparam">native_pixmap</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native pixmap as target of the copy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCopyBuffers</code> copies the color buffer of
+ <em class="parameter"><code>surface</code></em> to <em class="parameter"><code>native_pixmap</code></em>.
+ </p>
+ <p>
+ <code class="function">eglCopyBuffers</code> performs an implicit
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <code class="function">eglCopyBuffers</code>,
+ but are not executed until copying of the color buffer is completed.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The color buffer of <em class="parameter"><code>surface</code></em> is left unchanged
+ after calling <code class="function">eglCopyBuffers</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> is generated if
+ the implementation does not support native pixmaps.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the format of <em class="parameter"><code>native_pixmap</code></em> is not compatible
+ with the color buffer of <em class="parameter"><code>surface</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml
new file mode 100644
index 0000000..3b60280
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateContext —
+ create a new <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLContext <strong class="fsfunc">eglCreateContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">share_context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the
+ <abbr class="acronym">EGL</abbr>
+ display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>share_context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies another
+ <abbr class="acronym">EGL</abbr>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <em class="parameter"><code>share_context</code></em> shares data.
+ <code class="constant">EGL_NO_CONTEXT</code> indicates that
+ no sharing is to take place.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> may
+ be specified.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateContext</code> creates an EGL
+ rendering context for the current rendering API (as set with
+ <code class="function">eglBindAPI</code>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <code class="function">eglCreateContext</code>
+ fails to create a rendering context,
+ <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>share_context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <em class="parameter"><code>share_context</code></em>, all other contexts
+ <em class="parameter"><code>share_context</code></em> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <code class="function">eglChooseConfig</code>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_MAJOR_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer specifying the requested
+ major version of an OpenGL or OpenGL ES context. The
+ default value is 1. This attribute is an alias of the
+ older <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>,
+ and the tokens may be used interchangeably.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_MINOR_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer specifying the requested
+ minor version of an OpenGL or OpenGL ES context. The
+ default value is 0.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_PROFILE_MASK</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer bitmask specifying the
+ <em class="firstterm">profile</em> of an OpenGL context.
+ Bits which may be set include
+ <code class="constant">EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</code>
+ for a core profile and
+ <code class="constant">EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT</code>
+ for a compatibility profile. The default value is
+ <code class="constant">EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</code>.
+ All OpenGL 3.2 and later implementations are required to
+ implement the core profile, but implementation of the
+ compatibility profile is optional.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_DEBUG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that an OpenGL or OpenGL ES <em class="firstterm">debug
+ context</em> should be created, or
+ <code class="constant">EGL_FALSE</code>, if a non-debug context
+ should be created. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that a
+ <em class="firstterm">forward-compatible</em> OpenGL context
+ should be created, or <code class="constant">EGL_FALSE</code>, if
+ a non-forward-compatible context should be created. The
+ default value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_ROBUST_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that an OpenGL or OpenGL ES context
+ supporting <em class="firstterm">robust buffer access</em>
+ should be created, or <code class="constant">EGL_FALSE</code>, if
+ a non-robust context should be created. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_LOSE_CONTEXT_ON_RESET</code>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <code class="constant">GL_LOSE_CONTEXT_ON_RESET_ARB</code> should
+ be created, or
+ <code class="constant">EGL_NO_RESET_NOTIFICATION</code>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <code class="constant">GL_NO_RESET_NOTIFICATION_ARB</code> should
+ be created, as described by the
+ <code class="constant">GL_ARB_robustness</code> extension.
+ </p>
+ <p>
+ If the
+ <code class="constant">EGL_CONTEXT_OPENGL_ROBUST_ACCESS</code>
+ attribute is not set to <code class="constant">EGL_TRUE</code>,
+ context creation will not fail, but the resulting
+ context may not support robust buffer access, and
+ therefore may not support the requested reset
+ notification strategy The default value for
+ <code class="constant">EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</code>
+ is <code class="constant">EGL_NO_RESET_NOTIFICATION</code> .
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ There are many possible interactions between requested OpenGL
+ and OpenGL ES context creation attributes, depending on the API
+ versions and extensions supported by the implementation. These
+ interactions are described in detail in the EGL 1.5
+ Specification, but are not listed here for compactness. The
+ requested attributes may not be able to be satisfied, but
+ context creation may still succeed. Applications should ensure
+ that the OpenGL or OpenGL ES contexts supports needed features
+ before using them, by determining the actual context version,
+ supported extensions, and supported context flags using runtime
+ queries.
+ </p>
+ </div>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml
new file mode 100644
index 0000000..633cd0b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml
@@ -0,0 +1,774 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateImage —
+ Create a new <span class="type">EGLImage</span> object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLImage <strong class="fsfunc">eglCreateImage</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLenum <var class="pdparam">target</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLClientBuffer <var class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>const EGLAttrib *<var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API context for which the image is
+ created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of resource used as the image source.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the resource to be used as the image source.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes used to select sub-sections of the
+ resource to be used as the image source.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateImage</code> is used to create an
+ <span class="type">EGLImage</span> object from an existing image resource
+ <em class="parameter"><code>buffer</code></em>. <em class="parameter"><code>display</code></em>
+ specifies the EGL display used for this operation.
+ <em class="parameter"><code>context</code></em> specifies the EGL client API
+ context used for this operation, or
+ <code class="constant">EGL_NO_CONTEXT</code> if a client API context is
+ not required. <em class="parameter"><code>target</code></em> specifies the type
+ of resource being used as the <span class="type">EGLImage</span> source
+ (examples include two-dimensional textures in OpenGL ES contexts
+ and <span class="type">VGImage</span> objects in OpenVG contexts).
+ <em class="parameter"><code>buffer</code></em> is the name (or handle) of a
+ resource to be used as the <span class="type">EGLImage</span> source, cast
+ into the type <span class="type">EGLClientBuffer</span>.
+ <em class="parameter"><code>attrib_list</code></em> is a list of attribute-value
+ pairs which is used to select sub-sections of
+ <em class="parameter"><code>buffer</code></em> for use as the
+ <span class="type">EGLImage</span> source, such as mipmap levels for OpenGL
+ ES texture map resources, as well as behavioral options, such as
+ whether to preserve pixel data during creation. If
+ <em class="parameter"><code>attrib_list</code></em> is
+ non-<code class="constant">NULL</code>, the last attribute specified in
+ the list must be <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ The resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em>, and
+ <em class="parameter"><code>attrib_list</code></em> must not itself be an
+ <span class="type">EGLImage</span> sibling, or bound to a pbuffer
+ <span class="type">EGLSurface</span> resource
+ (<code class="function">eglBindTexImage</code>,
+ <code class="function">eglCreatePbufferFromClientBuffer</code>).
+ </p>
+ <p>
+ Values accepted for <em class="parameter"><code>target</code></em> are shown in
+ table <a class="xref" href="#tab-imagetarget" title="Table 1.  Legal values for eglCreateImage target">Table 1, “
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ â€</a>.
+ </p>
+ <div class="table" id="tab-imagetarget">
+ <div class="table-title">Table 1. 
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </th>
+ <th style="text-align: left; border-bottom: 2px solid ; ">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_2D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for GL 2D texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +X face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -X face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +Y face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -Y face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +Z face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -Z face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for OpenGL and OpenGL ES 3D texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_GL_RENDERBUFFER</code>
+ </td>
+ <td style="text-align: left; ">Used for OpenGL and OpenGL ES renderbuffer images</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ <p>
+ Attribute names accepted in <em class="parameter"><code>attrib_list</code></em>
+ are shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, together
+ with the <em class="parameter"><code>target</code></em> for which each attribute
+ name is valid, and the default value used for each attribute if
+ it is not included in <em class="parameter"><code>attrib_list</code></em>.
+ </p>
+ <div class="table" id="tab-imageattr">
+ <div class="table-title">Table 2. 
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </th>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Notes</th>
+ <td style="border-right: 2px solid ; border-bottom: 2px solid ; " class="auto-generated"> </td>
+ <td style="border-bottom: 2px solid ; " class="auto-generated"> </td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Valid <em class="parameter"><code>target</code></em>s</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Default Value</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_NONE</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Marks the end of the attribute-value list</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">All</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">N/A</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_LEVEL</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ Specifies the mipmap level used as the
+ <span class="type">EGLImage</span> source. Must be part of
+ the complete texture object
+ <em class="parameter"><code>buffer</code></em>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>, or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">0</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_ZOFFSET</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ Specifies the depth offset of the image to use
+ as the <span class="type">EGLImage</span> source. Must be
+ part of the complete texture object
+ <em class="parameter"><code>buffer</code></em>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">0</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_IMAGE_PRESERVED</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; ">Whether to preserve pixel data</td>
+ <td style="text-align: left; border-right: 2px solid ; ">All</td>
+ <td style="text-align: left; ">
+ <code class="constant">EGL_FALSE</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ <p>
+ <code class="function">eglCreateImage</code> returns an
+ <span class="type">EGLImage</span> object corresponding to the image data
+ specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> which may be referenced by
+ client API operations.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>, or
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>,
+ <em class="parameter"><code>display</code></em> must be a valid
+ <span class="type">EGLDisplay</span>, and <em class="parameter"><code>context</code></em> must
+ be a valid OpenGL or OpenGL ES API context on that display.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_2D</code> target texture object, cast
+ into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is one of the
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> enumerants,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_CUBE_MAP</code> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_3D</code> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> should specify the mipmap
+ level (<code class="constant">EGL_GL_TEXTURE_LEVEL</code>) and, where
+ applicable, z-offset
+ (<code class="constant">EGL_GL_TEXTURE_ZOFFSET</code>) which will be used
+ as the <span class="type">EGLImage</span> source; If not specified, the
+ default values listed in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>
+ will be used instead. Additional values specified in are
+ ignored.
+ </p>
+ <p>
+ There must exist some levels <span class="emphasis"><em>x</em></span> and
+ <span class="emphasis"><em>y</em></span> such that the mipmap level requested lies
+ between <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>
+ (inclusive), the texture would be mipmap complete were
+ <span class="emphasis"><em>x</em></span> substituted for the base level and
+ <span class="emphasis"><em>y</em></span> substituted for the max level, and all
+ levels less than <span class="emphasis"><em>x</em></span> or greater than
+ <span class="emphasis"><em>y</em></span> are unspecified. For cubemaps a single
+ pair <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span> must
+ apply to all faces. For three-dimensional textures, the
+ specified z-offset must be smaller than the depth of the
+ specified mipmap level.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_RENDERBUFFER</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a complete,
+ nonzero, non-multisampled <code class="constant">GL_RENDERBUFFER</code>
+ (or equivalent in extensions) target object, cast into the type
+ <span class="type">EGLClientBuffer</span>. Values specified in
+ <em class="parameter"><code>attrib_list</code></em> are ignored.
+ </p>
+ <p>
+ If the value of attribute
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_FALSE</code> (the default), then all pixel
+ data values associated with <em class="parameter"><code>buffer</code></em> will
+ be undefined after <code class="function">eglCreateImage</code> returns.
+ </p>
+ <p>
+ If the value of attribute
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_TRUE</code>, then all pixel data values
+ associated with <em class="parameter"><code>buffer</code></em> are preserved.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglCreateImage</code> returns
+ <code class="constant">EGL_NO_IMAGE</code> on failure. The contents of
+ <em class="parameter"><code>buffer</code></em> will be unaffected.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the handle of a valid
+ <span class="type">EGLDisplay</span> object, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is neither the handle of a
+ valid <span class="type">EGLContext</span> object on
+ <em class="parameter"><code>display</code></em> nor
+ <code class="constant">EGL_NO_CONTEXT</code>, the error
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is not one of the values in
+ table <a class="xref" href="#tab-imagetarget" title="Table 1.  Legal values for eglCreateImage target">Table 1, “
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ â€</a>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>display</code></em> is not a valid
+ <span class="type">EGLDisplay</span>, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>context</code></em> is not a valid
+ <span class="type">EGLContext</span>, the error
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>context</code></em> is not a valid GL context, or
+ does not match the <em class="parameter"><code>display</code></em>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code> and
+ <em class="parameter"><code>buffer</code></em> is not the name of a texture
+ object of type <em class="parameter"><code>target</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_RENDERBUFFER</code> and
+ <em class="parameter"><code>buffer</code></em> is not the name of a renderbuffer
+ object, or if <em class="parameter"><code>buffer</code></em> is the name of a
+ multisampled renderbuffer object, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is nonzero,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, the error <code class="constant">EGL_BAD_PARAMETER</code>
+ is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error <code class="constant">EGL_BAD_PARAMETER</code>
+ is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, and mipmap level 0 is not specified, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, and one or more faces do not have mipmap level 0
+ specified, the error <code class="constant">EGL_BAD_PARAMETER</code> is
+ generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code> and
+ <em class="parameter"><code>buffer</code></em> refers to the default GL texture
+ object (0) for the corresponding GL target, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>, or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and the value specified
+ in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is not a valid mipmap
+ level for the specified GL texture object
+ <em class="parameter"><code>buffer</code></em>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and the value specified
+ in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_GL_TEXTURE_ZOFFSET</code> exceeds the depth of
+ the specified mipmap level-of-detail in
+ <em class="parameter"><code>buffer</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If an attribute specified in <em class="parameter"><code>attrib_list</code></em>
+ is not one of the attributes shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If an attribute specified in <em class="parameter"><code>attrib_list</code></em>
+ is not a valid attribute for <em class="parameter"><code>target</code></em>, as
+ shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> has an off-screen buffer
+ bound to it (e.g., by a previous call to
+ <code class="function">eglBindTexImage</code>), the error
+ <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> is bound to an off-screen
+ buffer (e.g., by a previous call to
+ <code class="function">eglCreatePbufferFromClientBuffer</code>), the
+ error <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> is itself an
+ <span class="type">EGLImage</span> sibling, the error
+ <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If insufficient memory is available to complete the specified
+ operation, the error <code class="constant">EGL_BAD_ALLOC</code> is
+ generated.
+ </p>
+ <p>
+ If the value specified in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_TRUE</code>, and an <span class="type">EGLImage</span>
+ handle cannot be created from the specified resource such that
+ the pixel data values in <em class="parameter"><code>buffer</code></em> are
+ preserved, the error <code class="constant">EGL_BAD_ACCESS</code> is
+ generated.
+ </p>
+ <p>
+ Note that the success or failure of
+ <code class="function">eglCreateImage</code> should not affect the
+ ability to use <em class="parameter"><code>buffer</code></em> in its original API
+ context (or context share group) (although the pixel data values
+ will be undefined if the command succeeds and the value of
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is not
+ <code class="constant">EGL_TRUE</code>).
+ </p>
+ </div>
+ <div class="refsect1" id="lifetime">
+ <h2>Lifetime and Usage of <span class="type">EGLImage</span>s</h2>
+ <p>
+ Once an <span class="type">EGLImage</span> is created from an
+ <span class="type">EGLImage</span> source, the memory associated with the
+ <span class="type">EGLImage</span> source will remain allocated (and all
+ <span class="type">EGLImage</span> siblings in all client API contexts will
+ be useable) as long as either of the following conditions is
+ true:
+ </p>
+ <p>
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ Any <span class="type">EGLImage</span> siblings exist in any client
+ API context
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The <span class="type">EGLImage</span> object exists inside EGL
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ </p>
+ <p>
+ The semantics for specifying, deleting and using
+ <span class="type">EGLImage</span> siblings are client API-specific, and are
+ described in the appropriate API specifications.
+ </p>
+ <p>
+ If an application specifies an <span class="type">EGLImage</span> sibling as
+ the destination for rendering and/or pixel download operations
+ (e.g., as an OpenGL or OpenGL ES framebuffer object,
+ <code class="function">glTexSubImage2D</code>, etc.), the modified image
+ results will be observed by all <span class="type">EGLImage</span> siblings
+ in all client API contexts. If multiple client API contexts
+ access <span class="type">EGLImage</span> sibling resources simultaneously,
+ with one or more context modifying the image data, rendering
+ results in all contexts accessing <span class="type">EGLImage</span> siblings
+ are undefined.
+ </p>
+ <p>
+ Respecification and/or deletion of any <span class="type">EGLImage</span>
+ sibling (i.e., both <span class="type">EGLImage</span> source and
+ <span class="type">EGLImage</span> target resources) inside a client API
+ context (by issuing a subsequent call to commands such as
+ <code class="function">glTexImage*</code> or
+ <code class="function">glDeleteTextures</code>, with the
+ <span class="type">EGLImage</span> sibling resource as the target of the
+ operation) affects only that client API context and other
+ contexts within its share group. For an OpenGL or OpenGL ES
+ context, respecification always results in
+ <em class="firstterm">orphaning</em> of the <span class="type">EGLImage</span>,
+ and may also include allocation of additional memory for the
+ respecified resource and/or copying of the <span class="type">EGLImage</span>
+ pixel data.
+ </p>
+ <p>
+ Note: Behavior of other types of client APIs generally follows
+ the OpenGL and OpenGL ES behavior described here, although this
+ is not mandated yet.
+ </p>
+ <p>
+ Operations inside EGL or any client API context which may affect
+ the lifetime of an <span class="type">EGLImage</span> (or the memory
+ allocated for the <span class="type">EGLImage</span>), such as respecifying
+ and/or deleting an <span class="type">EGLImage</span> sibling inside a client
+ API context, must be atomic.
+ </p>
+ <p>
+ Applications may create client API resources from an
+ <span class="type">EGLImage</span> using client API extensions outside the
+ scope of this document (such as
+ <code class="constant">GL_OES_EGL_image</code>, which creates OpenGL ES
+ texture and renderbuffer objects). If the <span class="type">EGLImage</span>
+ used to create the client resource was created with the
+ <code class="constant">EGL_IMAGE_PRESERVED</code> attribute set to
+ <code class="constant">EGL_TRUE</code>, then the pixel data values
+ associated with the image will be preserved after creating the
+ client resource; otherwise, the pixel data values will be
+ undefined. If the <span class="type">EGLImage</span> was created with the
+ <code class="constant">EGL_IMAGE_PRESERVED</code> attribute set to
+ <code class="constant">EGL_TRUE</code>, and EGL is unable to create the
+ client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreateImage</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglDestroyImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroyImage</span></span></a>,
+ <code class="function">glDeleteTextures</code>,
+ <code class="function">glTexImage*</code>,
+ <code class="function">glTexSubImage2D</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml
new file mode 100644
index 0000000..b6d87bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePbufferFromClientBuffer - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePbufferFromClientBuffer">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePbufferFromClientBuffer —
+ create a new <abbr class="acronym">EGL</abbr> pixel buffer surface
+ bound to an OpenVG image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferFromClientBuffer</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLenum <var class="pdparam">buftype</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLClientBuffer <var class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buftype</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of client API buffer to be bound.
+ Must be <code class="constant">EGL_OPENVG_IMAGE</code>,
+ corresponding to an OpenVG <span class="type">VGImage</span>
+ buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the OpenVG <span class="type">VGImage</span> handle of
+ the buffer to be bound.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferFromClientBuffer</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <em class="parameter"><code>config</code></em>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </p>
+ <p>
+ <em class="parameter"><code>buftype</code></em> must be
+ <code class="constant">EGL_OPENVG_IMAGE</code>, corresponding to an
+ OpenVG <span class="type">VGImage</span> buffer.
+ <em class="parameter"><code>buffer</code></em> must be a valid
+ <span class="type">VGImage</span> handle in the current OpenVG context,
+ cast into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <code class="constant">EGL_HEIGHT</code>,
+ <code class="constant">EGL_WIDTH</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, respectively) of the
+ resulting surface are determined by the size and format of
+ <em class="parameter"><code>buffer</code></em>.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </p>
+ <p>
+ Currently
+ <code class="function">eglCreatePbufferFromClientBuffer</code> only
+ supports binding OpenVG <span class="type">VGImage</span> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <span class="type">EGLImageKHR</span>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ <p>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <span class="type">VGImage</span> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <span class="type">VGImage</span> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <span class="type">VGImage</span> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <span class="type">VGImage</span> is bound to a pbuffer,
+ destroying the image with
+ <code class="function">vgDestroyImage</code> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <code class="function">vgDestroyImage</code> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <code class="function">eglDestroySurface</code> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <code class="function">eglDestroySurface</code> the buffer
+ may only be referred to via the OpenVG
+ <span class="type">VGImage</span> handle, since the EGL pbuffer
+ handle no longer exists.
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>buftype</code></em> is not
+ <code class="constant">EGL_OPENVG_IMAGE</code>, or if
+ <em class="parameter"><code>buffer</code></em> is not a valid handle to a
+ <span class="type">VGImage</span> object in the currently bound OpenVG
+ context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if there is
+ no current OpenVG context, or if
+ <em class="parameter"><code>buffer</code></em> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if the buffers
+ contained in <em class="parameter"><code>buffer</code></em> consist of any
+ <span class="type">EGLImage</span> siblings.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to
+ pixel buffers (the <code class="constant">EGL_SURFACE_TYPE</code>
+ attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ buffers contained in <em class="parameter"><code>buffer</code></em> do not
+ match the bit depths for those buffers specified by
+ <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <span class="type">VGImage</span> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ attribute is <code class="constant">TRUE</code>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml
new file mode 100644
index 0000000..a51f67e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePbufferSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.2"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePbufferSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePbufferSurface —
+ create a new <abbr class="acronym">EGL</abbr> pixel buffer surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferSurface</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferSurface</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code>, and the
+ <code class="constant">EGL_OPENGL_ES3_BIT</code> bit value for attribute
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, are supported only if
+ the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code>,
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, or
+ <code class="constant">EGL_OPENGL_ES3_BIT</code>),
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml
new file mode 100644
index 0000000..19b72cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePixmapSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePixmapSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePixmapSurface —
+ create a new <abbr class="acronym">EGL</abbr> offscreen surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePixmapSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativePixmapType <var class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePixmapSurface</code> creates an off-screen
+ EGL pixmap surface and returns a handle to it. The behavior of
+ <code class="function">eglCreatePixmapSurface</code> is identical to that
+ of
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>
+ except that the set of platforms to which
+ <em class="parameter"><code>display</code></em> is permitted to belong, as well
+ as the actual type of <em class="parameter"><code>native_pixmap</code></em>, are
+ implementation specific.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ See errors for
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml
new file mode 100644
index 0000000..b58d4fe
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePlatformPixmapSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePlatformPixmapSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePlatformPixmapSurface —
+ create a new <abbr class="acronym">EGL</abbr> offscreen surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePlatformPixmapSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePlatformPixmapSurface</code> creates an
+ off-screen <abbr class="acronym">EGL</abbr> pixmap surface and returns
+ a handle to it.
+ </p>
+ <p>
+ If <code class="function">eglCreatePlatformPixmapSurface</code> fails to
+ create a pixmap surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ <em class="parameter"><code>native_pixmap</code></em> must belong to the same
+ platform as <em class="parameter"><code>display</code></em>, and EGL considers
+ the returned <span class="type">EGLSurface</span> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <em class="parameter"><code>display</code></em> belongs also defines the
+ requirements for the <em class="parameter"><code>native_pixmap</code></em>
+ parameter.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> attribute
+ of
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for the window system to
+ ignore the value of <code class="constant">EGL_VG_ALPHA_FORMAT</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>display</code></em> and
+ <em class="parameter"><code>native_pixmap</code></em> do not belong to the same
+ platform, then undefined behavior occurs.
+ </p>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the surface fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL config.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there is
+ already an <span class="type">EGLSurface</span> associated with
+ <em class="parameter"><code>native_pixmap</code></em> (as a result of a previous
+ <code class="function">eglCreatePlatformPixmapSurface</code> call).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_pixmap</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixmaps
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PIXMAP_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml
new file mode 100644
index 0000000..f95ab1f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePlatformWindowSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePlatformWindowSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePlatformWindowSurface —
+ create a new <abbr class="acronym">EGL</abbr> on-screen rendering surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePlatformWindowSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a list of attributes for the window surface.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePlatformWindowSurface</code> creates an
+ on-screen EGL window surface and returns a handle to it. Any EGL
+ context created with a compatible <span class="type">EGLConfig</span> can be
+ used to render into this surface.
+ </p>
+ <p>
+ If <code class="function">eglCreatePlatformWindowSurface</code> fails to
+ create a window surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ <em class="parameter"><code>native_window</code></em> must belong to the same
+ platform as <em class="parameter"><code>display</code></em>, and EGL considers
+ the returned <span class="type">EGLSurface</span> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <em class="parameter"><code>display</code></em> belongs also defines the
+ requirements for the <em class="parameter"><code>native_window</code></em>
+ parameter.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <code class="constant">EGL_SINGLE_BUFFER</code>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <code class="constant">EGL_BACK_BUFFER</code>, then client
+ APIs should render into the back buffer. The default
+ value of <code class="constant">EGL_RENDER_BUFFER</code> is
+ <code class="constant">EGL_BACK_BUFFER</code>.
+ </p>
+ <p>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <a class="citerefentry" href="eglQueryContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for platforms to ignore the
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> when
+ compositing window surfaces.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>display</code></em> and
+ <em class="parameter"><code>native_window</code></em> do not belong to the same
+ platform, then undefined behavior occurs.
+ </p>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the surface fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not a valid EGL frame buffer
+ configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ <em class="parameter"><code>native_window</code></em> is not a valid native
+ window for the same platform as <em class="parameter"><code>display</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there is
+ already an <span class="type">EGLSurface</span> associated with
+ <em class="parameter"><code>native_window</code></em> (as a result of a previous
+ <code class="function">eglCreatePlatformWindowSurface</code> call).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the pixel
+ format of <em class="parameter"><code>native_window</code></em> does not
+ correspond to the format, type, and size of the color buffers
+ required by <em class="parameter"><code>config</code></em>.
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the pixel
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to
+ windows (the <code class="constant">EGL_SURFACE_TYPE</code> attribute
+ does not contain <code class="constant">EGL_WINDOW_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml
new file mode 100644
index 0000000..5ca5676
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateSync —
+ create a new <abbr class="acronym">EGL</abbr> sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSync <strong class="fsfunc">eglCreateSync</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLEnum <var class="pdparam">type</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>type</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of sync object to create.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the sync
+ object being created.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <em class="firstterm">sync objects</em> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon
+ by application threads.
+ </p>
+ <p>
+ Sync objects have a status with two possible states:
+ <em class="firstterm">signaled</em> and
+ <em class="firstterm">unsignaled</em>. Initially, sync objects are
+ unsignaled. EGL may be asked to wait for a sync object to become
+ signaled, or a sync object's status may be queried.
+ </p>
+ <p>
+ Depending on the type of a sync object, its status may be
+ changed either by an external event, or by explicitly signaling
+ and unsignaling the sync.
+ </p>
+ <p>
+ <code class="function">eglCreateSync</code> creates a sync object of the specified
+ <em class="parameter"><code>type</code></em> associated with the specified display
+ <em class="parameter"><code>display</code></em>, and returns a handle to the new object.
+ <em class="parameter"><code>attrib_list</code></em> is an attribute-value list specifying
+ other attributes of the sync object, terminated by an attribute entry
+ <code class="constant">EGL_NONE</code>. Attributes not specified in the list will be
+ assigned their default values.
+ </p>
+ <p>
+ Once the <em class="firstterm">condition</em> of the sync object is satisfied,
+ the sync is signaled, causing any <code class="function">eglClientWaitSync</code> or
+ <code class="function">eglWaitSync</code> commands blocking on
+ <em class="parameter"><code>sync</code></em> to unblock.
+ </p>
+ </div>
+ <div class="refsect1" id="fencesync">
+ <h2>Creating Fence Sync Objects</h2>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code>, a fence sync object is
+ created. In this case <em class="parameter"><code>attrib_list</code></em> must be
+ <code class="constant">NULL</code> or empty (containing only
+ <code class="constant">EGL_NONE</code>). Attributes of the fence sync
+ object, and their initial values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_FENCE</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_UNSIGNALED</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_PRIOR_COMMANDS_COMPLETE</code>
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When a fence sync object is created, <code class="function">eglCreateSync</code> also inserts a
+ fence command into the command stream of the bound client API's current
+ context (i.e., the context returned by <code class="function">eglGetCurrentContext</code>), and
+ associates it with the newly created sync object.
+ </p>
+ <p>
+ The only condition supported for fence sync objects is
+ <code class="constant">EGL_SYNC_PRIOR_COMMANDS_COMPLETE</code>, which is satisfied by completion of
+ the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+ </p>
+ <p>
+ Creation of fence sync objects requires support from the bound
+ client API, and will not succeed unless the client API satisfies
+ one of the following properties. Note that
+ <code class="function">eglWaitSync</code> also requires satisfying these
+ conditions.
+ </p>
+ <p>
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ client API is OpenGL, and either the OpenGL version is
+ 3.2 or greater, or the <code class="constant">GL_ARB_sync</code>
+ extension is supported.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ client API is OpenGL ES, and either the OpenGL ES
+ version is 3.0 or greater, or the
+ <code class="constant">GL_OES_EGL_sync</code> extension is
+ supported.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ client API is OpenVG, and the
+ <code class="constant">VG_KHR_EGL_sync</code> extension is
+ supported.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1" id="openclsync">
+ <h2>Creating OpenCL Event Sync Objects</h2>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_CL_EVENT</code>, an OpenCL event sync
+ object is created. In this case
+ <em class="parameter"><code>attrib_list</code></em> must contain the attribute
+ <code class="constant">EGL_CL_EVENT_HANDLE</code>, set to a valid OpenCL
+ event handle returned by a call to
+ <code class="function">clEnqueueReleaseGLObjects</code> or
+ <code class="function">clEnqueueReleaseEGLObjects</code>; other types of
+ OpenCL event handles are not supported. Note that
+ <code class="constant">EGL_CL_EVENT_HANDLE</code> is not a queriable
+ property of a sync object. Attributes of the OpenCL event sync
+ object, and their initial values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_CL_EVENT</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Depends on status of <em class="parameter"><code>event</code></em>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_CL_EVENT_COMPLETE</code>
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ The status of such a sync object depends on
+ <em class="parameter"><code>event</code></em>. When the status of
+ <em class="parameter"><code>event</code></em> is <code class="constant">CL_QUEUED</code>,
+ <code class="constant">CL_SUBMITTED</code>, or
+ <code class="constant">CL_RUNNING</code>, the status of the linked sync
+ object will be <code class="constant">EGL_UNSIGNALED</code>. When the
+ status of <em class="parameter"><code>event</code></em> changes to
+ <code class="constant">CL_COMPLETE</code>, the status of the linked sync
+ object will become <code class="constant">EGL_SIGNALED</code>.
+ </p>
+ <p>
+ The only condition supported for OpenCL event sync objects is
+ <code class="constant">EGL_SYNC_CL_EVENT_COMPLETE</code>, which is
+ satisfied when the status of the OpenCL event associated with
+ the sync object changes to <code class="constant">CL_COMPLETE</code>.
+ </p>
+ <p>
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the
+ reference will be removed from the event object.
+ </p>
+ <p>
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in
+ <em class="parameter"><code>attrib_list</code></em> may result in undefined
+ behavior up to and including program termination.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreateSync</code> is supported only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglCreateSync</code> returns
+ <code class="constant">EGL_NO_SYNC</code> on failure.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the name of a valid,
+ initialized <span class="type">EGLDisplay</span>, an
+ <code class="constant">EGL_BAD_DISPLAY</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attrib_list</code></em> contains an attribute name
+ not defined for the type of sync object being created, an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is not a supported type of sync
+ object, an <code class="constant">EGL_BAD_PARAMETER</code> error is
+ generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and no context is current
+ for the bound API (i.e.,
+ <code class="function">eglGetCurrentContext</code> returns
+ <code class="constant">EGL_NO_CONTEXT</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and
+ <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> of the currently bound context for the
+ currently bound client API (the <span class="type">EGLDisplay</span> returned
+ by <code class="function">eglGetCurrentDisplay</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and the current context for
+ the currently bound client API does not support fence commands,
+ an <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_CL_EVENT</code> and
+ <code class="constant">EGL_CL_EVENT_HANDLE</code> is not specified in
+ <em class="parameter"><code>attrib_list</code></em>, or its attribute value is
+ not a valid OpenCL event handle as described above, then an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">clEnqueueReleaseGLObjects</code>,
+ <code class="function">clEnqueueReleaseEGLObjects</code>,
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml
new file mode 100644
index 0000000..0a29d77
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateWindowSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateWindowSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateWindowSurface —
+ create a new <abbr class="acronym">EGL</abbr> window surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreateWindowSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativeWindowType <var class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies window surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateWindowSurface</code> creates an on-screen
+ EGL window surface and returns a handle to it. The behavior of
+ <code class="function">eglCreateWindowSurface</code> is identical to that
+ of
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>
+ except that the set of platforms to which
+ <em class="parameter"><code>display</code></em> is permitted to belong, as well
+ as the actual type of <em class="parameter"><code>native_window</code></em>, are
+ implementation specific.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ See errors for
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml
new file mode 100644
index 0000000..6a5569d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroyContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroyContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroyContext —
+ destroy an <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If the EGL rendering context <em class="parameter"><code>context</code></em> is not
+ current to any thread,
+ <code class="function">eglDestroyContext</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>context</code></em> is destroyed when it becomes
+ not current to any thread.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the context fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml
new file mode 100644
index 0000000..8c2f3aa
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroyImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroyImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroyImage —
+ Destroy an <span class="type">EGLImage</span> object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyImage</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLImage <var class="pdparam">image</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>image</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the image to destroy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglDestroyImage</code> is used to destroy the
+ specified <span class="type">EGLImage</span> object
+ <em class="parameter"><code>image</code></em>. Once destroyed,
+ <em class="parameter"><code>image</code></em> may not be used to create any
+ additional <span class="type">EGLImage</span> target resources within any
+ client API contexts, although existing <span class="type">EGLImage</span>
+ siblings may continue to be used. <code class="constant">EGL_TRUE</code>
+ is returned on success.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglDestroyImage</code> returns
+ <code class="constant">EGL_FALSE</code>
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the handle of a valid
+ <span class="type">EGLDisplay</span> object, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>image</code></em> is not a valid
+ <span class="type">EGLImage</span> object created with respect to
+ <em class="parameter"><code>display</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglDestroyImage</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml
new file mode 100644
index 0000000..652f508
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroySurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroySurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroySurface —
+ destroy an <abbr class="acronym">EGL</abbr> surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL surface to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If the EGL surface <em class="parameter"><code>surface</code></em> is not current to any
+ thread, <code class="function">eglDestroySurface</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>surface</code></em> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the surface fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml
new file mode 100644
index 0000000..7db22eb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroySync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroySync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroySync —
+ Destroy a sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to destroy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglDestroySync</code> is used to destroy an
+ existing sync object.
+ </p>
+ <p>
+ If any <code class="function">eglClientWaitSync</code> or
+ <code class="function">eglWaitSync</code> commands are blocking on
+ <em class="parameter"><code>sync</code></em> when
+ <code class="function">eglDestroySync</code> is called,
+ <em class="parameter"><code>sync</code></em> is flagged for deletion and will be
+ deleted when the associated fence command or OpenCL event object
+ has completed, and <em class="parameter"><code>sync</code></em> is no longer
+ blocking any such <code class="function">egl*WaitSync</code> command.
+ Otherwise, the sync object is destroyed immediately.
+ </p>
+ <p>
+ If no errors are generated, <code class="constant">EGL_TRUE</code> is
+ returned, and <em class="parameter"><code>sync</code></em> will no longer be the
+ handle of a valid sync object.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglDestroySync</code> returns
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, <code class="constant">EGL_FALSE</code>
+ is returned and an <code class="constant">EGL_BAD_PARAMETER</code> error
+ is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the display
+ passed to <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behaviour is
+ undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglDestroySync</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml
new file mode 100644
index 0000000..726d487
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml
@@ -0,0 +1,508 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetConfigAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetConfigAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetConfigAttrib —
+ return information about an <abbr class="acronym">EGL</abbr> frame buffer
+ configuration
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigAttrib</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration to be
+ queried.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context attribute to be
+ returned.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the requested value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigAttrib</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>config</code></em>
+ (config attributes are described in more detail in the
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ reference page).
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of alpha stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits in the alpha mask buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGB texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGBA texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of blue stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the depth of the color buffer.
+ It is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color buffer type. Possible types are
+ <code class="constant">EGL_RGB_BUFFER</code> and
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the depth buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of green stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum width of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum height of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_PIXELS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum size of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the minimum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if native rendering
+ APIs can render into the surface,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of red stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of multisample buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of samples per pixel.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the stencil buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of supported transparency.
+ Possible transparency values are:
+ <code class="constant">EGL_NONE</code>, and
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent red value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent green value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent blue value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code> is supported only if the
+ EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> are supported only
+ if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ While <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> can be
+ specified in the attribute list passed to
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <code class="function">eglGetConfigAttrib</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid frame buffer
+ configuration attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml
new file mode 100644
index 0000000..bd34046
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetConfigs - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetConfigs">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetConfigs —
+ return a list of all <abbr class="acronym">EGL</abbr> frame buffer configurations
+ for a display
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigs</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig * <var class="pdparam">configs</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">num_config</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns a list of configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the list of configs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of configs returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigs</code> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </p>
+ <p>
+ <em class="parameter"><code>configs</code></em> does not return values, if it is specified
+ as
+ <code class="constant">NULL</code>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and <em class="parameter"><code>num_config</code></em>
+ are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml
new file mode 100644
index 0000000..9d80ed2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentContext —
+ return the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLContext <strong class="fsfunc">eglGetCurrentContext</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentContext</code> returns the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml
new file mode 100644
index 0000000..6c8a04d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentDisplay —
+ return the display for the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetCurrentDisplay</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentDisplay</code> returns the current
+ <abbr class="acronym">EGL</abbr> display connection for the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_DISPLAY</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ Passing <code class="constant">EGL_NO_DISPLAY</code> to any command
+ taking an <span class="type">EGLDisplay</span> parameter will generate either
+ an <code class="constant">EGL_BAD_DISPLAY</code> error if the EGL
+ implementation validates <span class="type">EGLDisplay</span> handles, or
+ undefined behavior as described at the end of section 3.1 of the
+ EGL 1.5 Specification. The only exception to this rule is that
+ <code class="function">eglQueryString</code> will accept an
+ <span class="type">EGLDisplay</span> parameter of
+ <code class="constant">EGL_NO_DISPLAY</code> when querying the client
+ extension string (see section 3.3 of the EGL 1.5 Specification).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml
new file mode 100644
index 0000000..285e842
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentSurface —
+ return the read or draw surface for the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglGetCurrentSurface</strong>(</code>
+ </td>
+ <td>EGLint <var class="pdparam">readdraw</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>readdraw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether to return the read surface
+ (<code class="constant">EGL_READ</code>) or the draw surface
+ (<code class="constant">EGL_DRAW</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentSurface</code> returns the read or draw
+ surface attached to the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml
new file mode 100644
index 0000000..47bbea1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetDisplay —
+ return an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetDisplay</strong>(</code>
+ </td>
+ <td>NativeDisplayType <var class="pdparam">native_display</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the display to connect to.
+ <code class="constant">EGL_DEFAULT_DISPLAY</code> indicates the default display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetDisplay</code> obtains the
+ <abbr class="acronym">EGL</abbr> display connection for the native
+ display <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ The behavior of <code class="function">eglGetDisplay</code> is similar to
+ that of
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ but is specified in terms of implementation-specific behavior
+ rather than platform-specific extensions. As for
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ EGL considers the returned <span class="type">EGLDisplay</span> as belonging
+ to the same platform as <em class="parameter"><code>display_id</code></em>.
+ However, the set of platforms to which
+ <em class="parameter"><code>display_id</code></em> is permitted to belong, as
+ well as the actual type of <em class="parameter"><code>display_id</code></em>,
+ are implementation-specific. If
+ <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a <em class="firstterm">default
+ display</em> is returned. Multiple calls made to
+ <code class="function">eglGetDisplay</code> with the same
+ <em class="parameter"><code>display_id</code></em> will return the same
+ <span class="type">EGLDisplay</span> handle.
+ </p>
+ <p>
+ If <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a default display connection is returned.
+ </p>
+ <p>
+ If no display connection matching <em class="parameter"><code>native_display</code></em> is
+ available, <code class="constant">EGL_NO_DISPLAY</code> is returned. No
+ error is generated.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ to initialize the display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml
new file mode 100644
index 0000000..248841c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetError - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetError">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetError —
+ return error information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLint <strong class="fsfunc">eglGetError</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetError</code> returns the error of the last
+ called <abbr class="acronym">EGL</abbr> function in the current thread.
+ Initially, the error is set to <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ <p>
+ When an EGL function could potentially generate several
+ different errors (for example, when passed both a bad attribute
+ name, and a bad attribute value for a legal attribute name), the
+ implementation may choose to generate any one of the applicable
+ errors.
+ </p>
+ <p>
+ The following errors are currently defined:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SUCCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The last function succeeded without error.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NOT_INITIALIZED</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ALLOC</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL failed to allocate resources for the requested
+ operation.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ATTRIBUTE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONTEXT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLContext</span> argument does not name a
+ valid EGL rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONFIG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ An <span class="type">EGLConfig</span> argument does not name a valid
+ EGL frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_DISPLAY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLDisplay</span> argument does not name a
+ valid EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLSurface</span> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_MATCH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_PARAMETER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>One or more argument values are invalid.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A <span class="type">NativePixmapType</span> argument does not refer to
+ a valid native pixmap.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code>
+ </span>
+ </dt>
+ <dd>
+ <p>A <span class="type">NativeWindowType</span> argument does not refer
+ to a valid native window.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_LOST</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ A call to <code class="function">eglGetError</code> sets the error to
+ <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml
new file mode 100644
index 0000000..6d6f134
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetPlatformDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetPlatformDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetPlatformDisplay —
+ return an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetPlatformDisplay</strong>(</code>
+ </td>
+ <td>EGLenum <var class="pdparam">platform</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>const EGLAttrib * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>platform</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native platform to obtain a display for.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native display to connect to.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes of the display being obtained.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> obtains an
+ <abbr class="acronym">EGL</abbr> display connection for the specified
+ <em class="parameter"><code>platform</code></em> and
+ <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ Valid values for <em class="parameter"><code>platform</code></em> are defined by
+ EGL extensions, as are requirements for
+ <em class="parameter"><code>native_display</code></em>.
+ For example, an extension specification that defines support for
+ the X11 platform may require that
+ <em class="parameter"><code>native_display</code></em> be a pointer to an X11
+ Display, and an extension specification that defines support for
+ the Microsoft Windows platform may require that
+ <em class="parameter"><code>native_display</code></em> be a pointer to a Windows
+ Device Context.
+ </p>
+ <p>
+ Valid attributes are defined by EGL extensions.
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value.
+ The list is terminated with <code class="constant">EGL_NONE</code>.
+ If an attribute is not specified in
+ <em class="parameter"><code>attrib_list</code></em> but is required for the
+ specified <em class="parameter"><code>platform</code></em>, then a default value
+ is used (and the attribute is said to be specified implicitly).
+ </p>
+ <p>
+ Multiple calls made to
+ <code class="function">eglGetPlatformDisplay</code> with the same
+ parameters will return the same <span class="type">EGLDisplay</span> handle.
+ </p>
+ <p>
+ If <em class="parameter"><code>platform</code></em> is valid but no display
+ matching <em class="parameter"><code>native_display</code></em> is available,
+ then <code class="constant">EGL_NO_DISPLAY</code> is returned; no error
+ condition is raised in this case.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> is supported only if
+ the EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> returns
+ <code class="constant">EGL_NO_DISPLAY</code> on failure.
+ </p>
+ <p>
+ An <code class="constant">EGL_BAD_PARAMETER</code> error is generated if
+ <em class="parameter"><code>platform</code></em> has an invalid value.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml
new file mode 100644
index 0000000..8583280
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetProcAddress - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetProcAddress">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetProcAddress —
+ return a <abbr class="acronym">GL</abbr> or an <abbr class="acronym">EGL</abbr>
+ extension function
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">void (* <strong class="fsfunc">eglGetProcAddress</strong>(</code>
+ </td>
+ <td>char const * <var class="pdparam">procname</var>))(void<code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>procname</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the name of the function to return.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetProcAddress</code> returns the address of
+ the client API or EGL function named by
+ <em class="parameter"><code>procname</code></em>. <em class="parameter"><code>procname</code></em>
+ must be a null-terminated string. The pointer returned should be
+ cast to a function pointer matching the function's definition in
+ the corresponding API or extension specification. A return value
+ of <code class="constant">NULL</code> indicates that the specific
+ function does not exist for the implementation.
+ </p>
+ <p>
+ A non-<code class="constant">NULL</code> return value does not guarantee
+ that an extension function is actually supported at runtime. The
+ client must also make a corresponding query, such as
+ <code class="function">glGetString</code>(<code class="constant">GL_EXTENSIONS</code>)
+ for OpenGL and OpenGL ES extensions;
+ <code class="function">vgGetString</code>(<code class="constant">VG_EXTENSIONS</code>)
+ for OpenVG extensions;
+ <code class="function">eglQueryString</code>(<em class="parameter"><code>display</code></em>,
+ <code class="constant">EGL_EXTENSIONS</code>); or query the EGL or client
+ API version for non-extension functions, to determine if a
+ function is supported by EGL or a specific client API context.
+ </p>
+ <p>
+ Client API function pointers returned by
+ <code class="function">eglGetProcAddress</code> are independent of the
+ display and the currently bound client API context, and may be
+ used by any client API context which supports the function.
+ </p>
+ <p>
+ <code class="function">eglGetProcAddress</code> may be queried for all
+ EGL and client API functions supported by the implementation
+ (whether those functions are extensions or not, and whether they
+ are supported by the current client API context or not).
+ </p>
+ <p>
+ For functions that are queryable with
+ <code class="function">eglGetProcAddress</code>, implementations may
+ choose to also export those functions statically from the object
+ libraries implementing those functions. However, portable
+ clients cannot rely on this behavior.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ If the EGL version is not 1.5 or greater, only queries of EGL
+ and client API <span class="emphasis"><em>extension</em></span> functions will
+ succeed.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">glGetString</code>
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a> </p>
+ <code class="function">vgGetString</code>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml
new file mode 100644
index 0000000..de9009b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetSyncAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetSyncAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetSyncAttrib —
+ Return an attribute of a sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetSyncAttrib</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib *<var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL sync object attribute to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested attribute value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetSyncAttrib</code> is used to query
+ attributes of the sync object <em class="parameter"><code>sync</code></em>. Legal
+ values for <em class="parameter"><code>attribute</code></em> depend on the type
+ of sync object, as shown in table
+ <a class="xref" href="#tab-syncattr" title="Table 1.  Attributes accepted by eglGetSyncAttrib">Table 1, “
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ â€</a>. Assuming no errors are
+ generated, <code class="constant">EGL_TRUE</code> is returned and the
+ value of the queried attribute is returned in
+ *<em class="parameter"><code>value</code></em>.
+ </p>
+ <div class="table" id="tab-syncattr">
+ <div class="table-title">Table 1. 
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</th>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</th>
+ <th style="text-align: left; border-bottom: 2px solid ; ">Supported Sync Objects</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Supported Sync Objects</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Type of the sync object</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">All</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Status of the sync object</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">All</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; ">Signaling condition</td>
+ <td style="text-align: left; ">
+ <code class="constant">EGL_SYNC_FENCE</code> or
+ <code class="constant">EGL_SYNC_CL_EVENT</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglGetSyncAttrib</code> returns
+ <code class="constant">EGL_FALSE</code> and *<em class="parameter"><code>value</code></em>
+ is not modified.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attribute</code></em> is not one of the attributes
+ in table <a class="xref" href="#tab-syncattr" title="Table 1.  Attributes accepted by eglGetSyncAttrib">Table 1, “
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ â€</a>, an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attribute</code></em> is not supported for the
+ type of sync object passed in <em class="parameter"><code>sync</code></em>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the display
+ passed to <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, behaviour is undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglGetSyncAttrib</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml
new file mode 100644
index 0000000..4544be2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglInitialize - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglInitialize">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglInitialize —
+ initialize an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglInitialize</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">major</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">minor</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to initialize.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>major</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the major version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>minor</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the minor version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglInitialize</code> initialized the EGL display
+ connection obtained with
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </p>
+ <p>
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em>
+ do not return values if they are specified as <code class="constant">NULL</code>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ to release resources associated with an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglInitialize</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em> are not
+ modified when <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> cannot be initialized.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml
new file mode 100644
index 0000000..b82eade
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglIntro - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglIntro">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglIntro —
+ introduction to managing client API rendering through the
+ <abbr class="acronym">EGL</abbr> API.
+ </p>
+ </div>
+ <div class="refsect1" id="overview">
+ <h2>Overview</h2>
+ <p>
+ The <em class="firstterm">Khronos Native Platform Graphics
+ Interface</em> (EGL) provides a means for rendering
+ using a <em class="firstterm">client API</em> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a
+ <em class="firstterm">platform</em>, such as Microsoft Windows or
+ the X Window System.
+ </p>
+ <p>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the platform. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>
+ or
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ The EGL specification does not define the set of platforms that
+ may be supported by an EGL implementation, nor does it specify
+ behavior specific to any platform. The set of supported
+ platforms and their behavior is defined by platform-specific
+ extensions. To detect if a particular platform is supported,
+ clients should query the <code class="constant">EGL_EXTENSIONS</code>
+ string of <code class="constant">EGL_NO_DISPLAY</code> using
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ <p>
+ Platforms supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the platform APIs.
+ </p>
+ <p>
+ An EGL <em class="firstterm">surface</em> extends a native
+ window or pixmap with additional <em class="firstterm">auxillary
+ buffers</em>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </p>
+ <p>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the platform. EGL pixel buffers are
+ EGL-only resources, and do not accept rendering through the
+ platform APIs.
+ </p>
+ <p>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ returns an <span class="type">EGLConfig</span> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ </p>
+ <p>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </p>
+ <p>
+ To create an EGL window surface from a native window, call
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <span class="type">VGImage</span>, call
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>.
+ Use
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to release previously allocated resources.
+ </p>
+ <p>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ <p>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ This context/surface(s) association specifies the
+ <em class="firstterm">current context</em> and
+ <em class="firstterm">current surface</em>, and is used by all
+ client API rendering commands for the bound context until
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ is called with different arguments.
+ </p>
+ <p>
+ Both platform and client API commands may be used to operate
+ on certain surfaces. However, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ and possibly by calling other platform APIs.
+ </p>
+ </div>
+ <div class="refsect1" id="examples">
+ <h2>Examples</h2>
+ <p>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </p>
+ <pre class="programlisting">
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</pre>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Prior to EGL 1.5, platforms were referred to as the
+ <em class="firstterm">native window system</em>, and
+ platform-specific queries and APIs were not available. Only a
+ single native window system was supported.
+ </p>
+ </div>
+ <div class="refsect1" id="usingeglextensions">
+ <h2>Using EGL Extensions</h2>
+ <p>
+ All supported EGL extensions will have a corresponding definition in
+ <code class="filename">egl.h</code> and a token in the extension strings returned
+ by
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="futureeglversions">
+ <h2>Future EGL Versions</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ and
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <code class="constant">EGL_VERSION_<em class="replaceable"><code>x</code></em>_<em class="replaceable"><code>y</code></em></code>
+ is defined, where <em class="replaceable"><code>x</code></em> and
+ <em class="replaceable"><code>y</code></em> are the major and minor version
+ numbers.
+ </p>
+ </div>
+ <div class="refsect1" id="files">
+ <h2>Files</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="filename">GLES/egl.h</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ EGL header file
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroyContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml
new file mode 100644
index 0000000..14f28ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglMakeCurrent - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglMakeCurrent">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglMakeCurrent —
+ attach an EGL rendering context to EGL surfaces
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglMakeCurrent</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">draw</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">read</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>draw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> draw surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>read</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> read surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> rendering context
+ to be attached to the surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglMakeCurrent</code> binds <em class="parameter"><code>context</code></em>
+ to the current rendering thread and to the <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> surfaces.
+ </p>
+ <p>
+ For an OpenGL or OpenGL ES context, <em class="parameter"><code>draw</code></em>
+ is used for all operations except for any pixel data read back or copied
+ (<a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>, and
+ <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>),
+ which is taken from the frame buffer values of
+ <em class="parameter"><code>read</code></em>. Note that the same
+ <span class="type">EGLSurface</span> may be specified for both draw and read.
+ </p>
+ <p>
+ For an OpenVG context, the same <span class="type">EGLSurface</span> must be
+ specified for both <em class="parameter"><code>draw</code></em> and
+ <em class="parameter"><code>read</code></em>.
+ </p>
+ <p>
+ If the calling thread has already a current rendering context of
+ the same client API type as <em class="parameter"><code>context</code></em>, then
+ that context is flushed and marked as no longer current.
+ <em class="parameter"><code>context</code></em> is then made the current context
+ for the calling thread. For purposes of
+ <code class="function">eglMakeCurrent</code>, the client API type of all
+ OpenGL ES and OpenGL contexts is considered the same. In other
+ words, if any OpenGL ES context is currently bound and
+ <em class="parameter"><code>context</code></em> is an OpenGL context, or if any
+ OpenGL context is currently bound and
+ <em class="parameter"><code>context</code></em> is an OpenGL ES context, the
+ currently bound context will be made no longer current and
+ <em class="parameter"><code>context</code></em> will be made current.
+ </p>
+ <p>
+ OpenGL and OpenGL ES buffer mappings created by e.g.
+ <code class="function">glMapBuffer</code> are not affected by
+ <code class="function">eglMakeCurrent</code>; they persist whether the
+ context owning the buffer is current or not.
+ </p>
+ <p>
+ If <em class="parameter"><code>draw</code></em> is destroyed after
+ <code class="function">eglMakeCurrent</code> is called, then subsequent
+ rendering commands will be processed and the context state will
+ be updated, but the surface contents become undefined. If
+ <em class="parameter"><code>read</code></em> is destroyed after
+ <code class="function">eglMakeCurrent</code> then pixel values
+ <em class="parameter"><code>read</code></em> from the framebuffer (e.g., as
+ result of calling glReadPixels) are undefined. If a native
+ window or pixmap underlying the <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> surfaces is destroyed, rendering and
+ <em class="parameter"><code>read</code></em>back are handled as above.
+ </p>
+ <p>
+ To release the current context without assigning a new one, set
+ <em class="parameter"><code>context</code></em> to
+ <code class="constant">EGL_NO_CONTEXT</code> and set
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> to
+ <code class="constant">EGL_NO_SURFACE</code> . The currently bound
+ context for the client API specified by the current rendering
+ API is flushed and marked as no longer current, and there will
+ be no current context for that client API after
+ <code class="function">eglMakeCurrent</code> returns. This is the only
+ case in which <code class="function">eglMakeCurrent</code> respects the
+ current rendering API. In all other cases, the client API
+ affected is determined by <em class="parameter"><code>context</code></em>. This
+ is the only case where an uninitialized display may be passed to
+ <code class="function">eglMakeCurrent</code>.
+ </p>
+ <p>
+ If ctx is not <code class="constant">EGL_NO_CONTEXT</code>, then both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> must
+ not be <code class="constant">EGL_NO_SURFACE</code> unless
+ <em class="parameter"><code>context</code></em> is a context which supports being
+ bound without read and draw surfaces. In this case the context
+ is made current without a default framebuffer. The meaning of
+ this is defined by the client API of the supporting context (see
+ chapter 4 of the OpenGL 3.0 Specification, and the
+ <code class="constant">GL_OES_surfaceless_context</code> OpenGL ES
+ extension.).
+ </p>
+ <p>
+ The first time a OpenGL or OpenGL ES context is made current the
+ viewport and scissor dimensions are set to the size of the
+ <em class="parameter"><code>draw</code></em> surface (as though
+ <code class="function">glViewport</code>(0,0,w,h) and
+ <code class="function">glScissor</code>(0,0,<em class="parameter"><code>w</code></em>,<em class="parameter"><code>h</code></em>)
+ were called, where <em class="parameter"><code>w</code></em> and
+ <em class="parameter"><code>h</code></em> are the width and height of the
+ surface, respectively). However, the viewport and scissor
+ dimensions are not modified when <em class="parameter"><code>context</code></em>
+ is subsequently made current. The client is responsible for
+ resetting the viewport and scissor in this case.
+ </p>
+ <p>
+ The first time <em class="parameter"><code>context</code></em> is made current,
+ if it is without a default framebuffer (e.g. both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
+ <code class="constant">EGL_NO_SURFACE</code> ), then the viewport and
+ scissor regions are set as though
+ <code class="function">glViewport</code>(0,0,0,0) and
+ <code class="function">glScissor</code>(0,0,0,0) were called.
+ </p>
+ <p>
+ Implementations may delay allocation of auxiliary buffers for a
+ surface until they are required by a context (which may result
+ in the <code class="constant">EGL_BAD_ALLOC</code> error described
+ above). Once allocated, however, auxiliary buffers and their
+ contents persist until a surface is deleted.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>, and
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>
+ to query the current rendering context and associated display connection and surfaces.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em>
+ are not compatible with <em class="parameter"><code>context</code></em>, then an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is current to some other
+ thread, or if either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are bound to contexts in another
+ thread, an <code class="constant">EGL_BAD_ACCESS</code> error is
+ generated.
+ </p>
+ <p>
+ If binding <em class="parameter"><code>context</code></em> would exceed the
+ number of current contexts of that client API type supported by
+ the implementation, an <code class="constant">EGL_BAD_ACCESS</code> error
+ is generated.
+ </p>
+ <p>
+ If either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are pbuffers created with
+ <code class="function">eglCreatePbufferFromClientBuffer</code>, and the
+ underlying bound client API buffers are in use by the client API
+ that created them, an <code class="constant">EGL_BAD_ACCESS</code> error
+ is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is not a valid context and is
+ not <code class="constant">EGL_NO_CONTEXT</code>, an
+ <code class="constant">EGL_BAD_CONTEXT</code> error is generated.
+ </p>
+ <p>
+ If either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are not valid EGL surfaces and are
+ not <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_SURFACE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is
+ <code class="constant">EGL_NO_CONTEXT</code> and either
+ <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em> are
+ not <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If either of <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> is a valid surface and the other is
+ <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> does not support being bound
+ without <em class="parameter"><code>read</code></em> and
+ <em class="parameter"><code>draw</code></em> surfaces, and both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
+ <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If a native window underlying either <em class="parameter"><code>draw</code></em>
+ or <em class="parameter"><code>read</code></em> is no longer valid, an
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em>
+ cannot fit into graphics memory simultaneously, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If the previous context of the calling thread has unflushed
+ commands, and the previous surface is no longer valid, an
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> error is generated.
+ </p>
+ <p>
+ If the ancillary buffers for <em class="parameter"><code>draw</code></em> and
+ <em class="parameter"><code>read</code></em> cannot be allocated, an
+ <code class="constant">EGL_BAD_ALLOC</code> error is generated.
+ </p>
+ <p>
+ If a power management event has occurred, an
+ <code class="constant">EGL_CONTEXT_LOST</code> error is generated.
+ </p>
+ <p>
+ If any of the following are true:
+
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>read</code></em> is not
+ <code class="constant">EGL_NO_SURFACE</code>
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>draw</code></em> is not
+ <code class="constant">EGL_NO_SURFACE</code>
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+
+ then an <code class="constant">EGL_NOT_INITIALIZED</code> error is
+ generated if <em class="parameter"><code>display</code></em> is a valid but
+ uninitialized display.
+ </p>
+ <p>
+ As with other commands taking <span class="type">EGLDisplay</span>
+ parameters, if <em class="parameter"><code>display</code></em> is not a valid
+ <span class="type">EGLDisplay</span> handle, an
+ <code class="constant">EGL_BAD_DISPLAY</code> error is generated. (Some
+ implementations have chosen to allow
+ <code class="constant">EGL_NO_DISPLAY</code> as a valid
+ <em class="parameter"><code>display</code></em> parameter for
+ <code class="function">eglMakeCurrent</code>. This behavior is not
+ portable to all EGL implementations, and should be considered as
+ an undocumented vendor extension).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
+ <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml
new file mode 100644
index 0000000..45e5a80
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryAPI - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryAPI">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryAPI — Query the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLenum <strong class="fsfunc">eglQueryAPI</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ and affects the behavior of other EGL commands.
+ </p>
+ <p>
+ The value returned will be one of the valid
+ <em class="parameter"><code>api</code></em> parameters to
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>, or
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglQueryAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be changed by calling
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ None.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml
new file mode 100644
index 0000000..c121448
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryContext —
+ return <abbr class="acronym">EGL</abbr> rendering context information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglQueryContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryContext</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>context</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the type of client API which the context
+ supports (one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </p>
+ <div class="itemizedlist">
+ <ul style="list-style-type: disc; " class="itemizedlist">
+ <li class="listitem">
+ <p>
+ If the context is bound to a pixmap surface,
+ then <code class="constant">EGL_SINGLE_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a pbuffer surface,
+ then <code class="constant">EGL_BACK_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a window surface,
+ then either <code class="constant">EGL_BACK_BUFFER</code>
+ or <code class="constant">EGL_SINGLE_BUFFER</code> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <code class="constant">EGL_RENDER_BUFFER</code> property
+ of the surface (which may be queried by calling
+ <code class="function">eglQuerySurface</code>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <code class="constant">EGL_NONE</code> will
+ be returned.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code> and
+ <code class="constant">EGL_RENDER_BUFFER</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid context attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml
new file mode 100644
index 0000000..663d046
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryString - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryString">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryString —
+ return a string describing properties of the EGL client or of an
+ <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">char const * <strong class="fsfunc">eglQueryString</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">name</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>name</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a symbolic constant, one of
+ <code class="constant">EGL_CLIENT_APIS</code>,
+ <code class="constant">EGL_VENDOR</code>,
+ <code class="constant">EGL_VERSION</code>, or
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryString</code> returns a pointer to a
+ static, zero-terminated string describing properties of the EGL
+ client or of an EGL display connection.
+ <em class="parameter"><code>name</code></em> may be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CLIENT_APIS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separated list of API names. The list must
+ include at least one of <code class="code">OpenGL</code>,
+ <code class="code">OpenGL_ES</code>, or <code class="code">OpenVG</code>.
+ These strings correspond respectively to values
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, and
+ <code class="constant">EGL_OPENVG_API</code> of the
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <em class="parameter"><code>api</code></em> argument.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VENDOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the name of the vendor responsible for this EGL
+ implementation. The format and contents of the string
+ are implementation-dependent.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a version or release number. The
+ <code class="constant">EGL_VERSION</code> string is laid out
+ as follows:
+ </p>
+ <p>
+ <em class="replaceable"><code>major_version</code></em>.<em class="replaceable"><code>minor_version</code></em>
+ space
+ <em class="replaceable"><code>vendor_specific_info</code></em>
+ </p>
+ <p>
+ Both the major and minor portions of the version
+ number are numeric. Their values must match the
+ <em class="parameter"><code>major</code></em> and
+ <em class="parameter"><code>minor</code></em> values returned by
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ The vendor-specific information is optional; if
+ present, its format and contents are
+ implementation-specific.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_EXTENSIONS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a space separated list of supported
+ extensions to EGL. If there are no extensions, then
+ the empty string is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is
+ <code class="constant">EGL_NO_DISPLAY</code>, then the
+ <code class="constant">EGL_EXTENSIONS</code> string describes
+ the set of supported <em class="firstterm">client
+ extensions</em>. If
+ <em class="parameter"><code>display</code></em> is a valid,
+ initialized display, then the
+ <code class="constant">EGL_EXTENSIONS</code> string describes
+ the set of <em class="firstterm">display extensions</em>
+ supported by that display. The set of supported
+ client extensions is disjoint from the set of
+ extensions supported by any given display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CLIENT_APIS</code> is supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ A <em class="parameter"><code>display</code></em> of
+ <code class="constant">EGL_NO_DISPLAY</code> is supported only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">NULL</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection,
+ unless <em class="parameter"><code>display</code></em> is
+ <code class="constant">EGL_NO_DISPLAY</code> and
+ <em class="parameter"><code>name</code></em> is
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> is a valid but uninitialized
+ EGLDisplay.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>name</code></em> is not an accepted value.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml
new file mode 100644
index 0000000..14b4be2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQuerySurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQuerySurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQuerySurface —
+ return <abbr class="acronym">EGL</abbr> surface information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglQuerySurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQuerySurface</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>surface</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color space used by OpenGL and OpenGL ES
+ when rendering to the surface, either
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code> or
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the height of the surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the same attribute value specified when the
+ surface was created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>.
+ For a window or pixmap surface,
+ <em class="parameter"><code>value</code></em> is not modified.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns <code class="constant">EGL_TRUE</code> if texture has
+ mipmaps, <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ or <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>,
+ as described for
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <code class="constant">EGL_BACK_BUFFER</code>. For a pixmap
+ surface, it is always
+ <code class="constant">EGL_SINGLE_BUFFER</code>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <a class="citerefentry" href="eglQueryContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ Swap behavior may be either
+ <code class="constant">EGL_BUFFER_PRESERVED</code> or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, as
+ described for
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns format of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns type of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the interpretation of alpha values used by
+ OpenVG when rendering to the surface, either
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code> or
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color space used by OpenVG when rendering to
+ the surface, either
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code> or
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the width of the surface in pixels.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_DISPLAY_SCALING</code>.
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>,
+ <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>, and
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> are supported
+ only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Querying attributes <code class="constant">EGL_TEXTURE_FORMAT</code>,
+ <code class="constant">EGL_TEXTURE_TARGET</code>,
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>, or
+ <code class="constant">EGL_MIPMAP_LEVEL</code> for a non-pbuffer
+ surface is not an error, but <em class="parameter"><code>value</code></em> is
+ not modified.
+ </p>
+ <p>
+ <code class="constant">EGL_DISPLAY_SCALING</code> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </p>
+ <p>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>, or
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> will return the
+ constant value <code class="constant">EGL_UNKNOWN</code> (-1).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml
new file mode 100644
index 0000000..7040263
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglReleaseTexImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglReleaseTexImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglReleaseTexImage —
+ Releases a color buffer that is being used as a texture
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseTexImage</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">buffer</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </p>
+ <p>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ and <code class="function">eglReleaseTexImage</code>.
+ </p>
+ <p>
+ After a color buffer is released from a texture (either explicitly by calling
+ <code class="function">eglReleaseTexImage</code> or implicitly by calling a routine such as
+ <a class="citerefentry" href="glTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>),
+ all texture images that were defined by the color buffer become <code class="constant">NULL</code>
+ (it is as if <a class="citerefentry" href="glTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a> was called with an image of zero width).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml
new file mode 100644
index 0000000..a894b68
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglReleaseThread - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglReleaseThread">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglReleaseThread — Release EGL per-thread state</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseThread</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <span class="command"><strong>eglGetError</strong></span>, the currently bound
+ rendering API defined by <span class="command"><strong>eglBindAPI</strong></span>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </p>
+ <p>
+ <code class="constant">EGL_TRUE</code> is returned on success, and the
+ following actions are taken:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <code class="function">eglMakeCurrent</code> with ctx set to
+ <code class="constant">EGL_NO_CONTEXT</code> and both draw
+ and read set to <code class="constant">EGL_NO_SURFACE</code>
+ (see section 3.7.3).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <span class="command"><strong>eglBindAPI</strong></span>).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ <code class="function">eglReleaseThread</code> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </p>
+ <p>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <code class="function">eglReleaseThread</code>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Applications may call other EGL routines from a thread
+ following <code class="function">eglReleaseThread</code>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <code class="function">eglGetError</code>
+ immediately following a successful call to
+ <code class="function">eglReleaseThread</code> will return
+ <code class="constant">EGL_SUCCESS</code>, but will also result in
+ reallocating per-thread state.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <code class="function">eglReleaseThread</code> should succeed.
+ </p>
+ <p>
+ However, platform-dependent failures may be signaled through
+ the value returned from <code class="function">eglGetError</code>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <code class="function">eglReleaseThread</code> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetError.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetError</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml
new file mode 100644
index 0000000..0da8ac3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSurfaceAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSurfaceAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSurfaceAttrib —
+ set an <abbr class="acronym">EGL</abbr> surface attribute
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSurfaceAttrib</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to set.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the attributes required value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglSurfaceAttrib</code> sets the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>surface</code></em> to
+ <em class="parameter"><code>value</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the
+ following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ For mipmap textures, the
+ <code class="constant">EGL_MIPMAP_LEVEL</code> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ chooses the default implementation-defined filtering
+ method, while
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ A <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_BUFFER_PRESERVED</code> indicates
+ that color buffer contents are unaffected, while
+ <code class="constant">EGL_BUFFER_DESTROYED</code> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> is chosen by
+ the implementation.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of pbuffer attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, the value of attribute
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <em class="parameter"><code>surface</code></em> is not a pbuffer, then
+ attribute <code class="constant">EGL_MIPMAP_LEVEL</code> may be set,
+ but has no effect.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml
new file mode 100644
index 0000000..b256152
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSwapBuffers - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSwapBuffers">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSwapBuffers —
+ post <abbr class="acronym">EGL</abbr> surface color buffer to a native window
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapBuffers</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a back-buffered window
+ surface, then the color
+ buffer is copied (posted) to the native window associated with that
+ surface. If <em class="parameter"><code>surface</code></em> is a single-buffered
+ window, pixmap, or pixel buffer surface,
+ <code class="function">eglSwapBuffers</code> has no effect.
+ </p>
+ <p>
+ The contents of ancillary buffers are always undefined after
+ calling <code class="function">eglSwapBuffers</code>. The contents of the
+ color buffer are undefined if the value of the
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute of
+ <em class="parameter"><code>surface</code></em> is not
+ <code class="constant">EGL_BUFFER_PRESERVED</code>. The value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> can be set for some
+ surfaces using
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> applies only to the color
+ buffer. EGL has no way to specify or query whether or not
+ ancillary buffers are preserved, and applications should not
+ rely on this behavior.
+ </p>
+ <p>
+ <code class="function">eglSwapBuffers</code> performs an implicit
+ flush operation on the context (<code class="function">glFlush</code>
+ for an OpenGL ES or OpenGL context,
+ <code class="function">vgFlush</code> for an OpenVG context) bound to
+ <em class="parameter"><code>surface</code></em> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <code class="function">eglSwapBuffers</code>, but are not executed
+ until the buffer exchange is completed.
+ </p>
+ </div>
+ <div class="refsect1" id="resize">
+ <h2>Native Window Resizing</h2>
+ <p>
+ If the native window corresponding to
+ <em class="parameter"><code>surface</code></em> has been resized prior to the
+ swap, <em class="parameter"><code>surface</code></em> must be resized to match.
+ <em class="parameter"><code>surface</code></em> will normally be resized by the
+ EGL implementation at the time the native window is resized. If
+ the implementation cannot do this transparently to the client,
+ then <code class="function">eglSwapBuffers</code> must detect the change
+ and resize surface prior to copying its pixels to the native
+ window. If <em class="parameter"><code>surface</code></em> shrinks as a result of
+ resizing, some rendered pixels are lost. If
+ <em class="parameter"><code>surface</code></em> grows, the newly allocated buffer
+ contents are undefined. The resizing behavior described here
+ only maintains consistency of EGL surfaces and native windows;
+ clients are still responsible for detecting window size changes
+ (using platform-specific means) and changing their viewport and
+ scissor regions accordingly.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is supported
+ only if the EGL version is 1.2 or greater. In earlier versions,
+ behavior is as though the attribute exists, and always has the
+ value <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ </p>
+ <p>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a swap,
+ and that the <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute
+ applies only to the color buffer. This change in the
+ specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">glFlush</code>,
+ <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>,
+ <code class="function">vgFlush</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml
new file mode 100644
index 0000000..80eb980
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSwapInterval - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSwapInterval">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSwapInterval —
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapInterval</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">interval</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>interval</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The interval takes effect when <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> is
+ first called subsequent to the <code class="function">eglSwapInterval</code> call.
+ </p>
+ <p>
+ The <em class="parameter"><code>interval</code></em> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </p>
+ <p>
+ If <em class="parameter"><code>interval</code></em> is set to a value of <code class="constant">0</code>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <span class="type">EGLConfig</span> attributes
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code> and <code class="constant">EGL_MAX_SWAP_INTERVAL</code> respectively.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The swap interval has no effect on <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>.
+ </p>
+ <p>
+ The default swap interval is 1.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if there is no current context
+ on the calling thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if there is no surface
+ bound to the current context.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml
new file mode 100644
index 0000000..4c32f9b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglTerminate - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglTerminate">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglTerminate —
+ terminate an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglTerminate</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to terminate.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglTerminate</code> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <em class="parameter"><code>display</code></em> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ <p>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ again.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglTerminate</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml
new file mode 100644
index 0000000..5f88491
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitClient - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitClient">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitClient —
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitClient</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <code class="function">eglWaitClient</code> are guaranteed to be
+ executed before native rendering calls made after
+ <code class="function">eglWaitClient</code>. The same result can be
+ achieved using client API-specific commands such as
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>
+ or
+ <a class="citerefentry" href="vgFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitClient</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ <a class="citerefentry" href="vgFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml
new file mode 100644
index 0000000..020a502
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitGL - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitGL">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitGL —
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitGL</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <code class="function">eglWaitGL</code> are
+ guaranteed to be executed before native rendering calls made
+ after <code class="function">eglWaitGL</code>. The same result can be
+ achieved using
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitGL</code> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs. For backwards compatibility,
+ <code class="function">eglWaitGL</code> continues to be supported and
+ is equivalent to the series of commands
+ </p>
+ <pre class="programlisting">
+ EGLenum api = <code class="function">eglQueryAPI</code>();
+ <code class="function">eglBindAPI</code>(<code class="constant">EGL_OPENGL_ES_API</code>);
+ <code class="function">eglWaitClient</code>();
+ <code class="function">eglBindAPI</code>(api);
+ </pre>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitGL</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml
new file mode 100644
index 0000000..16cf5dd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitNative - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitNative">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitNative —
+ complete native execution prior to subsequent GL rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitNative</strong>(</code>
+ </td>
+ <td>EGLint <var class="pdparam">engine</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>engine</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a particular marking engine to be waited on.
+ Must be <code class="constant">EGL_CORE_NATIVE_ENGINE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ Native rendering calls made prior to <code class="function">eglWaitNative</code>
+ are guaranteed to be executed before GL rendering calls made after
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ <code class="function">eglWaitNative</code>
+ is ignored if there is no current
+ <abbr class="acronym">EGL</abbr>
+ rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>engine</code></em> is not a recognized marking engine.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml
new file mode 100644
index 0000000..4eeff76
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitSync —
+ Wait in the server for a sync object to be signalled
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitSync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">flags</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to wait on.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>flags</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies flags controlling wait behavior.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglWaitSync</code> is similar to
+ <code class="function">eglClientWaitSync</code>, but instead of blocking
+ and not returning to the application until
+ <em class="parameter"><code>sync</code></em> is signaled,
+ <code class="function">eglWaitSync</code> returns immediately. On
+ success, <code class="constant">EGL_TRUE</code> is returned, and the
+ server for the client API context will block until
+ <em class="parameter"><code>sync</code></em> is signaled.
+ </p>
+ <p>
+ Note: <code class="function">eglWaitSync</code> allows applications to
+ continue to queue commands from the application in anticipation
+ of the sync being signaled, potentially increasing parallelism
+ between application, client API server code, and the GPU. The
+ server only blocks execution of commands for the specific
+ context on which <code class="function">eglWaitSync</code> was issued;
+ other contexts implemented by the same server are not affected..
+ </p>
+ <p>
+ <em class="parameter"><code>sync</code></em> has the same meaning as for
+ <code class="function">eglClientWaitSync</code>.
+ </p>
+ <p>
+ <em class="parameter"><code>flags</code></em> must be 0.
+ </p>
+ <p>
+ <code class="function">eglWaitSync</code> requires support from the bound
+ client API, and will not succeed unless the same client API
+ properties described for creation of fence syncs in
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>
+ are satisfied.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglWaitSync</code> returns
+ <code class="constant">EGL_FALSE</code> on failure, and does not cause
+ the server for the client API context to block.
+ </p>
+ <p>
+ If the current context for the currently bound client API does
+ not support server waits, an <code class="constant">EGL_BAD_MATCH</code>
+ error is generated.
+ </p>
+ <p>
+ If no context is current for the currently bound client API
+ (i.e., <code class="function">eglGetCurrentContext</code> returns
+ <code class="constant">EGL_NO_CONTEXT</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> passed to
+ <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behavior is
+ undefined.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>flags</code></em> is not 0, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitSync</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/index.php b/glew/auto/EGL-Registry/sdk/docs/man/html/index.php
new file mode 100644
index 0000000..70d55cb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/index.php
@@ -0,0 +1,121 @@
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="style-index.css" />
+ <title>EGL Reference Pages</title>
+ <?php include 'accord.js'; ?>
+</head>
+<body>
+ <a href="indexflat.php">Use alternate (flat) index</a>
+ <div id="navwrap">
+ <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->
+ <li class="Level1">
+ <a href="start.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="Level1">EGL Entry Points
+ <ul class="Level2">
+ <a name="b"></a>
+ <li>b
+ <ul class="Level3">
+ <li><a href="eglBindAPI.xhtml" target="pagedisplay">eglBindAPI</a></li>
+ <li><a href="eglBindTexImage.xhtml" target="pagedisplay">eglBindTexImage</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="c"></a>
+ <li>c
+ <ul class="Level3">
+ <li><a href="eglChooseConfig.xhtml" target="pagedisplay">eglChooseConfig</a></li>
+ <li><a href="eglClientWaitSync.xhtml" target="pagedisplay">eglClientWaitSync</a></li>
+ <li><a href="eglCopyBuffers.xhtml" target="pagedisplay">eglCopyBuffers</a></li>
+ <li><a href="eglCreateContext.xhtml" target="pagedisplay">eglCreateContext</a></li>
+ <li><a href="eglCreateImage.xhtml" target="pagedisplay">eglCreateImage</a></li>
+ <li><a href="eglCreatePbufferFromClientBuffer.xhtml" target="pagedisplay">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a href="eglCreatePbufferSurface.xhtml" target="pagedisplay">eglCreatePbufferSurface</a></li>
+ <li><a href="eglCreatePixmapSurface.xhtml" target="pagedisplay">eglCreatePixmapSurface</a></li>
+ <li><a href="eglCreatePlatformPixmapSurface.xhtml" target="pagedisplay">eglCreatePlatformPixmapSurface</a></li>
+ <li><a href="eglCreatePlatformWindowSurface.xhtml" target="pagedisplay">eglCreatePlatformWindowSurface</a></li>
+ <li><a href="eglCreateSync.xhtml" target="pagedisplay">eglCreateSync</a></li>
+ <li><a href="eglCreateWindowSurface.xhtml" target="pagedisplay">eglCreateWindowSurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="d"></a>
+ <li>d
+ <ul class="Level3">
+ <li><a href="eglDestroyContext.xhtml" target="pagedisplay">eglDestroyContext</a></li>
+ <li><a href="eglDestroyImage.xhtml" target="pagedisplay">eglDestroyImage</a></li>
+ <li><a href="eglDestroySurface.xhtml" target="pagedisplay">eglDestroySurface</a></li>
+ <li><a href="eglDestroySync.xhtml" target="pagedisplay">eglDestroySync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="g"></a>
+ <li>g
+ <ul class="Level3">
+ <li><a href="eglGetConfigAttrib.xhtml" target="pagedisplay">eglGetConfigAttrib</a></li>
+ <li><a href="eglGetConfigs.xhtml" target="pagedisplay">eglGetConfigs</a></li>
+ <li><a href="eglGetCurrentContext.xhtml" target="pagedisplay">eglGetCurrentContext</a></li>
+ <li><a href="eglGetCurrentDisplay.xhtml" target="pagedisplay">eglGetCurrentDisplay</a></li>
+ <li><a href="eglGetCurrentSurface.xhtml" target="pagedisplay">eglGetCurrentSurface</a></li>
+ <li><a href="eglGetDisplay.xhtml" target="pagedisplay">eglGetDisplay</a></li>
+ <li><a href="eglGetError.xhtml" target="pagedisplay">eglGetError</a></li>
+ <li><a href="eglGetPlatformDisplay.xhtml" target="pagedisplay">eglGetPlatformDisplay</a></li>
+ <li><a href="eglGetProcAddress.xhtml" target="pagedisplay">eglGetProcAddress</a></li>
+ <li><a href="eglGetSyncAttrib.xhtml" target="pagedisplay">eglGetSyncAttrib</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="i"></a>
+ <li>i
+ <ul class="Level3">
+ <li><a href="eglInitialize.xhtml" target="pagedisplay">eglInitialize</a></li>
+ <li><a href="eglIntro.xhtml" target="pagedisplay">eglIntro</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="m"></a>
+ <li>m
+ <ul class="Level3">
+ <li><a href="eglMakeCurrent.xhtml" target="pagedisplay">eglMakeCurrent</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="q"></a>
+ <li>q
+ <ul class="Level3">
+ <li><a href="eglQueryAPI.xhtml" target="pagedisplay">eglQueryAPI</a></li>
+ <li><a href="eglQueryContext.xhtml" target="pagedisplay">eglQueryContext</a></li>
+ <li><a href="eglQueryString.xhtml" target="pagedisplay">eglQueryString</a></li>
+ <li><a href="eglQuerySurface.xhtml" target="pagedisplay">eglQuerySurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="r"></a>
+ <li>r
+ <ul class="Level3">
+ <li><a href="eglReleaseTexImage.xhtml" target="pagedisplay">eglReleaseTexImage</a></li>
+ <li><a href="eglReleaseThread.xhtml" target="pagedisplay">eglReleaseThread</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="s"></a>
+ <li>s
+ <ul class="Level3">
+ <li><a href="eglSurfaceAttrib.xhtml" target="pagedisplay">eglSurfaceAttrib</a></li>
+ <li><a href="eglSwapBuffers.xhtml" target="pagedisplay">eglSwapBuffers</a></li>
+ <li><a href="eglSwapInterval.xhtml" target="pagedisplay">eglSwapInterval</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="t"></a>
+ <li>t
+ <ul class="Level3">
+ <li><a href="eglTerminate.xhtml" target="pagedisplay">eglTerminate</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="w"></a>
+ <li>w
+ <ul class="Level3">
+ <li><a href="eglWaitClient.xhtml" target="pagedisplay">eglWaitClient</a></li>
+ <li><a href="eglWaitGL.xhtml" target="pagedisplay">eglWaitGL</a></li>
+ <li><a href="eglWaitNative.xhtml" target="pagedisplay">eglWaitNative</a></li>
+ <li><a href="eglWaitSync.xhtml" target="pagedisplay">eglWaitSync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ </ul> <!-- End Level2 -->
+ </li> <!-- End Level1 -->
+ </div> <!-- End containerurl -->
+ <script type="text/javascript">initiate();</script>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php b/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php
new file mode 100644
index 0000000..a272d65
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="style-index.css" />
+ <title>EGL Reference Pages</title>
+ <!-- Don't include accord.js -->
+</head>
+<body>
+ <a href="index.php">Use alternate (accordion-style) index</a>
+ <center>
+<div id="container">
+ <b><a href="#b" style="text-decoration:none">b</a></b> &nbsp;
+ <b><a href="#c" style="text-decoration:none">c</a></b> &nbsp;
+ <b><a href="#d" style="text-decoration:none">d</a></b> &nbsp;
+ <b><a href="#g" style="text-decoration:none">g</a></b> &nbsp;
+ <b><a href="#i" style="text-decoration:none">i</a></b> &nbsp;
+ <b><a href="#m" style="text-decoration:none">m</a></b> &nbsp;
+ <b><a href="#q" style="text-decoration:none">q</a></b> &nbsp;
+ <b><a href="#r" style="text-decoration:none">r</a></b> &nbsp;
+ <b><a href="#s" style="text-decoration:none">s</a></b> &nbsp;
+ <b><a href="#t" style="text-decoration:none">t</a></b> &nbsp;
+ <b><a href="#w" style="text-decoration:none">w</a></b> &nbsp;
+ </div>
+</center>
+ <div id="navwrap">
+ <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->
+ <li class="Level1">
+ <a href="start.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="Level1">EGL Entry Points
+ <ul class="Level2">
+ <a name="b"></a>
+ <li>b
+ <ul class="Level3">
+ <li><a href="eglBindAPI.xhtml" target="pagedisplay">eglBindAPI</a></li>
+ <li><a href="eglBindTexImage.xhtml" target="pagedisplay">eglBindTexImage</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="c"></a>
+ <li>c
+ <ul class="Level3">
+ <li><a href="eglChooseConfig.xhtml" target="pagedisplay">eglChooseConfig</a></li>
+ <li><a href="eglClientWaitSync.xhtml" target="pagedisplay">eglClientWaitSync</a></li>
+ <li><a href="eglCopyBuffers.xhtml" target="pagedisplay">eglCopyBuffers</a></li>
+ <li><a href="eglCreateContext.xhtml" target="pagedisplay">eglCreateContext</a></li>
+ <li><a href="eglCreateImage.xhtml" target="pagedisplay">eglCreateImage</a></li>
+ <li><a href="eglCreatePbufferFromClientBuffer.xhtml" target="pagedisplay">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a href="eglCreatePbufferSurface.xhtml" target="pagedisplay">eglCreatePbufferSurface</a></li>
+ <li><a href="eglCreatePixmapSurface.xhtml" target="pagedisplay">eglCreatePixmapSurface</a></li>
+ <li><a href="eglCreatePlatformPixmapSurface.xhtml" target="pagedisplay">eglCreatePlatformPixmapSurface</a></li>
+ <li><a href="eglCreatePlatformWindowSurface.xhtml" target="pagedisplay">eglCreatePlatformWindowSurface</a></li>
+ <li><a href="eglCreateSync.xhtml" target="pagedisplay">eglCreateSync</a></li>
+ <li><a href="eglCreateWindowSurface.xhtml" target="pagedisplay">eglCreateWindowSurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="d"></a>
+ <li>d
+ <ul class="Level3">
+ <li><a href="eglDestroyContext.xhtml" target="pagedisplay">eglDestroyContext</a></li>
+ <li><a href="eglDestroyImage.xhtml" target="pagedisplay">eglDestroyImage</a></li>
+ <li><a href="eglDestroySurface.xhtml" target="pagedisplay">eglDestroySurface</a></li>
+ <li><a href="eglDestroySync.xhtml" target="pagedisplay">eglDestroySync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="g"></a>
+ <li>g
+ <ul class="Level3">
+ <li><a href="eglGetConfigAttrib.xhtml" target="pagedisplay">eglGetConfigAttrib</a></li>
+ <li><a href="eglGetConfigs.xhtml" target="pagedisplay">eglGetConfigs</a></li>
+ <li><a href="eglGetCurrentContext.xhtml" target="pagedisplay">eglGetCurrentContext</a></li>
+ <li><a href="eglGetCurrentDisplay.xhtml" target="pagedisplay">eglGetCurrentDisplay</a></li>
+ <li><a href="eglGetCurrentSurface.xhtml" target="pagedisplay">eglGetCurrentSurface</a></li>
+ <li><a href="eglGetDisplay.xhtml" target="pagedisplay">eglGetDisplay</a></li>
+ <li><a href="eglGetError.xhtml" target="pagedisplay">eglGetError</a></li>
+ <li><a href="eglGetPlatformDisplay.xhtml" target="pagedisplay">eglGetPlatformDisplay</a></li>
+ <li><a href="eglGetProcAddress.xhtml" target="pagedisplay">eglGetProcAddress</a></li>
+ <li><a href="eglGetSyncAttrib.xhtml" target="pagedisplay">eglGetSyncAttrib</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="i"></a>
+ <li>i
+ <ul class="Level3">
+ <li><a href="eglInitialize.xhtml" target="pagedisplay">eglInitialize</a></li>
+ <li><a href="eglIntro.xhtml" target="pagedisplay">eglIntro</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="m"></a>
+ <li>m
+ <ul class="Level3">
+ <li><a href="eglMakeCurrent.xhtml" target="pagedisplay">eglMakeCurrent</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="q"></a>
+ <li>q
+ <ul class="Level3">
+ <li><a href="eglQueryAPI.xhtml" target="pagedisplay">eglQueryAPI</a></li>
+ <li><a href="eglQueryContext.xhtml" target="pagedisplay">eglQueryContext</a></li>
+ <li><a href="eglQueryString.xhtml" target="pagedisplay">eglQueryString</a></li>
+ <li><a href="eglQuerySurface.xhtml" target="pagedisplay">eglQuerySurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="r"></a>
+ <li>r
+ <ul class="Level3">
+ <li><a href="eglReleaseTexImage.xhtml" target="pagedisplay">eglReleaseTexImage</a></li>
+ <li><a href="eglReleaseThread.xhtml" target="pagedisplay">eglReleaseThread</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="s"></a>
+ <li>s
+ <ul class="Level3">
+ <li><a href="eglSurfaceAttrib.xhtml" target="pagedisplay">eglSurfaceAttrib</a></li>
+ <li><a href="eglSwapBuffers.xhtml" target="pagedisplay">eglSwapBuffers</a></li>
+ <li><a href="eglSwapInterval.xhtml" target="pagedisplay">eglSwapInterval</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="t"></a>
+ <li>t
+ <ul class="Level3">
+ <li><a href="eglTerminate.xhtml" target="pagedisplay">eglTerminate</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="w"></a>
+ <li>w
+ <ul class="Level3">
+ <li><a href="eglWaitClient.xhtml" target="pagedisplay">eglWaitClient</a></li>
+ <li><a href="eglWaitGL.xhtml" target="pagedisplay">eglWaitGL</a></li>
+ <li><a href="eglWaitNative.xhtml" target="pagedisplay">eglWaitNative</a></li>
+ <li><a href="eglWaitSync.xhtml" target="pagedisplay">eglWaitSync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ </ul> <!-- End Level2 -->
+ </li> <!-- End Level1 -->
+ </div> <!-- End containerurl -->
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css
new file mode 100644
index 0000000..017c2d0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css
@@ -0,0 +1,209 @@
+/* Taken from OpenCL styles-css.xsl, which is imbedded in CL man pages *
+/* This style sets a margin around the entire page */
+html, body {
+ margin: 10px;
+}
+
+p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+}
+
+h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.pdparam {
+ font: italic 16px verdana, sans-serif;
+}
+
+.term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+}
+
+.type {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.parameter {
+ font-style: italic;
+}
+
+a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+}
+
+a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+}
+
+div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+}
+
+code.constant {
+ font: normal 16px courier new, monospace !important;
+}
+
+span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+code.function {
+ font: bold 16px verdana, sans-serif !important;
+}
+
+b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+}
+
+code.varname {
+ font: italic 16px verdana, sans-serif;
+}
+
+code.replaceable {
+ font: italic 16px courier new, monospace;
+}
+
+code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.parameter {
+ font-style: italic;
+}
+
+code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+/* PARAMETER: This style controls spacing between the terms in Parameter section */
+dt {
+ margin-top: 15px;
+}
+
+/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+}
+
+div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+
+/* EXAMPLE: These styles apply only to the Example section */
+div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+}
+
+div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+}
+
+div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+}
+
+/* <refsect3> is used only for the copyright statement (copyright.xml)
+ at the bottom of the page
+ */
+div.refsect3 p {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl
new file mode 100644
index 0000000..8b8adb5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl
@@ -0,0 +1,126 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/xhtml5/onechunk.xsl"/>
+
+ <!-- These two options generate a file named ID.xhtml, where ID is the value
+ of the document xml:id attribute, when processed with the chunking
+ spreadsheet onechunk.xsl. See
+ http://www.sagehill.net/docbookxsl/OneChunk.html -->
+ <xsl:param name="use.id.as.filename">1</xsl:param>
+ <xsl:param name="root.filename"></xsl:param>
+
+ <!-- html.stylesheet adds the specified stylesheet to the page headers.
+ docbook.css.link removes the default docbook.css.
+ -->
+ <xsl:param name="html.stylesheet">khronos-man.css</xsl:param>
+ <xsl:param name="docbook.css.link">0</xsl:param>
+ <xsl:param name="docbook.css.source"></xsl:param>
+
+ <!-- Indent HTML, which requires using onechunk.xsl instead of docbook.xsl -->
+ <xsl:param name="chunker.output.indent">yes</xsl:param>
+
+ <!-- Style parameters -->
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param>
+ <xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+
+ <!-- Generate links in href= attributes for <citerefentry>. Note
+ that in the XSL-NS stylesheets, using the Docbook namespace
+ prefix on the select expressions is *required*. Declaring
+ xmlns:db at xsl:stylesheet scope causes other problems.
+
+ If there is a value specified for the href attribute in
+ citerefentry, then create the link from that attribute instead
+ of the refentrytitle.
+ -->
+ <!-- The @href syntax isn't used by EGL at present -->
+ <xsl:template xmlns:db="http://docbook.org/ns/docbook"
+ name="generate.citerefentry.link">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ <xsl:text>.xhtml</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="db:refentrytitle"/>
+ <xsl:text>.xhtml</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Reasonable defaults for tables -->
+ <xsl:param name="default.table.frame">all</xsl:param>
+ <xsl:param name="table.borders.with.css" select="1"></xsl:param>
+ <xsl:param name="table.cell.border.thickness">2px</xsl:param>
+ <xsl:param name="table.frame.border.thickness">2px</xsl:param>
+
+ <!-- Add MathJax <script> tags to document <head> -->
+ <!-- Now that the xmlns:db is declared above, it gets emitted on the
+ <script> elements for unknown reasons
+ -->
+ <!-- Per http://docs.mathjax.org/en/latest/start.html#secure-access-to-the-cdn
+ use their secure URI, instead of the HTTP URI
+ src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+ -->
+ <!-- This isn't used by EGL at present -->
+<!--
+ <xsl:template name="user.head.content">
+ <script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ MathML: {
+ extensions: ["content-mathml.js"]
+ },
+ tex2jax: {
+ inlineMath: [['$','$'], ['\\(','\\)']]
+ }
+ });
+ </script>
+ <script type="text/javascript"
+ src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+ </script>
+ </xsl:template>
+-->
+
+ <!-- Add boilerplate to XHTML page title element describing which
+ set of man pages this is. This should really be an XSL
+ parameter which could be set on the command line -->
+ <xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+ <title>
+ <xsl:copy-of select="$title"/>
+ <xsl:text> - EGL Reference Pages</xsl:text>
+ </title>
+ </xsl:template>
+
+ <!-- Root template for processing the document -->
+ <xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <!-- The directives in egl-man.xsl used to be here -->
+
+ <!-- The template refsect3 is inserted here to deal with the
+ copyright. This adds in the text from the include file
+ copyright.inc.xsl -->
+ <!--
+ <xsl:template match="refsect3">
+ <div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$copyright"/>
+ </div>
+ </xsl:template>
+ -->
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py b/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py
new file mode 100644
index 0000000..9cde015
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py
@@ -0,0 +1,316 @@
+#!/usr/bin/python3
+#
+# Copyright (c) 2013-2014 The Khronos Group Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and/or associated documentation files (the
+# "Materials"), to deal in the Materials without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Materials, and to
+# permit persons to whom the Materials are furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Materials.
+#
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+import io, os, re, string, sys;
+
+if __name__ == '__main__':
+ if (len(sys.argv) != 5):
+ print('Usage:', sys.argv[0], ' gendir srcdir accordfilename flatfilename', file=sys.stderr)
+ exit(1)
+ else:
+ gendir = sys.argv[1]
+ srcdir = sys.argv[2]
+ accordfilename = sys.argv[3]
+ flatfilename = sys.argv[4]
+ # print(' gendir = ', gendir, ' srcdir = ', srcdir, 'accordfilename = ', accordfilename, 'flatfilename = ', flatfilename)
+else:
+ print('Unknown invocation mode', file=sys.stderr)
+ exit(1)
+
+# Various levels of indentation in generated HTML
+ind1 = ' '
+ind2 = ind1 + ind1
+ind3 = ind2 + ind1
+ind4 = ind2 + ind2
+
+# Symbolic names
+notAlias = False
+isAlias = True
+
+# Page title
+pageTitle = 'EGL Reference Pages'
+
+# Docbook source and generated HTML 5 file extensions
+srcext = '.xml'
+genext = '.xhtml'
+
+# List of generated files
+files = os.listdir(gendir)
+
+# Feature - class representing a command or function to be indexed, used
+# as dictionary values keyed by the feature name to be indexed.
+#
+# Members
+# file - name of file containing the feature
+# feature - feature name for the index (basis for the dictionary key).
+# alias - True if this is an alias of another feature in the file.
+# Usually if alias is False, feature is the basename of file.
+# apiCommand - True if this is an API command, or should be grouped
+# like one
+class Feature:
+ def __init__(self,
+ file = None,
+ feature = None,
+ alias = False,
+ apiCommand = None):
+ self.file = file
+ self.feature = feature
+ self.alias = alias
+ self.apiCommand = apiCommand
+ # This is the API-dependent command prefix
+ self.prefix = 'egl'
+ self.prefixLen = len(self.prefix)
+ def makeKey(self):
+ # Return dictionary / sort key based on the feature name
+ if (self.apiCommand and self.feature[0:self.prefixLen]
+ == self.prefix):
+ return self.feature[self.prefixLen:]
+ else:
+ return self.feature
+
+# Add dictionary entry for specified Feature.
+# The key used is the feature name, with the leading 'gl' stripped
+# off if this is an API command
+def addkey(dict, feature):
+ key = feature.makeKey()
+ if (key in dict.keys()):
+ print('Key', key, ' already exists in dictionary!')
+ else:
+ dict[key] = feature
+
+# Create list of entry point names to be indexed.
+# Unlike the old Perl script, this proceeds as follows:
+# - Each .xhtml page with a parent .xml page gets an
+# index entry for its base name.
+# - Additionally, each <function> tag inside a <funcdef>
+# in the parent page gets an aliased index entry.
+# - Each .xhtml page *without* a parent is reported but
+# not indexed.
+# - Each collision in index terms is reported.
+# - Index terms are keys in a dictionary whose entries
+# are [ pagename, alias, glPrefix ] where pagename is
+# the base name of the indexed page and alias is True
+# if this index isn't the same as pagename.
+# - API keys have their glPrefix value set to True,
+# GLSL keys to False. There is a simplistic way of
+# telling the files apart based on the file name:
+#
+# * Everything starting with 'egl[A-Z]' is API
+# * 'removedTypes.*' is API (more may be added)
+# * Everything else is GLSL
+
+def isAPIfile(entrypoint):
+ if (re.match('^egl[A-Z]', entrypoint) or entrypoint == 'removedTypes'):
+ return True
+ else:
+ return False
+
+# Dictionary of all keys mapped to Feature values
+refIndex = {}
+
+for file in files:
+ # print('Processing file', file)
+ (entrypoint,ext) = os.path.splitext(file)
+ if (ext == genext):
+ parent = srcdir + '/' + entrypoint + srcext
+ # Determine if this is an API or GLSL page
+ apiCommand = isAPIfile(entrypoint)
+ if (os.path.exists(parent)):
+ addkey(refIndex, Feature(file, entrypoint, False, apiCommand))
+ # Search parent file for <function> tags inside <funcdef> tags
+ # This doesn't search for <varname> inside <fieldsynopsis>, because
+ # those aren't on the same line and it's hard.
+ fp = open(parent)
+ for line in fp.readlines():
+ # Look for <function> tag contents and add as aliases
+ # Don't add the same key twice
+ for m in re.finditer(r"<funcdef>.*<function>(.*)</function>.*</funcdef>", line):
+ funcname = m.group(1)
+ if (funcname != entrypoint):
+ addkey(refIndex, Feature(file, funcname, True, apiCommand))
+ fp.close()
+ else:
+ print('No parent page for', file, ', will not be indexed')
+
+# Some utility functions for generating the navigation table
+# Opencl_tofc.html uses style.css instead of style-index.css
+# flatMenu - if True, don't include accordion JavaScript,
+# generating a flat (expanded) menu.
+# letters - if not None, include per-letter links to within
+# the indices for each letter in the list.
+# altMenu - if not None, the name of the alternate index to
+# link to.
+def printHeader(fp, flatMenu = False, letters = None, altMenu = None):
+ if (flatMenu):
+ scriptInclude = ' <!-- Don\'t include accord.js -->'
+ else:
+ scriptInclude = ' <?php include \'accord.js\'; ?>'
+
+ print('<html>',
+ '<head>',
+ ' <link rel="stylesheet" type="text/css" href="style-index.css" />',
+ ' <title>' + pageTitle + '</title>',
+ scriptInclude,
+ '</head>',
+ '<body>',
+ sep='\n', file=fp)
+
+ if (altMenu):
+ if (flatMenu):
+ altLabel = '(accordion-style)'
+ else:
+ altLabel = '(flat)'
+ print(' <a href="' + altMenu + '">' +
+ 'Use alternate ' + altLabel + ' index' +
+ '</a>', file=fp)
+
+ if (letters):
+ print(' <center>\n<div id="container">', file=fp)
+ for letter in letters:
+ print(' <b><a href="#' +
+ letter +
+ '" style="text-decoration:none">' +
+ letter +
+ '</a></b> &nbsp;', file=fp)
+ print(' </div>\n</center>', file=fp)
+
+ print(' <div id="navwrap">',
+ ' <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->',
+ ' <li class="Level1">',
+ ' <a href="start.html" target="pagedisplay">Introduction</a>',
+ ' </li>',
+ sep='\n', file=fp)
+
+def printFooter(fp, flatMenu = False):
+ print(' </div> <!-- End containerurl -->', file=fp)
+ if (not flatMenu):
+ print(' <script type="text/javascript">initiate();</script>', file=fp)
+ print('</body>',
+ '</html>',
+ sep='\n', file=fp)
+
+# Add a nav table entry. key = link name, feature = Feature info for key
+def addMenuLink(key, feature, fp):
+ file = feature.file
+ linkname = feature.feature
+
+ print(ind4 + '<li><a href="' + file + '" target="pagedisplay">'
+ + linkname + '</a></li>',
+ sep='\n', file=fp)
+
+# Begin index section for a letter, include an anchor to link to
+def beginLetterSection(letter, fp):
+ print(ind2 + '<a name="' + letter + '"></a>',
+ ind2 + '<li>' + letter,
+ ind3 + '<ul class="Level3">',
+ sep='\n', file=fp)
+
+# End index section for a letter
+def endLetterSection(opentable, fp):
+ if (opentable == 0):
+ return
+ print(ind3 + '</ul> <!-- End Level3 -->',
+ ind2 + '</li>',
+ sep='\n', file=fp)
+
+# Return the keys in a dictionary sorted by name.
+# Select only keys matching whichKeys (see genDict below)
+def sortedKeys(dict, whichKeys):
+ list = []
+ for key in dict.keys():
+ if (whichKeys == 'all' or
+ (whichKeys == 'api' and dict[key].apiCommand) or
+ (whichKeys == 'glsl' and not dict[key].apiCommand)):
+ list.append(key)
+ list.sort(key=str.lower)
+ return list
+
+# Generate accordion menu for this dictionary, titled as specified.
+#
+# If whichKeys is 'all', generate index for all features
+# If whichKeys is 'api', generate index only for API features
+# If whichKeys is 'glsl', generate index only for GLSL features
+#
+# fp is the file to write to
+def genDict(dict, title, whichKeys, fp):
+ print(ind1 + '<li class="Level1">' + title,
+ ind2 + '<ul class="Level2">',
+ sep='\n', file=fp)
+
+ # Print links for sorted keys in each letter section
+ curletter = ''
+ opentable = 0
+
+ # Determine which letters are in the table of contents for this
+ # dictionary. If apiPrefix is set, strip the API prefix from each
+ # key containing it first.
+
+ # Generatesorted list of page indexes. Select keys matching whichKeys.
+ keys = sortedKeys(dict, whichKeys)
+
+ # print('@ Sorted list of page indexes:\n', keys)
+
+ for key in keys:
+ # Character starting this key
+ c = str.lower(key[0])
+
+ if (c != curletter):
+ endLetterSection(opentable, fp)
+ # Start a new subtable for this letter
+ beginLetterSection(c, fp)
+ opentable = 1
+ curletter = c
+ addMenuLink(key, dict[key], fp)
+ endLetterSection(opentable, fp)
+
+ print(ind2 + '</ul> <!-- End Level2 -->',
+ ind1 + '</li> <!-- End Level1 -->',
+ sep='\n', file=fp)
+
+######################################################################
+
+# Generate the accordion menu
+fp = open(accordfilename, 'w')
+printHeader(fp, flatMenu = False, altMenu = flatfilename)
+
+genDict(refIndex, 'EGL Entry Points', 'all', fp)
+
+printFooter(fp, flatMenu = False)
+fp.close()
+
+######################################################################
+
+# Generate the non-accordion menu, with combined API and GLSL sections
+fp = open(flatfilename, 'w')
+
+# Set containing all index letters
+indices = { key[0].lower() for key in refIndex.keys() }
+letters = [c for c in indices]
+letters.sort()
+
+printHeader(fp, flatMenu = True, letters = letters, altMenu = accordfilename)
+
+genDict(refIndex, 'EGL Entry Points', 'all', fp)
+
+printFooter(fp, flatMenu = True)
+fp.close()
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl
new file mode 100644
index 0000000..e91022b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl
@@ -0,0 +1,174 @@
+<!-- The following is content that used to be in the EGL XSL directives
+ now found in khronos-man.xsl. It is OpenCL formatting stuff done by
+ Miller & Mattson and is being ignored for the moment. -->
+
+ <!-- Set this param to a placeholder for the base URL of the
+ external specification document. Include the beginning of the
+ 'namedest' function as well. See the script pageNumberLookup.rb
+ to see how this placeholder gets replaced by the actual spec
+ URL and target page number. This placeholder can be any string,
+ and only needs to match the same placeholder string in
+ pageNumberLookup.rb. -->
+ <!-- This isn't used by EGL at present -->
+ <xsl:param name="SpecBaseUrl">http://www.khronos.org/registry/egl/specs/eglTBD.pdf#namedest=</xsl:param>
+
+ <!-- The following template creates the link for the Specification section -->
+ <!-- This isn't used by EGL at present -->
+ <xsl:template match="olink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$SpecBaseUrl" />
+ <xsl:value-of select="@uri" />
+ <xsl:text disable-output-escaping="yes">" target="OpenCL Spec"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+ <!-- The following enables use of ulink for regular URLs on the pages-->
+ <!-- This isn't used by EGL at present -->
+ <xsl:template match="ulink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="@url" />
+ <xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+
+ <!-- The templates gentext-refname and refnamediv are inserted here so
+ we can have the refname displayed as the H1 header on the page -->
+ <xsl:template name="gentext-refname">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:value-of select="refname"/>
+ </xsl:template>
+
+ <xsl:template match="refnamediv">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h1>
+ <xsl:call-template name="gentext-refname">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h1>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+ </xsl:template>
+
+ <!-- The templates refname and refpurpose are inserted here so that we can
+ modify the layout of these values on the HTML page -->
+ <xsl:template match="refname" />
+ <xsl:template match="refpurpose">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+
+ <!-- The Link template allows us to embed links in the <funcprototype>,
+ even though this is not valid DocBook markup -->
+ <xsl:template match="link" mode="ansi-tabular">
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <!-- This is somewhat redundant with the following template -->
+ <xsl:template match="funcdef/replaceable">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <!-- The following template enables the <replaceable> tag inside
+ <funcdef>, <paramdef>, and <function> to generate <em> in the HTML output -->
+ <xsl:template match="funcdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="paramdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="function/replaceable" mode="ansi-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="refname/replaceable" mode="kr-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <!-- The templates funcprototype and paramdef are here so we can modify
+ the layout of the synopsis so that it is not broken into so many
+ columns in the table, control indenting, and more. -->
+
+ <!-- funcprototype: ansi, tabular -->
+
+ <xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr valign="bottom">
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </td>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[position() &gt; 1]">
+ <tr valign="top">
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="type and funcparams">
+ <td>
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="type/following-sibling::node()" mode="kr-tabular-funcsynopsis-mode"/>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <!-- OpenCL functions do not end with a semi-colon.
+ <xsl:text>;</xsl:text> -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/present.css b/glew/auto/EGL-Registry/sdk/docs/man/html/present.css
new file mode 100644
index 0000000..6a02d35
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/present.css
@@ -0,0 +1,47 @@
+@charset "utf-8";
+/* CSS Document */
+ li { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ ul { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ a:link, a:visited {color:blue; text-decoration:none;}
+ a:hover {color:blue; text-decoration:none; background-color:FFFF99; }
+
+ #navwrap {
+ width: 320px;
+ margin:0 0 0 4px;
+ padding:0;
+ }
+
+ #containerul, #containerul ul{
+ text-align:left;
+ margin:0 0 0 4px; /* Removes browser default margins applied to the lists. */
+ padding:0; /* Removes browser default padding applied to the lists. */
+ }
+
+ #containerul li{
+ margin:0 0 0 15px; /* A left margin to indent the list items and give the menu a sense of structure. */
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 12px verdana, sans-serif;
+ }
+
+ #containerul li.Level1 {
+ margin:0 0 0 0;
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 14px verdana, sans-serif;
+ }
+
+ #containerul .symbols{ /* Various styles to position the symbols next to the items in the menu. */
+ background-repeat:no-repeat;
+ float:left;
+ height:14px;
+ margin-right:5px;
+ margin-top:1px;
+ width:14px;
+ }
+
+#containerul ul.Level2 {
+ margin:0;
+ padding: 0;
+ }
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/start.html b/glew/auto/EGL-Registry/sdk/docs/man/html/start.html
new file mode 100644
index 0000000..36c5528
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/start.html
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>EGL Reference Pages</title>
+ <link rel="stylesheet" href="khronos-man.css"/>
+ </head>
+ <body>
+ <div class="refentry" id="start">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h1>EGL Reference Pages</h1>
+ <p/>
+ </div>
+ <div class="refsect1" id="description">
+ <p>
+ <img src="EGL_300.png" alt=""
+ hspace="40" vspace="40" border="0" align="right"
+ xmlns="http://www.w3.org/1999/xhtml" />
+ </p>
+ <p> EGL&trade; is an interface between Khronos rendering
+ APIs such as OpenGL ES or OpenVG and the underlying
+ native platform window system. It handles graphics
+ context management, surface/buffer binding, and
+ rendering synchronization and enables high-performance,
+ accelerated, mixed-mode 2D and 3D rendering using other
+ Khronos APIs. </p>
+ <p> The reference pages describe EGL 1.5, but can be used
+ with earlier versions since each page notes when
+ features are available only starting with specific older
+ versions (1.2, 1.3, and 1.4). </p>
+ <p> A more detailed overview of EGL functionality and
+ technical concepts can be found in the <a
+ target="pagedisplay" href="eglIntro.html">eglIntro</a>
+ page. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Browser Compatibility</h2>
+ <p> The reference pages are now generated in HTML5 format.
+ Some pages contain imbedded MathML and rely on <a
+ href="http://www.mathjax.org/">MathJax</a> to render
+ mathematical equations on browsers which do not natively
+ support MathML. This should work much better on Chrome,
+ Safari, and other browsers which don't support MathML.
+ </p>
+ <p> However, HTML5 isn't well supported on IE 8 or earlier
+ versions. We recommend you use a more recent browser for
+ viewing the reference pages. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Downloading Reference Page Sources</h2>
+ <p> The Docbook source for the reference pages is available
+ in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/">
+ KhronosGroup/EGL-Registry</a> GitHub repository. You can
+ build a ref page distribution of your own using open
+ source tools. See the <a
+ href="https://github.com/KhronosGroup/OpenGL-Refpages/blob/master/README.adoc">
+ OpenGL refpage README</a> for more information on needed
+ tools. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Feedback</h2>
+ <p> If you find errors in or problems with the reference
+ pages, please file a GitHub issue in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/">
+ KhronosGroup/EGL-Registry</a> GitHub repository. If you
+ have a fix available, please propose a pull request in
+ the same repository. </p>
+ </div>
+ <div class="refsect3">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright &#169; 2003-2018 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css b/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css
new file mode 100644
index 0000000..00fd1ed
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css
@@ -0,0 +1,2 @@
+@import url("undohtml.css");
+@import url("present.css");
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css b/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css
new file mode 100644
index 0000000..a2d510f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css
@@ -0,0 +1,9 @@
+/* -- undo browser HTML defaults -- */
+/* -- Global resets of all default items -- */
+
+:link,:visited {text-decoration: none;}
+ul,ol {list-style: none;}
+h1,h2,h3,h4,h5,h6,pre,code,p {font-size: 1em;}
+ul,ol,dl,li,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {margin: 0; padding: 0;}
+a img,:link img,:visited img {border: none;}
+address {font-style: normal;}
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/vn b/glew/auto/EGL-Registry/sdk/docs/man/html/vn
new file mode 100644
index 0000000..c59df02
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/vn
@@ -0,0 +1,221 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style><![endif]--><style><!--
+/* Font Definitions */
+@font-face
+ {font-family:"MS Mincho";
+ panose-1:2 2 6 9 4 2 5 8 3 4;}
+@font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;}
+@font-face
+ {font-family:Calibri;
+ panose-1:2 15 5 2 2 2 4 3 2 4;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;}
+@font-face
+ {font-family:"\@MS Mincho";
+ panose-1:2 2 6 9 4 2 5 8 3 4;}
+@font-face
+ {font-family:Consolas;
+ panose-1:2 11 6 9 2 2 4 3 2 4;}
+/* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:11.0pt;
+ font-family:"Calibri","sans-serif";}
+h1
+ {mso-style-priority:9;
+ mso-style-link:"Heading 1 Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ text-indent:0cm;
+ page-break-after:avoid;
+ mso-list:l0 level1 lfo2;
+ font-size:12.0pt;
+ font-family:"Tahoma","sans-serif";
+ color:black;}
+h2
+ {mso-style-priority:9;
+ mso-style-link:"Heading 2 Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ text-indent:0cm;
+ page-break-after:avoid;
+ mso-list:l0 level2 lfo2;
+ font-size:10.0pt;
+ font-family:"Tahoma","sans-serif";}
+a:link, span.MsoHyperlink
+ {mso-style-priority:99;
+ color:blue;
+ text-decoration:underline;}
+a:visited, span.MsoHyperlinkFollowed
+ {mso-style-priority:99;
+ color:purple;
+ text-decoration:underline;}
+p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
+ {mso-style-priority:99;
+ mso-style-link:"Plain Text Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:10.5pt;
+ font-family:Consolas;}
+p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
+ {mso-style-priority:34;
+ margin-top:0cm;
+ margin-right:0cm;
+ margin-bottom:0cm;
+ margin-left:36.0pt;
+ margin-bottom:.0001pt;
+ font-size:11.0pt;
+ font-family:"Calibri","sans-serif";}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-link:"Heading 1";
+ font-family:"Tahoma","sans-serif";
+ color:black;
+ font-weight:bold;}
+span.Heading2Char
+ {mso-style-name:"Heading 2 Char";
+ mso-style-priority:9;
+ mso-style-link:"Heading 2";
+ font-family:"Tahoma","sans-serif";
+ font-weight:bold;}
+span.PlainTextChar
+ {mso-style-name:"Plain Text Char";
+ mso-style-priority:99;
+ mso-style-link:"Plain Text";
+ font-family:Consolas;}
+span.EmailStyle22
+ {mso-style-type:personal-compose;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle23
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle24
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle25
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle26
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle27
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle28
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle29
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ font-size:10.0pt;}
+@page WordSection1
+ {size:612.0pt 792.0pt;
+ margin:72.0pt 72.0pt 72.0pt 72.0pt;}
+div.WordSection1
+ {page:WordSection1;}
+/* List Definitions */
+@list l0
+ {mso-list-id:1;
+ mso-list-template-ids:699138934;}
+@list l0:level1
+ {mso-level-number-format:none;
+ mso-level-style-link:"Heading 1";
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level2
+ {mso-level-number-format:none;
+ mso-level-style-link:"Heading 2";
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level3
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level4
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level5
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level6
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level7
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level8
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level9
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+ol
+ {margin-bottom:0cm;}
+ul
+ {margin-bottom:0cm;}
+--></style><!--[if gte mso 9]><xml>
+<o:shapedefaults v:ext="edit" spidmax="1026" />
+</xml><![endif]--><!--[if gte mso 9]><xml>
+<o:shapelayout v:ext="edit">
+<o:idmap v:ext="edit" data="1" />
+</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal style='page-break-after:avoid'><b><span lang=EN-US style='font-size:16.0pt;color:black'>Call-in Details<o:p></o:p></span></b></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>U.S. Toll-free: +1 (866) 365-4406<o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>U.S. Toll:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;+1 (303) 248-9655<o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Access code: &nbsp;&nbsp;8040316#<o:p></o:p></span></b></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><a href="https://conf.cfer.com/?sp_id=154&amp;comp_id=345368&amp;an=3032489655&amp;ac=8040316&amp;startview=GOS&amp;login=true">List of international dial-in numbers</a><o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Please let me know if you have any additional agenda items, intend to discuss a dormant item or wish to prioritise a topic.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Alon<o:p></o:p></span></p><div class=MsoNormal align=center style='text-align:center'><b><span lang=EN-US><hr size=2 width="100%" align=center></span></b></div><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='font-size:16.0pt;color:black'>Agenda<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='font-size:12.0pt;color:black'>Corrections to previous minutes<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US>- Minutes of EGL call 16th July 2014<o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Future direction of EGL<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US style='color:black'><a href="https://cvs.khronos.org/wiki/index.php/EGL/EGLNextGoals">Wiki page for EGL future direction goal discussion</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Alon &#8211; big news from GL Common F2F in Bellevue was the contribution of XGL from AMD and the group agreeing to use it as starting point for GL Common<br>Alon &#8211; I raised at the meeting and on the today&#8217;s GL Common call how XGL deals with platform integration and interoperation with other Khronos APIs, open issue<br>Alon &#8211; need to decide how to take things forwards, identify any problems such as IP zone issue if that's a problem, how we should structure discussions given GL progression.<br>...<br>Alon &#8211; If we could make sure that in two weeks time we have that, possibly have some sort of straw poll to see if we have agreement on how to proceed<br>Alon &#8211; If you have any suggestions on what I should be doing as chair at this point, always open to them<br><b>[ACTION]<i> All &#8211; poll across your company to gauge position on direction, what problem would need EGL-like API to solve, initial proposals for COB PDT 29th July 2014</i></b><i><br></i>[ACTION]<i> All &#8211; help engage GL Common group in discussion, understanding of your company&#8217;s current thoughts here<br></i>[ACTION]<i> Alon &#8211; put out email to GL Common group with information on previous EGL2 discussions, background information<br></i>[ACTION]<i> All &#8211; add proposed goals and input to wiki<br></i>[ACTION] <i>Chad &#8211; vtable proposal &#8211; will draft up what an API would look like<br></i>[ACTION]<i> </i></span><i>Jon &#8211; put together matrix of functionality</i><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>New proposals<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11550">Bug 11550</a> &#8211; Partial update extension</span></b><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Latest spec draft &#8211; <a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_partial_update.txt">EGL_KHR_partial_update draft spec</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>Ray &#8211; Sent an email a week ago explaining a problem &#8211; passing damaged regions through to a compositor isn't possible with the API as it is at the moment<br>Alon &#8211; Sent on the 6th July at 11:33 UK time, for those who don't have it to hand<br><span lang=EN-US>[ACTION]<i> All &#8211; consider Ray&#8217;s solution to resolving compositor information issue, Antoine&#8217;s suggestions<br></i>[ACTION]<i> Jesse &#8211; ping Antoine to get his opinion</i></span><o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- </span><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12459">Bug&nbsp;12459</a>&nbsp;&#8211;&nbsp;Create EGL_KHR_context_flush_control</b><b><span lang=EN-US><o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;page-break-after:avoid'><span lang=EN-US>[ACTION] <i>Jon &#8211; open bug</i><b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10232">Bug 10232</a> &#8211; Add Device Enumeration API to EGL 1.x<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>James &#8211; Updated specs, need to publish them at the end of the month. Last call for feedback if you have any<br><span lang=EN-US>[ACTION] <i>All &#8211; last change for feedback on EXT device extensions before they&#8217;re published</i><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10943">Bug 10943</a> &#8211; EGL_KHR_debug debugging API<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION] <i>All &#8211; review options and comment on bug</i><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><b><span lang=EN-US style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10091">Bug 10091</a> &#8211; EGL_KHR_no_config creating surfaces &amp; contexts without configs<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US style='color:black'><a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_no_config.txt">EGL_KHR_no_config draft spec</a>, </span><span style='color:black'><a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_rgba_no_config.txt">EGL_KHR_rgba_no_config draft spec</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>[ACTION]<i> All &#8211; consider fuzzy vs exact match options</i><b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt'><b>- </b><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12127"><b>Bug&nbsp;12127</b></a><b>&nbsp;&#8211;&nbsp;eglSwapBuffers completion notifications<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> Chad &#8211; enumerate different types of state</i><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><b><span style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12230">Bug&nbsp;12230</a>&nbsp;&#8211; Timestamps in EGL and client APIs</span></b><b><span lang=EN-US style='color:black'><o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>Alon &#8211; KCam WG notified about this, no feedback yet<b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Issues<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12456">Bug&nbsp;12456</a>&nbsp;-&nbsp;eglMakeCurrent flush behaviour when same context and surfaces are made current<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>New bug<o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12457">Bug&nbsp;12457</a>&nbsp;-&nbsp;Trivial wording updates to EGL_KHR_gl_colorspace<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>New bug<o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12072">Bug&nbsp;12072</a>&nbsp;&#8211;&nbsp;No way to completely release an EGLDisplay</b><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Alon &#8211; suggest we do a straw poll on next call, see if conclusion between the 3 options<br>James &#8211; sounds good to me<br>[ACTION] <i>All &#8211; review options and comment<br></i>[ACTION] <i>Alon &#8211; post explanation of terminate refcount issue</i><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><o:p>&nbsp;</o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Dormant topics</span></b><span lang=EN-US style='font-size:12.0pt'> (please indicate before next call if you&#8217;d like to discuss these)<o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- </span><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10159" title="ASSIGNED - Remove FOURCC dependency and define VX specific formats">Bug 10159</a> &#8211; </b><b><span lang=EN-US>Khronos color format proposal<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>Andrew &#8211; Not accepted into VX 1.0, updates on bug, no longer a rush, hoping that something will go in in 1.1<span lang=EN-US><br>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>All &#8211; continue providing feedback on bug</span></i><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US>- <b><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11606">Bug 11606</a> &#8211; GPU Resource Monitoring proposal<o:p></o:p></b></span></p><p class=MsoNormal style='margin-top:6.0pt;text-indent:36.0pt'><span lang=EN-US><a href="https://www.khronos.org/members/login/groups/EGL/F2F%20Materials/Phoenix%20Jan14/GPU%20Resource%20Monitoring%20-%20Phoenix%20F2F%20-%20Jan%202014.pdf">GPU Resource Monitoring slides from Phoenix F2F</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> </i></span><i>All &#8211; request feedback, especially from SOC teams<o:p></o:p></i></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11481">Bug 11481</a> &#8211; Remove thread restriction for eglSwapBuffers in EGL 1.5<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>[ACTION]<i> <span style='color:black'>Chad &#8211; will update bug as discussed (</span>Postponed indefinitely)</i></span><i><o:p></o:p></i></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- Streaming / feedback from Cross-API Interop sessions<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt;text-indent:36.0pt'><span lang=EN-US>Discussion page <a href="https://cvs.khronos.org/wiki/index.php?title=OpenCL/EGLStream">https://cvs.khronos.org/wiki/index.php?title=OpenCL/EGLStream</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>All &#8211; provide further topology / use-case feedback<br></span></i><span lang=EN-US>[ACTION]<i> Alon/</i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Mikael &#8211; discuss how to push metadata proposal forwards<br></span></i><span lang=EN-US>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Neil &#8211; invite StreamInput members to Cross-API session and get topology input</span></i><span lang=EN-US><o:p></o:p></span></p></div></body></html> \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/index.php b/glew/auto/EGL-Registry/sdk/docs/man/index.php
new file mode 100644
index 0000000..b97647b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/index.php
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>EGL Reference Pages</title>
+</head>
+<frameset rows="85,*">
+ <frame scrolling="no" noresize frameborder="0" marginwidth="0" marginheight="0" src="top.php">
+ <frame noresize frameborder="0" marginwidth="0" marginheight="0" src="bottom.php">
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/mkshar b/glew/auto/EGL-Registry/sdk/docs/man/mkshar
new file mode 100644
index 0000000..52cc006
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/mkshar
@@ -0,0 +1,3 @@
+#!/bin/sh
+set -x
+shar -mwxTD $* > xml.shar
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/reference.xml b/glew/auto/EGL-Registry/sdk/docs/man/reference.xml
new file mode 100644
index 0000000..a75da4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/reference.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "DTD/docbook/docbookx.dtd">
+<!--
+ Copyright 2003-2010 Khronos Group.
+ This material may be distributed subject to the terms and conditions set forth in
+ the Open Publication License, v 1.0, 8 June 1999.
+ http://opencontent.org/openpub/
+-->
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>
+ EGL Reference Manual
+ </title>
+ <subtitle>
+ Version 1.5
+ </subtitle>
+ <bookinfo>
+ <author>
+ <firstname>Claude</firstname>
+ <surname>Knaus</surname>
+ </author>
+ <author>
+ <firstname>Jon</firstname>
+ <surname>Leech</surname>
+ </author>
+ <date>October 2010</date>
+ <releaseinfo>Draft Version 20101012</releaseinfo>
+ <subjectset>
+ <subject>EGL</subject>
+ </subjectset>
+ <keywordset>
+ <keyword>EGL</keyword>
+ <keyword>man</keyword>
+ <keyword>reference</keyword>
+ </keywordset>
+ <xi:include href="legal-notice.xml"/>
+ </bookinfo>
+ <toc>
+ <title>Contents</title>
+ <!-- generated by LaTeX -->
+ </toc>
+ <chapter>
+ <title>Preface</title>
+ <sect1>
+ <title>Style Conventions</title>
+ <para>
+ The following style conventions apply to this document:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><function>Bold</function></term>
+ <listitem><para>Command and function names</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>Italics</parameter></term>
+ <listitem>Variables and parameters</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Regular</term>
+ <listitem><para>Ordinary text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>Monospace</constant></term>
+ <listitem><para>Constants and source code</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>Summary of Commands and Routines</title>
+ <sect1>
+ <title>EGL Functions</title>
+ <para>Manage or query display connections:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request EGL and client API extension functions:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetProcAddress</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Query errors:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request or query frame buffer configurations:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query the current rendering API:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL rendering contexts:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL surfaces:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Synchronize execution:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Post and copy buffers:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Bind pixel buffer surfaces to OpenGL ES textures:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry></member>
+ </simplelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>EGL Reference Pages</title>
+ <xi:include href="eglBindAPI.xml"/>
+ <xi:include href="eglBindTexImage.xml"/>
+ <xi:include href="eglChooseConfig.xml"/>
+ <xi:include href="eglClientWaitSync.xml"/>
+ <xi:include href="eglCopyBuffers.xml"/>
+ <xi:include href="eglCreateContext.xml"/>
+ <xi:include href="eglCreateImage.xml"/>
+ <xi:include href="eglCreatePbufferSurface.xml"/>
+ <xi:include href="eglCreatePixmapSurface.xml"/>
+ <xi:include href="eglCreateSync.xml"/>
+ <xi:include href="eglCreateWindowSurface.xml"/>
+ <xi:include href="eglDestroyContext.xml"/>
+ <xi:include href="eglDestroyImage.xml"/>
+ <xi:include href="eglDestroySurface.xml"/>
+ <xi:include href="eglDestroySync.xml"/>
+ <xi:include href="eglGetConfigAttrib.xml"/>
+ <xi:include href="eglGetConfigs.xml"/>
+ <xi:include href="eglGetCurrentContext.xml"/>
+ <xi:include href="eglGetCurrentDisplay.xml"/>
+ <xi:include href="eglGetCurrentSurface.xml"/>
+ <xi:include href="eglGetDisplay.xml"/>
+ <xi:include href="eglGetError.xml"/>
+ <xi:include href="eglGetPlatformDisplay.xml"/>
+ <xi:include href="eglGetProcAddress.xml"/>
+ <xi:include href="eglGetSyncAttrib.xml"/>
+ <xi:include href="eglInitialize.xml"/>
+ <xi:include href="eglIntro.xml"/>
+ <xi:include href="eglMakeCurrent.xml"/>
+ <xi:include href="eglQueryAPI.xml"/>
+ <xi:include href="eglQueryContext.xml"/>
+ <xi:include href="eglQueryString.xml"/>
+ <xi:include href="eglQuerySurface.xml"/>
+ <xi:include href="eglReleaseTexImage.xml"/>
+ <xi:include href="eglReleaseThread.xml"/>
+ <xi:include href="eglSurfaceAttrib.xml"/>
+ <xi:include href="eglSwapBuffers.xml"/>
+ <xi:include href="eglSwapInterval.xml"/>
+ <xi:include href="eglTerminate.xml"/>
+ <xi:include href="eglWaitClient.xml"/>
+ <xi:include href="eglWaitGL.xml"/>
+ <xi:include href="eglWaitNative.xml"/>
+ <xi:include href="eglWaitSync.xml"/>
+ </chapter>
+ <xi:include href="license-full.xml"/>
+</book>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/setvars b/glew/auto/EGL-Registry/sdk/docs/man/setvars
new file mode 100644
index 0000000..49c878e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/setvars
@@ -0,0 +1,5 @@
+#!/usr/bin/tcsh
+# Set variables for comparisons
+set egl=/home/tree/khronos/registry/trunk/public/egl/sdk/docs/man/xhtml
+set es=/home/tree/khronos/ogles/trunk/sdk/docs/man3/docbook4/xhtml
+set esnew=/home/tree/khronos/ogles/trunk/sdk/docs/man3/html
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/top.php b/glew/auto/EGL-Registry/sdk/docs/man/top.php
new file mode 100644
index 0000000..9bdbf00
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/top.php
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <!-- Should actually use PHP features & import stylesheet - see
+ OpenGL ES top.php for example -->
+ <title>EGL Reference Pages</title>
+ <style xmlns="" type="text/css">
+ body {
+ background-image:url(headBackground.jpg) no-repeat;
+ }
+ p {
+ font-family:verdana,sans-serif; font-size:80%; color: white;
+ margin-top:0px; margin-bottom:0px; position:absolute;
+ bottom:2px; left:5px;
+ }
+ a:link, a:visited { text-decoration:none; color:white}
+ h1 {
+ font: bold 1.4em verdana,sans-serif; text-align: left;
+ color: black; margin-top:10px; margin-bottom:3px;
+ padding-top:0px; padding-bottom:0px;
+ }
+ #search {
+ position:absolute; top:15px; right: 20px; margin: 0; padding: 0;
+ }
+ #search fieldset {
+ border: 0; margin: 0; padding: 0;
+ }
+ </style>
+</head>
+<body background="headBackground.jpg">
+ <h1>&nbsp; <!-- <img src="html/EGL_300.jpg" alt="" width="50" height="50" border="0" align="middle">--> EGL Reference Pages</h1>
+ <div id="search">
+ <!-- search not supported yet
+ <fieldset>
+ <form method="get" action="/opencl/search/opencl_1_2/swish.cgi" enctype="application/x-www-form-urlencoded" class="form" target="pagedisplay">
+ <input maxlength="200" value="processor" size="15" type="text" name="query" />
+ <input value="Search!" type="submit" name="submit" />
+ </fieldset>
+ -->
+ </div>
+ <p><a href="http://www.khronos.org/egl/" target="EGL">More EGL Info</a>
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/registry/egl/" target="EGL Specification">EGL Specification</a> >
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/files/egl-1-4-quick-reference-card.pdf" target="EGL Quick Reference">EGL Quick Reference Card</a>
+ </p>
+
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png
new file mode 100644
index 0000000..7c20efb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html
new file mode 100644
index 0000000..f360d64
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>EGL Reference Pages</title>
+ <style xmlns="" type="text/css">
+ body { background-image:url(headBackground.jpg) no-repeat; }
+ p { font-family:verdana,sans-serif; font-size:80%; color: white;
+ margin-top:0px; margin-bottom:0px; position:absolute; bottom:2px; left:5px;}
+ a:link, a:visited { text-decoration:none; color:white}
+ h1 {font: bold 1.4em verdana,sans-serif; text-align: left; color: black;
+ margin-top:10px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+ #search {
+ position:absolute; top:15px; right: 20px; margin: 0; padding: 0;
+ }
+ #search fieldset {
+ border: 0; margin: 0; padding: 0;
+ }
+ </style>
+</head>
+<body background="headBackground.jpg">
+ <h1>&nbsp; <!-- <img src="EGL_300.jpg" alt="" width="50" height="50" border="0" align="middle">--> EGL Reference Pages</h1>
+ <div id="search">
+ <!-- search not supported yet
+ <fieldset>
+ <form method="get" action="/opencl/search/opencl_1_2/swish.cgi" enctype="application/x-www-form-urlencoded" class="form" target="pagedisplay">
+ <input maxlength="200" value="processor" size="15" type="text" name="query" />
+ <input value="Search!" type="submit" name="submit" />
+ </fieldset>
+ -->
+ </div>
+ <p><a href="http://www.khronos.org/egl/" target="EGL">More EGL Info</a>
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/registry/egl/" target="EGL Specification">EGL Specification</a> >
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/files/egl-1-4-quick-reference-card.pdf" target="EGL Quick Reference">EGL Quick Reference Card</a>
+ </p>
+
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html
new file mode 100644
index 0000000..8f82ab5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+/* This style sets a margin around the entire page */
+ html, body { margin: 10px; }
+
+ p { font-family:verdana,sans-serif; font-size:95%;
+ margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; }
+
+ h1 {font: bold 1.75em verdana,sans-serif;
+ margin-top:0px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+
+ h2 { font-family:verdana,sans-serif; font-size:1.20em
+ margin-top:28px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+
+ li { font-family:verdana,sans-serif; font-size:95%;
+ margin-top:0px; margin-bottom:18px; padding-top:0px; padding-bottom:0px; }
+
+ code, constant {font: normal 1.1em 'courier new',monospace; }
+ code.function {font: bold 1.1em 'courier new',monospace; }
+ code.varname {font: italic 1.1em 'courier new',monospace; }
+ code.funcdef {font: normal 1.1em 'courier new',monospace; }
+ .citerefentry {font: normal 1.1em 'courier new',monospace; }
+ .parameter { font-style: italic; }
+ code.fsfunc {font: normal 1.1em 'courier new',monospace; }
+ div.funcsynopsis {font: normal 1.1em 'courier new',monospace; text-align:left; background-color:#e6e6e6;}
+ div.funcsynopsis table { margin-top: 10px; border-collapse:separate; }
+ div.funcsynopsis td {background-color:#e6e6e6; border:0px solid black; padding:2px; }
+ div.refsect1 {font-family:verdana,sans-serif; font-size:95%;}
+
+/* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt { margin-top:15px; }
+
+/* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 { font-family:verdana,sans-serif; font-size:75%;
+ margin-top:50px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; }
+
+/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table { margin-top: 10px; background-color:#FFF; width:100%; border-collapse:collapse; }
+ div.refsect1 td {background-color:#FFF; border:1px solid black; padding:5px;
+ font: normal 95% verdana,san-serif;}
+ div.refsect1 th {background-color:#FFF; border:1px solid black; padding:5px;
+ font: bold 95% verdana,san-serif;}
+
+/* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 { font-family:verdana,sans-serif; }
+ h3 { font:bold 1.25em verdana,sans-serif; font-size:135%;
+ margin-top:28px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+ div.refsect2 table {margin-top:0px; background-color:#e6e6e6;
+ width:100%; border:0px solid black; padding:2px;}
+ div.refsect2 td {background-color:##e6e6e6; white-space: pre; font: normal 1.1em 'courier new',monospace;}
+
+/* SPECIFICATION: Add an Acrobat Reader icon to PDF links
+ a[href$=".pdf"] {background: url(pdficon_small1.gif) left center no-repeat; padding-left: 22px;}
+ a[href$=".pdf"]:hover {background: url(pdficon_small1.gif) left center no-repeat;}*/
+
+</style>
+ <title>EGL Reference Pages</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.69.1" />
+ <meta name="keywords" content="OpenCl Reference Title Page" />
+ </head>
+ <body>
+ <div class="refentry" lang="en" xml:lang="en">
+ <a id="id4796348"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <a xmlns="http://www.w3.org/1999/xhtml" id="Memory Objects"></a>
+ <h1>EGL Reference Pages</h1>
+ <p></p>
+ </div>
+ <div class="refsect1" lang="en" xml:lang="en">
+ <a id="description"></a>
+ <h2></h2>
+ <p>
+ <img src="EGL_300.png" alt=""
+ hspace="40" vspace="40" border="0" align="right"
+ xmlns="http://www.w3.org/1999/xhtml" />
+ EGL&trade; is an interface between Khronos rendering APIs
+ such as OpenGL ES or OpenVG and the underlying native
+ platform window system. It handles graphics context
+ management, surface/buffer binding, and rendering
+ synchronization and enables high-performance, accelerated,
+ mixed-mode 2D and 3D rendering using other Khronos APIs.
+ </p>
+ <p>
+ The reference pages describe the latest approved version of
+ EGL, EGL 1.4, but can be used with earlier versions since
+ each page notes when features are available only starting
+ with specific versions (1.2, 1.3, and 1.4).
+ </p>
+ <p>
+ A more detailed overview of EGL functionality and technical
+ concepts can be found in the
+ <a target="pagedisplay" href="eglIntro.html">eglIntro</a>
+ page.
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4>
+ <img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><br>
+ Copyright &#169; 2007-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg
new file mode 100644
index 0000000..f8a05f6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html
new file mode 100644
index 0000000..69b3ff8
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+ <title>Table of Contents</title>
+<link href="style.css" rel="stylesheet" type="text/css" />
+
+<script type="text/javascript">
+<!--
+var temp, temp2, cookieArray, cookieArray2, cookieCount;
+function initiate(){
+ cookieCount=0;
+ if(document.cookie){
+ cookieArray=document.cookie.split(";");
+ cookieArray2=new Array();
+ for(i in cookieArray){
+ cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
+ }
+ }
+ cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();
+ temp=document.getElementById("containerul");
+ for(var o=0;o<temp.getElementsByTagName("li").length;o++){
+ if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(bullets-contract.gif)":"url(bullets-expand.gif)"):"url(bullets-expand.gif)";
+ temp2.onmousedown=function(){
+ showhide(this.parentNode);
+ writeCookie();
+ }
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
+ temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
+ if(cookieArray[cookieCount]=="true"){
+ showhide(temp.getElementsByTagName("li")[o]);
+ }
+ cookieCount++;
+ }
+ else{
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = "url(bullets-end.gif)";
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
+ }
+ }
+}
+
+function showhide(el){
+ el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
+ el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(bullets-contract.gif)":"url(bullets-expand.gif)";
+}
+
+function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
+ cookieArray=new Array()
+ for(var q=0;q<temp.getElementsByTagName("li").length;q++){
+ if(temp.getElementsByTagName("li")[q].childNodes.length>0){
+ if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
+ cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
+ }
+ }
+ }
+ document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
+}
+//-->
+</script>
+
+</head>
+<body>
+<div id="navwrap">
+ <ul id="containerul"> <!-- This ul must wrap entire list for expand/contract to work -->
+ <li class="lev1">
+ <a href="Intro.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="lev1">Alphabetic Contents (<i>egl</i> prefix on function
+ names is ignored for sorting purposes)
+ <ul class="Level2">
+ <li>B
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglBindAPI.html">eglBindAPI</a></li>
+ <li><a target="pagedisplay" href="eglBindTexImage.html">eglBindTexImage</a></li>
+ </ul>
+ </li>
+ <li>C
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglChooseConfig.html">eglChooseConfig</a></li>
+ <li><a target="pagedisplay" href="eglCopyBuffers.html">eglCopyBuffers</a></li>
+ <li><a target="pagedisplay" href="eglCreateContext.html">eglCreateContext</a></li>
+ <li><a target="pagedisplay" href="eglCreatePbufferFromClientBuffer.html">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a target="pagedisplay" href="eglCreatePbufferSurface.html">eglCreatePbufferSurface</a></li>
+ <li><a target="pagedisplay" href="eglCreatePixmapSurface.html">eglCreatePixmapSurface</a></li>
+ <li><a target="pagedisplay" href="eglCreateWindowSurface.html">eglCreateWindowSurface</a></li>
+ </ul>
+ </li>
+ <li>D
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglDestroyContext.html">eglDestroyContext</a></li>
+ <li><a target="pagedisplay" href="eglDestroySurface.html">eglDestroySurface</a></li>
+ </ul>
+ </li>
+ <li>G
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglGetConfigAttrib.html">eglGetConfigAttrib</a></li>
+ <li><a target="pagedisplay" href="eglGetConfigs.html">eglGetConfigs</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentContext.html">eglGetCurrentContext</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentDisplay.html">eglGetCurrentDisplay</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentSurface.html">eglGetCurrentSurface</a></li>
+ <li><a target="pagedisplay" href="eglGetDisplay.html">eglGetDisplay</a></li>
+ <li><a target="pagedisplay" href="eglGetError.html">eglGetError</a></li>
+ <li><a target="pagedisplay" href="eglGetProcAddress.html">eglGetProcAddress</a></li>
+ </ul>
+ </li>
+ <li>I
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglInitialize.html">eglInitialize</a></li>
+ <li><a target="pagedisplay" href="eglIntro.html">eglIntro</a></li>
+ </ul>
+ </li>
+ <li>M
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglMakeCurrent.html">eglMakeCurrent</a></li>
+ </ul>
+ </li>
+ <li>Q
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglQueryAPI.html">eglQueryAPI</a></li>
+ <li><a target="pagedisplay" href="eglQueryContext.html">eglQueryContext</a></li>
+ <li><a target="pagedisplay" href="eglQueryString.html">eglQueryString</a></li>
+ <li><a target="pagedisplay" href="eglQuerySurface.html">eglQuerySurface</a></li>
+ </ul>
+ </li>
+ <li>R
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglReleaseTexImage.html">eglReleaseTexImage</a></li>
+ <li><a target="pagedisplay" href="eglReleaseThread.html">eglReleaseThread</a></li>
+ </ul>
+ </li>
+ <li>S
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglSurfaceAttrib.html">eglSurfaceAttrib</a></li>
+ <li><a target="pagedisplay" href="eglSwapBuffers.html">eglSwapBuffers</a></li>
+ <li><a target="pagedisplay" href="eglSwapInterval.html">eglSwapInterval</a></li>
+ </ul>
+ </li>
+ <li>T
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglTerminate.html">eglTerminate</a></li>
+ </ul>
+ </li>
+ <li>W
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglWaitClient.html">eglWaitClient</a></li>
+ <li><a target="pagedisplay" href="eglWaitGL.html">eglWaitGL</a></li>
+ <li><a target="pagedisplay" href="eglWaitNative.html">eglWaitNative</a></li>
+ <ul class="Level3">
+ </ul>
+ </li>
+ </ul> <!-- /Level2 -->
+ </li>
+
+<!-- later - include other categories such as
+ <li class="lev1">EGL Runtime
+ ...
+ </li>
+
+ <li class="lev1">
+ <a href="preprocessorDirectives.html" target="pagedisplay">Preprocessor Directives and Macros</a>
+ </li>
+
+ <li class="lev1">Optional Extensions
+ ...
+ </li>
+later -->
+ </ul> <!-- /containerurl -->
+</div> <!-- /navwrap -->
+<script type="text/javascript">
+initiate(); // This must be placed immediately after the menu in order to format it properly.
+</script>
+<p> </p>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif
new file mode 100644
index 0000000..bb1e955
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif
new file mode 100644
index 0000000..abd000e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif
new file mode 100644
index 0000000..e2dde60
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl
new file mode 100644
index 0000000..d58ca32
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl
@@ -0,0 +1,15 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:param name="copyright">
+Copyright &#169; 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</xsl:param>
+</xsl:stylesheet>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl
new file mode 100644
index 0000000..a6800f4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl
@@ -0,0 +1,1319 @@
+<!-- saved from url=(0013)about:internet -->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+>
+
+<!--
+$Id: ctop.xsl,v 1.3 2002/09/20 08:41:39 davidc Exp $
+
+Copyright David Carlisle 2001, 2002.
+
+Use and distribution of this code are permitted under the terms of the <a
+href="http://www.w3.org/Consortium/Legal/copyright-software-19980720"
+>W3C Software Notice and License</a>.
+-->
+
+<xsl:output method="xml" />
+
+<xsl:template mode="c2p" match="*">
+<xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="c2p"/>
+</xsl:copy>
+</xsl:template>
+
+
+<!-- 4.4.1.1 cn -->
+
+<xsl:template mode="c2p" match="mml:cn">
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='complex-cartesian']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo>+</mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mi>i<!-- imaginary i --></mml:mi>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='rational']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo>/</mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='integer']">
+ <xsl:choose>
+ <xsl:when test="not(@base) or @base=10">
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+ </xsl:when>
+ <xsl:otherwise>
+ <mml:msub>
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+ <mml:mn><xsl:value-of select="@base"/></mml:mn>
+ </mml:msub>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='complex-polar']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:msup>
+ <mml:mi>e<!-- exponential e--></mml:mi>
+ <mml:mrow>
+ <mml:mi>i<!-- imaginary i--></mml:mi>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ </mml:mrow>
+ </mml:msup>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='e-notation']">
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/>E<xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+</xsl:template>
+
+<!-- 4.4.1.1 ci -->
+
+<xsl:template mode="c2p" match="mml:ci/text()">
+ <mml:mi><xsl:value-of select="."/></mml:mi>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:ci">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.1.2 csymbol -->
+
+<xsl:template mode="c2p" match="mml:csymbol/text()">
+ <mml:mo><xsl:apply-templates mode="c2p"/></mml:mo>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:csymbol">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.1 apply 4.4.2.2 reln -->
+
+<xsl:template mode="c2p" match="mml:apply|mml:reln">
+ <mml:mrow>
+ <xsl:apply-templates mode="c2p" select="*[1]">
+ <xsl:with-param name="p" select="10"/>
+ </xsl:apply-templates>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mfenced open="(" close=")" separators=",">
+ <xsl:apply-templates mode="c2p" select="*[position()>1]"/>
+ </mml:mfenced>
+ </mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.3 fn -->
+<xsl:template mode="c2p" match="mml:fn">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.4 interval -->
+<xsl:template mode="c2p" match="mml:interval[*[2]]">
+ <mml:mfenced open="[" close="]"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='open']">
+ <mml:mfenced open="(" close=")"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='open-closed']">
+ <mml:mfenced open="(" close="]"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='closed-open']">
+ <mml:mfenced open="[" close=")"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:interval">
+ <mml:mfenced open="{{" close="}}"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+
+<!-- 4.4.2.5 inverse -->
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:inverse]]">
+ <mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[2]"/>
+ <mml:mrow><mml:mo>(</mml:mo><mml:mn>-1</mml:mn><mml:mo>)</mml:mo></mml:mrow>
+ </mml:msup>
+</xsl:template>
+
+<!-- 4.4.2.6 sep -->
+
+<!-- 4.4.2.7 condition -->
+<xsl:template mode="c2p" match="mml:condition">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.8 declare -->
+<xsl:template mode="c2p" match="mml:declare"/>
+
+<!-- 4.4.2.9 lambda -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:lambda]]">
+ <mml:mrow>
+ <mml:mi>&#955;<!--lambda--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.2.10 compose -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:compose]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8728;<!-- o --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.2.11` ident -->
+<xsl:template mode="c2p" match="mml:ident">
+<mml:mo>id</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.12` domain -->
+<xsl:template mode="c2p" match="mml:domain">
+<mml:mo>domain</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.13` codomain -->
+<xsl:template mode="c2p" match="mml:codomain">
+<mml:mo>codomain</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.14` image -->
+<xsl:template mode="c2p" match="mml:image">
+<mml:mo>image</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.15` domainofapplication -->
+<xsl:template mode="c2p" match="mml:domainofapplication">
+ <mml:error/>
+</xsl:template>
+
+<!-- 4.4.2.16` piecewise -->
+<xsl:template mode="c2p" match="mml:piecewise">
+<mml:mrow>
+<mml:mo>{</mml:mo>
+<mml:mtable>
+ <xsl:for-each select="mml:piece|mml:otherwise">
+ <mml:mtr>
+ <mml:mtd><xsl:apply-templates mode="c2p" select="*[1]"/></mml:mtd>
+ <mml:mtd><mml:mtext>&#160; if &#160;</mml:mtext></mml:mtd>
+ <mml:mtd><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mtd>
+ </mml:mtr>
+ </xsl:for-each>
+</mml:mtable>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.1 quotient -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:quotient]]">
+<mml:mrow>
+<mml:mo>&#8970;<!-- lfloor--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>/</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[3]"/>
+<mml:mo>&#8971;<!-- rfloor--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.2 factorial -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:factorial]]">
+<mml:mrow>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mo>!</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.3 divide -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:divide]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>/</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.4 max min-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:max]]">
+<mml:mrow>
+ <mml:mo>max</mml:mo>
+ <xsl:call-template name="set"/>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:min]]">
+<mml:mrow>
+ <mml:mo>max</mml:mo>
+ <xsl:call-template name="set"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.3.5 minus-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:minus] and count(*)=2]">
+<mml:mrow>
+ <mml:mo>&#8722;<!--minus--></mml:mo>
+ <xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+ </xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:minus] and count(*)&gt;2]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8722;<!--minus--></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="2"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.6 plus-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:plus]]">
+ <xsl:param name="p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$p &gt; 2"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <mml:mo>
+ <xsl:choose>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:apply/*[1][self::mml:minus] or self::mml:cn[not(mml:sep) and
+ (number(.) &lt; 0)]]]">&#8722;<!--minus--></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </mml:mo>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:cn[not(mml:sep) and (number(.) &lt;0)]]]">
+ <mml:mrow>
+ <mml:mn><xsl:value-of select="-(*[2])"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="first" select="2"/>
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </mml:mrow>
+ </xsl:when>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:apply/*[1][self::mml:minus]]]">
+ <mml:mrow>
+ <xsl:apply-templates mode="c2p" select="./*[2]/*[2]"/>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="first" select="2"/>
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </mml:mrow>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:if test="$p &gt; 2"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.7 power -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:power]]">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+<xsl:apply-templates mode="c2p" select="*[3]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.3.8 remainder -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:rem]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>mod</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.9 times-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:times]]" name="times">
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="first" select="1"/>
+ <mml:mrow>
+ <xsl:if test="$p &gt; 3"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <mml:mo>
+ <xsl:choose>
+ <xsl:when test="self::mml:cn">&#215;<!-- times --></xsl:when>
+ <xsl:otherwise><!--&#8290;--><!--invisible times--></xsl:otherwise>
+ </xsl:choose>
+ </mml:mo>
+ </xsl:if>
+ <xsl:if test="position()&gt;= $first">
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="3"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="$p &gt; 3"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.10 root -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:root] and not(mml:degree) or mml:degree=2]" priority="4">
+<mml:msqrt>
+<xsl:apply-templates mode="c2p" select="*[position()&gt;1]"/>
+</mml:msqrt>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:root]]">
+<mml:mroot>
+<xsl:apply-templates mode="c2p" select="*[position()&gt;1 and not(self::mml:degree)]"/>
+<mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/*"/></mml:mrow>
+</mml:mroot>
+</xsl:template>
+
+<!-- 4.4.3.11 gcd -->
+<xsl:template mode="c2p" match="mml:gcd">
+<mml:mo>gcd</mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.12 and -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:and]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8743;<!-- and --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.13 or -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:or]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8744;<!-- or --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.14 xor -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:xor]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>xor</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.15 not -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:not]]">
+<mml:mrow>
+<mml:mo>&#172;<!-- not --></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+
+
+<!-- 4.4.3.16 implies -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:implies]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8658;<!-- Rightarrow --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.17 forall -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:forall]]">
+ <mml:mrow>
+ <mml:mi>&#8704;<!--forall--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar[not(current()/mml:condition)]/*|mml:condition/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.18 exists -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:exists]]">
+ <mml:mrow>
+ <mml:mi>&#8707;<!--exists--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar[not(current()/mml:condition)]/*|mml:condition/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.19 abs -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:abs]]">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.20 conjugate -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:conjugate]]">
+<mml:mover>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#175;<!-- overline --></mml:mo>
+</mml:mover>
+</xsl:template>
+
+<!-- 4.4.3.21 arg -->
+<xsl:template mode="c2p" match="mml:arg">
+ <mml:mo>arg</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.3.22 real -->
+<xsl:template mode="c2p" match="mml:real">
+ <mml:mo>&#8475;<!-- real --></mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.23 imaginary -->
+<xsl:template mode="c2p" match="mml:imaginary">
+ <mml:mo>&#8465;<!-- imaginary --></mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.24 lcm -->
+<xsl:template mode="c2p" match="mml:lcm">
+ <mml:mo>lcm</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.3.25 floor -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:floor]]">
+<mml:mrow>
+<mml:mo>&#8970;<!-- lfloor--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#8971;<!-- rfloor--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.25 ceiling -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:ceiling]]">
+<mml:mrow>
+<mml:mo>&#8968;<!-- lceil--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#8969;<!-- rceil--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.4.1 eq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:eq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>=</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.2 neq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:neq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8800;<!-- neq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.3 eq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:gt]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&gt;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.4 lt -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:lt]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&lt;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.5 geq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:geq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8805;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.6 geq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:leq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8804;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.7 equivalent -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:equivalent]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8801;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.8 approx -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:approx]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8771;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.4.9 factorof -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:factorof]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>|</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.5.1 int -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:int]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mi>&#8747;<!--int--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ <mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.5.2 diff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:diff] and mml:ci and count(*)=2]" priority="2">
+ <mml:msup>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mrow>
+ <mml:mo>&#8242;<!--prime--></mml:mo>
+ </mml:msup>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:diff]]" priority="1">
+ <mml:mfrac>
+ <xsl:choose>
+ <xsl:when test="mml:bvar/mml:degree">
+ <mml:mrow><mml:msup><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar/mml:degree/node()"/></mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+ <mml:mrow><mml:mo>d</mml:mo><mml:msup><xsl:apply-templates mode="c2p"
+ select="mml:bvar/node()"/><xsl:apply-templates mode="c2p"
+ select="mml:bvar/mml:degree/node()"/></mml:msup>
+</mml:mrow>
+</xsl:when>
+<xsl:otherwise>
+ <mml:mrow><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+ <mml:mrow><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar"/></mml:mrow>
+</xsl:otherwise>
+ </xsl:choose>
+ </mml:mfrac>
+</xsl:template>
+
+
+<!-- 4.4.5.3 partialdiff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:partialdiff] and mml:list and mml:ci and count(*)=3]" priority="2">
+<mml:mrow>
+ <mml:msub><mml:mo>D</mml:mo><mml:mrow>
+<xsl:for-each select="mml:list[1]/*">
+<xsl:apply-templates mode="c2p" select="."/>
+<xsl:if test="position()&lt;last()"><mml:mo>,</mml:mo></xsl:if>
+</xsl:for-each>
+</mml:mrow></mml:msub>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="*[3]"/></mml:mrow>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:partialdiff]]" priority="1">
+ <mml:mfrac>
+ <mml:mrow><mml:msup><mml:mo>&#8706;<!-- partial --></mml:mo>
+<mml:mrow>
+ <xsl:choose>
+ <xsl:when test="mml:degree">
+<xsl:apply-templates mode="c2p" select="mml:degree/node()"/>
+</xsl:when>
+<xsl:when test="mml:bvar/mml:degree[string(number(.))='NaN']">
+<xsl:for-each select="mml:bvar/mml:degree">
+<xsl:apply-templates mode="c2p" select="node()"/>
+<xsl:if test="position()&lt;last()"><mml:mo>+</mml:mo></xsl:if>
+</xsl:for-each>
+<xsl:if test="count(mml:bvar[not(mml:degree)])&gt;0">
+<mml:mo>+</mml:mo><mml:mn><xsl:value-of select="count(mml:bvar[not(mml:degree)])"/></mml:mn>
+</xsl:if>
+</xsl:when>
+<xsl:otherwise>
+<mml:mn><xsl:value-of select="sum(mml:bvar/mml:degree)+count(mml:bvar[not(mml:degree)])"/></mml:mn>
+</xsl:otherwise>
+ </xsl:choose>
+</mml:mrow>
+</mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+<mml:mrow>
+<xsl:for-each select="mml:bvar">
+<mml:mrow>
+<mml:mo>&#8706;<!-- partial --></mml:mo><mml:msup><xsl:apply-templates mode="c2p" select="node()"/>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/node()"/></mml:mrow>
+</mml:msup>
+</mml:mrow>
+</xsl:for-each>
+</mml:mrow>
+ </mml:mfrac>
+</xsl:template>
+
+<!-- 4.4.5.4 lowlimit-->
+<xsl:template mode="c2p" match="mml:lowlimit"/>
+
+<!-- 4.4.5.5 uplimit-->
+<xsl:template mode="c2p" match="mml:uplimit"/>
+
+<!-- 4.4.5.6 bvar-->
+<xsl:template mode="c2p" match="mml:bvar">
+ <mml:mi><xsl:apply-templates mode="c2p"/></mml:mi>
+ <xsl:if test="following-sibling::mml:bvar"><mml:mo>,</mml:mo></xsl:if>
+</xsl:template>
+
+<!-- 4.4.5.7 degree-->
+<xsl:template mode="c2p" match="mml:degree"/>
+
+<!-- 4.4.5.8 divergence-->
+<xsl:template mode="c2p" match="mml:divergence">
+<mml:mo>div</mml:mo>
+</xsl:template>
+
+<!-- 4.4.5.9 grad-->
+<xsl:template mode="c2p" match="mml:grad">
+<mml:mo>grad</mml:mo>
+</xsl:template>
+
+<!-- 4.4.5.10 curl -->
+<xsl:template mode="c2p" match="mml:curl">
+<mml:mo>curl</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.5.11 laplacian-->
+<xsl:template mode="c2p" match="mml:laplacian">
+<mml:msup><mml:mo>&#8711;<!-- nabla --></mml:mo><mml:mn>2</mml:mn></mml:msup>
+</xsl:template>
+
+<!-- 4.4.6.1 set -->
+
+<xsl:template mode="c2p" match="mml:set">
+ <xsl:call-template name="set"/>
+</xsl:template>
+
+<!-- 4.4.6.2 list -->
+
+<xsl:template mode="c2p" match="mml:list">
+ <xsl:call-template name="set">
+ <xsl:with-param name="o" select="'('"/>
+ <xsl:with-param name="c" select="')'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.3 union -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:union]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8746;<!-- union --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.4 intersect -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:intersect]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8745;<!-- intersect --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.5 in -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:in]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8712;<!-- in --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.5 notin -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notin]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8713;<!-- not in --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.7 subset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:subset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8838;<!-- subseteq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.8 prsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:prsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8834;<!-- prsubset --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.9 notsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8840;<!-- notsubseteq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.10 notprsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notprsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8836;<!-- prsubset --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.11 setdiff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:setdiff]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8726;<!-- setminus --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.12 card -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:card]]">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.6.13 cartesianproduct -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:cartesianproduct or self::mml:vectorproduct]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#215;<!-- times --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<xsl:template
+match="mml:apply[*[1][self::mml:cartesianproduct][count(following-sibling::mml:reals)=count(following-sibling::*)]]"
+priority="2">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+<mml:mn><xsl:value-of select="count(*)-1"/></mml:mn>
+</mml:msup>
+</xsl:template>
+
+
+<!-- 4.4.7.1 sum -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:sum]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mo>&#8721;<!--sum--></mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.7.2 product -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:product]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mo>&#8719;<!--product--></mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.7.3 limit -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:limit]]">
+ <mml:mrow>
+ <mml:munder>
+ <mml:mi>limit</mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit|mml:condition/*"/></mml:mrow>
+ </mml:munder>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[mml:limit]/mml:lowlimit" priority="3">
+<mml:mrow>
+<xsl:apply-templates mode="c2p" select="../mml:bvar/node()"/>
+<mml:mo>&#8594;<!--rightarrow--></mml:mo>
+<xsl:apply-templates mode="c2p"/>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.7.4 tendsto -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:tendsto]]">
+ <xsl:param name="p"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>
+ <xsl:choose>
+ <xsl:when test="@type='above'">&#8600;<!--searrow--></xsl:when>
+ <xsl:when test="@type='below'">&#8599;<!--nearrow--></xsl:when>
+ <xsl:when test="@type='two-sided'">&#8594;<!--rightarrow--></xsl:when>
+ <xsl:otherwise>&#8594;<!--rightarrow--></xsl:otherwise>
+ </xsl:choose>
+ </mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.8.1 trig -->
+<xsl:template mode="c2p" match="mml:apply[*[1][
+ self::mml:sin or self::mml:cos or self::mml:tan or self::mml:sec or
+ self::mml:csc or self::mml:cot or self::mml:sinh or self::mml:cosh or
+ self::mml:tanh or self::mml:sech or self::mml:csch or self::mml:coth or
+ self::mml:arcsin or self::mml:arccos or self::mml:arctan or self::mml:arccosh
+ or self::mml:arccot or self::mml:arccoth or self::mml:arccsc or
+ self::mml:arccsch or self::mml:arcsec or self::mml:arcsech or
+ self::mml:arcsinh or self::mml:arctanh or self::mml:ln]]">
+<mml:mrow>
+<mml:mi><xsl:value-of select="local-name(*[1])"/></mml:mi>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+
+
+<!-- 4.4.8.2 exp -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:exp]]">
+<mml:msup>
+<mml:mi>e<!-- exponential e--></mml:mi>
+<mml:mrow><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mrow>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.8.3 ln -->
+<!-- with trig -->
+
+<!-- 4.4.8.4 log -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:log]]">
+<mml:mrow>
+<xsl:choose>
+<xsl:when test="not(mml:logbase) or mml:logbase=10">
+<mml:mi>log</mml:mi>
+</xsl:when>
+<xsl:otherwise>
+<mml:msub>
+<mml:mi>log</mml:mi>
+<mml:mrow><xsl:apply-templates mode="c2p" select="mml:logbase/node()"/></mml:mrow>
+</mml:msub>
+</xsl:otherwise>
+</xsl:choose>
+<xsl:apply-templates mode="c2p" select="*[last()]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.9.1 mean -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:mean]]">
+<mml:mrow>
+ <mml:mo>&#9001;<!--langle--></mml:mo>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+<mml:mo>&#9002;<!--rangle--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.9.2 sdef -->
+<xsl:template mode="c2p" match="mml:sdev">
+<mml:mo>&#963;<!--sigma--></mml:mo>
+</xsl:template>
+
+<!-- 4.4.9.3 variance -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:variance]]">
+<mml:msup>
+<mml:mrow>
+<mml:mo>&#963;<!--sigma--></mml:mo>
+<mml:mo>(</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+<mml:mn>2</mml:mn>
+</mml:msup>
+</xsl:template>
+
+
+<!-- 4.4.9.4 median -->
+<xsl:template mode="c2p" match="mml:median">
+<mml:mo>median</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.9.5 mode -->
+<xsl:template mode="c2p" match="mml:mode">
+<mml:mo>mode</mml:mo>
+</xsl:template>
+
+<!-- 4.4.9.5 moment -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:moment]]">
+<mml:mrow>
+ <mml:mo>&#9001;<!--langle--></mml:mo>
+ <mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/node()"/></mml:mrow>
+ </mml:msup>
+<mml:mo>&#9002;<!--rangle--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.9.5 momentabout -->
+<xsl:template mode="c2p" match="mml:momentabout"/>
+
+<!-- 4.4.10.1 vector -->
+<xsl:template mode="c2p" match="mml:vector">
+<mml:mrow>
+<mml:mo>(</mml:mo>
+<mml:mtable>
+<xsl:for-each select="*">
+<mml:mtr><mml:mtd><xsl:apply-templates mode="c2p" select="."/></mml:mtd></mml:mtr>
+</xsl:for-each>
+</mml:mtable>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.2 matrix -->
+<xsl:template mode="c2p" match="mml:matrix">
+<mml:mrow>
+<mml:mo>(</mml:mo>
+<mml:mtable>
+<xsl:apply-templates mode="c2p"/>
+</mml:mtable>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.3 matrixrow -->
+<xsl:template mode="c2p" match="mml:matrixrow">
+<mml:mtr>
+<xsl:for-each select="*">
+<mml:mtd><xsl:apply-templates mode="c2p" select="."/></mml:mtd>
+</xsl:for-each>
+</mml:mtr>
+</xsl:template>
+
+<!-- 4.4.10.4 determinant -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:determinant]]">
+<mml:mrow>
+<mml:mi>det</mml:mi>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template
+match="mml:apply[*[1][self::mml:determinant]][*[2][self::mml:matrix]]" priority="2">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<mml:mtable>
+<xsl:apply-templates mode="c2p" select="mml:matrix/*"/>
+</mml:mtable>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.5 transpose -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:transpose]]">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mi>T</mml:mi>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.10.5 selector -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:selector]]">
+<mml:msub>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mrow>
+ <xsl:for-each select="*[position()&gt;2]">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+</mml:mrow>
+</mml:msub>
+</xsl:template>
+
+<!-- *** -->
+<!-- 4.4.10.6 vectorproduct see cartesianproduct -->
+
+
+<!-- 4.4.10.7 scalarproduct-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:scalarproduct or self::mml:outerproduct]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>.</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.10.8 outerproduct-->
+
+<!-- 4.4.11.2 semantics -->
+<xsl:template mode="c2p" match="mml:semantics">
+ <xsl:apply-templates mode="c2p" select="*[1]"/>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:semantics[mml:annotation-xml/@encoding='MathML-Presentation']">
+ <xsl:apply-templates mode="c2p" select="mml:annotation-xml[@encoding='MathML-Presentation']/node()"/>
+</xsl:template>
+
+<!-- 4.4.12.1 integers -->
+<xsl:template mode="c2p" match="mml:integers">
+<mml:mi mathvariant="double-struck">Z</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.2 reals -->
+<xsl:template mode="c2p" match="mml:reals">
+<mml:mi mathvariant="double-struck">R</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.3 rationals -->
+<xsl:template mode="c2p" match="mml:rationals">
+<mml:mi mathvariant="double-struck">Q</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.4 naturalnumbers -->
+<xsl:template mode="c2p" match="mml:naturalnumbers">
+<mml:mi mathvariant="double-struck">N</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.5 complexes -->
+<xsl:template mode="c2p" match="mml:complexes">
+<mml:mi mathvariant="double-struck">C</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.6 primes -->
+<xsl:template mode="c2p" match="mml:primes">
+<mml:mi mathvariant="double-struck">P</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.7 exponentiale -->
+<xsl:template mode="c2p" match="mml:exponentiale">
+ <mml:mi>e<!-- exponential e--></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.8 imaginaryi -->
+<xsl:template mode="c2p" match="mml:imaginaryi">
+ <mml:mi>i<!-- imaginary i--></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.9 notanumber -->
+<xsl:template mode="c2p" match="mml:notanumber">
+ <mml:mi>NaN</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.10 true -->
+<xsl:template mode="c2p" match="mml:true">
+ <mml:mi>true</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.11 false -->
+<xsl:template mode="c2p" match="mml:false">
+ <mml:mi>false</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.12 emptyset -->
+<xsl:template mode="c2p" match="mml:emptyset">
+ <mml:mi>&#8709;<!-- emptyset --></mml:mi>
+</xsl:template>
+
+
+<!-- 4.4.12.13 pi -->
+<xsl:template mode="c2p" match="mml:pi">
+ <mml:mi>&#960;<!-- pi --></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.14 eulergamma -->
+<xsl:template mode="c2p" match="mml:eulergamma">
+ <mml:mi>&#947;<!-- gamma --></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.15 infinity -->
+<xsl:template mode="c2p" match="mml:infinity">
+ <mml:mi>&#8734;<!-- infinity --></mml:mi>
+</xsl:template>
+
+
+<!-- ****************************** -->
+<xsl:template name="infix" >
+ <xsl:param name="mo"/>
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="this-p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <xsl:copy-of select="$mo"/>
+ </xsl:if>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template name="binary" >
+ <xsl:param name="mo"/>
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="this-p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ <xsl:copy-of select="$mo"/>
+ <xsl:apply-templates mode="c2p" select="*[3]">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template name="set" >
+ <xsl:param name="o" select="'{'"/>
+ <xsl:param name="c" select="'}'"/>
+ <mml:mrow>
+ <mml:mo><xsl:value-of select="$o"/></mml:mo>
+ <xsl:choose>
+ <xsl:when test="mml:condition">
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar/*[not(self::bvar or self::condition)]"/></mml:mrow>
+ <mml:mo>|</mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:condition/node()"/></mml:mrow>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="*">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ <mml:mo><xsl:value-of select="$c"/></mml:mo>
+ </mml:mrow>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl
new file mode 100644
index 0000000..7c73965
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl
@@ -0,0 +1,274 @@
+<?xml version='1.0'?>
+
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0">
+
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>
+
+<!-- This file contains the "customization layer" for the Docbook system. When a Docbook rule
+doesn't do exactly what we need, we override the rule in this file with a modified rule. -->
+
+<!-- Inserts the file style-css.xsl. This is embeddd into the <head /> tag of each resulting html file -->
+ <xsl:include href="styles-css.xsl" />
+ <xsl:include href="copyright.inc.xsl" />
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param>
+ <xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+ <xsl:output indent="yes"/>
+
+<!-- Set this param to a placeholder for the base URL of the external specification document. Include
+the beginning of the 'namedest' function as well. See the script pageNumberLookup.rb to see
+how this placeholder gets replaced by the actual spec URL and target page number. This placeholder
+can be any string, and only needs to match the same placeholder string in pageNumberLookup.rb. -->
+ <xsl:param name="SpecBaseUrl">http://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf#namedest=</xsl:param>
+
+<!-- This generates a URL based on the contents of Refentry title. However if there is a value
+specified for the href attribute in Citerefentry, then it will create the URL out if that content instead -->
+ <xsl:template name="generate.citerefentry.link">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ <xsl:text>.html</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>.html</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<!-- The following template creates the link for the Specification section -->
+ <xsl:template match="olink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$SpecBaseUrl" />
+ <xsl:value-of select="@uri" />
+ <xsl:text disable-output-escaping="yes">" target="OpenCL Spec"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+<!-- The following enables use of ulink for regular URLs on the pages-->
+<xsl:template match="ulink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="@url" />
+ <xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+</xsl:template>
+
+
+<!-- The following is the main set of templates for generating the web pages -->
+ <xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/> <!-- This line performs the magic! -->
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ </body>
+ </html>
+ </xsl:template>
+
+
+<xsl:template match="/">
+ <xsl:processing-instruction name="xml-stylesheet">
+ <xsl:text>type="text/xsl" href="mathml.xsl"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:apply-imports/>
+</xsl:template>
+
+
+<xsl:template match="funcdef/replaceable">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+
+<!-- This inserts the style-css.xsl file into the HTML file -->
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+</xsl:template>
+
+
+<!-- The templates gentext-refname and refnamediv are inserted here so
+we can have the refname displayed as the H1 header on the page -->
+<xsl:template name="gentext-refname">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:value-of select="refname"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h1>
+ <xsl:call-template name="gentext-refname">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h1>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+
+<!-- The templates refname and refpurpose are inserted here so that we can
+modify the layout of these values on the HTML page -->
+<xsl:template match="refname" />
+<xsl:template match="refpurpose">
+<xsl:apply-templates/>
+</xsl:template>
+
+
+<!-- The Link template allows us to embed links in the <funcprototype>,
+even though this is not valid DocBook markup -->
+<xsl:template match="link" mode="ansi-tabular">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+
+<!-- The following template enables the <replaceable> tag inside
+ <funcdef>, <paramdef>, and <function> to generate <em> in the HTML output -->
+<xsl:template match="funcdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="paramdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="function/replaceable" mode="ansi-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="refname/replaceable" mode="kr-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<!-- The templates funcprototype and paramdef are here so we can modify the layout
+of the synopsis so that it is not broken into so many columns in the table, control indenting, and more. -->
+
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr valign="bottom">
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </td>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[position() &gt; 1]">
+ <tr valign="top">
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+</xsl:template>
+
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="type and funcparams">
+ <td>
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="type/following-sibling::node()" mode="kr-tabular-funcsynopsis-mode"/>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:text>&#160;</xsl:text>
+<!-- </td>
+ <td>-->
+ <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+<!-- OpenCL functions do not end with a semi-colon.
+ <xsl:text>;</xsl:text> -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+
+<!-- The template refsect3 is inserted here to deal with the copyright. This
+adds in the text from the include file copyright.inc.xsl -->
+<xsl:template match="refsect3">
+ <div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$copyright"/>
+ </div>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html
new file mode 100644
index 0000000..e3ad8b3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglBindAPI</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglBindAPI"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglBindAPI</h1>
+ <p>Set the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglBindAPI</strong>(</code>
+ <td>EGLenum  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">api</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>api</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API to bind, one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglBindAPI</code> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <code class="function">eglCreateContext</code>,
+ <code class="function">eglGetCurrentContext</code>,
+ <code class="function">eglGetCurrentDisplay</code>,
+ <code class="function">eglGetCurrentSurface</code>,
+ <code class="function">eglMakeCurrent</code>,
+ <code class="function">eglWaitClient</code>, and
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_API</code>, the current rendering
+ API is set to the OpenGL API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_ES_API</code>, the current
+ rendering API is set to the OpenGL ES API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENVG_API</code>, the current rendering
+ API is set to the OpenVG API.
+ </p>
+ <p>
+ If an error occurs, the current rendering API is unchanged.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglBindAPI</code> and the corresponding
+ <code class="constant">EGL_OPENGL_ES_API</code> and
+ <code class="constant">EGL_OPENVG_API</code>
+ <em class="parameter"><code>api</code></em> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <code class="constant">EGL_OPENGL_API</code> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be queried by calling
+ <code class="function">eglQueryAPI</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>api</code></em> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryAPI.html"><span class="citerefentry"><span class="refentrytitle">eglQueryAPI</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html
new file mode 100644
index 0000000..e0e96c2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglBindTexImage</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglBindTexImage"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglBindTexImage</h1>
+ <p>
+ Defines a two-dimensional texture image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglBindTexImage</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The texture image consists of the image data in <em class="parameter"><code>buffer</code></em> for the specified surface, and need not be copied.
+ </p>
+ <p>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code> or <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code> attributes.
+ </p>
+ <p>
+ The pbuffer attribute <code class="constant">EGL_TEXTURE_FORMAT</code> determines the base internal format
+ of the texture.
+ </p>
+ <p>
+ The texture target is derived from the <code class="constant">EGL_TEXTURE_TARGET</code> attribute of surface.
+ If the attribute value is <code class="constant">EGL_TEXTURE_2D</code>, then <em class="parameter"><code>buffer</code></em> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> and <em class="parameter"><code>surface</code></em> are the display and surface for the calling thread's current
+ context, <code class="function">eglBindTexImage</code> performs an implicit <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>.
+ For other surfaces, <code class="function">eglBindTexImage</code> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a> were called on the last context to which that surface were bound.
+ </p>
+ <p>
+ After <code class="function">eglBindTexImage</code> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a> or
+ <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </p>
+ <p>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <code class="function">eglBindTexImage</code>:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ The <code class="constant">EGL_MIPMAP_TEXTURE</code> attribute of the pbuffer being bound is
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The OpenGL ES texture parameter <code class="constant">GL_GENERATE_MIPMAP</code> is <code class="constant">GL_TRUE</code> for
+ the currently bound texture.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The value of the <code class="constant">EGL_MIPMAP_LEVEL</code> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <code class="constant">GL_TEXTURE_BASE_LEVEL</code>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> has no effect if it is
+ called on a bound surface.
+ </p>
+ <p>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <a class="citerefentry" href="glTexImage.html"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a>
+ was called with an image of zero width).
+ </p>
+ <p>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <a class="citerefentry" href="eglReleaseTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </p>
+ <p>
+ It is not an error to call <a class="citerefentry" href="glTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a> or
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </p>
+ <p>
+ <code class="function">eglBindTexImage</code> is ignored if there is no current rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is already bound to a texture.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglReleaseTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html
new file mode 100644
index 0000000..8a6f251
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html
@@ -0,0 +1,1361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglChooseConfig</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglChooseConfig"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglChooseConfig</h1>
+ <p>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">configs</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_config</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies attributes required to match by configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns an array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of frame buffer configurations returned.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglChooseConfig</code> returns in
+ <em class="parameter"><code>configs</code></em> a list of all
+ <acronym class="acronym">EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <em class="parameter"><code>attrib_list</code></em>. The returned
+ <span class="type">EGLConfig</span>s can be used in any
+ <acronym class="acronym">EGL</acronym> function that requires an
+ <acronym class="acronym">EGL</acronym> frame buffer configuration.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is not
+ <code class="constant">NULL</code>, up to
+ <em class="parameter"><code>config_size</code></em> configs will be returned
+ in the array pointed to by <em class="parameter"><code>configs</code></em>.
+ The number of configs actually returned will be returned in
+ *<em class="parameter"><code>num_config</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is
+ <code class="constant">NULL</code>, no configs will be returned in
+ <em class="parameter"><code>configs</code></em>. Instead, the total number of
+ configs matching <em class="parameter"><code>attrib_list</code></em> will be
+ returned in *<em class="parameter"><code>num_config</code></em>. In this case
+ <em class="parameter"><code>config_size</code></em> is ignored. This form of
+ <code class="function">eglChooseConfig</code> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <span class="type">EGLConfig</span> to pass
+ into another call to <code class="function">eglChooseConfig</code>
+ with all other parameters unchanged.
+ </p>
+ <p>
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <code class="constant">EGL_NONE</code>. If an attribute is not
+ specified in <em class="parameter"><code>attrib_list</code></em> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <code class="constant">EGL_DEPTH_SIZE</code> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <code class="constant">EGL_DONT_CARE</code> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </p>
+ <p>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <code class="constant">EGL_LEVEL</code>,
+ must match the specified value exactly. Others, such as,
+ <code class="constant">EGL_RED_SIZE</code> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </p>
+ <p>
+ For the bitmask attributes
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </p>
+ <p>
+ Attributes which may appear in
+ <em class="parameter"><code>attrib_list</code></em>, and their descriptions
+ and allowed values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </p>
+ <p>
+ The alpha mask buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ <p>
+ The color buffer size is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_RGB_BUFFER</code> or
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_RGB_BUFFER</code> indicates
+ an RGB color buffer; in this case,
+ attributes <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code> and
+ <code class="constant">EGL_BLUE_SIZE</code> must be non-zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be zero.
+ </p>
+ <p>
+ <code class="constant">EGL_LUMINANCE_BUFFER</code> indicates a luminance color
+ buffer. In this case <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code> must be zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be non-zero.
+ </p>
+ <p>
+ For both RGB and luminance color buffers,
+ <code class="constant">EGL_ALPHA_SIZE</code> may be zero or
+ non-zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_DONT_CARE</code> is specified,
+ then configs are not matched for this attribute. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_NONE</code> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <code class="constant">EGL_SLOW_CONFIG</code> or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>) will
+ be considered.
+ </p>
+ <p>
+ If <code class="constant">EGL_SLOW_CONFIG</code> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </p>
+ <p>
+ If <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </p>
+ <p>
+ If the EGL version is 1.3 or later, caveat
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ obsolete, since the same information can be
+ specified via the
+ <code class="constant">EGL_CONFORMANT</code> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <code class="constant">EGL_CONFIG_ID</code> is specified, all
+ other attributes are ignored. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENVG_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenVG contexts.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </p>
+ <p>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </p>
+ <p>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </p>
+ <p>
+ Most imlementations do not support overlay or
+ underlay planes (buffer levels other than zero).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <span class="type">EGLint</span>, or
+ <code class="constant">EGL_NONE</code>. If the value is not
+ <code class="constant">EGL_NONE</code>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>
+ will match this attribute. If the value is
+ <code class="constant">EGL_NONE</code>, then configs are not
+ matched for this attribute. The default value is
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> was
+ introduced due to the difficulty of determining an
+ <span class="type">EGLConfig</span> compatibile with a native
+ pixmap using only color component sizes.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </p>
+ <p>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>).
+ Mask bits are the same as for attribute
+ <code class="constant">EGL_CONFORMANT</code>. The default
+ value is <code class="constant">EGL_OPENGL_ES_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PBUFFER_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixel buffer surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXMAP_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixmap surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows setting swap behavior for
+ color buffers with
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WINDOW_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating window surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
+ <mml:mi><code class="constant">EGL_WINDOW_BIT</code></mml:mi>
+ <mml:mo>|</mml:mo>
+ <mml:mi><code class="constant">EGL_PIXMAP_BIT</code></mml:mi>
+ </mml:math>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <code class="constant">EGL_WINDOW_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_NONE</code> or
+ <code class="constant">EGL_TRANSPARENT_RGB</code>. If
+ <code class="constant">EGL_NONE</code> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <code class="constant">EGL_TRANSPARENT_RGB</code> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_CONFIG_CAVEAT</code>,
+ where the precedence is <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ where the precedence is
+ <code class="constant">EGL_RGB_BUFFER</code>,
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>; for a luminance
+ color buffer, the sum of
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and
+ <code class="constant">EGL_ALPHA_SIZE</code>). If the requested
+ number of bits in <em class="parameter"><code>attrib_list</code></em> is
+ <code class="constant">0</code> or
+ <code class="constant">EGL_DONT_CARE</code> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </p>
+ <p>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_BUFFER_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLE_BUFFERS</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLES</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_DEPTH_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_STENCIL_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_ALPHA_MASK_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_CONFIG_ID</code> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ <span class="type">EGLConfigs</span> are not sorted with respect to the
+ attributes <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>,
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>,
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_LEVEL</code>,
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>,
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_SURFACE_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>,
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>, and
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="examples"></a>
+ <h2>Examples</h2>
+ <p>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </p>
+ <pre class="programlisting">EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</pre>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code> and
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> are
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> and
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code> are
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bits
+ <code class="constant">EGL_OPENGL_ES_BIT</code> and
+ <code class="constant">EGL_OPENVG_BIT</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <code class="constant">GL_RED_BITS</code> equal to
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and the values of
+ <code class="constant">GL_GREEN_BITS</code> and
+ <code class="constant">GL_BLUE_BITS</code> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </p>
+ <p>
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ and
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <code class="function">eglChooseConfig</code>. Call
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </p>
+ <p>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <code class="function">eglChooseConfig</code>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and
+ <em class="parameter"><code>num_config</code></em> are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute_list</code></em> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html
new file mode 100644
index 0000000..e24ff15
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCopyBuffers</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCopyBuffers"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCopyBuffers</h1>
+ <p>
+ copy <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface color buffer to a native pixmap
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglCopyBuffers</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativePixmapType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_pixmap</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native pixmap as target of the copy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCopyBuffers</code> copies the color buffer of
+ <em class="parameter"><code>surface</code></em> to <em class="parameter"><code>native_pixmap</code></em>.
+ </p>
+ <p>
+ <code class="function">eglCopyBuffers</code> performs an implicit
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <code class="function">eglCopyBuffers</code>,
+ but are not executed until copying of the color buffer is completed.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The color buffer of <em class="parameter"><code>surface</code></em> is left unchanged
+ after calling <code class="function">eglCopyBuffers</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> is generated if
+ the implementation does not support native pixmaps.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the format of <em class="parameter"><code>native_pixmap</code></em> is not compatible
+ with the color buffer of <em class="parameter"><code>surface</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html
new file mode 100644
index 0000000..55c317c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreateContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreateContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreateContext</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLContext <strong class="fsfunc">eglCreateContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">share_context</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the
+ <acronym class="acronym">EGL</acronym>
+ display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>share_context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies another
+ <acronym class="acronym">EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <em class="parameter"><code>share_context</code></em> shares data.
+ <code class="constant">EGL_NO_CONTEXT</code> indicates that
+ no sharing is to take place.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> may
+ be specified.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateContext</code> creates an EGL
+ rendering context for the current rendering API (as set with
+ <code class="function">eglBindAPI</code>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <code class="function">eglCreateContext</code>
+ fails to create a rendering context,
+ <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>share_context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <em class="parameter"><code>share_context</code></em>, all other contexts
+ <em class="parameter"><code>share_context</code></em> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <code class="function">eglChooseConfig</code>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer that determines which
+ version of an OpenGL ES context to create. A value
+ of 1 specifies creation of an OpenGL ES 1.x context.
+ An attribute value of 2 specifies creation of an
+ OpenGL ES 2.x context. The default value is 1. This
+ attribute can only be specified when creating a
+ OpenGL ES context (e.g. when the current rendering
+ API is <code class="constant">EGL_OPENGL_ES_API</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The current rendering API is only respected if the EGL
+ version is 1.2 or greater. Otherwise, an OpenGL ES context
+ will always be created.
+ </p>
+ <p>
+ The <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ attribute is only supported if the EGL version is 1.3 or
+ greater.
+ </p>
+ <p>
+ A <em class="firstterm">process</em> is a single execution environment,
+ implemented in a single address space, consisting of one or more threads.
+ </p>
+ <p>
+ A <em class="firstterm">thread</em> is one of a set of subprocesses that
+ share a single address space, but maintain separate program counters,
+ stack spaces, and other related global data.
+ A thread is the only member of its subprocess group is equivalent to a
+ process.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_CONTEXT</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ current rendering API is <code class="constant">EGL_NONE</code> (this
+ can only arise in an EGL implementation which does not
+ support OpenGL ES, prior to the first call to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ server context state for
+ <em class="parameter"><code>share_context</code></em> exists in an address
+ space which cannot be shared with the newly created context,
+ if <em class="parameter"><code>share_context</code></em> was created on a
+ different display than the one referenced by
+ <em class="parameter"><code>config</code></em>, or if the contexts are
+ otherwise incompatible.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer
+ configuration, or does not support the current rendering
+ API. This includes requesting creation of an OpenGL ES 1.x
+ context when the <code class="constant">EGL_RENDERABLE_TYPE</code>
+ attribute of <em class="parameter"><code>config</code></em> does not contain
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, or creation of an
+ OpenGL ES 2.x context when the attribute does not contain
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>share_context</code></em> is not an EGL rendering
+ context of the same client API type as the newly created
+ context and is not <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid
+ context attribute or if an attribute is not recognized or
+ out of range. Note that attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ only valid when the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroyContext.html"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html
new file mode 100644
index 0000000..29fadf5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html
@@ -0,0 +1,669 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePbufferFromClientBuffer</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePbufferFromClientBuffer"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePbufferFromClientBuffer</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferFromClientBuffer</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLenum  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buftype</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLClientBuffer  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buftype</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of client API buffer to be bound.
+ Must be <code class="constant">EGL_OPENVG_IMAGE</code>,
+ corresponding to an OpenVG <span class="type">VGImage</span>
+ buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the OpenVG <span class="type">VGImage</span> handle of
+ the buffer to be bound.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferFromClientBuffer</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <em class="parameter"><code>config</code></em>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </p>
+ <p>
+ <em class="parameter"><code>buftype</code></em> must be
+ <code class="constant">EGL_OPENVG_IMAGE</code>, corresponding to an
+ OpenVG <span class="type">VGImage</span> buffer.
+ <em class="parameter"><code>buffer</code></em> must be a valid
+ <span class="type">VGImage</span> handle in the current OpenVG context,
+ cast into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <code class="constant">EGL_HEIGHT</code>,
+ <code class="constant">EGL_WIDTH</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, respectively) of the
+ resulting surface are determined by the size and format of
+ <em class="parameter"><code>buffer</code></em>.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </p>
+ <p>
+ Currently
+ <code class="function">eglCreatePbufferFromClientBuffer</code> only
+ supports binding OpenVG <span class="type">VGImage</span> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <span class="type">EGLImageKHR</span>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ <p>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <span class="type">VGImage</span> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <span class="type">VGImage</span> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <span class="type">VGImage</span> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <span class="type">VGImage</span> is bound to a pbuffer,
+ destroying the image with
+ <code class="function">vgDestroyImage</code> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <code class="function">vgDestroyImage</code> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <code class="function">eglDestroySurface</code> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <code class="function">eglDestroySurface</code> the buffer
+ may only be referred to via the OpenVG
+ <span class="type">VGImage</span> handle, since the EGL pbuffer
+ handle no longer exists.
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>buftype</code></em> is not
+ <code class="constant">EGL_OPENVG_IMAGE</code>, or if
+ <em class="parameter"><code>buffer</code></em> is not a valid handle to a
+ <span class="type">VGImage</span> object in the currently bound OpenVG
+ context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if there is
+ no current OpenVG context, or if
+ <em class="parameter"><code>buffer</code></em> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ buffers contained in <em class="parameter"><code>buffer</code></em> do not
+ match the bit depths for those buffers specified by
+ <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <span class="type">VGImage</span> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ attribute is <code class="constant">TRUE</code>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html
new file mode 100644
index 0000000..c99115a
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePbufferSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePbufferSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePbufferSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixel buffer surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferSurface</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferSurface</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html
new file mode 100644
index 0000000..5f35de9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html
@@ -0,0 +1,494 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePixmapSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePixmapSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePixmapSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixmap surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePixmapSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativePixmapType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePixmapSurface</code> creates an
+ off-screen <acronym class="acronym">EGL</acronym> pixmap surface and returns
+ its handle. If <code class="function">eglCreatePixmapSurface</code>
+ fails to create a pixmap surface,
+ <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> attribute
+ of
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL config.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_pixmap</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixmaps
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PIXMAP_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html
new file mode 100644
index 0000000..12daff3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html
@@ -0,0 +1,512 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreateWindowSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreateWindowSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreateWindowSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> window surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreateWindowSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativeWindowType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies window surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateWindowSurface</code> creates an EGL
+ window surface and returns its handle. If
+ <code class="function">eglCreateWindowSurface</code> fails to create
+ a window surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <code class="constant">EGL_SINGLE_BUFFER</code>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <code class="constant">EGL_BACK_BUFFER</code>, then client
+ APIs should render into the back buffer. The default
+ value of <code class="constant">EGL_RENDER_BUFFER</code> is
+ <code class="constant">EGL_BACK_BUFFER</code>.
+ </p>
+ <p>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <a class="citerefentry" href="eglQueryContext.html"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> when compositing
+ window surfaces.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ <em class="parameter"><code>native_window</code></em> is not a valid native window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_window</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to windows
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_WINDOW_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html
new file mode 100644
index 0000000..b7be78e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglDestroyContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglDestroyContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglDestroyContext</h1>
+ <p>
+ destroy an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If the EGL rendering context <em class="parameter"><code>context</code></em> is not
+ current to any thread,
+ <code class="function">eglDestroyContext</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>context</code></em> is destroyed when it becomes
+ not current to any thread.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the context fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html
new file mode 100644
index 0000000..c2b6a96
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglDestroySurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglDestroySurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglDestroySurface</h1>
+ <p>
+ destroy an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL surface to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If the EGL surface <em class="parameter"><code>surface</code></em> is not current to any
+ thread, <code class="function">eglDestroySurface</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>surface</code></em> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the surface fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html
new file mode 100644
index 0000000..376550a
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html
@@ -0,0 +1,715 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetConfigAttrib</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetConfigAttrib"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetConfigAttrib</h1>
+ <p>
+ return information about an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> frame buffer
+ configuration
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigAttrib</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration to be
+ queried.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context attribute to be
+ returned.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the requested value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigAttrib</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>config</code></em>
+ (config attributes are described in more detail in the
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ reference page).
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of alpha stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits in the alpha mask buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGB texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGBA texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of blue stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the depth of the color buffer.
+ It is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color buffer type. Possible types are
+ <code class="constant">EGL_RGB_BUFFER</code> and
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the depth buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of green stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum width of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum height of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_PIXELS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum size of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the minimum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if native rendering
+ APIs can render into the surface,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of red stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of multisample buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of samples per pixel.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the stencil buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of supported transparency.
+ Possible transparency values are:
+ <code class="constant">EGL_NONE</code>, and
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent red value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent green value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent blue value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code> is supported only if the
+ EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> are supported only
+ if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ While <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> can be
+ specified in the attribute list passed to
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <code class="function">eglGetConfigAttrib</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid frame buffer
+ configuration attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html
new file mode 100644
index 0000000..41967e6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html
@@ -0,0 +1,375 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetConfigs</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetConfigs"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetConfigs</h1>
+ <p>
+ return a list of all <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> frame buffer configurations
+ for a display
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigs</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">configs</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_config</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns a list of configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the list of configs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of configs returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigs</code> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </p>
+ <p>
+ <em class="parameter"><code>configs</code></em> does not return values, if it is specified
+ as
+ <code class="constant">NULL</code>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and <em class="parameter"><code>num_config</code></em>
+ are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html
new file mode 100644
index 0000000..51f8dac
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentContext</h1>
+ <p>
+ return the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLContext <strong class="fsfunc">eglGetCurrentContext</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentContext</code> returns the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html
new file mode 100644
index 0000000..42676c1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentDisplay</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentDisplay"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentDisplay</h1>
+ <p>
+ return the display for the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLDisplay <strong class="fsfunc">eglGetCurrentDisplay</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentDisplay</code> returns the current
+ <acronym class="acronym">EGL</acronym> display connection for the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_DISPLAY</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html
new file mode 100644
index 0000000..feeacf3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentSurface</h1>
+ <p>
+ return the read or draw surface for the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglGetCurrentSurface</strong>(</code>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">readdraw</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>readdraw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether the <acronym class="acronym">EGL</acronym> read or draw surface
+ is to be returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentSurface</code> returns the read or draw
+ surface attached to the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html
new file mode 100644
index 0000000..5494aa2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetDisplay</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetDisplay"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetDisplay</h1>
+ <p>
+ return an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLDisplay <strong class="fsfunc">eglGetDisplay</strong>(</code>
+ <td>NativeDisplayType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_display</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the display to connect to.
+ <code class="constant">EGL_DEFAULT_DISPLAY</code> indicates the default display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetDisplay</code> obtains the
+ <acronym class="acronym">EGL</acronym> display connection for the native
+ display <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a default display connection is returned.
+ </p>
+ <p>
+ If no display connection matching <em class="parameter"><code>native_display</code></em> is
+ available, <code class="constant">EGL_NO_DISPLAY</code> is returned. No
+ error is generated.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ to initialize the display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html
new file mode 100644
index 0000000..7d81645
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetError</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetError"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetError</h1>
+ <p>
+ return error information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLint <strong class="fsfunc">eglGetError</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetError</code> returns the error of the last
+ called <acronym class="acronym">EGL</acronym> function in the current thread.
+ Initially, the error is set to <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ <p>
+ The following errors are currently defined:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SUCCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The last function succeeded without error.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NOT_INITIALIZED</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ALLOC</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL failed to allocate resources for the requested
+ operation.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ATTRIBUTE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONTEXT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLContext</span> argument does not name a
+ valid EGL rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONFIG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ An <span class="type">EGLConfig</span> argument does not name a valid
+ EGL frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_DISPLAY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLDisplay</span> argument does not name a
+ valid EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLSurface</span> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_MATCH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_PARAMETER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>One or more argument values are invalid.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A <span class="type">NativePixmapType</span> argument does not refer to
+ a valid native pixmap.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code>
+ </span>
+ </dt>
+ <dd>
+ <p>A <span class="type">NativeWindowType</span> argument does not refer
+ to a valid native window.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_LOST</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ A call to <code class="function">eglGetError</code> sets the error to
+ <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html
new file mode 100644
index 0000000..ab2c27d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetProcAddress</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetProcAddress"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetProcAddress</h1>
+ <p>
+ return a <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">GL</acronym> or an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym>
+ extension function
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">void (* <strong class="fsfunc">eglGetProcAddress</strong>)()(</code>
+ <td>char const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">procname</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>procname</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the name of the function to return.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetProcAddress</code> returns the address of
+ the extension function named by <em class="parameter"><code>procname</code></em>.
+ <em class="parameter"><code>procname</code></em>
+ must be a null-terminated string. The pointer returned
+ should be cast to a function pointer type matching the extension
+ function's definition in that extension specification. A return value
+ of <code class="constant">NULL</code> indicates that the specific
+ function does not exist for the <acronym class="acronym">EGL</acronym> implementation.
+ </p>
+ <p>
+ A non-<code class="constant">NULL</code> return value does not guarantee
+ that an extension function is actually supported at runtime. The client
+ must also query
+ <a class="citerefentry" href="glGetString.html"><span class="citerefentry"><span class="refentrytitle">glGetString</span></span></a>(<code class="constant">GL_EXTENSIONS</code>) or
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>(<em class="parameter"><code>display</code></em>,
+ <code class="constant">EGL_EXTENSIONS</code>) to determine if an
+ extension is supported by a particular context or display.
+ </p>
+ <p>
+ Function pointers returned by
+ <code class="function">eglGetProcAddress</code> are independent of the
+ display and the currently bound context and may be used by any context
+ which supports the extension.
+ </p>
+ <p>
+ <code class="function">eglGetProcAddress</code> may be queried for all
+ <acronym class="acronym">GL</acronym> and <acronym class="acronym">EGL</acronym> extension functions.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glGetString.html"><span class="citerefentry"><span class="refentrytitle">glGetString</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html
new file mode 100644
index 0000000..0f6b378
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html
@@ -0,0 +1,355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglInitialize</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglInitialize"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglInitialize</h1>
+ <p>
+ initialize an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglInitialize</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">major</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">minor</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to initialize.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>major</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the major version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>minor</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the minor version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglInitialize</code> initialized the EGL display
+ connection obtained with
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </p>
+ <p>
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em>
+ do not return values if they are specified as <code class="constant">NULL</code>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ to release resources associated with an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglInitialize</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em> are not
+ modified when <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> cannot be initialized.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html
new file mode 100644
index 0000000..4ef078e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglIntro</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglIntro"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglIntro</h1>
+ <p>
+ introduction to managing client API rendering through the
+ <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> API.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="overview"></a>
+ <h2>Overview</h2>
+ <p>
+ The <em class="firstterm">Khronos Native Platform Graphics
+ Interface</em> (EGL) provides a means for rendering
+ using a <em class="firstterm">client API</em> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a native window
+ system, such as Microsoft Windows or the X Window System.
+ </p>
+ <p>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the native window system. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>
+ and passing in a native display handle or
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>. To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ Native window systems supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the native window
+ system API.
+ </p>
+ <p>
+ An EGL <em class="firstterm">surface</em> extends a native
+ window or pixmap with additional <em class="firstterm">auxillary
+ buffers</em>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </p>
+ <p>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the native window system. EGL pixel buffers are
+ EGL only resources, and do not accept rendering through the
+ native window system.
+ </p>
+ <p>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ returns an <span class="type">EGLConfig</span> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ </p>
+ <p>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </p>
+ <p>
+ To create an EGL window surface from a native window, call
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <span class="type">VGImage</span>, call
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>.
+ Use
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to release previously allocated resources.
+ </p>
+ <p>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ <p>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ This context/surface(s) association specifies the
+ <em class="firstterm">current context</em> and
+ <em class="firstterm">current surface</em>, and is used by all
+ client API rendering commands for the bound context until
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ is called with different arguments.
+ </p>
+ <p>
+ Both native and client API commands may be used to operate
+ on certain surfaces, however, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <a class="citerefentry" href="eglWaitCLient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitCLient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ and possibly by calling other native window system commands.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="examples"></a>
+ <h2>Examples</h2>
+ <p>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </p>
+ <pre class="programlisting">
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</pre>
+ </div>
+ <div class="refsect1">
+ <a id="usingeglextensions"></a>
+ <h2>Using EGL Extensions</h2>
+ <p>
+ All supported EGL extensions will have a corresponding definition in
+ <code class="filename">egl.h</code> and a token in the extensions string returned
+ by
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="futureeglversions"></a>
+ <h2>Future EGL Versions</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ and
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <code class="constant">EGL_VERSION_<em class="replaceable"><code>x</code></em>_<em class="replaceable"><code>y</code></em></code>
+ is defined, where <em class="replaceable"><code>x</code></em> and
+ <em class="replaceable"><code>y</code></em> are the major and minor version
+ numbers.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="files"></a>
+ <h2>Files</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="filename">GLES/egl.h</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ EGL header file
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroyContext.html"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html
new file mode 100644
index 0000000..e198962
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglMakeCurrent</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglMakeCurrent"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglMakeCurrent</h1>
+ <p>
+ attach an EGL rendering context to EGL surfaces
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglMakeCurrent</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">draw</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">read</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>draw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> draw surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>read</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> read surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglMakeCurrent</code> binds <em class="parameter"><code>context</code></em>
+ to the current rendering thread and to the <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> surfaces. <em class="parameter"><code>draw</code></em>
+ is used for all GL operations except for any pixel data read back
+ (<a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>, and
+ <a class="citerefentry" href="glCopyTexSubImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>),
+ which is taken from the frame buffer values of
+ <em class="parameter"><code>read</code></em>.
+ </p>
+ <p>
+ If the calling thread has already a current rendering context, that
+ context is flushed and marked as no longer current.
+ </p>
+ <p>
+ The first time that <em class="parameter"><code>context</code></em> is made current,
+ the viewport and scissor dimensions are set to the size of the
+ <em class="parameter"><code>draw</code></em> surface. The viewport and
+ scissor are not modified when <em class="parameter"><code>context</code></em> is
+ subsequently made current.
+ </p>
+ <p>
+ To release the current context without assigning a new one, call
+ <code class="function">eglMakeCurrent</code> with <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> set to
+ <code class="constant">EGL_NO_SURFACE</code> and <em class="parameter"><code>context</code></em>
+ set to <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>, and
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>
+ to query the current rendering context and associated display connection and surfaces.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. If <code class="constant">EGL_FALSE</code>
+ is returned, the previously current rendering context and
+ surfaces (if any) remain unchanged.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em> is not an
+ EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ are not compatible with
+ <em class="parameter"><code>context</code></em>, or if
+ <em class="parameter"><code>context</code></em> is set to
+ <code class="constant">EGL_NO_CONTEXT</code> and
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ are not set to
+ <code class="constant">EGL_NO_SURFACE</code>, or if
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are set to
+ <code class="constant">EGL_NO_SURFACE</code> and
+ <em class="parameter"><code>context</code></em> is not set to
+ <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>context</code></em>
+ is current to some other thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ a native pixmap underlying either
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ a native window underlying either
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the previous context has unflushed commands and the previous surface
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> may be generated if
+ allocation of ancillary buffers for <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> were delayed until
+ <code class="function">eglMakeCurrent</code> is called, and there are not
+ enough resources to allocate them.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
+ <a class="citerefentry" href="glCopyTexSubImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html
new file mode 100644
index 0000000..fd1b923
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryAPI</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryAPI"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryAPI</h1>
+ <p>Query the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLenum <strong class="fsfunc">eglQueryAPI</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ and affects the behavior of other EGL commands.
+ </p>
+ <p>
+ The value returned will be one of the valid
+ <em class="parameter"><code>api</code></em> parameters to
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>, or
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglQueryAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be changed by calling
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ None.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html
new file mode 100644
index 0000000..d956c53
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html
@@ -0,0 +1,474 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryContext</h1>
+ <p>
+ return <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglQueryContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryContext</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>context</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the type of client API which the context
+ supports (one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ If the context is bound to a pixmap surface,
+ then <code class="constant">EGL_SINGLE_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a pbuffer surface,
+ then <code class="constant">EGL_BACK_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a window surface,
+ then either <code class="constant">EGL_BACK_BUFFER</code>
+ or <code class="constant">EGL_SINGLE_BUFFER</code> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <code class="constant">EGL_RENDER_BUFFER</code> property
+ of the surface (which may be queried by calling
+ <code class="function">eglQuerySurface</code>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <code class="constant">EGL_NONE</code> will
+ be returned.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code> and
+ <code class="constant">EGL_RENDER_BUFFER</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid context attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html
new file mode 100644
index 0000000..5fdf82b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryString</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryString"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryString</h1>
+ <p>
+ return a string describing an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">char const * <strong class="fsfunc">eglQueryString</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">name</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>name</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a symbolic constant, one of
+ <code class="constant">EGL_CLIENT_APIS</code>,
+ <code class="constant">EGL_VENDOR</code>,
+ <code class="constant">EGL_VERSION</code>, or
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryString</code> returns a pointer to a
+ static string describing an EGL display connection.
+ <em class="parameter"><code>name</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CLIENT_APIS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separate list of API names. The list must
+ include at least one of <code class="code">OpenGL</code>,
+ <code class="code">OpenGL_ES</code>, or <code class="code">OpenVG</code>.
+ These strings correspond respectively to values
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, and
+ <code class="constant">EGL_OPENVG_API</code> of the
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <em class="parameter"><code>api</code></em> argument.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VENDOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the company responsible for this EGL implementation. This
+ name does not change from release to release.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a version or release number.
+ The <code class="constant">EGL_VERSION</code> string is laid out as
+ follows:</p>
+ <p>
+ <em class="replaceable"><code>major_version</code></em>.<em class="replaceable"><code>minor_version</code></em>
+ space
+ <em class="replaceable"><code>vendor_specific_info</code></em>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_EXTENSIONS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a space separated list of supported extensions to EGL.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CLIENT_APIS</code> is supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">NULL</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>name</code></em> is not an accepted value.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html
new file mode 100644
index 0000000..c7b3fc9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html
@@ -0,0 +1,599 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQuerySurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQuerySurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQuerySurface</h1>
+ <p>
+ return <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglQuerySurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQuerySurface</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>surface</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the height of the surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the same attribute value specified when the
+ surface was created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>.
+ For a window or pixmap surface,
+ <em class="parameter"><code>value</code></em> is not modified.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns <code class="constant">EGL_TRUE</code> if texture has
+ mipmaps, <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ or <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>,
+ as described for
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <code class="constant">EGL_BACK_BUFFER</code>. For a pixmap
+ surface, it is always
+ <code class="constant">EGL_SINGLE_BUFFER</code>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <a class="citerefentry" href="eglQueryContext.html"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ Swap behavior may be either
+ <code class="constant">EGL_BUFFER_PRESERVED</code> or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, as
+ described for
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns format of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns type of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the width of the surface in pixels.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_DISPLAY_SCALING</code>.
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>,
+ <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>, and
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> are supported
+ only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Querying attributes <code class="constant">EGL_TEXTURE_FORMAT</code>,
+ <code class="constant">EGL_TEXTURE_TARGET</code>,
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>, or
+ <code class="constant">EGL_MIPMAP_LEVEL</code> for a non-pbuffer
+ surface is not an error, but <em class="parameter"><code>value</code></em> is
+ not modified.
+ </p>
+ <p>
+ <code class="constant">EGL_DISPLAY_SCALING</code> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </p>
+ <p>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>, or
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> will return the
+ constant value <code class="constant">EGL_UNKNOWN</code> (-1).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html
new file mode 100644
index 0000000..2acf40b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglReleaseTexImage</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglReleaseTexImage"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglReleaseTexImage</h1>
+ <p>
+ Releases a color buffer that is being used as a texture
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseTexImage</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </p>
+ <p>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <a class="citerefentry" href="eglBindTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ and <code class="function">eglReleaseTexImage</code>.
+ </p>
+ <p>
+ After a color buffer is released from a texture (either explicitly by calling
+ <code class="function">eglReleaseTexImage</code> or implicitly by calling a routine such as
+ <a class="citerefentry" href="glTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>),
+ all texture images that were defined by the color buffer become <code class="constant">NULL</code>
+ (it is as if <a class="citerefentry" href="glTexImage.html"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a> was called with an image of zero width).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html
new file mode 100644
index 0000000..4740ef1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglReleaseThread</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglReleaseThread"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglReleaseThread</h1>
+ <p>Release EGL per-thread state</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseThread</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <span class="command"><strong>eglGetError</strong></span>, the currently bound
+ rendering API defined by <span class="command"><strong>eglBindAPI</strong></span>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </p>
+ <p>
+ <code class="constant">EGL_TRUE</code> is returned on success, and the
+ following actions are taken:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <code class="function">eglMakeCurrent</code> with ctx set to
+ <code class="constant">EGL_NO_CONTEXT</code> and both draw
+ and read set to <code class="constant">EGL_NO_SURFACE</code>
+ (see section 3.7.3).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <span class="command"><strong>eglBindAPI</strong></span>).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ <code class="function">eglReleaseThread</code> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </p>
+ <p>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <code class="function">eglReleaseThread</code>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Applications may call other EGL routines from a thread
+ following <code class="function">eglReleaseThread</code>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <code class="function">eglGetError</code>
+ immediately following a successful call to
+ <code class="function">eglReleaseThread</code> will return
+ <code class="constant">EGL_SUCCESS</code>, but will also result in
+ reallocating per-thread state.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <code class="function">eglReleaseThread</code> should succeed.
+ </p>
+ <p>
+ However, platform-dependent failures may be signaled through
+ the value returned from <code class="function">eglGetError</code>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <code class="function">eglReleaseThread</code> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetError.html"><span class="citerefentry"><span class="refentrytitle">eglGetError</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html
new file mode 100644
index 0000000..44dedd7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html
@@ -0,0 +1,481 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSurfaceAttrib</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSurfaceAttrib"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSurfaceAttrib</h1>
+ <p>
+ set an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface attribute
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSurfaceAttrib</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to set.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the attributes required value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglSurfaceAttrib</code> sets the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>surface</code></em> to
+ <em class="parameter"><code>value</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the
+ following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ For mipmap textures, the
+ <code class="constant">EGL_MIPMAP_LEVEL</code> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ chooses the default implementation-defined filtering
+ method, while
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ A <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_BUFFER_PRESERVED</code> indicates
+ that color buffer contents are unaffected, while
+ <code class="constant">EGL_BUFFER_DESTROYED</code> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> is chosen by
+ the implementation.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of pbuffer attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, the value of attribute
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <em class="parameter"><code>surface</code></em> is not a pbuffer, then
+ attribute <code class="constant">EGL_MIPMAP_LEVEL</code> may be set,
+ but has no effect.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html
new file mode 100644
index 0000000..c7ff447
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSwapBuffers</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSwapBuffers"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSwapBuffers</h1>
+ <p>
+ post <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface color buffer to a native window
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapBuffers</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a window surface,
+ <code class="function">eglSwapBuffers</code> posts its color buffer
+ to the associated native window.
+ </p>
+ <p>
+ The contents of ancillary buffers are always undefined after
+ calling <code class="function">eglSwapBuffers</code>. The contents of
+ the color buffer are left unchanged if the value of the
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute of
+ <em class="parameter"><code>surface</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and are undefined
+ if the value is <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ The value of <code class="constant">EGL_SWAP_BEHAVIOR</code> can be
+ set for some surfaces using
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglSwapBuffers</code> performs an implicit
+ flush operation on the context (<code class="function">glFlush</code>
+ for an OpenGL ES or OpenGL context,
+ <code class="function">vgFlush</code> for an OpenVG context) bound to
+ <em class="parameter"><code>surface</code></em> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <code class="function">eglSwapBuffers</code>, but are not executed
+ until the buffer exchange is completed.
+ </p>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a pixel buffer or a pixmap,
+ <code class="function">eglSwapBuffers</code>
+ has no effect, and no error is generated.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater. In
+ earlier versions, behavior is as though the attribute
+ exists, and always has the value
+ <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ </p>
+ <p>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a
+ swap, and that the <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ attribute applies only to the color buffer. This change in
+ the specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation. Applications which
+ require preservation of ancillary buffers across a swap
+ should be aware that not all implementations can preserve
+ them, and that EGL 1.4 has no way to query whether or not
+ they are preserved.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html
new file mode 100644
index 0000000..fcf9a68
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSwapInterval</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSwapInterval"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSwapInterval</h1>
+ <p>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapInterval</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">interval</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>interval</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The interval takes effect when <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> is
+ first called subsequent to the <code class="function">eglSwapInterval</code> call.
+ </p>
+ <p>
+ The <em class="parameter"><code>interval</code></em> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </p>
+ <p>
+ If <em class="parameter"><code>interval</code></em> is set to a value of <code class="constant">0</code>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <span class="type">EGLConfig</span> attributes
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code> and <code class="constant">EGL_MAX_SWAP_INTERVAL</code> respectively.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The swap interval has no effect on <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>.
+ </p>
+ <p>
+ The default swap interval is 1.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if there is no current context
+ on the calling thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if there is no surface
+ bound to the current context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html
new file mode 100644
index 0000000..97a1864
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglTerminate</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglTerminate"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglTerminate</h1>
+ <p>
+ terminate an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglTerminate</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to terminate.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglTerminate</code> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <em class="parameter"><code>display</code></em> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ <p>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ again.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglTerminate</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html
new file mode 100644
index 0000000..07db379
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitClient</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitClient"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitClient</h1>
+ <p>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitClient</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <code class="function">eglWaitClient</code> are guaranteed to be
+ executed before native rendering calls made after
+ <code class="function">eglWaitClient</code>. The same result can be
+ achieved using client API-specific commands such as
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>
+ or
+ <a class="citerefentry" href="vgFinish.html"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitClient</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ <a class="citerefentry" href="vgFinish.html"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html
new file mode 100644
index 0000000..681937e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitGL</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitGL"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitGL</h1>
+ <p>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitGL</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <code class="function">eglWaitGL</code> are
+ guaranteed to be executed before native rendering calls made
+ after <code class="function">eglWaitGL</code>. The same result can be
+ achieved using
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitGL</code> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs. For backwards compatibility,
+ <code class="function">eglWaitGL</code> continues to be supported and
+ is equivalent to the series of commands
+ </p>
+ <pre class="programlisting">
+ EGLenum api = <code class="function">eglQueryAPI</code>();
+ <code class="function">eglBindAPI</code>(<code class="constant">EGL_OPENGL_ES_API</code>);
+ <code class="function">eglWaitClient</code>();
+ <code class="function">eglBindAPI</code>(api);
+ </pre>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitGL</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html
new file mode 100644
index 0000000..a7f7b44
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitNative</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitNative"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitNative</h1>
+ <p>
+ complete native execution prior to subsequent GL rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitNative</strong>(</code>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">engine</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>engine</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a particular marking engine to be waited on.
+ Must be <code class="constant">EGL_CORE_NATIVE_ENGINE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ Native rendering calls made prior to <code class="function">eglWaitNative</code>
+ are guaranteed to be executed before GL rendering calls made after
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ <code class="function">eglWaitNative</code>
+ is ignored if there is no current
+ <acronym class="acronym">EGL</acronym>
+ rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>engine</code></em> is not a recognized marking engine.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg
new file mode 100644
index 0000000..9ae0c2f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html
new file mode 100644
index 0000000..43984e9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>EGL Reference Pages</title>
+<link rel="Shortcut Icon" href="http://www.khronos.org/favicon.ico" type="image/x-icon" />
+</head>
+<frameset rows="85,*">
+ <frame src="Header.html" scrolling="no" noresize frameborder="0" marginwidth="0" marginheight="0">
+ <frameset cols="25%,75%">
+ <frame src="TOC.html" scrolling="yes">
+ <frame src="Intro.html" name="pagedisplay" frameborder="0" marginwidth="0" marginheight="0">
+ </frameset>
+
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl
new file mode 100644
index 0000000..3011d21
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl
@@ -0,0 +1,354 @@
+# This script is obsolete. It would need to change to generate TOC.html
+# in the new format and link to .html instead of .xml files.
+
+#!/usr/bin/perl
+
+sub Usage {
+print
+"Usage: maketoc xhtmldir xmldir
+ where xhtmldir contains a directory full of OpenGL .xml XHTML man pages -AND-
+ where xmldir contains a directory full of OpenGL .xml source XML man pages
+
+ probably want to redirect output into a file like
+ ./maketoc.pl . .. > ./toc.html
+"
+}
+
+sub PrintHeader {
+print '<html>
+<head>
+<title>EGL Reference Pages</title>
+<style type="text/css">
+
+html, body, table
+{ color: #000;
+ padding: 4px 4px;
+ margin: 0px 0 0 0;
+ text-align: center;
+ font-family: Arial, Lucida, sans-serif;
+ font-size: 10pt;
+
+}
+
+#container {
+ margin: 10px;
+ font-size: 14pt;
+ text-decoration:none;
+}
+
+table.sample {
+ border-width: 1px;
+ border-spacing: 5px;
+ border-style: dotted;
+ border-color: black;
+ border-collapse: separate;
+ background-color: #F0F0F0;
+}
+table.sample th {
+ border-width: 1px;
+ padding: 5px;
+ border-style: none;
+}
+table.sample td {
+ border-width: 1px;
+ padding: 1px;
+ border-style: none;
+}
+</style>
+
+</head>
+<body>
+<a name="top"></a>
+<h1>EGL Reference Pages</h1>
+<br/><br/>
+
+';
+}
+
+sub PrintFooter {
+print '
+</body>
+</html>
+';
+}
+
+sub TableElementForFilename {
+ my $name = shift;
+
+ my $strippedname = $name;
+ $strippedname =~ s/\.xml//;
+ print "\t";
+ print '<tr><td><a target="pagedisp" href="' , $name , '">';
+ print "$strippedname";
+ print "</a></td></tr>\n";
+}
+
+sub BeginTable {
+ my $letter = shift;
+ print "<a name=\"$letter\"></a><br/><br/>\n";
+ print '<table width="220" align="center" class="sample">';
+ print "\t<th>";
+ print "$letter</th>\n";
+}
+
+sub EndTable {
+ print "\t";
+ print '<tr><td><center><a href="#top">Top</a></center></td></tr>';
+ print "\n</table>\n\n";
+}
+
+
+
+##############
+# main
+##############
+
+if (@ARGV != 2)
+{
+ Usage();
+ die;
+}
+
+# grab list of generated XHTML files
+opendir(DIR,$ARGV[0]) or die "couldn't open directory";
+
+@files = readdir(DIR);
+close(DIR);
+@files = sort @files;
+
+PrintHeader();
+
+my @glX;
+my @glut;
+my @glu;
+my @egl;
+my @gl;
+
+my @realEntrypoints;
+my @pageNames;
+
+#pre-create list of all true entrypoint names
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ $parentName = $ARGV[1] . '/' . $_;
+ if (open(PARENT, $parentName))
+ {
+ @funcs = <PARENT>;
+ @funcs = grep(/<funcdef>/, @funcs);
+ foreach (@funcs)
+ {
+ $func = $_;
+ $func =~ s/.*<function>//;
+ $func =~ s/<\/function>.*\n//;
+
+ push (@realEntrypoints, $func);
+ }
+ close(PARENT);
+ }
+ }
+}
+
+#pre-create list of page names
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ $parentName = $ARGV[1] . '/' . $_;
+ if (open(PARENT, $parentName))
+ {
+ my $entrypoint = $_;
+ $entrypoint =~ s/\.xml//;
+
+ push (@pageNames, $entrypoint);
+
+ close(PARENT);
+ }
+ }
+}
+
+#sort the files into gl, glut, glu, EGL, and glX
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ # filter out entrypoint variations that don't have their own man pages
+ my $needIndexEntry = 0;
+
+ # continue only if parent page exists (e.g. glColor) OR
+ # different parent page exists with matching entrypoint (e.g. glEnd)
+ my $entrypoint = $_;
+ $entrypoint =~ s/\.xml//;
+
+ foreach (@pageNames)
+ {
+ if ($_ eq $entrypoint)
+ {
+ # it has its own man page
+ $needIndexEntry = 1;
+ }
+ }
+
+ if ($needIndexEntry == 0)
+ {
+ foreach (@realEntrypoints)
+ {
+ if ($_ eq $entrypoint)
+ {
+ # it's a real entrypoint, but make sure not a variation
+ $needIndexEntry = 1;
+
+ foreach (@pageNames)
+ {
+ my $alteredEntrypoint = $entrypoint;
+ $alteredEntrypoint =~ s/$_//;
+
+ if (!($alteredEntrypoint eq $entrypoint))
+ {
+ $needIndexEntry = 0;
+ }
+ }
+ }
+ }
+ }
+
+ if ($needIndexEntry)
+ {
+ if (/^glX/)
+ {
+ push (@glX, $_);
+ }
+ elsif (/^glut/)
+ {
+ push (@glut, $_);
+ }
+ elsif (/^glu/)
+ {
+ push (@glu, $_);
+ }
+ elsif (/^egl/)
+ {
+ push (@egl, $_);
+ }
+ elsif (/^gl/)
+ {
+ push (@gl, $_);
+ }
+ }
+ }
+}
+
+
+#output the table of contents
+
+my @toc;
+
+if ($#gl > 0)
+{
+ $currentletter = "";
+ $opentable = 0;
+
+ foreach (@gl)
+ {
+ $name = $_;
+ $name =~ s/^gl//;
+ $firstletter = substr($name, 0, 1);
+ if ($firstletter ne $currentletter)
+ {
+ push (@toc, $firstletter);
+ $currentletter = $firstletter;
+ }
+ }
+ if ($#egl > 0) { push (@toc, "egl"); }
+ if ($#glu > 0) { push (@toc, "glu"); }
+ if ($#glut > 0) { push (@toc, "glut"); }
+ if ($#glX > 0) { push (@toc, "glX"); }
+}
+
+
+print '<div id="container">';
+foreach (@toc)
+{
+ print '<b><a href="#';
+ print $_;
+ print '" style="text-decoration:none"> ';
+ print $_;
+ print " </a></b> &nbsp; ";
+}
+print "</div>\n\n\n";
+
+# output the tables
+
+if ($#gl > 0)
+{
+ $currentletter = "";
+ $opentable = 0;
+
+ foreach (@gl)
+ {
+ $name = $_;
+ $name =~ s/^gl//;
+ $firstletter = substr($name, 0, 1);
+ if ($firstletter ne $currentletter)
+ {
+ if ($opentable == 1)
+ {
+ EndTable();
+ }
+ BeginTable($firstletter);
+ $opentable =1;
+ $currentletter = $firstletter;
+ }
+ TableElementForFilename($_);
+ }
+ if ($opentable)
+ {
+ EndTable();
+ }
+}
+
+if ($#egl > 0)
+{
+ BeginTable("egl");
+ foreach (@egl)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glu > 0)
+{
+ BeginTable("glu");
+ foreach (@glu)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glut > 0)
+{
+ BeginTable("glut");
+ foreach (@glut)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glX > 0)
+{
+ BeginTable("glX");
+ foreach (@glX)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+PrintFooter();
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl
new file mode 100644
index 0000000..1e725bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl
@@ -0,0 +1,49 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/profile-docbook.xsl"/>
+
+<xsl:param name="funcsynopsis.style">ansi</xsl:param>
+<xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+<xsl:template name="generate.citerefentry.link"><xsl:value-of select="refentrytitle"/>.xml</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="/">
+ <xsl:processing-instruction name="xml-stylesheet">
+ <xsl:text>type="text/xsl" href="mathml.xsl"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:apply-imports/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css
new file mode 100644
index 0000000..7868f93
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css
@@ -0,0 +1,47 @@
+@charset "utf-8";
+/* CSS Document */
+ li { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ ul { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ a:link, a:visited {color:blue; text-decoration:none;}
+ a:hover {color:blue; text-decoration:none; background-color:FFFF99; }
+
+ #navwrap {
+ width: 320px;
+ margin:0 0 0 4px;
+ padding:0;
+ }
+
+ #containerul, #containerul ul{
+ text-align:left;
+ margin:0 0 0 4px; /* Removes browser default margins applied to the lists. */
+ padding:0; /* Removes browser default padding applied to the lists. */
+ }
+
+ #containerul li{
+ margin:0 0 0 15px; /* A left margin to indent the list items and give the menu a sense of structure. */
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 12px verdana, sans-serif;
+ }
+
+ #containerul li.lev1 {
+ margin:0 0 0 0;
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 14px verdana, sans-serif;
+ }
+
+ #containerul .symbols{ /* Various styles to position the symbols next to the items in the menu. */
+ background-repeat:no-repeat;
+ float:left;
+ height:14px;
+ margin-right:5px;
+ margin-top:1px;
+ width:14px;
+ }
+
+#containerul ul.Level2 {
+ margin:0;
+ padding: 0;
+ }
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css
new file mode 100644
index 0000000..00fd1ed
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css
@@ -0,0 +1,2 @@
+@import url("undohtml.css");
+@import url("present.css");
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl
new file mode 100644
index 0000000..498654e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl
@@ -0,0 +1,214 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:param name="annotation.css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</xsl:param>
+</xsl:stylesheet>
+
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css
new file mode 100644
index 0000000..a2d510f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css
@@ -0,0 +1,9 @@
+/* -- undo browser HTML defaults -- */
+/* -- Global resets of all default items -- */
+
+:link,:visited {text-decoration: none;}
+ul,ol {list-style: none;}
+h1,h2,h3,h4,h5,h6,pre,code,p {font-size: 1em;}
+ul,ol,dl,li,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {margin: 0; padding: 0;}
+a img,:link img,:visited img {border: none;}
+address {font-style: normal;}
diff --git a/glew/auto/EGL-Registry/specs/EGLTechNote0001.html b/glew/auto/EGL-Registry/specs/EGLTechNote0001.html
new file mode 100644
index 0000000..ed98604
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/EGLTechNote0001.html
@@ -0,0 +1,110 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation</title><link rel="stylesheet" href="igstyle.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.1"><meta name="description" content="Summarizes ancillary buffer preservation issues across eglSwapBuffers, including recent changes to behavior defined by the EGL 1.4 Specification."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article" title="EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation"><div class="titlepage"><div><div><h2 class="title"><a name="id2598382"></a>EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation</h2></div><div><p class="edition"> First Edition</p></div><div><p class="releaseinfo"></p></div><div><div class="authorgroup"><div class="editor"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Jon</span> <span class="surname">Leech</span></h3><div class="affiliation"><span class="orgname">Khronos Group<br></span></div></div></div></div><div><p class="copyright">Copyright © 2010 The Khronos Group Inc.</p></div><div><a href="legal.html">Legal Notice</a></div><div><div class="abstract" title="Abstract"><p class="title"><b>Abstract</b></p><p> Summarizes <em class="glossterm"><a class="glossterm" href="#ancillary" title="Ancillary Buffers">ancillary
+ buffer</a></em> preservation issues across
+ <code class="code">eglSwapBuffers</code>, including recent changes to
+ behavior defined by the EGL 1.4 Specification. </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#introduction">1. Introduction</a></span></dt><dt><span class="section"><a href="#usecases">2. Use Cases for Buffer Preservation </a></span></dt><dt><span class="section"><a href="#bufquery">3. Color Buffer Preservation Queries and Controls </a></span></dt><dt><span class="section"><a href="#nocontrol">4. No Control of Auxillary Buffer Preservation; Compatibility
+ Issues </a></span></dt><dt><span class="section"><a href="#extensions">5. EGL Extensions for Control of Ancillary Buffer Preservation
+ </a></span></dt><dt><span class="appendix"><a href="#id2602337">A. Glossary</a></span></dt><dt><span class="appendix"><a href="#id2595698">B. Document History</a></span></dt><dt><span class="appendix"><a href="#id2585500">C. Acknowledgements</a></span></dt></dl></div><div class="mediaobject" align="center"><img src="Khronos-1600-Transparent-May07.png" align="middle" width="270" alt="Khronos Group logo"></div><div class="section" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction"></a>1. Introduction</h2></div></div></div><p> Calling <code class="code">eglSwapBuffers</code> may or may not result in
+ the preservation of the contents of the color buffer and
+ ancillary buffers (depth, stencil, and alpha mask) of the
+ surface being swapped. Some applications may rely on buffer
+ contents being preserved. This note discusses scenarios in
+ which buffer preservation is desirable, describes all the EGL
+ entry points and attributes relevant to buffer preservation,
+ and describes a change in preservation behavior made in the
+ <a class="ulink" href="http://www.khronos.org/registry/egl/" target="_top"> EGL 1.4
+ Specification </a> update of February 23, 2010. This
+ change may require changes to certain applications which rely
+ on ancillary buffer preservation and are being moved to new
+ platforms or new EGL implementations. </p><p> Many applications do not require buffer preservation, since
+ they clear all buffers being used and completely redraw their
+ contents for each frame. Such applications need not consider
+ the issues discussed in this note. </p></div><div class="section" title="2.  Use Cases for Buffer Preservation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="usecases"></a>2.  Use Cases for Buffer Preservation </h2></div></div></div><p> An example of the use of buffer preservation is an
+ application which wishes to build up an image step by step by
+ drawing multiple layers, and to display the partial images
+ resulting from each each successive layer being drawn.
+ </p><p> If color and ancillary buffer contents are known to be
+ preserved across <code class="code">eglSwapBuffers</code>, such an
+ application can construct and display each step by drawing
+ only the most recent layer and performing
+ <code class="code">eglSwapBuffers</code>. </p><p> If buffer contents are not known to be preserved, the
+ application can instead, for each frame being displayed,
+ redraw all layers up to the most recent. Alternatively, the
+ application may explicitly save the contents of required
+ buffers by reading them back (with e.g.
+ <code class="code">glReadPixels</code>) prior to
+ <code class="code">eglSwapBuffers</code>, and restore them (with e.g.
+ <code class="code">glDrawPixels</code> or drawing a textured quad) prior
+ to drawing the next layer. However, both of these approaches
+ are likely to incur significant performance penalties.
+ </p></div><div class="section" title="3.  Color Buffer Preservation Queries and Controls"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="bufquery"></a>3.  Color Buffer Preservation Queries and Controls </h2></div></div></div><p> To determine if <code class="code">eglSwapBuffers</code> will preserve
+ color buffer contents of a surface, call </p><p> <code class="code">
+ eglQuerySurface(dpy, surface, EGL_SWAP_BEHAVIOR, &amp;value);
+ </code> </p><p> where <code class="code">surface</code> is the <span class="type">EGLSurface</span>
+ being queried, <code class="code">dpy</code> is the
+ <span class="type">EGLDisplay</span> <code class="code">surface</code> belongs to, and
+ <code class="code">value</code> is a pointer to an <span class="type">EGLint</span>. On
+ success, <code class="code">*value</code> will contain either
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, indicating that
+ color buffer contents are preserved, or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, indicating that
+ color buffer contents are not preserved. </p><p> Some surfaces allow applications to control whether or not
+ the color buffer contents are preserved. If
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> is set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create <code class="code">surface</code>,
+ then calling </p><p> <code class="code">
+ eglSurfaceAttrib(dpy, surface, EGL_SWAP_BEHAVIOR,
+ EGL_BUFFER_PRESERVED)
+ </code> </p><p> will cause color buffer contents to be preserved across
+ future calls to <code class="code">eglSwapBuffers</code>, while calling
+ </p><p> <code class="code">
+ eglSurfaceAttrib(dpy, surface, EGL_SWAP_BEHAVIOR,
+ EGL_BUFFER_DESTOYED)
+ </code> </p><p> will cause color buffer contents to not be preserved. When
+ this control is available, there may be a significant
+ performance penalty for requesting color buffer preservation.
+ </p><p> If <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> is
+ not set in the <code class="constant">EGL_SURFACE_TYPE</code>
+ attribute, then control of color buffer preservation is not
+ allowed for this surface. In this case, calling
+ <code class="code">eglSurfaceAttrib</code> with <code class="code">attribute</code>
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> will fail and generate
+ an <code class="constant">EGL_BAD_MATCH</code> error. </p></div><div class="section" title="4.  No Control of Auxillary Buffer Preservation; Compatibility Issues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nocontrol"></a>4.  No Control of Auxillary Buffer Preservation; Compatibility
+ Issues </h2></div></div></div><p> In versions of the EGL 1.4 Specification prior to February 23,
+ 2010, the specification implied that the color buffer
+ preservation behavior described above also applied to ancillary
+ (depth, stencil, and alpha mask) buffer contents. The
+ Specification of February 23, 2010 revises the buffer
+ preservation queries and controls and explicitly states that
+ they only apply to the color buffer. </p><p> As a result, the EGL 1.4 API has no way to determine or
+ control whether <code class="code">eglSwapBuffers</code> will preserve
+ ancillary buffer contents. Some implementations do so and
+ some do not. We know that this is a backwards-incompatible
+ change. The change was made because some common hardware
+ incurs very high penalties for ancillary buffer preservation.
+ Despite what prior versions of the Specification said, EGL
+ implementations on these devices often did not preserve
+ ancillary buffers. Khronos felt that developers would be
+ better off if we explicitly acknowledged this situation.
+ </p><p> This change in the Specification is not expected to result in
+ changes to implementations, and therefore driver updates are
+ unlikely to adversely affect any application which relies on
+ ancillary buffer preservation. However, developers of such
+ applications must be aware that when porting to another
+ platform, they may find that ancillary buffer contents are
+ not preserved. </p></div><div class="section" title="5.  EGL Extensions for Control of Ancillary Buffer Preservation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="extensions"></a>5.  EGL Extensions for Control of Ancillary Buffer Preservation
+ </h2></div></div></div><p> The EGL Working Group is currently developing an EGL extension
+ which will allow explicitly control over ancillary buffer
+ preservation in a fashion similar to color buffer preservation.
+ We expect this extension specification to be completed later in
+ 2010. Vendors will then choose whether or not to implement the
+ extension in their drivers. The extension specification will
+ be published in the
+ <a class="ulink" href="http://www.khronos.org/registry/egl/" target="_top"> Khronos
+ Registry</a> when it is finalized. </p></div><div class="appendix" title="A. Glossary"><h2 class="title" style="clear: both"><a name="id2602337"></a>A. Glossary</h2><div class="glosslist"><dl><dt><a name="ancillary"></a>Ancillary Buffers</dt><dd><p> Buffers of an <span class="type">EGLSurface</span> other than the
+ color buffer. These may include the depth and/or stencil
+ buffers for use by OpenGL ES, and the alpha mask buffer for
+ use by OpenVG. </p></dd></dl></div></div><div class="appendix" title="B. Document History"><h2 class="title" style="clear: both"><a name="id2595698"></a>B. Document History</h2><div class="revhistory"><table border="0" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.0</td><td align="left">March 30, 2010</td><td align="left">jpl</td></tr><tr><td class="revremark" align="left" colspan="3">Public Release.</td></tr></table></div></div><div class="appendix" title="C. Acknowledgements"><h2 class="title" style="clear: both"><a name="id2585500"></a>C. Acknowledgements</h2><p>Members of the Khronos EGL Working Group, especially Acorn
+ Pooley, Ben Bowman, Ian Romanick, Mark Callow, and Maurice Ribble.
+ Additional thanks to Mark Callow for the Docbook stylesheets and
+ build process used to build this document</p></div></div></body></html>
diff --git a/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png b/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png
new file mode 100644
index 0000000..0793268
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf
new file mode 100644
index 0000000..82c5cd0
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf
new file mode 100644
index 0000000..0ce2eea
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf
new file mode 100644
index 0000000..53fbf53
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf
new file mode 100644
index 0000000..5535fb3
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf
new file mode 100644
index 0000000..1032035
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf
new file mode 100644
index 0000000..c8f474a
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf
new file mode 100644
index 0000000..7206fe4
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf
new file mode 100644
index 0000000..056d63a
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/igstyle.css b/glew/auto/EGL-Registry/specs/igstyle.css
new file mode 100644
index 0000000..447b0df
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/igstyle.css
@@ -0,0 +1,185 @@
+/* vi: set sw=2 ts=4: */
+
+/*
+ $HeadURL: https://cvs.khronos.org/svn/repos/util/trunk/doc/iguide/igstyle.css $
+ $Revision: 7453 $
+ $Author: markc $
+*/
+
+body {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+ color: #333333;
+ background-color: white;
+ margin: 4em;
+ max-width: 50em;
+}
+
+h1 {
+ color: #00A6A6;
+}
+
+h2, h3, h4, h5, h6 {
+ color: #146A68;
+}
+
+/* Set space between editedby and editor to 0.5em.
+ * editor margin-top contributes to this.
+ */
+h4.editedby {
+ margin-bottom: 0.5em;
+}
+
+/* Remove spaces between editedby & editor and editor & affiliation.
+ * affiliation is a div so there's no top-margin to fix.
+ */
+h3.editor {
+ margin-top: 0;
+ /* color: #333333; */
+ margin-bottom: 0;
+}
+
+/* Remove space between copyright and legal notice lines.
+ * Legal notice is in a div so there's no top-margin to fix.
+ */
+p.copyright {
+ margin-bottom: 0;
+}
+
+/* Remove space between edition, docrev & releaseinfo.*/
+p.edition {
+ margin-bottom: 0;
+}
+
+p.docrev {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+p.releaseinfo {
+ margin-top: 0;
+}
+
+p.title {
+ color: #146A68;
+}
+
+a {
+ text-decoration: none;
+}
+
+/* The following a: pseudo-class order is necessary in
+ * order to be effective.
+ */
+a:link {
+ color: #009999;
+}
+
+a:visited {
+ color: #006699;
+}
+
+a:hover {
+ color: #00CCCC;
+}
+
+a:active {
+ color: #0000FF;
+}
+
+code.code {
+ white-space: nowrap;
+}
+
+/* Increase space before abstract. */
+div.abstract > p.title {
+ margin-top: 3em;
+
+}
+
+div.footnote {
+ font-size: small;
+}
+
+div.legalnotice {
+ font-size: x-small;
+}
+
+div.article > div.titlepage {
+ text-align: center;
+}
+
+table {
+ border-collapse: collapse;*/
+ /*border-spacing: 0;*/
+ border-style: ridge;
+}
+
+td {
+ padding: 0.3em;
+}
+
+th {
+ padding: 0.3em;
+ /* background-color: #FFDEAD; */
+ background-color: #EBD8AF;
+}
+
+th:first-child {
+ /* background-color: #EFEFEF; */
+ background-color: #EBE57B;
+}
+
+.informalexample {
+ /*background-color: #D7D9D9;*/
+ background-color: #EBEBEB;
+ border: thin dashed #146A68;
+}
+
+/* override width="100%" set by xls style sheet. */
+div.revhistory > table {
+ width: auto;
+ border: thin solid;
+ font-size: small;
+ background-color: #EBEBEB;
+}
+
+div.revhistory > table th {
+ border-bottom: thin solid;
+}
+
+div.revhistory > table td {
+ border: thin dotted;
+}
+
+div.revhistory > table td.revremark {
+ border-bottom: thin solid;
+}
+
+.remark {
+ background-color: yellow;
+ color: maroon;
+}
+
+/* Haven't found a way to select .remark *except* when it's a child of
+ * .releaseinfo so I've had to add this. I tried the negation
+ * pseudo-operator without success.
+.releaseinfo .remark {
+ background-color: white;
+ color: #333333;
+}
+*/
+
+/* Selector notes:
+ * See http://css.maxdesign.com.au/selectutorial/selectors_adjacent.htm
+ *
+ * A B selects a B that is a descendant of A.
+ * A > B selects a B that is a direct child of A.
+ * A + B selects a B that immediately follows an A where A & B are siblings.
+ * #foo is an id selector; can do A#foo to select an A with id="foo".
+ * .bar is a class selector; can do A.bar to select an A with class="bar".
+ * A[attrib<=value>] is an attribute selector. It selects an A with "attrib"
+ * specified. Optionally a specific attribute value can also be specified.
+ * A:b is pseudo-element or pseudo-class selector. Examples are first-child,
+ * visited, hover, first-line, first-letter.
+ */
diff --git a/glew/auto/EGL-Registry/specs/legal.html b/glew/auto/EGL-Registry/specs/legal.html
new file mode 100644
index 0000000..1cc20b4
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/legal.html
@@ -0,0 +1,34 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Legal Notice</title><link rel="stylesheet" href="igstyle.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="legalnotice" title="Legal Notice"><p>This document is protected by copyright laws and contains material
+ proprietary to the Khronos Group, Inc. It or any components may not be
+ reproduced, republished, distributed, transmitted, displayed, broadcast
+ or otherwise exploited in any manner without the express prior written
+ permission of Khronos Group. The receipt or possession of this document
+ does not convey any rights to reproduce, disclose, or distribute its
+ contents, or to manufacture, use, or sell anything that it may describe,
+ in whole or in part.</p><p>Khronos Group grants express permission to any current Promoter,
+ Contributor or Adopter member of Khronos to copy and redistribute
+ UNMODIFIED versions of this document in any fashion, provided that NO
+ CHARGE is made for the document and the latest available update of the
+ document is used whenever possible. Such distributed document may be
+ re-formatted AS LONG AS the contents of the document are not changed in
+ any way. The document may be incorporated into a product that is sold as
+ long as such product includes significant independent work developed by
+ the seller. A link to the current version of this document on the
+ Khronos Group web-site should be included whenever possible with
+ document distributions.</p><p>Khronos Group makes no, and expressly disclaims any,
+ representations or warranties, express or implied, regarding this
+ document, including, without limitation, any implied warranties of
+ merchantability or fitness for a particular purpose or non-infringement
+ of any intellectual property. Khronos Group makes no, and expressly
+ disclaims any, warranties, express or implied, regarding the
+ correctness, accuracy, completeness, timeliness, and reliability of the
+ document. Under no circumstances will the Khronos Group, or any of its
+ Promoters, Contributors or Members or their respective partners,
+ officers, directors, employees, agents or representatives be liable for
+ any damages, whether direct, indirect, special or consequential damages
+ for lost revenues, lost profits, or otherwise, arising from or in
+ connection with these materials.</p><p><span class="trademark">Khronos</span><sup>&#8482;</sup> is a trademark of The
+ Khronos Group Inc. <span class="trademark">OpenGL</span><sup>®</sup> is a
+ registered trademark, and <span class="trademark">OpenGL
+ ES</span><sup>&#8482;</sup>is a trademark, of Silicon Graphics, Inc. All other marks
+ are the property of their respective owners.</p></div></body></html>
diff --git a/glew/auto/EGL-Registry/specs/legal.xhtml b/glew/auto/EGL-Registry/specs/legal.xhtml
new file mode 100644
index 0000000..0102d61
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/legal.xhtml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Legal Notice</title><link rel="stylesheet" href="igstyle.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /></head><body><div class="legalnotice"><p>This document is protected by copyright laws and contains material
+ proprietary to the Khronos Group, Inc. It or any components may not be
+ reproduced, republished, distributed, transmitted, displayed, broadcast
+ or otherwise exploited in any manner without the express prior written
+ permission of Khronos Group. The receipt or possession of this document
+ does not convey any rights to reproduce, disclose, or distribute its
+ contents, or to manufacture, use, or sell anything that it may describe,
+ in whole or in part.</p><p>Khronos Group grants express permission to any current Promoter,
+ Contributor or Adopter member of Khronos to copy and redistribute
+ UNMODIFIED versions of this document in any fashion, provided that NO
+ CHARGE is made for the document and the latest available update of the
+ document is used whenever possible. Such distributed document may be
+ re-formatted AS LONG AS the contents of the document are not changed in
+ any way. The document may be incorporated into a product that is sold as
+ long as such product includes significant independent work developed by
+ the seller. A link to the current version of this document on the
+ Khronos Group web-site should be included whenever possible with
+ document distributions.</p><p>Khronos Group makes no, and expressly disclaims any,
+ representations or warranties, express or implied, regarding this
+ document, including, without limitation, any implied warranties of
+ merchantability or fitness for a particular purpose or non-infringement
+ of any intellectual property. Khronos Group makes no, and expressly
+ disclaims any, warranties, express or implied, regarding the
+ correctness, accuracy, completeness, timeliness, and reliability of the
+ document. Under no circumstances will the Khronos Group, or any of its
+ Promoters, Contributors or Members or their respective partners,
+ officers, directors, employees, agents or representatives be liable for
+ any damages, whether direct, indirect, special or consequential damages
+ for lost revenues, lost profits, or otherwise, arising from or in
+ connection with these materials.</p><p><span class="trademark">Khronos</span><sup xmlns="">â„¢</sup> is a trademark of The
+ Khronos Group Inc. <span class="trademark">OpenGL</span><sup xmlns="">®</sup> is a
+ registered trademark, and <span class="trademark">OpenGL
+ ES</span><sup xmlns="">â„¢</sup>is a trademark, of Silicon Graphics, Inc. All other marks
+ are the property of their respective owners.</p></div></body></html>
diff --git a/glew/auto/bin/filter_gl_ext.sh b/glew/auto/bin/filter_gl_ext.sh
new file mode 100644
index 0000000..e295f65
--- /dev/null
+++ b/glew/auto/bin/filter_gl_ext.sh
@@ -0,0 +1,614 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+
+set -e
+
+# fix GL_NV_texture_compression_vtc
+ grep -v EXT $1/GL_NV_texture_compression_vtc > tmp
+ mv tmp $1/GL_NV_texture_compression_vtc
+
+# remove duplicates from GL_ARB_vertex_program and GL_ARB_fragment_program
+ tail -n +5 $1/GL_ARB_vertex_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_program > tmp
+ mv tmp $1/GL_ARB_fragment_program
+
+# remove duplicates from GLX_EXT_visual_rating and GLX_EXT_visual_info
+ tail -n +5 $1/GLX_EXT_visual_info > patterns
+ grep -v -F -f patterns $1/GLX_EXT_visual_rating > tmp
+ mv tmp $1/GLX_EXT_visual_rating
+
+# GL_EXT_draw_buffers2 and GL_EXT_transform_feedback both define glGetBooleanIndexedvEXT but with different parameter names
+ grep -v glGetBooleanIndexedvEXT $1/GL_EXT_transform_feedback > tmp
+ mv tmp $1/GL_EXT_transform_feedback
+
+# GL_EXT_draw_buffers2 and GL_EXT_transform_feedback both define glGetIntegerIndexedvEXT but with different parameter names
+ grep -v glGetIntegerIndexedvEXT $1/GL_EXT_transform_feedback > tmp
+ mv tmp $1/GL_EXT_transform_feedback
+
+# remove duplicates from GL_NV_video_capture and GLX_NV_video_capture
+ grep -v glX $1/GL_NV_video_capture > tmp
+ mv tmp $1/GL_NV_video_capture
+
+# add missing functions to GL_NV_video_capture
+ cat >> $1/GL_NV_video_capture <<EOT
+ void glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params)
+ void glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params)
+ void glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params)
+ void glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params)
+ void glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params)
+ void glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params)
+EOT
+
+# fix WGL_NV_video_capture
+ cat >> $1/WGL_NV_video_capture <<EOT
+ DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
+EOT
+
+# fix GLX_NV_video_capture
+ cat >> $1/GLX_NV_video_capture <<EOT
+ typedef XID GLXVideoCaptureDeviceNV
+EOT
+
+# remove duplicates from GL_NV_present_video and GLX_NV_present_video
+ tail -n +5 $1/GLX_NV_present_video > patterns
+ grep -v -F -f patterns $1/GL_NV_present_video > tmp
+ mv tmp $1/GL_NV_present_video
+
+# fix WGL_NV_present_video
+ cat >> $1/WGL_NV_present_video <<EOT
+ DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
+EOT
+
+# fix WGL_NV_video_output
+ cat >> $1/WGL_NV_video_output <<EOT
+ DECLARE_HANDLE(HPVIDEODEV);
+EOT
+
+# fix GL_NV_occlusion_query and GL_HP_occlusion_test
+ grep -v '_HP' $1/GL_NV_occlusion_query > tmp
+ mv tmp $1/GL_NV_occlusion_query
+
+# add deprecated constants to GL_ATI_fragment_shader
+ cat >> $1/GL_ATI_fragment_shader <<EOT
+ GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+ GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+ GL_NUM_PASSES_ATI 0x8970
+ GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+ GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+ GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+ GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+ GL_SWIZZLE_STRQ_ATI 0x897A
+ GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+EOT
+
+# add deprecated constants to GL_NV_texture_shader
+ cat >> $1/GL_NV_texture_shader <<EOT
+ GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+ GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
+EOT
+
+# fix WGL_ATI_pixel_format_float
+ cat >> $1/WGL_ATI_pixel_format_float <<EOT
+ GL_RGBA_FLOAT_MODE_ATI 0x8820
+ GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+EOT
+
+# fix WGL_ARB_make_current_read
+ cat >> $1/WGL_ARB_make_current_read <<EOT
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+EOT
+
+# fix WGL_EXT_make_current_read
+ cat >> $1/WGL_EXT_make_current_read <<EOT
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+EOT
+
+# add typedefs to GL_ARB_vertex_buffer_object; (from personal communication
+# with Marco Fabbricatore).
+#
+# Rationale. The spec says:
+#
+# "Both types are defined as signed integers large enough to contain
+# any pointer value [...] The idea of making these types unsigned was
+# considered, but was ultimately rejected ..."
+ cat >> $1/GL_ARB_vertex_buffer_object <<EOT
+ typedef ptrdiff_t GLsizeiptrARB
+ typedef ptrdiff_t GLintptrARB
+EOT
+
+# add typedefs to GLX_EXT_import_context
+ cat >> $1/GLX_EXT_import_context <<EOT
+ typedef XID GLXContextID
+EOT
+
+# add tokens to GLX_OML_swap_method
+ cat >> $1/GLX_OML_swap_method <<EOT
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
+EOT
+
+# add typedefs to GLX_SGIX_fbconfig
+ cat >> $1/GLX_SGIX_fbconfig <<EOT
+ typedef XID GLXFBConfigIDSGIX
+ typedef struct __GLXFBConfigRec *GLXFBConfigSGIX
+EOT
+
+# Skip GLX_SGIX_dmbuffer and GLX_SGIX_video_source
+# unknown DMparams, DMbuffer, etc
+ rm -f $1/GLX_SGIX_dmbuffer
+ rm -f $1/GLX_SGIX_video_source
+
+# add typedefs to GLX_SGIX_pbuffer
+ cat >> $1/GLX_SGIX_pbuffer <<EOT
+ typedef XID GLXPbufferSGIX
+ typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX
+EOT
+
+# add typedef to GL_NV_half_float
+ cat >> $1/GL_NV_half_float <<EOT
+ typedef unsigned short GLhalf
+EOT
+
+# add handle to WGL_ARB_pbuffer
+ cat >> $1/WGL_ARB_pbuffer <<EOT
+ DECLARE_HANDLE(HPBUFFERARB);
+EOT
+
+# add handle to WGL_EXT_pbuffer
+ cat >> $1/WGL_EXT_pbuffer <<EOT
+ DECLARE_HANDLE(HPBUFFEREXT);
+EOT
+
+# get rid of GL_SUN_multi_draw_arrays
+ rm -f $1/GL_SUN_multi_draw_arrays
+
+# change variable names in GL_ARB_vertex_shader
+ perl -e 's/v0/x/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v1/y/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v2/z/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v3/w/g' -pi $1/GL_ARB_vertex_shader
+
+# remove triplicates in GL_ARB_shader_objects, GL_ARB_fragment_shader,
+# and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_shader_objects > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_shader > tmp
+ mv tmp $1/GL_ARB_fragment_shader
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove duplicates in GL_ARB_vertex_program and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_vertex_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove triplicates in GL_ARB_fragment_program, GL_ARB_fragment_shader,
+# and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_fragment_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_shader > tmp
+ mv tmp $1/GL_ARB_fragment_shader
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove duplicates in GL_EXT_direct_state_access
+ grep -v "glGetBooleanIndexedvEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glGetIntegerIndexedvEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glDisableIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glEnableIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glIsEnabledIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+
+# remove duplicates in GL_NV_explicit_multisample
+ grep -v "glGetBooleanIndexedvEXT" $1/GL_NV_explicit_multisample > tmp
+ mv tmp $1/GL_NV_explicit_multisample
+ grep -v "glGetIntegerIndexedvEXT" $1/GL_NV_explicit_multisample > tmp
+ mv tmp $1/GL_NV_explicit_multisample
+
+# fix bugs in GL_ARB_vertex_shader
+ grep -v "GL_FLOAT" $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+ perl -e 's/handle /GLhandleARB /g' -pi $1/GL_ARB_vertex_shader
+
+# fix bugs in GL_ARB_shader_objects
+ grep -v "GL_FLOAT " $1/GL_ARB_shader_objects > tmp
+ mv tmp $1/GL_ARB_shader_objects
+ grep -v "GL_INT " $1/GL_ARB_shader_objects > tmp
+ mv tmp $1/GL_ARB_shader_objects
+
+# add typedefs to GL_ARB_shader_objects
+ cat >> $1/GL_ARB_shader_objects <<EOT
+ typedef char GLcharARB
+ typedef unsigned int GLhandleARB
+EOT
+
+# add missing functions to GL_ARB_transpose_matrix
+ cat >> $1/GL_ARB_transpose_matrix <<EOT
+ void glLoadTransposeMatrixfARB (GLfloat m[16])
+ void glLoadTransposeMatrixdARB (GLdouble m[16])
+ void glMultTransposeMatrixfARB (GLfloat m[16])
+ void glMultTransposeMatrixdARB (GLdouble m[16])
+EOT
+
+# add missing tokens to GL_EXT_framebuffer_multisample
+ cat >> $1/GL_EXT_framebuffer_multisample <<EOT
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+EOT
+
+# Filter out GL_NV_gpu_program_fp64 enums and functions
+ head -n4 $1/GL_NV_gpu_program_fp64 > tmp
+ mv tmp $1/GL_NV_gpu_program_fp64
+
+# Filter glGetUniformui64vNV from GL_NV_shader_buffer_load
+ grep -v "glGetUniformui64vNV" $1/GL_NV_shader_buffer_load > tmp
+ mv tmp $1/GL_NV_shader_buffer_load
+
+# Filter out profile enumerations from GLX_ARB_create_context
+ grep -v "_PROFILE_" $1/GLX_ARB_create_context > tmp
+ mv tmp $1/GLX_ARB_create_context
+
+# Filter only profile related enumerations for GLX_ARB_create_context_profile
+ head -n4 $1/GLX_ARB_create_context_profile > tmp
+ grep "_PROFILE_" $1/GLX_ARB_create_context_profile >> tmp
+ mv tmp $1/GLX_ARB_create_context_profile
+
+# Filter out profile enumerations from WGL_ARB_create_context
+ grep -v "_PROFILE_" $1/WGL_ARB_create_context > tmp
+ mv tmp $1/WGL_ARB_create_context
+
+# Filter only profile related enumerations for WGL_ARB_create_context_profile
+ head -n4 $1/WGL_ARB_create_context_profile > tmp
+ grep "_PROFILE_" $1/WGL_ARB_create_context_profile >> tmp
+ mv tmp $1/WGL_ARB_create_context_profile
+
+# add missing function to GLX_NV_copy_image
+ cat >> $1/GLX_NV_copy_image <<EOT
+ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+EOT
+
+# add missing function to WGL_NV_copy_image
+ cat >> $1/WGL_NV_copy_image <<EOT
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+EOT
+
+# Filter glProgramUniform from GL_EXT_separate_shader_objects
+ cat $1/GL_EXT_separate_shader_objects | grep -v "glProgramUniform" | grep -v "glProgramParameteri" > tmp
+ mv tmp $1/GL_EXT_separate_shader_objects
+
+# Filter out EXT functions from GL_ARB_viewport_array
+ grep -v "EXT" $1/GL_ARB_viewport_array > tmp
+ mv tmp $1/GL_ARB_viewport_array
+
+# Additional enumerations for GL_NV_vertex_buffer_unified_memory
+# These are mentioned in GL_ARB_draw_indirect.txt
+
+ cat >> $1/GL_NV_vertex_buffer_unified_memory <<EOT
+ GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+ GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+ GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+EOT
+
+# Filter glGetPointerv from GL_ARB_debug_output
+# It's part of OpenGL 1.1, after all
+
+ grep -v "glGetPointerv" $1/GL_ARB_debug_output > tmp
+ mv tmp $1/GL_ARB_debug_output
+
+# Filter glGetPointerv from GL_EXT_vertex_array
+# It's part of OpenGL 1.1, after all
+
+ grep -v "glGetPointerv" $1/GL_EXT_vertex_array > tmp
+ mv tmp $1/GL_EXT_vertex_array
+
+# add typedef to GL_AMD_debug_output
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_AMD_debug_output <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam)
+EOT
+
+# add typedef to GL_ARB_debug_output
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_ARB_debug_output <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
+EOT
+
+# add typedef to GL_KHR_debug
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_KHR_debug <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
+EOT
+
+# Remove glGetPointerv from GL_KHR_debug
+ grep -v "glGetPointerv" $1/GL_KHR_debug > tmp
+ mv tmp $1/GL_KHR_debug
+
+# add typedefs to GL_ARB_cl_event
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_ARB_cl_event <<EOT
+ typedef struct _cl_context *cl_context
+ typedef struct _cl_event *cl_event
+EOT
+
+# Filter out EXT functions from GL_ARB_gpu_shader_fp64
+ grep -v 'EXT ' $1/GL_ARB_gpu_shader_fp64 > tmp
+ mv tmp $1/GL_ARB_gpu_shader_fp64
+
+# add missing functions to GL_EXT_direct_state_access (GL_ARB_gpu_shader_fp64 related)
+ cat >> $1/GL_EXT_direct_state_access <<EOT
+ void glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x)
+ void glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y)
+ void glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+EOT
+
+# add missing functions to GL_EXT_direct_state_access (GL_ARB_instanced_arrays related)
+# https://sourceforge.net/p/glew/bugs/242/
+ cat >> $1/GL_EXT_direct_state_access <<EOT
+ void glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor)
+EOT
+
+# Filter out GL_UNSIGNED_INT and GL_FLOAT from GL_AMD_performance_monitor
+ grep -v 'GL_UNSIGNED_INT ' $1/GL_AMD_performance_monitor > tmp
+ mv tmp $1/GL_AMD_performance_monitor
+ grep -v 'GL_FLOAT ' $1/GL_AMD_performance_monitor > tmp
+ mv tmp $1/GL_AMD_performance_monitor
+
+# Filter out GL_STORAGE_CACHED_APPLE and GL_STORAGE_SHARED_APPLE from GL_APPLE_texture_range
+ grep -v 'GL_STORAGE_CACHED_APPLE ' $1/GL_APPLE_texture_range > tmp
+ mv tmp $1/GL_APPLE_texture_range
+ grep -v 'GL_STORAGE_SHARED_APPLE ' $1/GL_APPLE_texture_range > tmp
+ mv tmp $1/GL_APPLE_texture_range
+
+# Filter out GL_RED from GL_ARB_texture_rg
+ grep -v 'GL_RED ' $1/GL_ARB_texture_rg > tmp
+ mv tmp $1/GL_ARB_texture_rg
+
+# Filter out _EXT enums from GL_ARB_texture_storage
+ grep -v '_EXT ' $1/GL_ARB_texture_storage > tmp
+ mv tmp $1/GL_ARB_texture_storage
+
+# Filter out TEXTURE_3D enums from GL_EXT_paletted_texture
+ grep -v 'TEXTURE_3D' $1/GL_EXT_paletted_texture > tmp
+ mv tmp $1/GL_EXT_paletted_texture
+
+# Filter out GL_VERSION_1_1 enums from GL_AMD_stencil_operation_extended
+ grep -v '0x150' $1/GL_AMD_stencil_operation_extended > tmp
+ mv tmp $1/GL_AMD_stencil_operation_extended
+
+# Filter out from GL_APPLE_ycbcr_422
+ grep -v 'GL_UNSIGNED_SHORT_8_8_APPLE' $1/GL_APPLE_ycbcr_422 > tmp
+ mv tmp $1/GL_APPLE_ycbcr_422
+ grep -v 'GL_UNSIGNED_SHORT_8_8_REV_APPLE' $1/GL_APPLE_ycbcr_422 > tmp
+ mv tmp $1/GL_APPLE_ycbcr_422
+
+# Filter out GL_FRAGMENT_DEPTH_EXT from GL_EXT_light_texture
+ grep -v 'GL_FRAGMENT_DEPTH_EXT' $1/GL_EXT_light_texture > tmp
+ mv tmp $1/GL_EXT_light_texture
+
+# Filter out GL_MULTISAMPLE_BIT_EXT from GL_SGIS_multisample
+ grep -v 'GL_MULTISAMPLE_BIT_EXT' $1/GL_SGIS_multisample > tmp
+ mv tmp $1/GL_SGIS_multisample
+
+# Filter out GL_COMPRESSED_RGB_S3TC_DXT1_EXT from GL_EXT_texture_compression_dxt1
+ grep -v 'GL_COMPRESSED_RGB_S3TC_DXT1_EXT' $1/GL_EXT_texture_compression_dxt1 > tmp
+ mv tmp $1/GL_EXT_texture_compression_dxt1
+
+# Filter out GL_COMPRESSED_RGBA_S3TC_DXT1_EXT from GL_EXT_texture_compression_dxt1
+ grep -v 'GL_COMPRESSED_RGBA_S3TC_DXT1_EXT' $1/GL_EXT_texture_compression_dxt1 > tmp
+ mv tmp $1/GL_EXT_texture_compression_dxt1
+
+# Append GLfixed to GL_ARB_ES2_compatibility
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_ARB_ES2_compatibility <<EOT
+ typedef int GLfixed
+EOT
+
+# Append GLclampx to GL_REGAL_ES1_0_compatibility
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_REGAL_ES1_0_compatibility <<EOT
+ typedef int GLclampx
+EOT
+
+# Append GLLOGPROCREGAL to GL_REGAL_log
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_REGAL_log <<EOT
+ typedef void (APIENTRY *LOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context)
+EOT
+
+# Fixup LOGPROCREGAL -> GLLOGPROCREGAL
+ perl -e 's/LOGPROCREGAL/GLLOGPROCREGAL/g' -pi $1/GL_REGAL_log
+
+# Filter out GL_BYTE from GL_OES_byte_coordinates
+ grep -v 'GL_BYTE' $1/GL_OES_byte_coordinates > tmp
+ mv tmp $1/GL_OES_byte_coordinates
+
+# Filter out fp64 (not widely supported) from GL_EXT_direct_state_access
+ egrep -v 'glProgramUniform.*[1234]d[v]?EXT' $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+
+# Filter out all enums from GL_ANGLE_depth_texture
+ grep -v '0x' $1/GL_ANGLE_depth_texture > tmp
+ mv tmp $1/GL_ANGLE_depth_texture
+
+# Filter out GL_NONE enum from GL_ANGLE_depth_texture
+ grep -v 'GL_NONE' $1/GL_ANGLE_texture_usage > tmp
+ mv tmp $1/GL_ANGLE_texture_usage
+
+# Fixup REGAL and ANGLE urls
+
+ for i in $1/GL_REGAL_*; do perl -e 's#http://www.opengl.org/registry/specs/REGAL/.*#https://github.com/p3/regal/tree/master/doc/extensions#g' -pi $i; done
+ for i in $1/GL_ANGLE_*; do perl -e 's#http://www.opengl.org/registry/specs/ANGLE/.*#https://code.google.com/p/angleproject/source/browse/\#git%2Fextensions#g' -pi $i; done
+
+# Filter out GL_NV_blend_equation_advanced_coherent enums and functions
+ head -n4 $1/GL_NV_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_NV_blend_equation_advanced_coherent
+
+# Filter out GL_AMD_gpu_shader_int64 enums and functions
+ head -n4 $1/GL_AMD_gpu_shader_int64 > tmp
+ mv tmp $1/GL_AMD_gpu_shader_int64
+
+# Filter out GL_NO_ERROR enum and glGetGraphicsResetStatus from GL_KHR_robustness
+ grep -v 'GL_NO_ERROR' $1/GL_KHR_robustness |
+ grep -v 'glGetGraphicsResetStatus' > tmp
+ mv tmp $1/GL_KHR_robustness
+
+# Filter out all enums from GL_KHR_blend_equation_advanced_coherent
+ grep -v '0x' $1/GL_KHR_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_KHR_blend_equation_advanced_coherent
+
+# Filter out glBlendBarrierKHR enum from GL_KHR_blend_equation_advanced_coherent
+ grep -v 'glBlendBarrierKHR' $1/GL_KHR_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_KHR_blend_equation_advanced_coherent
+
+# Filter out GL_NONE enum from GL_KHR_context_flush_control
+ grep -v 'GL_NONE' $1/GL_KHR_context_flush_control > tmp
+ mv tmp $1/GL_KHR_context_flush_control
+
+# Filter out CoverageModulation from NV_framebuffer_mixed_samples
+# Superset of EXT_raster_multisample
+
+ grep -v "CoverageModulation" $1/GL_NV_framebuffer_mixed_samples > tmp
+ mv tmp $1/GL_NV_framebuffer_mixed_samples
+
+# Filter out glRasterSamplesEXT from NV_framebuffer_mixed_samples
+# Superset of EXT_raster_multisample
+
+ grep -v "RasterSamplesEXT" $1/GL_NV_framebuffer_mixed_samples > tmp
+ mv tmp $1/GL_NV_framebuffer_mixed_samples
+
+# Filter out glNamedBufferStorageEXT from GL_ARB_buffer_storage
+
+ grep -v "glNamedBufferStorageEXT" $1/GL_ARB_buffer_storage > tmp
+ mv tmp $1/GL_ARB_buffer_storage
+
+# Filter out glFramebufferTextureEXT from GL_EXT_geometry_point_size
+# and GL_EXT_geometry_shader
+
+ grep -v "glFramebufferTextureEXT" $1/GL_EXT_geometry_point_size > tmp
+ mv tmp $1/GL_EXT_geometry_point_size
+
+ grep -v "glFramebufferTextureEXT" $1/GL_EXT_geometry_shader > tmp
+ mv tmp $1/GL_EXT_geometry_shader
+
+# Filter out glBindFragDataLocationEXT from GL_EXT_blend_func_extended
+
+ grep -v "glBindFragDataLocationEXT" $1/GL_EXT_blend_func_extended > tmp
+ mv tmp $1/GL_EXT_blend_func_extended
+
+# Filter out glDrawArraysInstancedEXT and glDrawElementsInstancedEXT from GL_EXT_blend_func_extended
+
+ grep -v "glDrawArraysInstancedEXT" $1/GL_EXT_instanced_arrays > tmp
+ mv tmp $1/GL_EXT_instanced_arrays
+
+ grep -v "glDrawElementsInstancedEXT" $1/GL_EXT_instanced_arrays > tmp
+ mv tmp $1/GL_EXT_instanced_arrays
+
+# Filter out glRenderbufferStorageMultisampleEXT from GL_EXT_multisampled_render_to_texture
+
+ grep -v "glRenderbufferStorageMultisampleEXT" $1/GL_EXT_multisampled_render_to_texture > tmp
+ mv tmp $1/GL_EXT_multisampled_render_to_texture
+
+# Filter out glTexturePageCommitmentEXT from GL_ARB_sparse_texture
+
+ grep -v "glTexturePageCommitmentEXT" $1/GL_ARB_sparse_texture > tmp
+ mv tmp $1/GL_ARB_sparse_texture
+
+# Filter out TextureStorage* from GL_ARB_texture_storage
+
+ grep -v "TextureStorage" $1/GL_ARB_texture_storage > tmp
+ mv tmp $1/GL_ARB_texture_storage
+
+# Filter out functions from GL_EXT_occlusion_query_boolean
+
+ grep -v "(" $1/GL_EXT_occlusion_query_boolean > tmp
+ mv tmp $1/GL_EXT_occlusion_query_boolean
+
+# Filter out duplicate enums from GL_EXT_protected_textures
+
+ cat $1/GL_EXT_protected_textures | grep -v GL_TRUE | grep -v GL_FALSE > tmp
+ mv tmp $1/GL_EXT_protected_textures
+
+# Filter out duplicate enums from GL_EXT_robustness
+
+ cat $1/GL_EXT_robustness | grep -v GL_NO_ERROR > tmp
+ mv tmp $1/GL_EXT_robustness
+
+# Filter GL_EXT_shader_framebuffer_fetch_non_coherent
+
+ grep -v "FramebufferFetchBarrierEXT" $1/GL_EXT_shader_framebuffer_fetch_non_coherent > tmp
+ mv tmp $1/GL_EXT_shader_framebuffer_fetch_non_coherent
+
+# Filter GL_EXT_tessellation_shader
+
+ grep -v "PatchParameteriEXT" $1/GL_EXT_tessellation_shader > tmp
+ mv tmp $1/GL_EXT_tessellation_shader
+
+# Filter GL_EXT_texture_buffer
+
+ grep -v "TexBuffer" $1/GL_EXT_texture_buffer > tmp
+ mv tmp $1/GL_EXT_texture_buffer
+
+# Filter GL_EXT_texture_border_clamp
+
+ grep -v "TexParameter" $1/GL_EXT_texture_border_clamp > tmp
+ mv tmp $1/GL_EXT_texture_border_clamp
+
+# Filter GL_EXT_disjoint_timer_query
+
+ cat $1/GL_EXT_disjoint_timer_query | grep -v GetQueryObjecti64v | grep -v GetQueryObjectui64v > tmp
+ mv tmp $1/GL_EXT_disjoint_timer_query
+
+# Filter GL_NV_read_buffer_front
+
+ grep -v "ReadBufferNV" $1/GL_NV_read_buffer_front > tmp
+ mv tmp $1/GL_NV_read_buffer_front
+
+# Append GLVULKANPROCNV to GL_NV_draw_vulkan_image
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_NV_draw_vulkan_image <<EOT
+ typedef void (APIENTRY *GLVULKANPROCNV)(void)
+EOT
+
+# GLU extensions are not relevant here
+ rm -f $1/GL_GLU_*
+
+# Not complete
+ rm -f $1/GL_SGIX_color_type
+
+# clean up
+ rm -f patterns $1/*.bak
diff --git a/glew/auto/bin/filter_gles_ext.sh b/glew/auto/bin/filter_gles_ext.sh
new file mode 100644
index 0000000..c562061
--- /dev/null
+++ b/glew/auto/bin/filter_gles_ext.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+## $2: Registry directory
+## $3: The black list
+
+set -e
+
+# clean up
+ rm -f $1/*.bak
diff --git a/glew/auto/bin/filter_spec.py b/glew/auto/bin/filter_spec.py
new file mode 100644
index 0000000..16c2fa9
--- /dev/null
+++ b/glew/auto/bin/filter_spec.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+
+import re
+
+section = re.compile('^(Name|Name Strings?|Contact|Notice|Number|Dependencies|Overview|Issues|IP Status|Status|Version|New Procedures and Functions|New Tokens|Additions to .*|Changes to .*|Modifications to .*|Add new Section .*)\s*$')
+token = re.compile('^\s+(([A-Z0-9][A-Z0-9_x]*):?\s+((?:0x)?[0-9A-F]+)([^\?]*))?\s*$')
+match = [ 'Name', 'Name String', 'Contact', 'Notice', 'Name Strings', 'Version', 'Number', 'Dependencies', 'New Procedures and Functions', 'New Tokens']
+
+if __name__ == '__main__':
+
+ from optparse import OptionParser
+ import os
+
+ parser = OptionParser('usage: %prog [options] [SOURCES...]')
+ (options, args) = parser.parse_args()
+
+ for i in args:
+ lines = open(i).readlines()
+ f = open(i,'w')
+
+ # Keep track of the current section as we iterate over the input
+ current = ''
+ for j in lines:
+
+ # Detect the start of a new section
+ m = section.match(j)
+ if m:
+ current = m.group(1).strip()
+ if current in match:
+ print >>f, j,
+ continue
+
+ if current=='New Tokens':
+ if token.match(j):
+ print >>f, j,
+ elif current in match:
+ print >>f, j,
+
diff --git a/glew/auto/bin/make.pl b/glew/auto/bin/make.pl
new file mode 100644
index 0000000..e0b32ef
--- /dev/null
+++ b/glew/auto/bin/make.pl
@@ -0,0 +1,224 @@
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+my %regex = (
+ extname => qr/^[A-Z][A-Za-z0-9_]+$/,
+ exturl => qr/^http.+$/,
+ function => qr/^(.+) ([a-z][a-z0-9_]*) \((.*)\)$/i,
+ token => qr/^([A-Z][A-Z0-9_x]*)\s+((?:0x)?[0-9A-Fa-f]+(u(ll)?)?|[A-Z][A-Z0-9_]*)$/,
+ type => qr/^typedef\s+(.+)$/,
+ exact => qr/.*;$/,
+);
+
+# prefix function name with glew
+sub prefixname($)
+{
+ my $name = $_[0];
+ $name =~ s/^(.*?)gl/__$1glew/;
+ return $name;
+}
+
+# prefix function name with glew
+sub prefix_varname($)
+{
+ my $name = $_[0];
+ $name =~ s/^(.*?)GL(X*?)EW/__$1GL$2EW/;
+ return $name;
+}
+
+#---------------------------------------------------------------------------------------
+
+sub make_exact($)
+{
+ my $exact = $_[0];
+ $exact =~ s/(; |{)/$1\n/g;
+ return $exact;
+}
+
+sub make_separator($)
+{
+ my $extname = $_[0];
+ my $l = length $extname;
+ my $s = (71 - $l)/2;
+ print "/* ";
+ my $j = 3;
+ for (my $i = 0; $i < $s; $i++)
+ {
+ print "-";
+ $j++;
+ }
+ print " $_[0] ";
+ $j += $l + 2;
+ while ($j < 76)
+ {
+ print "-";
+ $j++;
+ }
+ print " */\n\n";
+}
+
+#---------------------------------------------------------------------------------------
+
+sub parse_ext($)
+{
+ my $filename = shift;
+ my %functions = ();
+ my %tokens = ();
+ my @reuse = (); # Extensions to reuse
+ my @types = ();
+ my @exacts = ();
+ my $extname = ""; # Full extension name GL_FOO_extension
+ my $exturl = ""; # Info URL
+ my $extstring = ""; # Relevant extension string
+
+ open EXT, "<$filename" or return;
+
+ # As of GLEW 1.14.0 the first four lines _must_ be
+ # the extension name, the URL and the GL extension
+ # string (which might be different to the name),
+ # and the reused extensions
+ #
+ # For example GL_NV_geometry_program4 is available
+ # iff GL_NV_gpu_program4 appears in the extension
+ # string.
+ #
+ # For core OpenGL versions, the third line should
+ # be blank.
+ #
+ # If the URL is unknown, the second line should be
+ # blank.
+
+ $extname = readline(*EXT);
+ $exturl = readline(*EXT);
+ $extstring = readline(*EXT);
+ @reuse = split(" ", readline(*EXT));
+
+ chomp($extname);
+ chomp($exturl);
+ chomp($extstring);
+
+ while(<EXT>)
+ {
+ chomp;
+ if (s/^\s+//)
+ {
+ if (/$regex{exact}/)
+ {
+ push @exacts, $_;
+ }
+ elsif (/$regex{type}/)
+ {
+ push @types, $_;
+ }
+ elsif (/$regex{token}/)
+ {
+ my ($name, $value) = ($1, $2);
+ $tokens{$name} = $value;
+ }
+ elsif (/$regex{function}/)
+ {
+ my ($return, $name, $parms) = ($1, $2, $3);
+ $functions{$name} = {
+ rtype => $return,
+ parms => $parms,
+ };
+ } else {
+ print STDERR "'$_' matched no regex.\n";
+ }
+ }
+ }
+
+ close EXT;
+
+ return ($extname, $exturl, $extstring, \@reuse, \@types, \%tokens, \%functions, \@exacts);
+}
+
+sub output_tokens($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (keys %{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_, $tbl->{$_}) } sort {
+ if (${$tbl}{$a} eq ${$tbl}{$b}) {
+ $a cmp $b
+ } else {
+ if (${$tbl}{$a} =~ /_/) {
+ if (${$tbl}{$b} =~ /_/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tbl}{$b} =~ /_/) {
+ 1
+ } else {
+ if (hex ${$tbl}{$a} eq hex ${$tbl}{$b}) {
+ $a cmp $b
+ } else {
+ hex ${$tbl}{$a} <=> hex ${$tbl}{$b}
+ }
+ }
+ }
+ }
+ } keys %{$tbl};
+ print "\n";
+ } else {
+ print STDERR "no keys in table!\n";
+ }
+}
+
+sub output_types($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
+
+sub output_decls($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (keys %{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_, $tbl->{$_}) } sort keys %{$tbl};
+ print "\n";
+ }
+}
+
+sub output_exacts($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
+
+sub output_reuse($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
diff --git a/glew/auto/bin/make_def_fun.pl b/glew/auto/bin/make_def_fun.pl
new file mode 100644
index 0000000..af74706
--- /dev/null
+++ b/glew/auto/bin/make_def_fun.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# function pointer declaration
+sub make_pfn_decl($%)
+{
+ return "PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . " = NULL;";
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ output_decls($functions, \&make_pfn_decl);
+ }
+}
diff --git a/glew/auto/bin/make_def_var.pl b/glew/auto/bin/make_def_var.pl
new file mode 100644
index 0000000..993a68c
--- /dev/null
+++ b/glew/auto/bin/make_def_var.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ print "GLboolean " . prefix_varname($extvar) . " = GL_FALSE;\n";
+ }
+}
diff --git a/glew/auto/bin/make_enable_index.pl b/glew/auto/bin/make_enable_index.pl
new file mode 100644
index 0000000..bdbe7d1
--- /dev/null
+++ b/glew/auto/bin/make_enable_index.pl
@@ -0,0 +1,48 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+use File::Basename;
+
+use lib '.';
+do 'bin/make.pl';
+
+##
+## Make Extension-enabled Index
+##
+
+my @extlist = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ print "/* Detected in the extension string or strings */\n";
+ print "static GLboolean _glewExtensionString[" . scalar @extlist . "];\n";
+
+ print "/* Detected via extension string or experimental mode */\n";
+ print "static GLboolean* _glewExtensionEnabled[] = {\n";;
+
+ foreach my $ext (sort { basename($a) cmp basename($b) } @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ print "#ifdef $extname\n";
+ print " &__$extvar,\n";
+ print "#endif\n";
+ }
+
+ print " NULL\n};\n\n";
+}
diff --git a/glew/auto/bin/make_header.pl b/glew/auto/bin/make_header.pl
new file mode 100644
index 0000000..9917db1
--- /dev/null
+++ b/glew/auto/bin/make_header.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# token
+sub make_define($$)
+{
+ return "#define $_[0] $_[1]"
+}
+
+# type declaration
+sub make_type($$)
+{
+ return "@_;"
+}
+
+# function pointer type declaration
+sub make_pfn_type($%)
+{
+ our $api;
+ return join(' ', "typedef", $_[1]->{rtype},
+ "($api * PFN" . (uc $_[0]) . "PROC)",
+ "(" . $_[1]->{parms} . ")") . ";";
+}
+
+# function name alias
+sub make_pfn_alias($%)
+{
+ our $type;
+ return join(" ", "#define", $_[0], $type . "EW_GET_FUN(" . prefixname($_[0]) . ")")
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $api = shift;
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ make_separator($extname);
+ print "#ifndef $extname\n#define $extname 1\n";
+ output_tokens($tokens, \&make_define);
+ output_types($types, \&make_type);
+ output_exacts($exacts, \&make_exact);
+ output_decls($functions, \&make_pfn_type);
+ output_decls($functions, \&make_pfn_alias);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ print "\n#define $extvar " . $type . "EW_GET_VAR(" . prefix_varname($extvar) . ")\n";
+ print "\n#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_html.pl b/glew/auto/bin/make_html.pl
new file mode 100644
index 0000000..be97003
--- /dev/null
+++ b/glew/auto/bin/make_html.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+my $group = "";
+my $cur_group = "";
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+ my $n = 1;
+ print "<table border=\"0\" width=\"100%\" cellpadding=\"1\" cellspacing=\"0\" align=\"center\">\n";
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ $cur_group = $extname;
+ $cur_group =~ s/^(?:W?)GL(?:X?)_([A-Z0-9]+?)_.*$/$1/;
+ $extname =~ s/^(?:W?)GL(?:X?)_(.*)$/$1/;
+ if ($cur_group ne $group)
+ {
+ if ($group ne "")
+ {
+ print "<tr><td><br></td><td></td><td></td></tr>\n";
+ }
+ $group = $cur_group;
+ }
+
+ {
+ if ($exturl)
+ {
+ print "<tr><td class=\"num\">$n</td><td>&nbsp;</td><td><a href=\"$exturl\">$extname</a></td></tr>\n";
+ }
+ else
+ {
+ print "<tr><td class=\"num\">$n</td><td>&nbsp;</td><td>$extname</td></tr>\n";
+ }
+ $n++;
+ }
+ }
+ print "</table>\n"
+}
diff --git a/glew/auto/bin/make_index.pl b/glew/auto/bin/make_index.pl
new file mode 100644
index 0000000..cf247f8
--- /dev/null
+++ b/glew/auto/bin/make_index.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+use File::Basename;
+
+use lib '.';
+do 'bin/make.pl';
+
+##
+## Make Index
+##
+## Output sorted array of extension strings for indexing into extension
+## enable/disable flags. This provides a way to convert an extension string
+## into an integer index.
+##
+
+my @extlist = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort { basename($a) cmp basename($b) } @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ print "#ifdef $extname\n";
+ print " \"$extname\",\n";
+ print "#endif\n";
+ }
+}
diff --git a/glew/auto/bin/make_info.pl b/glew/auto/bin/make_info.pl
new file mode 100644
index 0000000..3dcece9
--- /dev/null
+++ b/glew/auto/bin/make_info.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_info($%)
+{
+ my $name = $_[0];
+ return " glewInfoFunc(fi, \"$_[0]\", $name == NULL);";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ my $extpre = $extname;
+ $extpre =~ s/(GLX|GLW|GL).*/$1/;
+ $extpre = lc $extpre;
+
+ #make_separator($extname);
+ print "#ifdef $extname\n\n";
+ print "static void _glewInfo_$extname (void)\n{\n";
+
+ if (! %$functions)
+ {
+ print " ";
+ }
+ else
+ {
+ print " GLboolean fi = ";
+ }
+
+ if ($extvar =~ /VERSION/)
+ {
+ print "glewPrintExt(\"$extname\", $extvar, $extvar, $extvar);\n";
+ }
+ else
+ {
+ print "glewPrintExt(\"$extname\", $extvar, $extpre" .
+ "ewIsSupported(\"$extname\"), $extpre" .
+ "ewGetExtension(\"$extstring\"));\n";
+ }
+ output_decls($functions, \&make_pfn_info);
+ print "}\n\n";
+ print "#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_info_list.pl b/glew/auto/bin/make_info_list.pl
new file mode 100644
index 0000000..74dbb77
--- /dev/null
+++ b/glew/auto/bin/make_info_list.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_def($%)
+{
+ return "PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . " = NULL;";
+}
+
+# function pointer definition
+sub make_init_call($%)
+{
+ my $name = prefixname($_[0]);
+ return " r = r || (" . $name . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress((const GLubyte*)\"" . $name . "\")) == NULL;";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ print "#ifdef $extname\n";
+ print " _glewInfo_$extname();\n";
+ print "#endif /* $extname */\n";
+ }
+}
diff --git a/glew/auto/bin/make_init.pl b/glew/auto/bin/make_init.pl
new file mode 100644
index 0000000..37922ee
--- /dev/null
+++ b/glew/auto/bin/make_init.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#-------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_def_init($%)
+{
+ #my $name = prefixname($_[0]);
+ return " r = ((" . $_[0] . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress((const GLubyte*)\"" . $_[0] . "\")) == NULL) || r;";
+}
+
+sub make_reuse_call($%)
+{
+ return " r = _glewInit_" . $_[0] . "() || r;";
+}
+
+#-------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ #make_separator($extname);
+ my $extvar = $extname;
+ my $extvardef = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ if (keys %$functions or keys @$reuse)
+ {
+ print "#ifdef $extname\n\n";
+ print "static GLboolean _glewInit_$extname ()\n{\n GLboolean r = GL_FALSE;\n";
+ output_reuse($reuse, \&make_reuse_call);
+ output_decls($functions, \&make_pfn_def_init);
+ print "\n return r;\n}\n\n";
+ print "#endif /* $extname */\n\n";
+ }
+ }
+}
diff --git a/glew/auto/bin/make_initd.pl b/glew/auto/bin/make_initd.pl
new file mode 100644
index 0000000..2f7e2e6
--- /dev/null
+++ b/glew/auto/bin/make_initd.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+## Output declarations for the _glewInit_[extension] functions defined
+## by make_init.pl script. These are necessary for for initializers to
+## call each other, such as a core GL 3 context that depends on certain
+## extensions.
+
+#-------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ #print "#ifdef $extname\n\n";
+ if (keys %$functions)
+ {
+ print "static GLboolean _glewInit_$extname ();\n";
+ }
+ #print "#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_list.pl b/glew/auto/bin/make_list.pl
new file mode 100644
index 0000000..38aebcd
--- /dev/null
+++ b/glew/auto/bin/make_list.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_init_call($%)
+{
+ my $name = prefixname($_[0]);
+ return " r = r || (" . $_[0] . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress(\"" . $name . "\")) == NULL;";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ my $extpre = $extname;
+ $extpre =~ s/^(W?E?)GL(X?).*$/\l$1gl\l$2ew/;
+
+ #my $pextvar = prefix_varname($extvar);
+
+ if (length($extstring) && $extstring !~ /^GL_/ || keys %$functions)
+ {
+ print "#ifdef $extname\n";
+ }
+
+ if (length($extstring) && $extstring !~ /^GL_/)
+ {
+ print " " . $extvar . " = _glewSearchExtension(\"$extstring\", extStart, extEnd);\n";
+ }
+
+ if (keys %$functions)
+ {
+ if ($extname =~ /WGL_.*/)
+ {
+ print " if (glewExperimental || " . $extvar . "|| crippled) " . $extvar . "= !_glewInit_$extname();\n";
+ }
+ else
+ {
+ print " if (glewExperimental || " . $extvar . ") " . $extvar . " = !_glewInit_$extname();\n";
+ }
+ }
+
+ if (length($extstring) && $extstring !~ /^GL_/ || keys %$functions)
+ {
+ print "#endif /* $extname */\n";
+ }
+ }
+
+}
diff --git a/glew/auto/bin/make_list2.pl b/glew/auto/bin/make_list2.pl
new file mode 100644
index 0000000..3ded727
--- /dev/null
+++ b/glew/auto/bin/make_list2.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+# Extensions that depend on others can be enabled once we know
+# if the one it depends on, is enabled.
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ if ($extname ne $extstring && length($extstring))
+ {
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ my $parent = $extstring;
+ $parent =~ s/GL(X*)_/GL$1EW_/;
+
+ print "#ifdef $extname\n";
+ print " $extvar = $parent;\n";
+ print "#endif /* $extname */\n";
+ }
+ }
+
+}
diff --git a/glew/auto/bin/make_str.pl b/glew/auto/bin/make_str.pl
new file mode 100644
index 0000000..a6d7709
--- /dev/null
+++ b/glew/auto/bin/make_str.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ my $curexttype = "";
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $exttype = $extname;
+ $exttype =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$3/;
+ my $extrem = $extname;
+ $extrem =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$4/;
+ my $extvar = $extname;
+ $extvar =~ s/(W?E?)GL(X?)_/$1GL$2EW_/;
+ if(!($exttype =~ $curexttype))
+ {
+ if(length($curexttype) > 0)
+ {
+ print " }\n";
+ }
+ print " if (_glewStrSame2(&pos, &len, (const GLubyte*)\"$exttype\", " . length($exttype) . "))\n";
+ print " {\n";
+ $curexttype = $exttype;
+ }
+ print "#ifdef $extname\n";
+ print " if (_glewStrSame3(&pos, &len, (const GLubyte*)\"$extrem\", ". length($extrem) . "))\n";
+ #print " return $extvar;\n";
+ print " {\n";
+ print " ret = $extvar;\n";
+ print " continue;\n";
+ print " }\n";
+ print "#endif\n";
+ }
+
+ print " }\n";
+}
diff --git a/glew/auto/bin/make_struct_fun.pl b/glew/auto/bin/make_struct_fun.pl
new file mode 100644
index 0000000..cc9eef5
--- /dev/null
+++ b/glew/auto/bin/make_struct_fun.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# function pointer declaration
+sub make_pfn_decl($%)
+{
+ our $export;
+ return $export . " PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . ";";
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $export = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ output_decls($functions, \&make_pfn_decl);
+ }
+}
diff --git a/glew/auto/bin/make_struct_var.pl b/glew/auto/bin/make_struct_var.pl
new file mode 100644
index 0000000..ab8b8b5
--- /dev/null
+++ b/glew/auto/bin/make_struct_var.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+our $export = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ print $export . " GLboolean " . prefix_varname($extvar) . ";\n";
+ }
+}
diff --git a/glew/auto/bin/parse_spec.pl b/glew/auto/bin/parse_spec.pl
new file mode 100644
index 0000000..5e12f60
--- /dev/null
+++ b/glew/auto/bin/parse_spec.pl
@@ -0,0 +1,410 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+sub compile_regex
+{
+ my $regex = join('', @_);
+ return qr/$regex/
+}
+
+my @sections = (
+ "Name",
+ "Name Strings?",
+ "New Procedures and Functions",
+ "New Tokens.*", # Optional (GL/WGL/GLX/...) suffix
+ "Additions to Chapter.*",
+);
+
+my %typemap = (
+ bitfield => "GLbitfield",
+ boolean => "GLboolean",
+ # fsck up in EXT_vertex_array
+ Boolean => "GLboolean",
+ byte => "GLbyte",
+ clampd => "GLclampd",
+ clampf => "GLclampf",
+ double => "GLdouble",
+ enum => "GLenum",
+ # Intel fsck up
+ Glenum => "GLenum",
+ float => "GLfloat",
+ half => "GLhalf",
+ int => "GLint",
+ short => "GLshort",
+ sizei => "GLsizei",
+ ubyte => "GLubyte",
+ uint => "GLuint",
+ ushort => "GLushort",
+ DMbuffer => "void *",
+ # Nvidia video output fsck up
+ int64EXT => "GLint64EXT",
+ uint64EXT=> "GLuint64EXT",
+
+ # ARB VBO introduces these.
+
+ sizeiptr => "GLsizeiptr",
+ intptr => "GLintptr",
+ sizeiptrARB => "GLsizeiptrARB",
+ intptrARB => "GLintptrARB",
+
+ # ARB shader objects introduces these, charARB is at least 8 bits,
+ # handleARB is at least 32 bits
+ charARB => "GLcharARB",
+ handleARB => "GLhandleARB",
+
+ char => "GLchar",
+
+ # OpenGL 3.2 and GL_ARB_sync
+
+ int64 => "GLint64",
+ uint64 => "GLuint64",
+ sync => "GLsync",
+
+ # GL_EXT_EGL_image_storage
+
+ eglImageOES => "GLeglImageOES",
+
+ # AMD_debug_output
+
+ DEBUGPROCAMD => "GLDEBUGPROCAMD",
+
+ # ARB_debug_output
+
+ DEBUGPROCARB => "GLDEBUGPROCARB",
+
+ # KHR_debug
+
+ DEBUGPROC => "GLDEBUGPROC",
+
+ VULKANPROCNV => "GLVULKANPROCNV",
+
+ vdpauSurfaceNV => "GLvdpauSurfaceNV",
+
+ # GLX 1.3 defines new types which might not be available at compile time
+
+ #GLXFBConfig => "void*",
+ #GLXFBConfigID => "XID",
+ #GLXContextID => "XID",
+ #GLXWindow => "XID",
+ #GLXPbuffer => "XID",
+
+ # Weird stuff to some SGIX extension
+
+ #GLXFBConfigSGIX => "void*",
+ #GLXFBConfigIDSGIX => "XID",
+
+);
+
+my %voidtypemap = (
+ void => "GLvoid",
+);
+
+my %taboo_tokens = (
+ GL_ZERO => 1,
+);
+
+# list of function definitions to be ignored, unless they are being defined in
+# the given spec. This is an ugly hack around the fact that people writing
+# spec files seem to shut down all brain activity while they are at this task.
+#
+# This will be moved to its own file eventually.
+#
+# (mem, 2003-03-19)
+
+my %fnc_ignore_list = (
+ "BindProgramARB" => "ARB_vertex_program",
+ "ColorSubTableEXT" => "EXT_color_subtable",
+ "DeleteProgramsARB" => "ARB_vertex_program",
+ "GenProgramsARB" => "ARB_vertex_program",
+ "GetProgramEnvParameterdvARB" => "ARB_vertex_program",
+ "GetProgramEnvParameterfvARB" => "ARB_vertex_program",
+ "GetProgramLocalParameterdvARB" => "ARB_vertex_program",
+ "GetProgramLocalParameterfvARB" => "ARB_vertex_program",
+ "GetProgramStringARB" => "ARB_vertex_program",
+ "GetProgramivARB" => "ARB_vertex_program",
+ "IsProgramARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4dARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4dvARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4fARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4fvARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4dARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4dvARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4fARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4fvARB" => "ARB_vertex_program",
+ "ProgramStringARB" => "ARB_vertex_program",
+ "EGLImageTargetTexture2DOES" => "OES_EGL_image",
+ "FramebufferTextureOES" => "GL_OES_geometry_shader",
+ "PatchParameteriOES" => "GL_OES_tessellation_shader",
+ "PointSizePointerOES" => "GL_OES_point_size_array",
+ "LockArraysEXT" => "EXT_compiled_vertex_array",
+ "UnlockArraysEXT" => "EXT_compiled_vertex_array",
+ "CoverageMaskNV" => "NV_coverage_sample",
+ "CoverageOperationNV" => "NV_coverage_sample",
+ "glXCreateContextAttribsARB" => "ARB_create_context_profile",
+ "wglCreateContextAttribsARB" => "WGL_ARB_create_context_profile",
+);
+
+my %regex = (
+ eofnc => qr/(?:\);?$|^$)/, # )$ | );$ | ^$
+ extname => qr/^[A-Z][A-Za-z0-9_]+$/,
+ none => qr/^\(none\)$/,
+ function => qr/^(.+) ([a-z][a-z0-9_]*) \((.*)\)$/i,
+ prefix => qr/^(?:[aw]?gl|glX|egl)/, # gl | agl | wgl | glX
+ tprefix => qr/^(?:[AW]?GL|GLX|EGL)_/, # GL_ | AGL_ | WGL_ | GLX_
+ section => compile_regex('^(', join('|', @sections), ')$'), # sections in spec
+ token => qr/^([A-Z0-9][A-Z0-9_x]*):?\s+((?:0x)?[0-9A-Fa-f]+(u(ll)?)?)(|\s[^\?]*)$/, # define tokens
+ types => compile_regex('\b(', join('|', keys %typemap), ')\b'), # var types
+ voidtype => compile_regex('\b(', keys %voidtypemap, ')\b '), # void type
+);
+
+# reshapes the the function declaration from multiline to single line form
+sub normalize_prototype
+{
+ local $_ = join(" ", @_);
+ s/\s+/ /g; # multiple whitespace -> single space
+ s/\<.*\>//g; # remove <comments> from direct state access extension
+ s/\<.*$//g; # remove incomplete <comments> from direct state access extension
+ s#/\*.*\*/##g; # remove /* ... */ comments
+ s/\s*\(\s*/ \(/; # exactly one space before ( and none after
+ s/\s*\)\s*/\)/; # no space before or after )
+ s/\s*\*([a-zA-Z])/\* $1/; # "* identifier"
+ s/\*wgl/\* wgl/; # "* wgl"
+ s/\*glX/\* glX/; # "* glX"
+ s/\.\.\./void/; # ... -> void
+ s/;$//; # remove ; at the end of the line
+ return $_;
+}
+
+# Ugly hack to work around the fact that functions are declared in more
+# than one spec file.
+sub ignore_function($$)
+{
+ return exists($fnc_ignore_list{$_[0]}) && $fnc_ignore_list{$_[0]} ne $_[1]
+}
+
+sub parse_spec($)
+{
+ my $filename = shift;
+ my $extname = "";
+ my $vendortag = "";
+ my @extnames = ();
+ my %functions = ();
+ my %tokens = ();
+
+ my $section = "";
+ my @fnc = ();
+
+ my %proc = (
+ "Name" => sub {
+ if (/^([a-z0-9]+)_([a-z0-9_]+)/i)
+ {
+ $extname = "$1_$2";
+ $vendortag = $1;
+ }
+ },
+
+ "Name Strings" => sub {
+ # Add extension name to extension list
+
+ # Initially use $extname if (none) specified
+ if (/$regex{none}/)
+ {
+ $_ = $extname;
+ }
+
+ if (/$regex{extname}/)
+ {
+ # prefix with "GL_" if prefix not present
+ s/^/GL_/ unless /$regex{tprefix}/o;
+ # Add extension name to extension list
+ push @extnames, $_;
+ }
+ },
+
+ "New Procedures and Functions" => sub {
+ # if line matches end of function
+ if (/$regex{eofnc}/)
+ {
+ # add line to function declaration
+ push @fnc, $_;
+
+ # if normalized version of function looks like a function
+ if (normalize_prototype(@fnc) =~ /$regex{function}/)
+ {
+ # get return type, name, and arguments from regex
+ my ($return, $name, $parms) = ($1, $2, $3);
+ if (!ignore_function($name, $extname))
+ {
+ # prefix with "gl" if prefix not present
+ $name =~ s/^/gl/ unless $name =~ /$regex{prefix}/;
+ # is this a pure GL function?
+ if ($name =~ /^gl/ && $name !~ /^glX/)
+ {
+ # apply typemaps
+ $return =~ s/$regex{types}/$typemap{$1}/og;
+ $return =~ s/GLvoid/void/og;
+ $return =~ s/void\*/void */og;
+ $parms =~ s/$regex{types}/$typemap{$1}/og;
+ $parms =~ s/$regex{voidtype}/$voidtypemap{$1}/og;
+ $parms =~ s/GLvoid/void/og;
+ $parms =~ s/ void\* / void */og;
+ if ($parms eq "")
+ {
+ $parms = "void"; # NVX_progress_fence and others
+ }
+ }
+ # add to functions hash
+ $functions{$name} = {
+ rtype => $return,
+ parms => $parms,
+ };
+ }
+ }
+ # reset function declaration
+ @fnc = ();
+ } elsif ($_ ne "" and $_ ne "None") {
+ # if not eof, add line to function declaration
+ push @fnc, $_
+ }
+ },
+
+ "New Tokens" => sub {
+ if (/$regex{token}/)
+ {
+ my ($name, $value) = ($1, $2);
+ # prefix with "GL_" if prefix not present
+ $name =~ s/^/GL_/ unless $name =~ /$regex{tprefix}/;
+ # Add (name, value) pair to tokens hash, unless it's taboo
+ $tokens{$name} = $value unless exists $taboo_tokens{$name};
+ }
+ },
+ );
+
+ # Some people can't read, the template clearly says "Name String_s_"
+ $proc{"Name String"} = $proc{"Name Strings"};
+
+ # Open spec file
+ open SPEC, "<$filename" or return;
+
+ # For each line of SPEC
+ while(<SPEC>)
+ {
+ # Delete trailing newline character
+ chomp;
+ # Remove trailing white spaces
+ s/\s+$//;
+ # If starts with a capital letter, it must be a new section
+ if (/^[A-Z]/)
+ {
+ # Match section name with one of the predefined names
+ $section = /$regex{section}/o ? $1 : "default";
+ } else {
+ # Line is internal to a section
+ # Remove leading whitespace
+ s/^\s+//;
+ # Call appropriate section processing function if it exists
+ &{$proc{$section}} if exists $proc{$section};
+ }
+ }
+
+ close SPEC;
+
+ return ($extname, \@extnames, \%tokens, \%functions);
+}
+
+#----------------------------------------------------------------------------------------
+
+my @speclist = ();
+my %extensions = ();
+
+my $ext_dir = shift;
+my $reg_http = "https://www.khronos.org/registry/OpenGL/extensions/";
+
+# Take command line arguments or read list from file
+if (@ARGV)
+{
+ @speclist = @ARGV;
+} else {
+ local $/; #???
+ @speclist = split "\n", (<>);
+}
+
+foreach my $spec (sort @speclist)
+{
+ my ($extname, $extnames, $tokens, $functions) = parse_spec($spec);
+
+ foreach my $ext (@{$extnames})
+ {
+ my $info = "$ext_dir/" . $ext;
+ open EXT, ">$info";
+ print EXT $ext . "\n"; # Extension name
+ my $specname = $spec;
+ $specname =~ s/OpenGL-Registry\/extensions\///;
+ print EXT $reg_http . $specname . "\n"; # Extension info URL
+ print EXT $ext . "\n"; # Extension string
+ print EXT "\n"; # Resuses nothing by default
+
+ my $prefix = $ext;
+ $prefix =~ s/^(.+?)(_.+)$/$1/;
+ foreach my $token (sort {
+ if (${$tokens}{$a} eq ${$tokens}{$b}) {
+ $a cmp $b
+ } else {
+ if (${$tokens}{$a} =~ /_/) {
+ if (${$tokens}{$b} =~ /_/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tokens}{$b} =~ /_/) {
+ 1
+ } else {
+ if (${$tokens}{$a} =~ /u(ll)?$/) {
+ if (${$tokens}{$b} =~ /u(ll)?$/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tokens}{$b} =~ /u(ll)?$/) {
+ 1
+ } else {
+ if (hex ${$tokens}{$a} eq hex ${$tokens}{$b})
+ {
+ $a cmp $b
+ } else {
+ hex ${$tokens}{$a} <=> hex ${$tokens}{$b}
+ }
+ }
+ }
+ }
+ }
+ }
+ } keys %{$tokens})
+ {
+ if ($token =~ /^$prefix\_.*/i)
+ {
+ print EXT "\t" . $token . " " . ${\%{$tokens}}{$token} . "\n";
+ }
+ }
+ foreach my $function (sort keys %{$functions})
+ {
+ if ($function =~ /^$prefix.*/i)
+ {
+ print EXT "\t" . ${$functions}{$function}{rtype} . " " . $function . " (" . ${$functions}{$function}{parms} . ")" . "\n";
+ }
+ }
+ close EXT;
+ }
+}
diff --git a/glew/auto/bin/parse_xml.py b/glew/auto/bin/parse_xml.py
new file mode 100644
index 0000000..28ecb9f
--- /dev/null
+++ b/glew/auto/bin/parse_xml.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+
+import re
+import sys
+from xml.dom.minidom import parse, Node
+
+#
+# DOM traversal utility functions
+#
+
+def findChildren(node, path):
+ result = []
+ if len(path)==1:
+ for i in node.childNodes:
+ if i.nodeType==Node.ELEMENT_NODE:
+ if i.tagName==path[0]:
+ result.append(i)
+ else:
+ for i in node.childNodes:
+ if i.nodeType==Node.ELEMENT_NODE:
+ if i.tagName==path[0]:
+ result.extend(findChildren(i, path[1:]))
+ return result
+
+def findData(node, path):
+ return [ i.firstChild.data for i in findChildren(node, path) ]
+
+isPointer = re.compile('(.*)([ ]+)([*]+)')
+
+def findParams(node):
+ n = findData(node, ['name'])[0]
+ t = ''
+ for i in node.childNodes:
+ if i.nodeType==Node.TEXT_NODE:
+ t += i.data
+ if i.nodeType==Node.ELEMENT_NODE and i.tagName=='ptype':
+ t += i.firstChild.data
+
+ t.strip()
+ m = isPointer.match(t)
+ if m:
+ t = ('%s%s'%(m.group(1), m.group(3))).strip()
+ return ( t, n.strip())
+
+def findEnums(dom):
+ return {i.getAttribute('name'): i.getAttribute('value') for i in findChildren(dom, [ 'registry', 'enums', 'enum' ])}
+
+def findCommands(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'commands', 'command' ]):
+ r,n = findParams(findChildren(i, ['proto'])[0])
+ p = [ findParams(j) for j in findChildren(i, ['param'])]
+ ret[n] = (r, p)
+ return ret
+
+def findFeatures(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'feature' ]):
+ n = i.getAttribute('name')
+ e = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'enum' ])]
+ c = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'command' ])]
+ ret[n] = (e,c)
+ return ret
+
+def findExtensions(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'extensions', 'extension' ]):
+ n = i.getAttribute('name')
+ e = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'enum' ])]
+ c = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'command' ])]
+ ret[n] = (e,c)
+ return ret
+
+def findApi(dom, name):
+ enums = findEnums(dom)
+ commands = findCommands(dom)
+ features = findFeatures(dom)
+ extensions = findExtensions(dom)
+ return (enums, commands, features, extensions)
+
+#
+#
+#
+
+isWGL = re.compile('WGL_([A-Z0-9]+)_.*')
+
+def writeExtension(f, name, extension, enums, commands):
+ f.write(('%s\n'%name).encode())
+
+ url = 'https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf'
+
+ m = isWGL.match(name)
+ if m:
+ url = 'https://www.khronos.org/registry/OpenGL/extensions/%s/%s.txt'%(m.group(1), name)
+
+ f.write(('%s\n'%(url)).encode())
+
+ if name.find('_VERSION_')==-1:
+ f.write(('%s\n'%name).encode())
+ else:
+ f.write('\n'.encode())
+ f.write('\n'.encode())
+
+ enums = [ (j, enums[j]) for j in extension[0] ]
+ for e in sorted(enums, key=lambda i: i[1]):
+ f.write(('\t%s %s\n'%(e[0], e[1])).encode())
+
+ commands = [ (j, commands[j]) for j in extension[1] ]
+ for c in sorted(commands):
+ params = ', '.join( [ '%s %s'%(j[0].strip(), j[1].strip()) for j in c[1][1] ] )
+ if len(params)==0:
+ params = 'void'
+ f.write(('\t%s %s (%s)\n'%(c[1][0].strip(), c[0].strip(), params)).encode())
+
+if __name__ == '__main__':
+
+ from argparse import ArgumentParser
+ import os
+
+ parser = ArgumentParser(description='usage: %prog [options] [XML specs...]')
+ parser.add_argument("--core", dest="core", help="location for core outputs", default='')
+ parser.add_argument("--api", dest="name", help="API name: egl, wgl, glx, etc", default='')
+ parser.add_argument("--extensions", dest="extensions", help="location for extensions outputs", default='')
+
+ (options, args) = parser.parse_known_args()
+ options = vars(options)
+
+ for i in args:
+
+ dom = parse(i)
+ api = findApi(dom, options['name'])
+
+ print('Found {} enums, {} commands, {} features and {} extensions.'.format(
+ len(api[0]), len(api[1]), len(api[2]), len(api[3])))
+
+ if len(options['core']):
+ for i in api[2].keys():
+ with open(os.path.join(options['core'], i), 'wb') as f:
+ writeExtension(f, i, api[2][i], api[0], api[1])
+
+ if len(options['extensions']):
+ for i in api[3].keys():
+ with open(os.path.join(options['extensions'], i), 'wb') as f:
+ writeExtension(f, i, api[3][i], api[0], api[1])
+
diff --git a/glew/auto/bin/update_ext.sh b/glew/auto/bin/update_ext.sh
new file mode 100644
index 0000000..0ee3af1
--- /dev/null
+++ b/glew/auto/bin/update_ext.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+## $2: Registry directory
+## $3: The black list
+
+set -e
+
+if [ ! -d $1 ] ; then
+ mkdir -p $1
+
+# Parse each of the extensions in the registry
+ find $2 -name doc -type d -prune -o -name "*.txt" -print | \
+ grep -v -f $3 | sort | bin/parse_spec.pl $1
+
+fi
diff --git a/glew/auto/blacklist b/glew/auto/blacklist
new file mode 100644
index 0000000..6e57351
--- /dev/null
+++ b/glew/auto/blacklist
@@ -0,0 +1,27 @@
+EXT/draw_range_elements.txt
+EXT/static_vertex_array.txt
+EXT/vertex_array_set.alt.txt
+EXT/vertex_array_set.txt
+EXT/nurbs_tessellator.txt
+EXT/object_space_tess.txt
+SGI/filter4_parameters.txt
+SGIS/SGIS_texture_color_mask.txt
+SGIX/SGIX_dmbuffer.txt
+SGIX/SGIX_instruments.txt
+SGIX/SGIX_video_source.txt
+SGIX/SGIX_hyperpipe_group.txt
+OES/OES_fixed_point.txt
+OES/OES_query_matrix.txt
+IMG/IMG_user_clip_plane.txt
+NV/NV_query_resource.txt
+NV/EGL_NV_coverage_sample.txt
+OES/OES_draw_elements_base_vertex.txt
+OES/OES_viewport_array.txt
+OES/EGL_KHR_fence_sync.txt
+EXT/EXT_texenv_op.txt
+EXT/EXT_transform_feedback2.txt
+EXT/EXT_vertex_array_set.txt
+EXT/EXT_separate_shader_objects.gles.txt
+IGLOO/IGLOO_swap_triangle_strip_vertex_pointerXXX.txt
+IGLOO/IGLOO_viewport_offsetXXX.txt
+IGLOO/IGLOO_toggle_color_and_lightXXX.txt
diff --git a/glew/auto/custom.txt b/glew/auto/custom.txt
new file mode 100644
index 0000000..b797b95
--- /dev/null
+++ b/glew/auto/custom.txt
@@ -0,0 +1,7 @@
+WGL_ARB_extensions_string
+WGL_EXT_extensions_string
+WGL_ARB_pixel_format
+WGL_ARB_pbuffer
+WGL_NV_float_buffer
+WGL_ATI_pixel_format_float
+WGL_ARB_multisample
diff --git a/glew/auto/doc/advanced.html b/glew/auto/doc/advanced.html
new file mode 100644
index 0000000..3e0ad79
--- /dev/null
+++ b/glew/auto/doc/advanced.html
@@ -0,0 +1,130 @@
+<h2>Automatic Code Generation</h2>
+
+<p>
+Starting from release 1.1.0, the source code and parts of the
+documentation are automatically generated from the extension
+specifications in a two-step process. In the first step,
+specification files from the OpenGL registry are downloaded and
+parsed. Skeleton descriptors are created for each extension. These
+descriptors contain all necessary information for creating the source
+code and documentation in a simple and compact format, including the
+name of the extension, url link to the specification, tokens, function
+declarations, typedefs and struct definitions. In the second step,
+the header files as well as the library and glewinfo source are
+generated from the descriptor files. The code generation scripts are
+located in the <tt>auto</tt> subdirectory.
+</p>
+
+<p>
+The code generation scripts require GNU make, wget, and perl. On
+Windows, the simplest way to get access to these tools is to install
+<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the
+root directory is mounted in binary mode. The makefile in the
+<tt>auto</tt> directory provides the following build targets:
+</p>
+
+<table border=0 cellpadding=0 cellspacing=5>
+<tr><td align="left" valign="top"><tt>make</tt></td>
+<td align=left>Create the source files from the descriptors.<br/> If the
+descriptors do not exist, create them from the spec files.<br/> If the spec
+files do not exist, download them from the OpenGL repository.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clean</tt></td>
+<td align=left>Delete the source files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clobber</tt></td>
+<td align=left>Delete the source files and the descriptors.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;destroy</tt></td>
+<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;custom</tt></td>
+<td align=left>Create the source files for the extensions
+listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code
+Generation" below for more details.</td></tr>
+</table>
+
+<h3>Adding a New Extension</h3>
+
+<p>
+To add a new extension, create a descriptor file for the extension in
+<tt>auto/core</tt> and rerun the code generation scripts by typing
+<tt>make clean; make</tt> in the <tt>auto</tt> directory.
+</p>
+
+<p>
+The format of the descriptor file is given below. Items in
+brackets are optional.
+</p>
+
+<p class="pre">
+&lt;Extension Name&gt;<br>
+[&lt;URL of Specification File&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+<!-- &nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br> -->
+</p>
+
+<!--
+<p>
+Note that <tt>Function Definitions</tt> are copied to the header files
+without changes and have to be terminated with a semicolon. In
+contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and
+<tt>Typedefs</tt> should not be terminated with a semicolon.
+</p>
+-->
+
+<p>
+Take a look at one of the files in <tt>auto/core</tt> for an
+example. Note that typedefs and function signatures should not be
+terminated with a semicolon.
+</p>
+
+<h3>Custom Code Generation</h3>
+<p>
+Starting from GLEW 1.3.0, it is possible to control which extensions
+to include in the library by specifying a list in
+<tt>auto/custom.txt</tt>. This is useful when you do not need all the
+extensions and would like to reduce the size of the source files.
+Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory
+to rerun the scripts with the custom list of extensions.
+</p>
+
+<p>
+For example, the following is the list of extensions needed to get GLEW and the
+utilities to compile.
+</p>
+
+<p class="pre">
+WGL_ARB_extensions_string<br>
+WGL_ARB_multisample<br>
+WGL_ARB_pixel_format<br>
+WGL_ARB_pbuffer<br>
+WGL_EXT_extensions_string<br>
+WGL_ATI_pixel_format_float<br>
+WGL_NV_float_buffer<br>
+</p>
+
+<h2>Separate Namespace</h2>
+
+<p>
+To avoid name clashes when linking with libraries that include the
+same symbols, extension entry points are declared in a separate
+namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL
+function names to their GLEW equivalents. For instance,
+<tt>glFancyFunction</tt> is simply an alias to
+<tt>glewFancyFunction</tt>. The separate namespace does not effect
+token and function pointer definitions.
+</p>
+
+<h2>Known Issues</h2>
+
+<p>
+GLEW requires GLX 1.2 for compatibility with GLUT.
+</p>
+
diff --git a/glew/auto/doc/basic.html b/glew/auto/doc/basic.html
new file mode 100644
index 0000000..693575b
--- /dev/null
+++ b/glew/auto/doc/basic.html
@@ -0,0 +1,180 @@
+<h2>Initializing GLEW</h2>
+<p>
+First you need to create a valid OpenGL rendering context and call
+<tt>glewInit()</tt> to initialize the extension entry points. If
+<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
+succeeded and you can use the available extensions as well as core
+OpenGL functionality. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+...<br>
+glutInit(&amp;argc, argv);<br>
+glutCreateWindow("GLEW Test");<br>
+GLenum err = glewInit();<br>
+if (GLEW_OK != err)<br>
+{<br>
+&nbsp;&nbsp;/* Problem: glewInit failed, something is seriously wrong. */<br>
+&nbsp;&nbsp;fprintf(stderr, "Error: %s\n", glewGetErrorString(err));<br>
+&nbsp;&nbsp;...<br>
+}<br>
+fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));<br>
+</p>
+
+<h2>Checking for Extensions</h2>
+
+<p>
+Starting from GLEW 1.1.0, you can find out if a particular extension
+is available on your platform by querying globally defined variables
+of the form <tt>GLEW_{extension_name}</tt>:
+</p>
+
+<p class="pre">
+if (GLEW_ARB_vertex_program)<br>
+{<br>
+&nbsp;&nbsp;/* It is safe to use the ARB_vertex_program extension here. */<br>
+&nbsp;&nbsp;glGenProgramsARB(...);<br>
+}<br>
+</p>
+
+<p>
+<b>In GLEW 1.0.x, a global structure was used for this task. To ensure
+binary compatibility between releases, the struct was replaced with a
+set of variables.</b>
+</p>
+
+<p>
+You can also check for core OpenGL functionality. For example, to
+see if OpenGL 1.3 is supported, do the following:
+</p>
+
+<p class="pre">
+if (GLEW_VERSION_1_3)<br>
+{<br>
+&nbsp;&nbsp;/* Yay! OpenGL 1.3 is supported! */<br>
+}<br>
+</p>
+
+<p>
+In general, you can check if <tt>GLEW_{extension_name}</tt> or
+<tt>GLEW_VERSION_{version}</tt> is true or false.
+</p>
+
+<p>
+It is also possible to perform extension checks from string
+input. Starting from the 1.3.0 release, use <tt>glewIsSupported</tt>
+to check if the required core or extension functionality is
+available:
+</p>
+
+<p class="pre">
+if (glewIsSupported("GL_VERSION_1_4&nbsp;&nbsp;GL_ARB_point_sprite"))<br>
+{<br>
+&nbsp;&nbsp;/* Great, we have OpenGL 1.4 + point sprites. */<br>
+}<br>
+</p>
+
+<p>
+For extensions only, <tt>glewGetExtension</tt> provides a slower alternative
+(GLEW 1.0.x-1.2.x). <b>Note that in the 1.3.0 release </b>
+<tt>glewGetExtension</tt> <b>was replaced with </b>
+<tt>glewIsSupported</tt>.
+</p>
+
+<p class="pre">
+if (glewGetExtension("GL_ARB_fragment_program"))<br>
+{<br>
+&nbsp;&nbsp;/* Looks like ARB_fragment_program is supported. */<br>
+}<br>
+</p>
+
+<h2>Experimental Drivers</h2>
+
+<p>
+GLEW obtains information on the supported extensions from the graphics
+driver. Experimental or pre-release drivers, however, might not
+report every available extension through the standard mechanism, in
+which case GLEW will report it unsupported. To circumvent this
+situation, the <tt>glewExperimental</tt> global switch can be turned
+on by setting it to <tt>GL_TRUE</tt> before calling
+<tt>glewInit()</tt>, which ensures that all extensions with valid
+entry points will be exposed.
+</p>
+
+<h2>Platform Specific Extensions</h2>
+
+<p>
+Platform specific extensions are separated into two header files:
+<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
+<tt>WGL</tt> and <tt>GLX</tt> extensions. To determine if a certain
+extension is supported, query <tt>WGLEW_{extension name}</tt> or
+<tt>GLXEW_{extension_name}</tt>. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/wglew.h&gt;<br>
+<br>
+if (WGLEW_ARB_pbuffer)<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+else<br>
+{<br>
+&nbsp;&nbsp;/* Sorry, pbuffers will not work on this platform. */<br>
+}<br>
+</p>
+
+<p>
+Alternatively, use <tt>wglewIsSupported</tt> or
+<tt>glxewIsSupported</tt> to check for extensions from a string:
+</p>
+
+<p class="pre">
+if (wglewIsSupported("WGL_ARB_pbuffer"))<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+</p>
+
+<h2>Utilities</h2>
+
+<p>
+GLEW provides two command-line utilities: one for creating a list of
+available extensions and visuals; and another for verifying extension
+entry points.
+</p>
+
+<h3>visualinfo: extensions and visuals</h3>
+
+<p>
+<tt>visualinfo</tt> is an extended version of <tt>glxinfo</tt>. The
+Windows version creates a file called <tt>visualinfo.txt</tt>, which
+contains a list of available OpenGL, WGL, and GLU extensions as well
+as a table of visuals aka. pixel formats. Pbuffer and MRT capable
+visuals are also included. For additional usage information, type
+<tt>visualinfo -h</tt>.
+</p>
+
+<h3>glewinfo: extension verification utility</h3>
+
+<p>
+<tt>glewinfo</tt> allows you to verify the entry points for the
+extensions supported on your platform. The Windows version
+reports the results to a text file called <tt>glewinfo.txt</tt>. The
+Unix version prints the results to <tt>stdout</tt>.
+</p>
+
+<p>Windows usage:</p>
+ <blockquote><pre>glewinfo [-pf &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;id&gt;</tt> is the pixel format id for which the
+capabilities are displayed.</p>
+
+<p>Unix usage:</p>
+<blockquote><pre>glewinfo [-display &lt;dpy&gt;] [-visual &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;dpy&gt;</tt> is the X11 display and <tt>&lt;id&gt;</tt> is
+the visual id for which the capabilities are displayed.</p>
+
diff --git a/glew/auto/doc/build.html b/glew/auto/doc/build.html
new file mode 100644
index 0000000..467a7f3
--- /dev/null
+++ b/glew/auto/doc/build.html
@@ -0,0 +1,49 @@
+<h2>Building GLEW</h2>
+
+<h3>Windows</h3>
+
+<p>A MS Visual Studio project is provided in the <tt>build/vc6</tt> directory.</p>
+<p>Pre-built shared and static libraries are also available for <a href="index.html">download</a>.</p>
+
+<h3>Makefile</h3>
+
+<p>For platforms other than MS Windows, the provided <tt>Makefile</tt> is used.</p>
+
+<h4>Command-line variables</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>SYSTEM</tt></td><td valign=top>auto</td>
+<td align=left>Target system to build: darwin, linux, solaris, etc.<br/>For a full list of supported targets: <tt>ls config/Makefile.*</tt><br/>
+<a href="http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree">config.guess</a> is used to auto detect, as necessary.</td></tr>
+<tr><td valign=top><tt>GLEW_DEST</tt></td><td valign=top><tt>/usr</tt></td>
+<td align=left>Base directory for installation.</td></tr>
+</table>
+
+<h4>Make targets</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>all</tt></td><td>Build everything.</td><tr>
+<tr><td valign=top><tt>glew.lib</tt></td><td>Build static and dynamic GLEW libraries.</td><tr>
+<tr><td valign=top><tt>glew.lib.mx</tt></td><td>Build static and dynamic GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>glew.bin</tt></td><td>Build <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>clean</tt></td><td>Delete temporary and built files.</td><tr>
+<tr><td valign=top><tt>install.all</tt></td><td>Install everything.</td><tr>
+<tr><td valign=top><tt>install</tt></td><td>Install GLEW libraries.</td><tr>
+<tr><td valign=top><tt>install.mx</tt></td><td>Install GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>install.bin</tt></td><td>Install <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>uninstall</tt></td><td>Delete installed files.</td><tr>
+</table>
+
+<h4>Requirements</h4>
+
+<ul>
+<li>GNU make</li>
+<li>perl</li>
+<li>wget</li>
+<li>GNU sed</li>
+<li>gcc compiler</li>
+<li>git</li>
+</ul>
+
+Ubuntu: <pre>sudo apt-get install libXmu-dev libXi-dev libgl-dev dos2unix git wget</pre>
+Fedora: <pre>sudo yum install libXmu-devel libXi-devel libGL-devel dos2unix git wget</pre>
diff --git a/glew/auto/doc/credits.html b/glew/auto/doc/credits.html
new file mode 100644
index 0000000..6c36de0
--- /dev/null
+++ b/glew/auto/doc/credits.html
@@ -0,0 +1,2 @@
+<p><a href="https://github.com/nigels-com/glew#copyright-and-licensing">
+Author, copyright and licensing information</a> on github.</p>
diff --git a/glew/auto/doc/index.html b/glew/auto/doc/index.html
new file mode 100644
index 0000000..e569e75
--- /dev/null
+++ b/glew/auto/doc/index.html
@@ -0,0 +1,113 @@
+<p>
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform
+open-source C/C++ extension loading library. GLEW provides efficient
+run-time mechanisms for determining which OpenGL extensions are
+supported on the target platform. OpenGL core and extension
+functionality is exposed in a single header file. GLEW has been
+tested on a variety of operating systems, including Windows, Linux,
+Mac OS X, FreeBSD, Irix, and Solaris.
+</p>
+
+<h2>Downloads</h2>
+<p>
+<a href="http://sourceforge.net/projects/glew/">GLEW</a> is distributed
+as source and precompiled binaries.<br/>
+The latest release is
+<a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a>[03-15-20]:
+</p>
+<p>
+</p>
+<p>
+<table border="1" cellpadding="5" cellspacing="0" bgcolor="#f0f0f0" align="center">
+<tr>
+<td>
+<table border="0" cellpadding="3" cellspacing="0">
+<tr>
+<td></td>
+<td align="right"><b>Source</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip">ZIP</a>&nbsp;|&nbsp;
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz">TGZ</a></td>
+<td></td>
+</tr>
+<tr>
+<td></td>
+<td align="right"><b>Binaries</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip">Windows 32-bit and 64-bit</a>
+</td>
+<td></td>
+</tr>
+</table>
+</tr>
+</table>
+
+<p></p>
+<p>
+An up-to-date copy is also available using <a href="http://git-scm.com/">git</a>:
+</p>
+<ul>
+<li><a href="https://github.com/nigels-com/glew">github</a><br/>
+<tt>git clone https://github.com/nigels-com/glew.git glew</tt><br/>&nbsp;</li>
+</ul>
+
+<h2>Supported Extensions</h2>
+<p>
+The latest release contains support for OpenGL 4.6, compatibility and forward-compatible contexts and the following extensions:
+</p>
+<ul>
+<li><a href="glew.html">OpenGL extensions</a>
+<li><a href="wglew.html">WGL extensions</a>
+<li><a href="glxew.html">GLX extensions</a>
+</ul>
+
+<h2>News</h2>
+<ul>
+<li>[03-15-20] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">GLEW 2.2.0</a> new extensions and minor bug fixes</li>
+<li>[07-31-17] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.1.0">GLEW 2.1.0</a> adds support for OpenGL 4.6, new extensions and minor bug fixes</li>
+<li>[07-24-16] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.0.0">GLEW 2.0.0</a> adds support for forward-compatible contexts, adds new extensions, OSMesa and EGL support, MX discontinued and minor bug fixes</li>
+<li>[08-10-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.13.0/">GLEW 1.13.0</a> adds support for new extensions, fixes minor bugs</li>
+<li>[26-01-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.12.0/">GLEW 1.12.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-11-14] <a href="https://sourceforge.net/projects/glew/files/glew/1.11.0/">GLEW 1.11.0</a> adds support for OpenGL 4.5, new extensions</li>
+<li>[07-22-13] <a href="https://sourceforge.net/projects/glew/files/glew/1.10.0/">GLEW 1.10.0</a> adds support for OpenGL 4.4, new extensions</li>
+<li>[08-06-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.9.0/">GLEW 1.9.0</a> adds support for OpenGL 4.3, new extensions</li>
+<li>[07-17-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.8.0/">GLEW 1.8.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-26-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.7.0/">GLEW 1.7.0</a> adds support for OpenGL 4.2, new extensions, fixes bugs</li>
+<li>[04-27-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.6.0/">GLEW 1.6.0</a> fixes minor bugs and adds eight new extensions</li>
+<li>[01-31-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.8/">GLEW 1.5.8</a> fixes minor bugs and adds two new extensions</li>
+<li>[11-03-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.7/">GLEW 1.5.7</a> fixes minor bugs and adds one new extension</li>
+<li>[09-07-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.6/">GLEW 1.5.6</a> adds support for OpenGL 4.1, fixes bugs</li>
+<li>[07-13-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.5/">GLEW 1.5.5</a> fixes minor bugs and adds new extensions</li>
+<li>[04-21-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.4/">GLEW 1.5.4</a> adds support for OpenGL 3.3, OpenGL 4.0 and new extensions, fixes bugs</li>
+<li>[02-28-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.3/">GLEW 1.5.3</a> fixes minor bugs and adds three new extensions</li>
+<li>[12-31-09] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.2/">GLEW 1.5.2</a> adds support for OpenGL 3.1, OpenGL 3.2 and new extensions</li>
+<li>[11-03-08] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=637800">GLEW 1.5.1</a> adds support for OpenGL 3.0 and 31 new extensions</li>
+<li>[12-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=564464">GLEW 1.5.0</a> is released under less restrictive licenses</li>
+<li>[04-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=504079">GLEW 1.4.0</a> is released</li>
+<li>[03-08-07] GLEW is included in the <a href="http://developer.nvidia.com/object/sdk_home.html">NVIDIA OpenGL SDK</a></li>
+<li>[03-04-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=491113">GLEW 1.3.6</a> is released</li>
+<li>[02-28-07] <a href="http://glew.svn.sourceforge.net/svnroot/glew/trunk/glew/">Repository</a> is migrated to SVN</li>
+<li>[02-25-07] GLEW is included in the <a href="http://www.opengl.org/sdk/">OpenGL SDK</a></li>
+<li>[11-21-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=465334">GLEW 1.3.5</a> adds OpenGL 2.1 and NVIDIA G80 extensions</li>
+<li>[03-04-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=398455">GLEW 1.3.4</a> adds support for five new extensions</li>
+<li>[05-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=327647">GLEW 1.3.3</a> is released</li>
+<li>[03-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=313345">GLEW 1.3.2</a> adds support for GL_APPLE_pixel_buffer</li>
+<li>[02-11-05] <a href="http://gljava.sourceforge.net/">gljava</a> and <a href="http://sdljava.sourceforge.net/">sdljava</a> provide a Java binding to OpenGL via GLEW</li>
+<li>[02-02-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=302049">GLEW 1.3.1</a> adds support for <a href="http://www.opengl.org/documentation/extensions/EXT_framebuffer_object.txt">GL_EXT_framebuffer_object</a></li>
+<li>[01-04-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=294527">GLEW 1.3.0</a> adds core OpenGL 2.0 support plus many enhancements</li>
+<li>[12-22-04] <a href="http://glewpy.sf.net/">GLEWpy</a> Python wrapper announced</li>
+<li>[12-12-04] <a href="https://sourceforge.net/mail/?group_id=67586">Mailing lists</a> created on sourceforge</li>
+<li>[12-06-04] <a href="http://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=287948">GLEW 1.2.5</a> adds new extensions and support for FreeBSD</li>
+</ul>
+
+<h2>Links</h2>
+<ul>
+<li><a href="http://www.opengl.org/sdk/">OpenGL Software Development Kit</a></li>
+<li><a href="http://www.opengl.org/registry/">OpenGL Extension Registry</a></li>
+<li><a href="https://www.opengl.org/wiki/OpenGL_Extension">OpenGL Wiki: Extensions</a></li>
+<li><a href="http://developer.nvidia.com/nvidia-opengl-specs">NVIDIA OpenGL Extension Specifications</a></li>
+<li><a href="http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGLExtensionsGuide/Reference/reference.html">Apple OpenGL Extensions Guide</a></li>
+</ul>
+
diff --git a/glew/auto/doc/install.html b/glew/auto/doc/install.html
new file mode 100644
index 0000000..448aafd
--- /dev/null
+++ b/glew/auto/doc/install.html
@@ -0,0 +1,126 @@
+<h2>Installation</h2>
+
+<p>
+To use the shared library version of GLEW, you need to copy the
+headers and libraries into their destination directories. On Windows
+this typically boils down to copying:
+</p>
+
+<table border="0" cellpadding="0" cellspacing="0" align="center"> <!-- bgcolor="#f0f0f0" -->
+<tr><td align="left"><tt>bin/glew32.dll</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>%SystemRoot%/system32</tt></td></tr>
+<tr><td align="left"><tt>lib/glew32.lib</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Lib</tt></td></tr>
+<tr><td align="left"><tt>include/GL/glew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+<tr><td align="left"><tt>include/GL/wglew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+</table>
+<p>
+</p>
+
+<p>
+where <tt>{VC Root}</tt> is the Visual C++ root directory, typically
+<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
+Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
+Studio .NET 2003/Vc7/PlatformSDK</tt> for Visual Studio .NET.
+</p>
+
+<p>
+On Unix, typing <tt>make install</tt> will attempt to install GLEW
+into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>. You can
+customize the installation target via the <tt>GLEW_DEST</tt>
+environment variable if you do not have write access to these
+directories.
+</p>
+
+<h2>Building Your Project with GLEW</h2>
+<p>
+There are two ways to build your project with GLEW.
+</p>
+<h3>Including the source files / project file</h3>
+<p>
+The simpler but less flexible way is to include <tt>glew.h</tt> and
+<tt>glew.c</tt> into your project. On Windows, you also need to
+define the <tt>GLEW_STATIC</tt> preprocessor token when building a
+static library or executable, and the <tt>GLEW_BUILD</tt> preprocessor
+token when building a dll. You also need to replace
+<tt>&lt;GL/gl.h&gt;</tt> and <tt>&lt;GL/glu.h&gt;</tt> with
+<tt>&lt;glew.h&gt;</tt> in your code and set the appropriate include
+flag (<tt>-I</tt>) to tell the compiler where to look for it. For
+example:
+</p>
+<p class="pre">
+#include &lt;glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+<p>
+Depending on where you put <tt>glew.h</tt> you may also need to change
+the include directives in <tt>glew.c</tt>. Note that if you are using
+GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
+In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you do not
+need to include it separately.
+</p>
+<p>
+On Windows, you also have the option of adding the supplied project
+file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
+it together with your other projects. In this case you also need to
+change the <tt>GLEW_BUILD</tt> preprocessor constant to
+<tt>GLEW_STATIC</tt> when building a static library or executable,
+otherwise you get build errors.
+</p>
+<p>
+<b>Note that GLEW does not use the C
+runtime library, so it does not matter which version (single-threaded,
+multi-threaded or multi-threaded DLL) it is linked with (without
+debugging information). It is, however, always a good idea to compile all
+your projects including GLEW with the same C runtime settings.</b>
+</p>
+
+<h3>Using GLEW as a shared library</h3>
+
+<p>
+Alternatively, you can use the provided project files / makefile to
+build a separate shared library you can link your projects with later.
+In this case the best practice is to install <tt>glew.h</tt>,
+<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
+where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
+<tt>opengl32.dll</tt> / <tt>libGL.so</tt> are located. Note that you
+need administrative privileges to do this. If you do not have
+administrator access and your system administrator will not do it for
+you, you can install GLEW into your own lib and include subdirectories
+and tell the compiler where to find it. Then you can just replace
+<tt>&lt;GL/gl.h&gt;</tt> with <tt>&lt;GL/glew.h&gt;</tt> in your
+program:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+
+<p>
+or:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+&lt;gl and glu functionality is available here&gt;<br>
+</p>
+
+<p>
+Remember to link your project with <tt>glew32.lib</tt>,
+<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
+<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
+Unix (<tt>-lGLEW -lGLU -lGL</tt>).
+</p>
+
+<p>
+It is important to keep in mind that <tt>glew.h</tt> includes neither
+<tt>windows.h</tt> nor <tt>gl.h</tt>. Also, GLEW will warn you by
+issuing a preprocessor error in case you have included <tt>gl.h</tt>,
+<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
+</p>
+
diff --git a/glew/auto/doc/log.html b/glew/auto/doc/log.html
new file mode 100644
index 0000000..531b3b2
--- /dev/null
+++ b/glew/auto/doc/log.html
@@ -0,0 +1,1319 @@
+<h2>Change Log</h2>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.2.0</b> [03-15-20]
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> GL_EXT_semaphore constants
+<li> Some const pointer fixups in OpenGL API
+<li> Correction for GLEW_VERSION_4_5
+<li> Windows build updates and fixes
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_framebuffer_multisample_advanced
+<li> GL_AMD_gpu_shader_half_float_fetch
+<li> GL_AMD_shader_image_load_store_lod
+<li> GL_ARM_texture_unnormalized_coordinates
+<li> GL_DMP_program_binary
+<li> GL_DMP_shader_binary
+<li> GL_EXT_EGL_image_external_wrap_modes
+<li> GL_EXT_EGL_image_storage
+<li> GL_EXT_EGL_sync
+<li> GL_EXT_clip_control
+<li> GL_EXT_depth_clamp
+<li> GL_EXT_disjoint_timer_query
+<li> GL_EXT_draw_transform_feedback
+<li> GL_EXT_multiview_tessellation_geometry_shader
+<li> GL_EXT_multiview_texture_multisample
+<li> GL_EXT_multiview_timer_query
+<li> GL_EXT_occlusion_query_boolean
+<li> GL_EXT_primitive_bounding_box
+<li> GL_EXT_protected_textures
+<li> GL_EXT_robustness
+<li> GL_EXT_shader_framebuffer_fetch_non_coherent
+<li> GL_EXT_static_vertex_array
+<li> GL_EXT_tessellation_point_size
+<li> GL_EXT_tessellation_shader
+<li> GL_EXT_texture_border_clamp
+<li> GL_EXT_texture_buffer
+<li> GL_EXT_texture_compression_s3tc_srgb
+<li> GL_EXT_texture_format_sRGB_override
+<li> GL_EXT_texture_mirror_clamp_to_edge
+<li> GL_EXT_texture_query_lod
+<li> GL_EXT_texture_shadow_lod
+<li> GL_FJ_shader_binary_GCCSO
+<li> GL_IMG_bindless_texture
+<li> GL_IMG_framebuffer_downsample
+<li> GL_IMG_multisampled_render_to_texture
+<li> GL_IMG_program_binary
+<li> GL_IMG_read_format
+<li> GL_IMG_shader_binary
+<li> GL_IMG_texture_compression_pvrtc
+<li> GL_IMG_texture_compression_pvrtc2
+<li> GL_IMG_texture_env_enhanced_fixed_function
+<li> GL_IMG_texture_filter_cubic
+<li> GL_INTEL_blackhole_render
+<li> GL_INTEL_shader_integer_functions2
+<li> GL_KHR_shader_subgroup
+<li> GL_MESA_framebuffer_flip_y
+<li> GL_MESA_program_binary_formats
+<li> GL_MESA_tile_raster_order
+<li> GL_NVX_gpu_multicast2
+<li> GL_NVX_progress_fence
+<li> GL_NV_compute_shader_derivatives
+<li> GL_NV_conservative_raster_pre_snap
+<li> GL_NV_conservative_raster_underestimation
+<li> GL_NV_depth_nonlinear
+<li> GL_NV_fragment_shader_barycentric
+<li> GL_NV_memory_attachment
+<li> GL_NV_mesh_shader
+<li> GL_NV_query_resource_tag
+<li> GL_NV_read_buffer
+<li> GL_NV_read_buffer_front
+<li> GL_NV_representative_fragment_test
+<li> GL_NV_scissor_exclusive
+<li> GL_NV_shader_subgroup_partitioned
+<li> GL_NV_shader_texture_footprint
+<li> GL_NV_shading_rate_image
+<li> GL_NV_vdpau_interop2
+<li> GL_OES_EGL_image
+<li> GL_OES_EGL_image_external
+<li> GL_OES_EGL_image_external_essl3
+<li> GL_OES_blend_equation_separate
+<li> GL_OES_blend_func_separate
+<li> GL_OES_blend_subtract
+<li> GL_OES_compressed_ETC1_RGB8_texture
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_copy_image
+<li> GL_OES_depth24
+<li> GL_OES_depth32
+<li> GL_OES_depth_texture
+<li> GL_OES_depth_texture_cube_map
+<li> GL_OES_draw_buffers_indexed
+<li> GL_OES_draw_texture
+<li> GL_OES_element_index_uint
+<li> GL_OES_extended_matrix_palette
+<li> GL_OES_fbo_render_mipmap
+<li> GL_OES_fragment_precision_high
+<li> GL_OES_framebuffer_object
+<li> GL_OES_geometry_point_size
+<li> GL_OES_geometry_shader
+<li> GL_OES_get_program_binary
+<li> GL_OES_gpu_shader5
+<li> GL_OES_mapbuffer
+<li> GL_OES_matrix_get
+<li> GL_OES_matrix_palette
+<li> GL_OES_packed_depth_stencil
+<li> GL_OES_point_size_array
+<li> GL_OES_point_sprite
+<li> GL_OES_read_format
+<li> GL_OES_required_internalformat
+<li> GL_OES_rgb8_rgba8
+<li> GL_OES_sample_shading
+<li> GL_OES_sample_variables
+<li> GL_OES_shader_image_atomic
+<li> GL_OES_shader_io_blocks
+<li> GL_OES_shader_multisample_interpolation
+<li> GL_OES_single_precision
+<li> GL_OES_standard_derivatives
+<li> GL_OES_stencil1
+<li> GL_OES_stencil4
+<li> GL_OES_stencil8
+<li> GL_OES_surfaceless_context
+<li> GL_OES_tessellation_point_size
+<li> GL_OES_tessellation_shader
+<li> GL_OES_texture_3D
+<li> GL_OES_texture_border_clamp
+<li> GL_OES_texture_buffer
+<li> GL_OES_texture_compression_astc
+<li> GL_OES_texture_cube_map
+<li> GL_OES_texture_cube_map_array
+<li> GL_OES_texture_env_crossbar
+<li> GL_OES_texture_mirrored_repeat
+<li> GL_OES_texture_npot
+<li> GL_OES_texture_stencil8
+<li> GL_OES_texture_storage_multisample_2d_array
+<li> GL_OES_texture_view
+<li> GL_OES_vertex_array_object
+<li> GL_OES_vertex_half_float
+<li> GL_OES_vertex_type_10_10_10_2
+<li> GL_QCOM_YUV_texture_gather
+<li> GL_QCOM_shader_framebuffer_fetch_rate
+<li> GL_QCOM_texture_foveated
+<li> GL_QCOM_texture_foveated_subsampled_layout
+<li> GL_VIV_shader_binary
+<li> EGL_ANDROID_GLES_layers
+<li> EGL_ANDROID_get_frame_timestamps
+<li> EGL_ANDROID_get_native_client_buffer
+<li> EGL_ARM_image_format
+<li> EGL_EXT_bind_to_front
+<li> EGL_EXT_client_sync
+<li> EGL_EXT_compositor
+<li> EGL_EXT_gl_colorspace_display_p3
+<li> EGL_EXT_gl_colorspace_display_p3_linear
+<li> EGL_EXT_gl_colorspace_display_p3_passthrough
+<li> EGL_EXT_gl_colorspace_scrgb
+<li> EGL_EXT_image_gl_colorspace
+<li> EGL_EXT_image_implicit_sync_control
+<li> EGL_EXT_surface_CTA861_3_metadata
+<li> EGL_EXT_sync_reuse
+<li> EGL_KHR_display_reference
+<li> EGL_MESA_query_driver
+<li> EGL_NV_context_priority_realtime
+<li> EGL_NV_quadruple_buffer
+<li> EGL_NV_stream_dma
+<li> EGL_NV_stream_flush
+<li> EGL_NV_stream_origin
+<li> EGL_NV_triple_buffer
+<li> EGL_WL_bind_wayland_display
+<li> EGL_WL_create_wayland_buffer_from_image
+<li> GLX_EXT_context_priority
+<li> GLX_EXT_no_config_context
+<li> GLX_NV_multigpu_context
+<li> WGL_NV_multigpu_context
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.1.0</b> [07-31-17]
+<ul>
+<li> Enhancements:
+<ul>
+<li> OpenGL 4.6 support added
+<li> Improved Mac OSX build support
+<li> Improved cmake build support
+</ul>
+</ul>
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> Resolved crash when glXGetCurrentDisplay() is NULL
+<li> CMake: only install PDB files with MSVC
+<li> wglGetProcAddress crash with NOGDI defined
+<li> Mac: using -Os rather than -O2
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gpu_shader_half_float
+<li> GL_AMD_shader_ballot
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_KHR_context_flush_control
+<li> GL_INTEL_conservative_rasterization
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NV_gpu_multicast
+<li> EGL_ARM_implicit_external_sync
+<li> EGL_EXT_gl_colorspace_bt2020_linear
+<li> EGL_EXT_gl_colorspace_bt2020_pq
+<li> EGL_EXT_gl_colorspace_scrgb_linear
+<li> EGL_EXT_image_dma_buf_import_modifiers
+<li> EGL_EXT_pixel_format_float
+<li> EGL_EXT_surface_SMPTE2086_metadata
+<li> EGL_KHR_context_flush_control
+<li> EGL_KHR_no_config_context
+<li> EGL_KHR_stream_attrib
+<li> EGL_MESA_platform_surfaceless
+<li> EGL_NV_stream_cross_display
+<li> EGL_NV_stream_cross_object
+<li> EGL_NV_stream_cross_partition
+<li> EGL_NV_stream_cross_process
+<li> EGL_NV_stream_cross_system
+<li> EGL_NV_stream_fifo_next
+<li> EGL_NV_stream_fifo_synchronous
+<li> EGL_NV_stream_frame_limits
+<li> EGL_NV_stream_remote
+<li> EGL_NV_stream_reset
+<li> EGL_NV_stream_socket
+<li> EGL_NV_stream_socket_inet
+<li> EGL_NV_stream_socket_unix
+<li> WGL_EXT_colorspace
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.0.0</b> [07-24-16]
+<ul>
+<li> Enhancements:
+<ul>
+<li> Forward context support added
+<li> OSMesa support added
+<li> EGL support added
+<li> MX support discontinued
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_shader_explicit_vertex_parameter
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_NV_robustness_video_memory_purge
+<li> GL_EXT_window_rectangles
+<li> GL_INTEL_conservative_rasterization
+<li> GL_KHR_texture_compression_astc_sliced_3d
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NVX_linked_gpu_multicast
+<li> GL_NV_clip_space_w_scaling
+<li> GL_NV_command_list
+<li> GL_NV_conservative_raster_pre_snap_triangles
+<li> GL_NV_draw_vulkan_image
+<li> GL_NV_gpu_multicast
+<li> GL_NV_robustness_video_memory_purge
+<li> GL_NV_shader_atomic_float64
+<li> GL_NV_stereo_view_rendering
+<li> GL_NV_viewport_swizzle
+<li> GLX_EXT_libglvnd
+<li> GLX_NV_robustness_video_memory_purge
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.13.0</b> [08-10-15]
+<ul>
+<li> Enhancements:
+<ul>
+<li> glxewInit, wglewInit
+<li> glewinfo adds support for -version, -profile core|compatibility and -flag debug|forward parameters
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_2_compatibility
+<li> GL_ARB_fragment_shader_interlock
+<li> GL_ARB_gpu_shader_int64
+<li> GL_ARB_parallel_shader_compile
+<li> GL_ARB_post_depth_coverage
+<li> GL_ARB_sample_locations
+<li> GL_ARB_shader_atomic_counter_ops
+<li> GL_ARB_shader_ballot
+<li> GL_ARB_shader_clock
+<li> GL_ARB_shader_viewport_layer_array
+<li> GL_ARB_sparse_texture2
+<li> GL_ARB_sparse_texture_clamp
+<li> GL_ARB_texture_filter_minmax
+<li> GL_INTEL_framebuffer_CMAA
+<li> GL_KHR_no_error
+<li> GL_NV_conservative_raster_dilate
+<li> GL_OVR_multiview
+<li> GL_OVR_multiview2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.13.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.12.0</b> [01-26-15]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_polygon_offset_clamp
+<li> GL_EXT_post_depth_coverage
+<li> GL_EXT_raster_multisample
+<li> GL_EXT_sparse_texture2
+<li> GL_EXT_texture_filter_minmax
+<li> GL_NV_conservative_raster
+<li> GL_NV_fill_rectangle
+<li> GL_NV_fragment_coverage_to_color
+<li> GL_NV_fragment_shader_interlock
+<li> GL_NV_framebuffer_mixed_samples
+<li> GL_NV_geometry_shader_passthrough
+<li> GL_NV_internalformat_sample_query
+<li> GL_NV_sample_locations
+<li> GL_NV_sample_mask_override_coverage
+<li> GL_NV_shader_atomic_fp16_vector
+<li> GL_NV_uniform_buffer_unified_memory
+<li> GL_NV_viewport_array2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.12.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.11.0</b> [08-11-14]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.5
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gcn_shader
+<li> GL_AMD_gpu_shader_int64
+<li> GL_AMD_occlusion_query_event
+<li> GL_AMD_shader_atomic_counter_ops
+<li> GL_AMD_shader_stencil_value_export
+<li> GL_AMD_transform_feedback4
+<li> GL_ARB_ES3_1_compatibility
+<li> GL_ARB_clip_control
+<li> GL_ARB_conditional_render_inverted
+<li> GL_ARB_cull_distance
+<li> GL_ARB_derivative_control
+<li> GL_ARB_direct_state_access
+<li> GL_ARB_get_texture_sub_image
+<li> GL_ARB_pipeline_statistics_query
+<li> GL_ARB_shader_texture_image_samples
+<li> GL_ARB_sparse_buffer
+<li> GL_ARB_texture_barrier
+<li> GL_ARB_transform_feedback_overflow_query
+<li> GL_EXT_debug_label
+<li> GL_EXT_shader_image_load_formatted
+<li> GL_EXT_shader_integer_mix
+<li> GL_INTEL_fragment_shader_ordering
+<li> GL_INTEL_performance_query
+<li> GL_KHR_blend_equation_advanced
+<li> GL_KHR_blend_equation_advanced_coherent
+<li> GL_KHR_context_flush_control
+<li> GL_KHR_robust_buffer_access_behavior
+<li> GL_KHR_robustness
+<li> GL_KHR_texture_compression_astc_hdr
+<li> GL_NV_bindless_multi_draw_indirect_count
+<li> GL_NV_shader_atomic_int64
+<li> GL_NV_shader_thread_group
+<li> GL_NV_shader_thread_shuffle
+<li> GL_REGAL_proc_address
+<li> GLX_ARB_context_flush_control
+<li> GLX_EXT_stereo_tree
+<li> GLX_MESA_query_renderer
+<li> GLX_NV_copy_buffer
+<li> GLX_NV_delay_before_swap
+<li> WGL_ARB_context_flush_control
+<li> WGL_NV_delay_before_swap
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.11.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.10.0</b> [07-22-13]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.4
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_interleaved_elements
+<li> GL_AMD_shader_trinary_minmax
+<li> GL_AMD_sparse_texture
+<li> GL_ANGLE_depth_texture
+<li> GL_ANGLE_framebuffer_blit
+<li> GL_ANGLE_framebuffer_multisample
+<li> GL_ANGLE_instanced_arrays
+<li> GL_ANGLE_pack_reverse_row_order
+<li> GL_ANGLE_program_binary
+<li> GL_ANGLE_texture_compression_dxt1
+<li> GL_ANGLE_texture_compression_dxt3
+<li> GL_ANGLE_texture_compression_dxt5
+<li> GL_ANGLE_texture_usage
+<li> GL_ANGLE_timer_query
+<li> GL_ANGLE_translated_shader_source
+<li> GL_ARB_bindless_texture
+<li> GL_ARB_buffer_storage
+<li> GL_ARB_clear_texture
+<li> GL_ARB_compute_variable_group_size
+<li> GL_ARB_enhanced_layouts
+<li> GL_ARB_indirect_parameters
+<li> GL_ARB_multi_bind
+<li> GL_ARB_query_buffer_object
+<li> GL_ARB_seamless_cubemap_per_texture
+<li> GL_ARB_shader_draw_parameters
+<li> GL_ARB_shader_group_vote
+<li> GL_ARB_sparse_texture
+<li> GL_ARB_texture_mirror_clamp_to_edge
+<li> GL_ARB_texture_stencil8
+<li> GL_ARB_vertex_type_10f_11f_11f_rev
+<li> GL_INTEL_map_texture
+<li> GL_NVX_conditional_render
+<li> GL_NV_bindless_multi_draw_indirect
+<li> GL_NV_blend_equation_advanced
+<li> GL_NV_compute_program5
+<li> GL_NV_deep_texture3D
+<li> GL_NV_draw_texture
+<li> GL_NV_shader_atomic_counters
+<li> GL_NV_shader_storage_buffer_object
+<li> GL_REGAL_ES1_0_compatibility
+<li> GL_REGAL_ES1_1_compatibility
+<li> GL_REGAL_enable
+<li> GLX_EXT_buffer_age
+<li> WGL_ARB_robustness_application_isolation
+<li> WGL_ARB_robustness_share_group_isolation
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.10.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.9.0</b> [08-06-12]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.3 -
+ <a href="http://www.opengl.org/registry/doc/glspec43.compatibility.20120806.pdf">specification</a>,
+ <a href="http://www.khronos.org/assets/uploads/developers/library/overview/opengl_overview.pdf">overview</a>.
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_compatibility
+<li> GL_ARB_clear_buffer_object
+<li> GL_ARB_compute_shader
+<li> GL_ARB_copy_image
+<li> GL_ARB_explicit_uniform_location
+<li> GL_ARB_fragment_layer_viewport
+<li> GL_ARB_framebuffer_no_attachments
+<li> GL_ARB_internalformat_query2
+<li> GL_ARB_multi_draw_indirect
+<li> GL_ARB_program_interface_query
+<li> GL_ARB_robust_buffer_access_behavior
+<li> GL_ARB_robustness_application_isolation
+<li> GL_ARB_robustness_share_group_isolation
+<li> GL_ARB_shader_image_size
+<li> GL_ARB_shader_storage_buffer_object
+<li> GL_ARB_stencil_texturing
+<li> GL_ARB_texture_buffer_range
+<li> GL_ARB_texture_query_levels
+<li> GL_ARB_texture_storage_multisample
+<li> GL_ARB_texture_view
+<li> GL_ARB_vertex_attrib_binding
+<li> GL_EXT_debug_marker
+<li> GL_KHR_debug
+<li> GL_REGAL_error_string
+<li> GL_REGAL_extension_query
+<li> GL_REGAL_log
+<li> GLX_ARB_robustness_application_isolation
+<li> GLX_ARB_robustness_share_group_isolation
+<li> GLX_EXT_create_context_es_profile
+<li> WGL_EXT_create_context_es_profile
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Not using GLU library for Makefile builds.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.8.0</b> [07-17-12]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_pinned_memory
+<li> GL_AMD_query_buffer_object
+<li> GL_AMD_stencil_operation_extended
+<li> GL_AMD_vertex_shader_layer
+<li> GL_AMD_vertex_shader_viewport_index
+<li> GL_NV_bindless_texture
+<li> GL_NV_shader_atomic_float
+<li> GLX_EXT_swap_control_tear
+<li> WGL_EXT_swap_control_tear
+<li> WGL_NV_DX_interop2
+</ul>
+<li> Bug fixes:
+<ul>
+<li> MS Visual Studio 2010 projects added
+<li> GLX_NV_video_out replaces GLX_NV_video_output
+<li> ANSI C prototype for glewInit
+<li> Improved CentOS build support
+<li> Improved GL_ARB_gpu_shader_fp64 support
+<li> ARB_texture_compression_bptc and ARB_copy_buffer constants
+<li> Linux needs to define GLEW_STATIC for static library builds
+<li> Custom code generation problem resolved
+<li> GLEWAPIENTRY added to glew.h for calling convention customization
+<li> Correction for glPathStencilDepthOffsetNV
+<li> Resolve OSX gcc warnings
+<li> Added build support for NetBSD
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.7.0</b> [08-26-11]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_multi_draw_indirect
+<li> GL_ARB_base_instance
+<li> GL_ARB_compressed_texture_pixel_storage
+<li> GL_ARB_conservative_depth
+<li> GL_ARB_internalformat_query
+<li> GL_ARB_map_buffer_alignment
+<li> GL_ARB_shader_atomic_counters
+<li> GL_ARB_shader_image_load_store
+<li> GL_ARB_shading_language_420pack
+<li> GL_ARB_shading_language_packing
+<li> GL_ARB_texture_storage
+<li> GL_ARB_transform_feedback_instanced
+<li> GL_EXT_framebuffer_multisample_blit_scaled
+<li> GL_NV_path_rendering
+<li> GL_NV_path_rendering
+<li> GLX_MESA_swap_control
+</ul>
+<li> Bug fixes:
+<ul>
+<li> const qualifiers for GL 1.4 MultiDrawArrays, MultiDrawElements
+<li> Add glGetGraphicsResetStatusARB to GL_ARB_robustness
+<li> Remove EXT suffix from GL_KTX_buffer_region entry points
+<li> Solaris needs inttypes.h
+<li> Add ERROR_INVALID_VERSION_ARB and ERROR_INVALID_PROFILE_ARB to WGL_ARB_create_context
+<li> Add GLX_MESA_swap_control
+<li> Set -install_name for OSX
+<li> Add 64-bit darwin build option (SYSTEM=darwin_x86-64)
+<li> Add GL_NV_path_rendering
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.6.0</b> [04-27-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_blend_minmax_factor
+<li> GL_AMD_sample_positions
+<li> GL_EXT_x11_sync_object
+<li> GL_NV_texture_multisample
+<li> GL_NV_video_capture
+<li> GLX_NV_video_capture
+<li> WGL_NV_DX_interop
+<li> WGL_NV_video_capture
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Define GLEW_NO_GLU for no glu dependency.
+<li> mx suffix for GLEW MX libraries, build both libraries by default.
+<li> Cygwin build improvements
+<li> Soname of GLEWmx shared libraries
+<li> Query GL extension string only once
+<li> GLX_OML_sync_control no longer requires C99
+<li> glDraw*InstancedARB moved from GL_ARB_draw_instanced to GL_ARB_instanced_arrays
+<li> glFramebufferTextureLayerEXT moved from GL_EXT_geometry_shader4 to GL_EXT_texture_array
+<li> Fixes for BSD build
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.8</b> [01-31-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_depth_clamp_separate
+<li> GL_EXT_texture_sRGB_decode
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Borland C++ fix for __int64
+<li> GL_DOUBLE_MATNxM enumerants for OpenGL 4.0
+<li> Correction to glGetTransformFeedbackVarying
+<li> Correction to glSecondaryColorPointer
+<li> Corrections to glGetVertexAttribPointerv and glGetShaderSource
+<li> Switched code repository from svn to git
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.7</b> [11-03-10]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_NVX_gpu_memory_info
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Improved mingw32 build support
+<li> Improved cygwin build support
+<li> glGetPointervEXT fix
+<li> Add GLEW_VERSION_1_2_1
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.6</b> [09-07-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.1
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES2_compatibility
+<li> GL_ARB_cl_event
+<li> GL_ARB_debug_output
+<li> GL_ARB_get_program_binary
+<li> GL_ARB_robustness
+<li> GL_ARB_separate_shader_objects
+<li> GL_ARB_shader_precision
+<li> GL_ARB_shader_stencil_export
+<li> GL_ARB_vertex_attrib_64bit
+<li> GL_ARB_viewport_array
+<li> GLX_ARB_create_context_robustness
+<li> GLX_EXT_create_context_es2_profile
+<li> WGL_ARB_create_context_robustness
+<li> WGL_EXT_create_context_es2_profile
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.5</b> [07-13-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_debug_output
+<li> GL_AMD_name_gen_delete
+<li> GL_AMD_transform_feedback3_lines_triangles
+<li> GL_NV_multisample_coverage
+<li> GL_NV_vdpau_interop
+<li> GLX_AMD_gpu_association
+<li> GLX_NV_multisample_coverage
+<li> WGL_NV_multisample_coverage
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Compilation issue with GLX_SGI_video_sync
+<li> OpenGL 4.0 double-precision uniform functions added
+<li> Constness of glPointParameterfvARB and glPointParameterfvEXT
+<li> Added glVertexAttribDivisor
+<li> Compilation issue with Nvidia GLX headers
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.4</b> [04-21-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.3
+<li> Support for OpenGL 4.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_conservative_depth
+<li> GL_ARB_blend_func_extended
+<li> GL_ARB_draw_indirect
+<li> GL_ARB_explicit_attrib_location
+<li> GL_ARB_gpu_shader5
+<li> GL_ARB_gpu_shader_fp64
+<li> GL_ARB_occlusion_query2
+<li> GL_ARB_sampler_objects
+<li> GL_ARB_shader_bit_encoding
+<li> GL_ARB_shader_subroutine
+<li> GL_ARB_shading_language_include
+<li> GL_ARB_tessellation_shader
+<li> GL_ARB_texture_buffer_object_rgb32
+<li> GL_ARB_texture_compression_bptc
+<li> GL_ARB_texture_rgb10_a2ui
+<li> GL_ARB_texture_swizzle
+<li> GL_ARB_timer_query
+<li> GL_ARB_transform_feedback2
+<li> GL_ARB_transform_feedback3
+<li> GL_ARB_vertex_type_2_10_10_10_rev
+<li> GL_EXT_shader_image_load_store
+<li> GL_EXT_vertex_attrib_64bit
+<li> GL_NV_gpu_program5
+<li> GL_NV_gpu_program_fp64
+<li> GL_NV_gpu_shader5
+<li> GL_NV_tessellation_program5
+<li> GL_NV_vertex_attrib_integer_64bit
+<li> GLX_ARB_vertex_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Parameter constness fix for glPointParameteriv and glPointParameterfv
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.3</b> [02-28-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GLX_INTEL_swap_event
+<li> GL_AMD_seamless_cubemap_per_texture
+<li> GL_AMD_shader_stencil_export
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Correct version detection for GL 3.1 and 3.2
+<li> Missing 3.1 enumerants
+<li> Add glew.pc
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.2</b> [12-31-09]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.1
+<li> Support for OpenGL 3.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_draw_buffers_blend
+<li> GL_AMD_performance_monitor
+<li> GL_AMD_texture_texture4
+<li> GL_AMD_vertex_shader_tessellator
+<li> GL_APPLE_aux_depth_stencil
+<li> GL_APPLE_object_purgeable
+<li> GL_APPLE_rgb_422
+<li> GL_APPLE_row_bytes
+<li> GL_APPLE_vertex_program_evaluators
+<li> GL_ARB_compatibility
+<li> GL_ARB_copy_buffer
+<li> GL_ARB_depth_clamp
+<li> GL_ARB_draw_buffers_blend
+<li> GL_ARB_draw_elements_base_vertex
+<li> GL_ARB_fragment_coord_conventions
+<li> GL_ARB_provoking_vertex
+<li> GL_ARB_sample_shading
+<li> GL_ARB_seamless_cube_map
+<li> GL_ARB_shader_texture_lod
+<li> GL_ARB_sync
+<li> GL_ARB_texture_cube_map_array
+<li> GL_ARB_texture_gather
+<li> GL_ARB_texture_multisample
+<li> GL_ARB_texture_query_lod
+<li> GL_ARB_uniform_buffer_object
+<li> GL_ARB_vertex_array_bgra
+<li> GL_ATI_meminfo
+<li> GL_EXT_provoking_vertex
+<li> GL_EXT_separate_shader_objects
+<li> GL_EXT_texture_snorm
+<li> GL_NV_copy_image
+<li> GL_NV_parameter_buffer_object2
+<li> GL_NV_shader_buffer_load
+<li> GL_NV_texture_barrier
+<li> GL_NV_transform_feedback2
+<li> GL_NV_vertex_buffer_unified_memory
+<li> WGL_AMD_gpu_association
+<li> WGL_ARB_create_context_profile
+<li> WGL_NV_copy_image
+<li> GLX_ARB_create_context_profile
+<li> GLX_EXT_swap_control
+<li> GLX_NV_copy_image
+</ul>
+<li> Bug fixes:
+<ul>
+<li> DOS line endings for windows .zip archives only.
+<li> glTransformFeedbackVaryings arguments.
+<li> Resource leak in glewinfo and visualinfo tools.
+<li> WIN32_LEAN_AND_MEAN preprocessor pollution.
+<li> Fixed version detection for GLEW_VERSION_2_1 and GLEW_VERSION_3_0.
+<li> MesaGLUT glut.h GLAPIENTRY dependency.
+<li> glFramebufferTextureLayer correction.
+<li> OSX compiler warnings resolved.
+<li> Cygwin linking to opengl32 by default, rather than X11 OpenGL.
+<li> SnowLeopard (OSX 10.6) gl.h detection.
+<li> Use $(STRIP) consistently.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.1</b> [11-03-08]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_depth_buffer_float
+<li> GL_ARB_draw_instance,
+<li> GL_ARB_framebuffer_object
+<li> GL_ARB_framebuffer_sRGB
+<li> GL_ARB_geometry_shader4
+<li> GL_ARB_half_float_pixel
+<li> GL_ARB_half_float_vertex
+<li> GL_ARB_instanced_arrays
+<li> GL_ARB_map_buffer_range
+<li> GL_ARB_texture_buffer_object
+<li> GL_ARB_texture_compression_rgtc
+<li> GL_ARB_vertex_array_object
+<li> GL_EXT_direct_state_access
+<li> GL_EXT_texture_swizzle
+<li> GL_EXT_transform_feedback
+<li> GL_EXT_vertex_array_bgra
+<li> GL_NV_conditional_render
+<li> GL_NV_explicit_multisample
+<li> GL_NV_present_video
+<li> GL_SGIS_point_line_texgen
+<li> GL_SGIX_convolution_accuracy
+<li> WGL_ARB_create_context
+<li> WGL_ARB_framebuffer_sRGB
+<li> WGL_NV_present_video
+<li> WGL_NV_swap_group
+<li> WGL_NV_video_output
+<li> GLX_ARB_create_context
+<li> GLX_ARB_framebuffer_sRGB
+<li> GLX_NV_present_video
+<li> GLX_NV_swap_group
+<li> GLX_NV_video_output
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Licensing issues with documentation
+<li> Problems with long long and _MSC_VER on MINGW
+<li> Incorrect parameter for glGetUniformLocation
+<li> glewGetExtension fails on last entry
+<li> Incomplete GL_NV_texture_shader tokens
+<li> Scripting problems on Cygwin
+<li> Incorrect definition for GLint on OS X
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.0</b> [12-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Licensing change (BSD, Mesa 3-D, Khronos)
+<li> Switch to using registry on <a href="http://www.opengl.org/registry/">www.opengl.org</a>
+<li> Support for major and minor version strings
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_APPLE_flush_buffer_range
+<li> GL_GREMEDY_frame_terminator
+<li> GLX_EXT_texture_from_pixmap
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect 64-bit type definitions
+<li> Do not strip static library on install
+<li> Missing tokens in GL_ATI_fragment_shader and WGL_{ARB,EXT}_make_current_read
+<li> Missing tokens in GL_VERSION_2_1
+<li> Missing functions in GL_VERSION_1_4
+<li> Incorrect parameter type for glXCopyContext
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.4.0</b> [04-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Extension variables are declared const to avoid possible
+corruption of their values
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_NV_depth_range_unclamped
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect tokens in GL_NV_transform_feedback and GL_NV_framebuffer_multisample_coverage
+<li> Incorrect function names in GL_EXT_gpu_program_parameters
+<li> Missing tokens in GL_EXT_framebuffer_multisample
+<li> GLEW_MX initialization problem for WGL_{ARB,EXT}_extensions_string
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.6</b> [03-04-07]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ATI_shader_texture_lod
+<li> GL_EXT_gpu_program_parameters
+<li> GL_NV_geometry_shader4
+<li> WGL_NV_gpu_affinity
+<li> GLX_SGIX_hyperpipe
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing include guards in glxew.h
+<li> Makefile and install problems for Cygwin builds
+<li> Install problem for Linux AMD64 builds
+<li> Incorrect token in GL_ATI_texture_compression_3dc
+<li> Missing tokens from GL_ATIX_point_sprites
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.5</b> [11-21-06]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.1
+<li> Debug support for glewIsSupported
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_bindable_uniform
+<li> GL_EXT_draw_buffers2
+<li> GL_EXT_draw_instanced
+<li> GL_EXT_framebuffer_sRGB
+<li> GL_EXT_geometry_shader4
+<li> GL_EXT_gpu_shader4
+<li> GL_EXT_packed_float
+<li> GL_EXT_texture_array
+<li> GL_EXT_texture_buffer_object
+<li> GL_EXT_texture_compression_latc
+<li> GL_EXT_texture_compression_rgtc
+<li> GL_EXT_texture_integer
+<li> GL_EXT_texture_shared_exponent
+<li> GL_EXT_timer_query
+<li> GL_NV_depth_buffer_float
+<li> GL_NV_fragment_program4
+<li> GL_NV_framebuffer_multisample_coverage
+<li> GL_NV_geometry_program4
+<li> GL_NV_gpu_program4
+<li> GL_NV_parameter_buffer_object
+<li> GL_NV_transform_feedback
+<li> GL_NV_vertex_program4
+<li> GL_OES_byte_coordinates
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_read_format
+<li> GL_OES_single_precision
+<li> WGL_EXT_pixel_format_packed_float
+<li> WGL_EXT_framebuffer_sRGB
+<li> GLX_EXT_fbconfig_packed_float
+<li> GLX_EXT_framebuffer_sRGB
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Wrong GLXContext definition on Solaris
+<li> Makefile problem for parallel builds
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.4</b> [03-04-06]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_blit
+<li> GL_EXT_framebuffer_multisample
+<li> GL_EXT_packed_depth_stencil
+<li> GL_MESAX_texture_stack
+<li> WGL_3DL_stereo_control
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> glBlendEquation missing from GL_ARB_imaging
+<li> Wrong APIENTRY definition for Cygwin
+<li> Incorrect OS X OpenGL types
+<li> Unix 64-bit installation patch
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.3</b> [05-16-05]
+<ul>
+<li> New feature:
+<ul>
+<li> Code generation option to split source into multiple files
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL 2.0 core initialization problems
+<li> Wrong value for token GL_SHADER_TYPE
+<li> Missing tokens in GL_ATI_fragment_shader
+<li> Missing entry points in GL_ARB_transpose_matrix
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.2</b> [03-16-05]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_APPLE_pixel_buffer
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 entry points
+<li> Missing tokens in GL_SGIX_shadow
+<li> MinGW makefile problem
+<li> Check for incorrect OpenGL version string on SiS hardware
+<li> Documentation update to meet the HTML 4.01 Transitional specification
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.1</b> [02-02-05]
+<ul>
+<li> New features:
+<ul>
+<li> Consistent Unix and Windows versioning
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_object
+<li> GL_ARB_pixel_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 tokens
+<li> Incorrect typedefs (GLhandleARB and GLhalf)
+<li> Borland compiler problems
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.0</b> [01-04-05]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.0
+<li> <tt>glewIsSupported</tt> provides efficient string-based extension checks
+<li> Custom code generation from a list of extensions
+<li> Makefile changes
+</ul>
+<li> New extensions:
+<ul>
+<li> WGL_ATI_render_texture_rectangle
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect function signature in OpenGL 1.5 core
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.5</b> [12-06-04]
+<ul>
+<li> New extensions:
+<ul>
+<li>GL_ATI_texture_compression_3dc
+<li>GL_EXT_Cg_shader
+<li>GL_EXT_draw_range_elements
+<li>GL_KTX_buffer_region
+</ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL version detection bug
+<li> Problems with wxWindows and MinGW compilation
+<li> <tt>visualinfo</tt> compilation problem with GLEW_MX specified
+<li> Wrong token name in OpenGL 1.5 core
+</ul>
+<li> Support for FreeBSD
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.4</b> [09-06-04]
+<ul>
+<li> Added ARB_draw_buffers and ARB_texture_rectangle
+<li> Fixed bug in ARB_shader_objects
+<li> Replaced <tt>wglinfo</tt> with <tt>visualinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.3</b> [06-10-04]
+<ul>
+<li> Added GL_NV_fragment_program2, GL_NV_fragment_program_option, GL_NV_vertex_program2_option, GL_NV_vertex_program3
+<li> Bug fix in GL_ARB_vertex_blend
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.2</b> [05-08-04]
+<ul>
+<li> Added GL_EXT_pixel_buffer_object, removed GL_NV_element_array
+<li> Fixed GLEW_MX problems
+<li> Bug fix in GL_EXT_texture_rectangle and <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.1</b> [03-18-04]
+<ul>
+<li> Bug fix in OpenGL version query (early release of 1.2.0 contained this bug)
+<li> Bug fix in GL_ARB_shader_objects and temporary bug fix in GL_ARB_vertex_shader
+<li> Added flags on GDI support and multisampling to <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.0</b> [02-19-04]
+<ul>
+<li> Added full OpenGL 1.5 support
+<li> Added support for multiple rendering contexts with different capabilities
+<li> Added command line flags to <tt>glewinfo</tt> for selecting displays and visuals
+<li> Added GLX_SGIS_multisample, GLX_SUN_video_resize, and GL_SUN_read_video_pixels
+<li> Added MinGW/MSYS support
+<li> Bug fixes in GL_ARB_shader_objects and the OS X build
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.4</b> [12-15-03]
+<ul>
+<li> Added GL_APPLE_float_pixels, GL_APPLE_texture_range,
+GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
+GLX_ATI_pixel_format_float, and GLX_ATI_render_texture
+<li> Bug fixes in GL_ATI_map_object_buffer and GL_ATI_fragment_shader
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.3</b> [10-28-03]
+<ul>
+<li> Added Solaris and Darwin support
+<li> Added GL_ARB_fragment_shader, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+<li> Fixed bug in GL_WIN_swap_hint
+<li> Removed <tt>glewinfo</tt>'s dependency on <tt>GLUT</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.2</b> [09-15-03]
+<ul>
+<li> Removed dependency on WGL_{ARB,EXT}_extensions_string to make GLEW run on Matrox cards
+<li> Added glewGetString for querying the GLEW version string
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.1</b> [08-11-03]
+<ul>
+<li> Added GLX_NV_float_buffer, GL_ARB_shading_language_100, and GL_ARB_texture_non_power_of_two
+<li> Fixed bug in GL_ARB_vertex_buffer_object
+<li> Minor updates in documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.0</b> [07-08-03]
+<ul>
+<li> Added automatic code generation
+<li> Added almost every extension in the registry
+<li> Added separate namespace
+<li> Added Irix support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.7</b> [06-29-03]
+<ul>
+<li> Added GL_EXT_depth_bounds_test
+<li> Fixed typos
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.6</b> [05-05-03]
+<ul>
+<li> Added ARB_vertex_buffer_object and NV_half_float
+<li> Updated <tt>wglinfo</tt>
+<li> Temporary Linux bug fixes (problems with SDL and MESA)
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.5</b> [02-17-03]
+<ul>
+<li> Bug fixes
+<li> Added <tt>wglinfo</tt>
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.4</b> [02-02-03]
+<ul>
+<li> Added NV_texture_expand_normal
+<li> Added mingw support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.3</b> [01-09-03]
+<ul>
+<li> Cleaned up ATI extensions
+<li> Changed function prototypes to match glext.h
+<li> Added EXT_texture3D
+<li> Fixed typos in ATI_vertex_attrib_array_object and ATI_draw_buffers
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.2</b> [12-21-02]
+<ul>
+<li> Added list of supported extensions to documentation
+<li> Added NV_half_float and NV_texgen_emboss
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.1</b> [12-17-02]
+<ul>
+<li> Bug fixes
+<li> Added glewGetExtension
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.0</b> [12-12-02]
+<ul>
+<li> Initial release
+</ul>
+</ul>
+<hr align="center">
+
diff --git a/glew/auto/extensions/gl/.dummy b/glew/auto/extensions/gl/.dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/glew/auto/extensions/gl/.dummy
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers b/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers
new file mode 100644
index 0000000..b800fe1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers
@@ -0,0 +1,4 @@
+EGL_ANDROID_GLES_layers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_GLES_layers
+
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_blob_cache b/glew/auto/extensions/gl/EGL_ANDROID_blob_cache
new file mode 100644
index 0000000..87c9e40
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_blob_cache
@@ -0,0 +1,5 @@
+EGL_ANDROID_blob_cache
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_blob_cache
+
+ void eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer b/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer
new file mode 100644
index 0000000..1a519c8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer
@@ -0,0 +1,9 @@
+EGL_ANDROID_create_native_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_create_native_client_buffer
+
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+ EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+ EGLClientBuffer eglCreateNativeClientBufferANDROID (const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target b/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target
new file mode 100644
index 0000000..3fdbdaa
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target
@@ -0,0 +1,5 @@
+EGL_ANDROID_framebuffer_target
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_framebuffer_target
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh b/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh
new file mode 100644
index 0000000..b49e6f5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh
@@ -0,0 +1,5 @@
+EGL_ANDROID_front_buffer_auto_refresh
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_front_buffer_auto_refresh
+
+ EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps b/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps
new file mode 100644
index 0000000..3585577
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps
@@ -0,0 +1,24 @@
+EGL_ANDROID_get_frame_timestamps
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_get_frame_timestamps
+
+ EGL_TIMESTAMPS_ANDROID 0x3430
+ EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+ EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+ EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+ EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+ EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+ EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+ EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+ EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+ EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+ EGL_READS_DONE_TIME_ANDROID 0x343C
+ EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
+ EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
+ EGLBoolean eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint* names, EGLnsecsANDROID* values)
+ EGLBoolean eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name)
+ EGLBoolean eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp)
+ EGLBoolean eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint* timestamps, EGLnsecsANDROID* values)
+ EGLBoolean eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer b/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer
new file mode 100644
index 0000000..9ffc655
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer
@@ -0,0 +1,5 @@
+EGL_ANDROID_get_native_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_get_native_client_buffer
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID (const struct AHardwareBuffer* buffer)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer b/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer
new file mode 100644
index 0000000..fe04035
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer
@@ -0,0 +1,5 @@
+EGL_ANDROID_image_native_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_image_native_buffer
+
+ EGL_NATIVE_BUFFER_ANDROID 0x3140
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync b/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync
new file mode 100644
index 0000000..2c44d34
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync
@@ -0,0 +1,9 @@
+EGL_ANDROID_native_fence_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_native_fence_sync
+
+ EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+ EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+ EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+ EGLint eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_presentation_time b/glew/auto/extensions/gl/EGL_ANDROID_presentation_time
new file mode 100644
index 0000000..8c5ca58
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_presentation_time
@@ -0,0 +1,5 @@
+EGL_ANDROID_presentation_time
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_presentation_time
+
+ EGLBoolean eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_recordable b/glew/auto/extensions/gl/EGL_ANDROID_recordable
new file mode 100644
index 0000000..17b8c31
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_recordable
@@ -0,0 +1,5 @@
+EGL_ANDROID_recordable
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_recordable
+
+ EGL_RECORDABLE_ANDROID 0x3142
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer b/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer
new file mode 100644
index 0000000..fa9748e
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer
@@ -0,0 +1,5 @@
+EGL_ANGLE_d3d_share_handle_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_d3d_share_handle_client_buffer
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_device_d3d b/glew/auto/extensions/gl/EGL_ANGLE_device_d3d
new file mode 100644
index 0000000..aad1c1a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_device_d3d
@@ -0,0 +1,6 @@
+EGL_ANGLE_device_d3d
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_device_d3d
+
+ EGL_D3D9_DEVICE_ANGLE 0x33A0
+ EGL_D3D11_DEVICE_ANGLE 0x33A1
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer b/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer
new file mode 100644
index 0000000..0b459e2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer
@@ -0,0 +1,5 @@
+EGL_ANGLE_query_surface_pointer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_query_surface_pointer
+
+ EGLBoolean eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void** value)
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle b/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle
new file mode 100644
index 0000000..d5c1696
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle
@@ -0,0 +1,5 @@
+EGL_ANGLE_surface_d3d_texture_2d_share_handle
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate b/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate
new file mode 100644
index 0000000..0db2c2a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate
@@ -0,0 +1,5 @@
+EGL_ANGLE_sync_control_rate
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_sync_control_rate
+
+ EGLBoolean eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint* numerator, EGLint* denominator)
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size b/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size
new file mode 100644
index 0000000..299b6c7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size
@@ -0,0 +1,5 @@
+EGL_ANGLE_window_fixed_size
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_window_fixed_size
+
+ EGL_FIXED_SIZE_ANGLE 0x3201
diff --git a/glew/auto/extensions/gl/EGL_ARM_image_format b/glew/auto/extensions/gl/EGL_ARM_image_format
new file mode 100644
index 0000000..06fb809
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_image_format
@@ -0,0 +1,6 @@
+EGL_ARM_image_format
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_image_format
+
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
diff --git a/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync b/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync
new file mode 100644
index 0000000..ec094f2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync
@@ -0,0 +1,5 @@
+EGL_ARM_implicit_external_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_implicit_external_sync
+
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
diff --git a/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard b/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard
new file mode 100644
index 0000000..5f2b9e7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard
@@ -0,0 +1,5 @@
+EGL_ARM_pixmap_multisample_discard
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_pixmap_multisample_discard
+
+ EGL_DISCARD_SAMPLES_ARM 0x3286
diff --git a/glew/auto/extensions/gl/EGL_EXT_bind_to_front b/glew/auto/extensions/gl/EGL_EXT_bind_to_front
new file mode 100644
index 0000000..363d502
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_bind_to_front
@@ -0,0 +1,5 @@
+EGL_EXT_bind_to_front
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_bind_to_front
+
+ EGL_FRONT_BUFFER_EXT 0x3464
diff --git a/glew/auto/extensions/gl/EGL_EXT_buffer_age b/glew/auto/extensions/gl/EGL_EXT_buffer_age
new file mode 100644
index 0000000..4dc18ad
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_buffer_age
@@ -0,0 +1,5 @@
+EGL_EXT_buffer_age
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_buffer_age
+
+ EGL_BUFFER_AGE_EXT 0x313D
diff --git a/glew/auto/extensions/gl/EGL_EXT_client_extensions b/glew/auto/extensions/gl/EGL_EXT_client_extensions
new file mode 100644
index 0000000..8251a19
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_client_extensions
@@ -0,0 +1,4 @@
+EGL_EXT_client_extensions
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_client_extensions
+
diff --git a/glew/auto/extensions/gl/EGL_EXT_client_sync b/glew/auto/extensions/gl/EGL_EXT_client_sync
new file mode 100644
index 0000000..fe694ac
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_client_sync
@@ -0,0 +1,7 @@
+EGL_EXT_client_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_client_sync
+
+ EGL_SYNC_CLIENT_EXT 0x3364
+ EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+ EGLBoolean eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_compositor b/glew/auto/extensions/gl/EGL_EXT_compositor
new file mode 100644
index 0000000..48cb931
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_compositor
@@ -0,0 +1,15 @@
+EGL_EXT_compositor
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_compositor
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+ EGL_EXTERNAL_REF_ID_EXT 0x3461
+ EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+ EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id)
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint* context_attributes, EGLint num_entries)
+ EGLBoolean eglCompositorSetContextListEXT (const EGLint* external_ref_ids, EGLint num_entries)
+ EGLBoolean eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height)
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint* window_attributes, EGLint num_entries)
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint* external_win_ids, EGLint num_entries)
+ EGLBoolean eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy)
diff --git a/glew/auto/extensions/gl/EGL_EXT_config_select_group b/glew/auto/extensions/gl/EGL_EXT_config_select_group
new file mode 100644
index 0000000..a3006f4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_config_select_group
@@ -0,0 +1,5 @@
+EGL_EXT_config_select_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_config_select_group
+
+ EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_create_context_robustness b/glew/auto/extensions/gl/EGL_EXT_create_context_robustness
new file mode 100644
index 0000000..e09b15c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_create_context_robustness
@@ -0,0 +1,8 @@
+EGL_EXT_create_context_robustness
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_create_context_robustness
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+ EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_base b/glew/auto/extensions/gl/EGL_EXT_device_base
new file mode 100644
index 0000000..fa1d2e1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_base
@@ -0,0 +1,7 @@
+EGL_EXT_device_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_base
+
+ EGL_BAD_DEVICE_EXT 0x322B
+ EGL_DEVICE_EXT 0x322C
+ EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_drm b/glew/auto/extensions/gl/EGL_EXT_device_drm
new file mode 100644
index 0000000..ac10157
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_drm
@@ -0,0 +1,6 @@
+EGL_EXT_device_drm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_drm
+
+ EGL_DRM_DEVICE_FILE_EXT 0x3233
+ EGL_DRM_MASTER_FD_EXT 0x333C
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node b/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node
new file mode 100644
index 0000000..70deeb3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node
@@ -0,0 +1,5 @@
+EGL_EXT_device_drm_render_node
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_drm_render_node
+
+ EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_enumeration b/glew/auto/extensions/gl/EGL_EXT_device_enumeration
new file mode 100644
index 0000000..113cd54
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_enumeration
@@ -0,0 +1,5 @@
+EGL_EXT_device_enumeration
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_enumeration
+
+ EGLBoolean eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT* devices, EGLint* num_devices)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_openwf b/glew/auto/extensions/gl/EGL_EXT_device_openwf
new file mode 100644
index 0000000..65a62b0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_openwf
@@ -0,0 +1,6 @@
+EGL_EXT_device_openwf
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_openwf
+
+ EGL_OPENWF_DEVICE_ID_EXT 0x3237
+ EGL_OPENWF_DEVICE_EXT 0x333D
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_persistent_id b/glew/auto/extensions/gl/EGL_EXT_device_persistent_id
new file mode 100644
index 0000000..825e1c0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_persistent_id
@@ -0,0 +1,8 @@
+EGL_EXT_device_persistent_id
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_persistent_id
+
+ EGL_DEVICE_UUID_EXT 0x335C
+ EGL_DRIVER_UUID_EXT 0x335D
+ EGL_DRIVER_NAME_EXT 0x335E
+ EGLBoolean eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void* value, EGLint* size)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_query b/glew/auto/extensions/gl/EGL_EXT_device_query
new file mode 100644
index 0000000..1263c48
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_query
@@ -0,0 +1,10 @@
+EGL_EXT_device_query
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_query
+
+ EGL_BAD_DEVICE_EXT 0x322B
+ EGL_DEVICE_EXT 0x322C
+ EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
+ EGLBoolean eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name)
+ EGLBoolean eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_query_name b/glew/auto/extensions/gl/EGL_EXT_device_query_name
new file mode 100644
index 0000000..0de8b45
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_query_name
@@ -0,0 +1,5 @@
+EGL_EXT_device_query_name
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_query_name
+
+ EGL_RENDERER_EXT 0x335F
diff --git a/glew/auto/extensions/gl/EGL_EXT_explicit_device b/glew/auto/extensions/gl/EGL_EXT_explicit_device
new file mode 100644
index 0000000..63d61b2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_explicit_device
@@ -0,0 +1,5 @@
+EGL_EXT_explicit_device
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_explicit_device
+
+ EGL_DEVICE_EXT 0x322C
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear
new file mode 100644
index 0000000..72d7df1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_bt2020_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_bt2020_linear
+
+ EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq
new file mode 100644
index 0000000..99ef504
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_bt2020_pq
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_bt2020_pq
+
+ EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3 b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3
new file mode 100644
index 0000000..32de46d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear
new file mode 100644
index 0000000..b951618
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3_linear
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough
new file mode 100644
index 0000000..ba9b81c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3_passthrough
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3_passthrough
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb
new file mode 100644
index 0000000..fc0dff6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_scrgb
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_scrgb
+
+ EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear
new file mode 100644
index 0000000..dd370cf
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_scrgb_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_scrgb_linear
+
+ EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import
new file mode 100644
index 0000000..419eb0f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import
@@ -0,0 +1,26 @@
+EGL_EXT_image_dma_buf_import
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_dma_buf_import
+
+ EGL_LINUX_DMA_BUF_EXT 0x3270
+ EGL_LINUX_DRM_FOURCC_EXT 0x3271
+ EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+ EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+ EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+ EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+ EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+ EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+ EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+ EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+ EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+ EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+ EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+ EGL_ITU_REC601_EXT 0x327F
+ EGL_ITU_REC709_EXT 0x3280
+ EGL_ITU_REC2020_EXT 0x3281
+ EGL_YUV_FULL_RANGE_EXT 0x3282
+ EGL_YUV_NARROW_RANGE_EXT 0x3283
+ EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+ EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers
new file mode 100644
index 0000000..7a27ee8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers
@@ -0,0 +1,17 @@
+EGL_EXT_image_dma_buf_import_modifiers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_dma_buf_import_modifiers
+
+ EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+ EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+ EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+ EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+ EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+ EGLBoolean eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint* formats, EGLint* num_formats)
+ EGLBoolean eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR* modifiers, EGLBoolean* external_only, EGLint* num_modifiers)
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace b/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace
new file mode 100644
index 0000000..131dd70
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace
@@ -0,0 +1,6 @@
+EGL_EXT_image_gl_colorspace
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_gl_colorspace
+
+ EGL_GL_COLORSPACE 0x309D
+ EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control b/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control
new file mode 100644
index 0000000..9e188ee
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control
@@ -0,0 +1,7 @@
+EGL_EXT_image_implicit_sync_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_implicit_sync_control
+
+ EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+ EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+ EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
diff --git a/glew/auto/extensions/gl/EGL_EXT_multiview_window b/glew/auto/extensions/gl/EGL_EXT_multiview_window
new file mode 100644
index 0000000..4ae0156
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_multiview_window
@@ -0,0 +1,5 @@
+EGL_EXT_multiview_window
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_multiview_window
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_base b/glew/auto/extensions/gl/EGL_EXT_output_base
new file mode 100644
index 0000000..440ac00
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_base
@@ -0,0 +1,17 @@
+EGL_EXT_output_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_base
+
+ EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+ EGL_BAD_OUTPUT_PORT_EXT 0x322E
+ EGL_SWAP_INTERVAL_EXT 0x322F
+ EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
+ EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
+ EGLBoolean eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputLayerEXT* layers, EGLint max_layers, EGLint* num_layers)
+ EGLBoolean eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputPortEXT* ports, EGLint max_ports, EGLint* num_ports)
+ EGLBoolean eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value)
+ EGLBoolean eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value)
+ EGLBoolean eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name)
+ EGLBoolean eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name)
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_drm b/glew/auto/extensions/gl/EGL_EXT_output_drm
new file mode 100644
index 0000000..4fa74c7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_drm
@@ -0,0 +1,7 @@
+EGL_EXT_output_drm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_drm
+
+ EGL_DRM_CRTC_EXT 0x3234
+ EGL_DRM_PLANE_EXT 0x3235
+ EGL_DRM_CONNECTOR_EXT 0x3236
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_openwf b/glew/auto/extensions/gl/EGL_EXT_output_openwf
new file mode 100644
index 0000000..5c91d61
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_openwf
@@ -0,0 +1,6 @@
+EGL_EXT_output_openwf
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_openwf
+
+ EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+ EGL_OPENWF_PORT_ID_EXT 0x3239
diff --git a/glew/auto/extensions/gl/EGL_EXT_pixel_format_float b/glew/auto/extensions/gl/EGL_EXT_pixel_format_float
new file mode 100644
index 0000000..06e9959
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_pixel_format_float
@@ -0,0 +1,7 @@
+EGL_EXT_pixel_format_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_pixel_format_float
+
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_base b/glew/auto/extensions/gl/EGL_EXT_platform_base
new file mode 100644
index 0000000..9dbb7a5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_base
@@ -0,0 +1,7 @@
+EGL_EXT_platform_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_base
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const EGLint* attrib_list)
+ EGLSurface eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_window, const EGLint* attrib_list)
+ EGLDisplay eglGetPlatformDisplayEXT (EGLenum platform, void* native_display, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_device b/glew/auto/extensions/gl/EGL_EXT_platform_device
new file mode 100644
index 0000000..c2e8cfe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_device
@@ -0,0 +1,5 @@
+EGL_EXT_platform_device
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_device
+
+ EGL_PLATFORM_DEVICE_EXT 0x313F
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_wayland b/glew/auto/extensions/gl/EGL_EXT_platform_wayland
new file mode 100644
index 0000000..d1f0778
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_wayland
@@ -0,0 +1,5 @@
+EGL_EXT_platform_wayland
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_wayland
+
+ EGL_PLATFORM_WAYLAND_EXT 0x31D8
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_x11 b/glew/auto/extensions/gl/EGL_EXT_platform_x11
new file mode 100644
index 0000000..5fb32b1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_x11
@@ -0,0 +1,6 @@
+EGL_EXT_platform_x11
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_x11
+
+ EGL_PLATFORM_X11_EXT 0x31D5
+ EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_xcb b/glew/auto/extensions/gl/EGL_EXT_platform_xcb
new file mode 100644
index 0000000..2cf34c9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_xcb
@@ -0,0 +1,6 @@
+EGL_EXT_platform_xcb
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_xcb
+
+ EGL_PLATFORM_XCB_EXT 0x31DC
+ EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
diff --git a/glew/auto/extensions/gl/EGL_EXT_present_opaque b/glew/auto/extensions/gl/EGL_EXT_present_opaque
new file mode 100644
index 0000000..687c118
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_present_opaque
@@ -0,0 +1,5 @@
+EGL_EXT_present_opaque
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_present_opaque
+
+ EGL_PRESENT_OPAQUE_EXT 0x31DF
diff --git a/glew/auto/extensions/gl/EGL_EXT_protected_content b/glew/auto/extensions/gl/EGL_EXT_protected_content
new file mode 100644
index 0000000..8d274a2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_protected_content
@@ -0,0 +1,5 @@
+EGL_EXT_protected_content
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_protected_content
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_protected_surface b/glew/auto/extensions/gl/EGL_EXT_protected_surface
new file mode 100644
index 0000000..b2444bc
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_protected_surface
@@ -0,0 +1,5 @@
+EGL_EXT_protected_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_protected_surface
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput b/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput
new file mode 100644
index 0000000..ce6e254
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput
@@ -0,0 +1,5 @@
+EGL_EXT_stream_consumer_egloutput
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_stream_consumer_egloutput
+
+ EGLBoolean eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer)
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata b/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata
new file mode 100644
index 0000000..cae27be
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata
@@ -0,0 +1,6 @@
+EGL_EXT_surface_CTA861_3_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_CTA861_3_metadata
+
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata b/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata
new file mode 100644
index 0000000..f806703
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata
@@ -0,0 +1,15 @@
+EGL_EXT_surface_SMPTE2086_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_SMPTE2086_metadata
+
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+ EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+ EGL_METADATA_SCALING_EXT 50000
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_compression b/glew/auto/extensions/gl/EGL_EXT_surface_compression
new file mode 100644
index 0000000..9761599
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_compression
@@ -0,0 +1,22 @@
+EGL_EXT_surface_compression
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_compression
+
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+ EGL_SURFACE_COMPRESSION_EXT 0x34B0
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+ EGLBoolean eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib* attrib_list, EGLint* rates, EGLint rate_size, EGLint* num_rates)
diff --git a/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage b/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage
new file mode 100644
index 0000000..2e4d1a8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage
@@ -0,0 +1,5 @@
+EGL_EXT_swap_buffers_with_damage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_swap_buffers_with_damage
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_EXT_sync_reuse b/glew/auto/extensions/gl/EGL_EXT_sync_reuse
new file mode 100644
index 0000000..72f9873
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_sync_reuse
@@ -0,0 +1,5 @@
+EGL_EXT_sync_reuse
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_sync_reuse
+
+ EGLBoolean eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_yuv_surface b/glew/auto/extensions/gl/EGL_EXT_yuv_surface
new file mode 100644
index 0000000..8c3f86e
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_yuv_surface
@@ -0,0 +1,29 @@
+EGL_EXT_yuv_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_yuv_surface
+
+ EGL_YUV_BUFFER_EXT 0x3300
+ EGL_YUV_ORDER_EXT 0x3301
+ EGL_YUV_ORDER_YUV_EXT 0x3302
+ EGL_YUV_ORDER_YVU_EXT 0x3303
+ EGL_YUV_ORDER_YUYV_EXT 0x3304
+ EGL_YUV_ORDER_UYVY_EXT 0x3305
+ EGL_YUV_ORDER_YVYU_EXT 0x3306
+ EGL_YUV_ORDER_VYUY_EXT 0x3307
+ EGL_YUV_ORDER_AYUV_EXT 0x3308
+ EGL_YUV_CSC_STANDARD_EXT 0x330A
+ EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+ EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+ EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_SUBSAMPLE_EXT 0x3312
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+ EGL_YUV_DEPTH_RANGE_EXT 0x3317
+ EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+ EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+ EGL_YUV_PLANE_BPP_EXT 0x331A
+ EGL_YUV_PLANE_BPP_0_EXT 0x331B
+ EGL_YUV_PLANE_BPP_8_EXT 0x331C
+ EGL_YUV_PLANE_BPP_10_EXT 0x331D
diff --git a/glew/auto/extensions/gl/EGL_HI_clientpixmap b/glew/auto/extensions/gl/EGL_HI_clientpixmap
new file mode 100644
index 0000000..732252f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_HI_clientpixmap
@@ -0,0 +1,6 @@
+EGL_HI_clientpixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_HI_clientpixmap
+
+ EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+ EGLSurface eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap)
diff --git a/glew/auto/extensions/gl/EGL_HI_colorformats b/glew/auto/extensions/gl/EGL_HI_colorformats
new file mode 100644
index 0000000..138a266
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_HI_colorformats
@@ -0,0 +1,8 @@
+EGL_HI_colorformats
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_HI_colorformats
+
+ EGL_COLOR_FORMAT_HI 0x8F70
+ EGL_COLOR_RGB_HI 0x8F71
+ EGL_COLOR_RGBA_HI 0x8F72
+ EGL_COLOR_ARGB_HI 0x8F73
diff --git a/glew/auto/extensions/gl/EGL_IMG_context_priority b/glew/auto/extensions/gl/EGL_IMG_context_priority
new file mode 100644
index 0000000..fce013b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_IMG_context_priority
@@ -0,0 +1,8 @@
+EGL_IMG_context_priority
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_IMG_context_priority
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+ EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+ EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
diff --git a/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs b/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs
new file mode 100644
index 0000000..80c2c1b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs
@@ -0,0 +1,6 @@
+EGL_IMG_image_plane_attribs
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_IMG_image_plane_attribs
+
+ EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
diff --git a/glew/auto/extensions/gl/EGL_KHR_cl_event b/glew/auto/extensions/gl/EGL_KHR_cl_event
new file mode 100644
index 0000000..1c70d95
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_cl_event
@@ -0,0 +1,7 @@
+EGL_KHR_cl_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_cl_event
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
diff --git a/glew/auto/extensions/gl/EGL_KHR_cl_event2 b/glew/auto/extensions/gl/EGL_KHR_cl_event2
new file mode 100644
index 0000000..1f03633
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_cl_event2
@@ -0,0 +1,8 @@
+EGL_KHR_cl_event2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_cl_event2
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+ EGLSyncKHR eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses b/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses
new file mode 100644
index 0000000..3b5e951
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses
@@ -0,0 +1,4 @@
+EGL_KHR_client_get_all_proc_addresses
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_client_get_all_proc_addresses
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_config_attribs b/glew/auto/extensions/gl/EGL_KHR_config_attribs
new file mode 100644
index 0000000..31c556a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_config_attribs
@@ -0,0 +1,7 @@
+EGL_KHR_config_attribs
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_config_attribs
+
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+ EGL_CONFORMANT_KHR 0x3042
diff --git a/glew/auto/extensions/gl/EGL_KHR_context_flush_control b/glew/auto/extensions/gl/EGL_KHR_context_flush_control
new file mode 100644
index 0000000..9064a7a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_context_flush_control
@@ -0,0 +1,7 @@
+EGL_KHR_context_flush_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_context_flush_control
+
+ EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+ EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+ EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
diff --git a/glew/auto/extensions/gl/EGL_KHR_create_context b/glew/auto/extensions/gl/EGL_KHR_create_context
new file mode 100644
index 0000000..e79485b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_create_context
@@ -0,0 +1,18 @@
+EGL_KHR_create_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_create_context
+
+ EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+ EGL_OPENGL_ES3_BIT 0x00000040
+ EGL_OPENGL_ES3_BIT_KHR 0x00000040
+ EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+ EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+ EGL_CONTEXT_FLAGS_KHR 0x30FC
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+ EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
diff --git a/glew/auto/extensions/gl/EGL_KHR_create_context_no_error b/glew/auto/extensions/gl/EGL_KHR_create_context_no_error
new file mode 100644
index 0000000..72a1928
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_create_context_no_error
@@ -0,0 +1,5 @@
+EGL_KHR_create_context_no_error
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_create_context_no_error
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
diff --git a/glew/auto/extensions/gl/EGL_KHR_debug b/glew/auto/extensions/gl/EGL_KHR_debug
new file mode 100644
index 0000000..4551fe2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_debug
@@ -0,0 +1,19 @@
+EGL_KHR_debug
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_debug
+
+ EGL_OBJECT_THREAD_KHR 0x33B0
+ EGL_OBJECT_DISPLAY_KHR 0x33B1
+ EGL_OBJECT_CONTEXT_KHR 0x33B2
+ EGL_OBJECT_SURFACE_KHR 0x33B3
+ EGL_OBJECT_IMAGE_KHR 0x33B4
+ EGL_OBJECT_SYNC_KHR 0x33B5
+ EGL_OBJECT_STREAM_KHR 0x33B6
+ EGL_DEBUG_CALLBACK_KHR 0x33B8
+ EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+ EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+ EGL_DEBUG_MSG_WARN_KHR 0x33BB
+ EGL_DEBUG_MSG_INFO_KHR 0x33BC
+ EGLint eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib* attrib_list)
+ EGLint eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label)
+ EGLBoolean eglQueryDebugKHR (EGLint attribute, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_display_reference b/glew/auto/extensions/gl/EGL_KHR_display_reference
new file mode 100644
index 0000000..eeb09db
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_display_reference
@@ -0,0 +1,6 @@
+EGL_KHR_display_reference
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_display_reference
+
+ EGL_TRACK_REFERENCES_KHR 0x3352
+ EGLBoolean eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_fence_sync b/glew/auto/extensions/gl/EGL_KHR_fence_sync
new file mode 100644
index 0000000..398b292
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_fence_sync
@@ -0,0 +1,7 @@
+EGL_KHR_fence_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_fence_sync
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+ EGL_SYNC_CONDITION_KHR 0x30F8
+ EGL_SYNC_FENCE_KHR 0x30F9
diff --git a/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses b/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses
new file mode 100644
index 0000000..86e3b31
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses
@@ -0,0 +1,4 @@
+EGL_KHR_get_all_proc_addresses
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_get_all_proc_addresses
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_colorspace b/glew/auto/extensions/gl/EGL_KHR_gl_colorspace
new file mode 100644
index 0000000..791e9db
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_colorspace
@@ -0,0 +1,7 @@
+EGL_KHR_gl_colorspace
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_colorspace
+
+ EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+ EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+ EGL_GL_COLORSPACE_KHR 0x309D
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image b/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image
new file mode 100644
index 0000000..eac2ce6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image
@@ -0,0 +1,5 @@
+EGL_KHR_gl_renderbuffer_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_renderbuffer_image
+
+ EGL_GL_RENDERBUFFER_KHR 0x30B9
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image
new file mode 100644
index 0000000..68787ee
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image
@@ -0,0 +1,6 @@
+EGL_KHR_gl_texture_2D_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_2D_image
+
+ EGL_GL_TEXTURE_2D_KHR 0x30B1
+ EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image
new file mode 100644
index 0000000..ced8357
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image
@@ -0,0 +1,6 @@
+EGL_KHR_gl_texture_3D_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_3D_image
+
+ EGL_GL_TEXTURE_3D_KHR 0x30B2
+ EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image
new file mode 100644
index 0000000..81079d9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image
@@ -0,0 +1,10 @@
+EGL_KHR_gl_texture_cubemap_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_cubemap_image
+
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
diff --git a/glew/auto/extensions/gl/EGL_KHR_image b/glew/auto/extensions/gl/EGL_KHR_image
new file mode 100644
index 0000000..a378be0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image
@@ -0,0 +1,8 @@
+EGL_KHR_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
+ EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
+ EGLImageKHR eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint* attrib_list)
+ EGLBoolean eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image)
diff --git a/glew/auto/extensions/gl/EGL_KHR_image_base b/glew/auto/extensions/gl/EGL_KHR_image_base
new file mode 100644
index 0000000..dd38a6c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image_base
@@ -0,0 +1,6 @@
+EGL_KHR_image_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image_base
+
+ EGL_IMAGE_PRESERVED_KHR 0x30D2
+ EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
diff --git a/glew/auto/extensions/gl/EGL_KHR_image_pixmap b/glew/auto/extensions/gl/EGL_KHR_image_pixmap
new file mode 100644
index 0000000..ab3b243
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image_pixmap
@@ -0,0 +1,5 @@
+EGL_KHR_image_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image_pixmap
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface b/glew/auto/extensions/gl/EGL_KHR_lock_surface
new file mode 100644
index 0000000..be43fb4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface
@@ -0,0 +1,27 @@
+EGL_KHR_lock_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+ EGL_MATCH_FORMAT_KHR 0x3043
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+ EGLBoolean eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint* attrib_list)
+ EGLBoolean eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface)
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface2 b/glew/auto/extensions/gl/EGL_KHR_lock_surface2
new file mode 100644
index 0000000..0c4fd14
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface2
@@ -0,0 +1,5 @@
+EGL_KHR_lock_surface2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface2
+
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface3 b/glew/auto/extensions/gl/EGL_KHR_lock_surface3
new file mode 100644
index 0000000..4c0e13a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface3
@@ -0,0 +1,27 @@
+EGL_KHR_lock_surface3
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface3
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+ EGL_MATCH_FORMAT_KHR 0x3043
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+ EGLBoolean eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer b/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer
new file mode 100644
index 0000000..fefff28
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer
@@ -0,0 +1,5 @@
+EGL_KHR_mutable_render_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_mutable_render_buffer
+
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
diff --git a/glew/auto/extensions/gl/EGL_KHR_no_config_context b/glew/auto/extensions/gl/EGL_KHR_no_config_context
new file mode 100644
index 0000000..81fe477
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_no_config_context
@@ -0,0 +1,5 @@
+EGL_KHR_no_config_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_no_config_context
+
+ EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
diff --git a/glew/auto/extensions/gl/EGL_KHR_partial_update b/glew/auto/extensions/gl/EGL_KHR_partial_update
new file mode 100644
index 0000000..b6c574f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_partial_update
@@ -0,0 +1,6 @@
+EGL_KHR_partial_update
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_partial_update
+
+ EGL_BUFFER_AGE_KHR 0x313D
+ EGLBoolean eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_android b/glew/auto/extensions/gl/EGL_KHR_platform_android
new file mode 100644
index 0000000..b658e3f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_android
@@ -0,0 +1,5 @@
+EGL_KHR_platform_android
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_android
+
+ EGL_PLATFORM_ANDROID_KHR 0x3141
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_gbm b/glew/auto/extensions/gl/EGL_KHR_platform_gbm
new file mode 100644
index 0000000..d14df5d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_gbm
@@ -0,0 +1,5 @@
+EGL_KHR_platform_gbm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_gbm
+
+ EGL_PLATFORM_GBM_KHR 0x31D7
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_wayland b/glew/auto/extensions/gl/EGL_KHR_platform_wayland
new file mode 100644
index 0000000..e0d1351
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_wayland
@@ -0,0 +1,5 @@
+EGL_KHR_platform_wayland
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_wayland
+
+ EGL_PLATFORM_WAYLAND_KHR 0x31D8
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_x11 b/glew/auto/extensions/gl/EGL_KHR_platform_x11
new file mode 100644
index 0000000..ec9bd6c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_x11
@@ -0,0 +1,6 @@
+EGL_KHR_platform_x11
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_x11
+
+ EGL_PLATFORM_X11_KHR 0x31D5
+ EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
diff --git a/glew/auto/extensions/gl/EGL_KHR_reusable_sync b/glew/auto/extensions/gl/EGL_KHR_reusable_sync
new file mode 100644
index 0000000..687b7de
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_reusable_sync
@@ -0,0 +1,19 @@
+EGL_KHR_reusable_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_reusable_sync
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+ EGL_SYNC_STATUS_KHR 0x30F1
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_REUSABLE_KHR 0x30FA
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF
+ EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
+ EGLint eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+ EGLSyncKHR eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint* attrib_list)
+ EGLBoolean eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync)
+ EGLBoolean eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint* value)
+ EGLBoolean eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream b/glew/auto/extensions/gl/EGL_KHR_stream
new file mode 100644
index 0000000..2717f98
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream
@@ -0,0 +1,22 @@
+EGL_KHR_stream
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+ EGL_PRODUCER_FRAME_KHR 0x3212
+ EGL_CONSUMER_FRAME_KHR 0x3213
+ EGL_STREAM_STATE_KHR 0x3214
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGL_STREAM_STATE_EMPTY_KHR 0x3217
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+ EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+ EGL_BAD_STREAM_KHR 0x321B
+ EGL_BAD_STATE_KHR 0x321C
+ EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
+ EGLStreamKHR eglCreateStreamKHR (EGLDisplay dpy, const EGLint* attrib_list)
+ EGLBoolean eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint* value)
+ EGLBoolean eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR* value)
+ EGLBoolean eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_attrib b/glew/auto/extensions/gl/EGL_KHR_stream_attrib
new file mode 100644
index 0000000..dba35a6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_attrib
@@ -0,0 +1,13 @@
+EGL_KHR_stream_attrib
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_attrib
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+ EGL_STREAM_STATE_KHR 0x3214
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGLStreamKHR eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib* attrib_list)
+ EGLBoolean eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib* value)
+ EGLBoolean eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value)
+ EGLBoolean eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
+ EGLBoolean eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture b/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture
new file mode 100644
index 0000000..4e56ec3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture
@@ -0,0 +1,8 @@
+EGL_KHR_stream_consumer_gltexture
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_consumer_gltexture
+
+ EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+ EGLBoolean eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd b/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd
new file mode 100644
index 0000000..2ce3863
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd
@@ -0,0 +1,7 @@
+EGL_KHR_stream_cross_process_fd
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_cross_process_fd
+
+ EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor)
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_fifo b/glew/auto/extensions/gl/EGL_KHR_stream_fifo
new file mode 100644
index 0000000..4918805
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_fifo
@@ -0,0 +1,9 @@
+EGL_KHR_stream_fifo
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_fifo
+
+ EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+ EGL_STREAM_TIME_NOW_KHR 0x31FD
+ EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+ EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+ EGLBoolean eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator b/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator
new file mode 100644
index 0000000..27d08de
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator
@@ -0,0 +1,4 @@
+EGL_KHR_stream_producer_aldatalocator
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_producer_aldatalocator
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface b/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface
new file mode 100644
index 0000000..5eb0280
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface
@@ -0,0 +1,6 @@
+EGL_KHR_stream_producer_eglsurface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_producer_eglsurface
+
+ EGL_STREAM_BIT_KHR 0x0800
+ EGLSurface eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_surfaceless_context b/glew/auto/extensions/gl/EGL_KHR_surfaceless_context
new file mode 100644
index 0000000..70ad015
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_surfaceless_context
@@ -0,0 +1,4 @@
+EGL_KHR_surfaceless_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_surfaceless_context
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage b/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage
new file mode 100644
index 0000000..e2d4987
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage
@@ -0,0 +1,5 @@
+EGL_KHR_swap_buffers_with_damage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_swap_buffers_with_damage
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_KHR_vg_parent_image b/glew/auto/extensions/gl/EGL_KHR_vg_parent_image
new file mode 100644
index 0000000..b2d3e39
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_vg_parent_image
@@ -0,0 +1,5 @@
+EGL_KHR_vg_parent_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_vg_parent_image
+
+ EGL_VG_PARENT_IMAGE_KHR 0x30BA
diff --git a/glew/auto/extensions/gl/EGL_KHR_wait_sync b/glew/auto/extensions/gl/EGL_KHR_wait_sync
new file mode 100644
index 0000000..573e57b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_wait_sync
@@ -0,0 +1,5 @@
+EGL_KHR_wait_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_wait_sync
+
+ EGLint eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
diff --git a/glew/auto/extensions/gl/EGL_MESA_drm_image b/glew/auto/extensions/gl/EGL_MESA_drm_image
new file mode 100644
index 0000000..6c0d69b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_drm_image
@@ -0,0 +1,14 @@
+EGL_MESA_drm_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_drm_image
+
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+ EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+ EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+ EGL_DRM_BUFFER_USE_MESA 0x31D1
+ EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+ EGL_DRM_BUFFER_MESA 0x31D3
+ EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+ EGLImageKHR eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint* attrib_list)
+ EGLBoolean eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint* name, EGLint* handle, EGLint* stride)
diff --git a/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export b/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export
new file mode 100644
index 0000000..d97ba00
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export
@@ -0,0 +1,6 @@
+EGL_MESA_image_dma_buf_export
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_image_dma_buf_export
+
+ EGLBoolean eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int* fds, EGLint* strides, EGLint* offsets)
+ EGLBoolean eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int* fourcc, int* num_planes, EGLuint64KHR* modifiers)
diff --git a/glew/auto/extensions/gl/EGL_MESA_platform_gbm b/glew/auto/extensions/gl/EGL_MESA_platform_gbm
new file mode 100644
index 0000000..c80e4e2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_platform_gbm
@@ -0,0 +1,5 @@
+EGL_MESA_platform_gbm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_platform_gbm
+
+ EGL_PLATFORM_GBM_MESA 0x31D7
diff --git a/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless b/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless
new file mode 100644
index 0000000..88f553f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless
@@ -0,0 +1,5 @@
+EGL_MESA_platform_surfaceless
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_platform_surfaceless
+
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
diff --git a/glew/auto/extensions/gl/EGL_MESA_query_driver b/glew/auto/extensions/gl/EGL_MESA_query_driver
new file mode 100644
index 0000000..4c60b12
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_query_driver
@@ -0,0 +1,6 @@
+EGL_MESA_query_driver
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_query_driver
+
+ char* eglGetDisplayDriverConfig (EGLDisplay dpy)
+ const char* eglGetDisplayDriverName (EGLDisplay dpy)
diff --git a/glew/auto/extensions/gl/EGL_NOK_swap_region b/glew/auto/extensions/gl/EGL_NOK_swap_region
new file mode 100644
index 0000000..f94f987
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_swap_region
@@ -0,0 +1,5 @@
+EGL_NOK_swap_region
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_swap_region
+
+ EGLBoolean eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects)
diff --git a/glew/auto/extensions/gl/EGL_NOK_swap_region2 b/glew/auto/extensions/gl/EGL_NOK_swap_region2
new file mode 100644
index 0000000..8fe03fb
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_swap_region2
@@ -0,0 +1,5 @@
+EGL_NOK_swap_region2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_swap_region2
+
+ EGLBoolean eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects)
diff --git a/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap b/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap
new file mode 100644
index 0000000..34b9fa4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap
@@ -0,0 +1,5 @@
+EGL_NOK_texture_from_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_texture_from_pixmap
+
+ EGL_Y_INVERTED_NOK 0x307F
diff --git a/glew/auto/extensions/gl/EGL_NV_3dvision_surface b/glew/auto/extensions/gl/EGL_NV_3dvision_surface
new file mode 100644
index 0000000..8226538
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_3dvision_surface
@@ -0,0 +1,5 @@
+EGL_NV_3dvision_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_3dvision_surface
+
+ EGL_AUTO_STEREO_NV 0x3136
diff --git a/glew/auto/extensions/gl/EGL_NV_context_priority_realtime b/glew/auto/extensions/gl/EGL_NV_context_priority_realtime
new file mode 100644
index 0000000..37e0e55
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_context_priority_realtime
@@ -0,0 +1,5 @@
+EGL_NV_context_priority_realtime
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_context_priority_realtime
+
+ EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
diff --git a/glew/auto/extensions/gl/EGL_NV_coverage_sample b/glew/auto/extensions/gl/EGL_NV_coverage_sample
new file mode 100644
index 0000000..85bbbe8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_coverage_sample
@@ -0,0 +1,6 @@
+EGL_NV_coverage_sample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_coverage_sample
+
+ EGL_COVERAGE_BUFFERS_NV 0x30E0
+ EGL_COVERAGE_SAMPLES_NV 0x30E1
diff --git a/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve b/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve
new file mode 100644
index 0000000..04e5345
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve
@@ -0,0 +1,7 @@
+EGL_NV_coverage_sample_resolve
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_coverage_sample_resolve
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
diff --git a/glew/auto/extensions/gl/EGL_NV_cuda_event b/glew/auto/extensions/gl/EGL_NV_cuda_event
new file mode 100644
index 0000000..9ecb5c8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_cuda_event
@@ -0,0 +1,7 @@
+EGL_NV_cuda_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_cuda_event
+
+ EGL_CUDA_EVENT_HANDLE_NV 0x323B
+ EGL_SYNC_CUDA_EVENT_NV 0x323C
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
diff --git a/glew/auto/extensions/gl/EGL_NV_depth_nonlinear b/glew/auto/extensions/gl/EGL_NV_depth_nonlinear
new file mode 100644
index 0000000..c870064
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_depth_nonlinear
@@ -0,0 +1,7 @@
+EGL_NV_depth_nonlinear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_depth_nonlinear
+
+ EGL_DEPTH_ENCODING_NONE_NV 0
+ EGL_DEPTH_ENCODING_NV 0x30E2
+ EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
diff --git a/glew/auto/extensions/gl/EGL_NV_device_cuda b/glew/auto/extensions/gl/EGL_NV_device_cuda
new file mode 100644
index 0000000..7be003a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_device_cuda
@@ -0,0 +1,5 @@
+EGL_NV_device_cuda
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_device_cuda
+
+ EGL_CUDA_DEVICE_NV 0x323A
diff --git a/glew/auto/extensions/gl/EGL_NV_native_query b/glew/auto/extensions/gl/EGL_NV_native_query
new file mode 100644
index 0000000..e6cd377
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_native_query
@@ -0,0 +1,7 @@
+EGL_NV_native_query
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_native_query
+
+ EGLBoolean eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType* display_id)
+ EGLBoolean eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap)
+ EGLBoolean eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window)
diff --git a/glew/auto/extensions/gl/EGL_NV_post_convert_rounding b/glew/auto/extensions/gl/EGL_NV_post_convert_rounding
new file mode 100644
index 0000000..2997df3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_post_convert_rounding
@@ -0,0 +1,4 @@
+EGL_NV_post_convert_rounding
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_post_convert_rounding
+
diff --git a/glew/auto/extensions/gl/EGL_NV_post_sub_buffer b/glew/auto/extensions/gl/EGL_NV_post_sub_buffer
new file mode 100644
index 0000000..a15b586
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_post_sub_buffer
@@ -0,0 +1,6 @@
+EGL_NV_post_sub_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_post_sub_buffer
+
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+ EGLBoolean eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height)
diff --git a/glew/auto/extensions/gl/EGL_NV_quadruple_buffer b/glew/auto/extensions/gl/EGL_NV_quadruple_buffer
new file mode 100644
index 0000000..d820716
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_quadruple_buffer
@@ -0,0 +1,5 @@
+EGL_NV_quadruple_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_quadruple_buffer
+
+ EGL_QUADRUPLE_BUFFER_NV 0x3231
diff --git a/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..c069b18
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+EGL_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_robustness_video_memory_purge
+
+ EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage b/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage
new file mode 100644
index 0000000..eaf59ce
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage
@@ -0,0 +1,12 @@
+EGL_NV_stream_consumer_eglimage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_consumer_eglimage
+
+ EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+ EGL_STREAM_IMAGE_ADD_NV 0x3374
+ EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+ EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+ EGLint eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum* event, EGLAttrib* aux)
+ EGLBoolean eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage* pImage, EGLSync sync)
+ EGLBoolean eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR* modifiers, const EGLAttrib* attrib_list)
+ EGLBoolean eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv b/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv
new file mode 100644
index 0000000..54d5ce5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv
@@ -0,0 +1,10 @@
+EGL_NV_stream_consumer_gltexture_yuv
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_consumer_gltexture_yuv
+
+ EGL_YUV_BUFFER_EXT 0x3300
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+ EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+ EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_display b/glew/auto/extensions/gl/EGL_NV_stream_cross_display
new file mode 100644
index 0000000..0fefcd9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_display
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_display
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_display
+
+ EGL_STREAM_CROSS_DISPLAY_NV 0x334E
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_object b/glew/auto/extensions/gl/EGL_NV_stream_cross_object
new file mode 100644
index 0000000..3dbc0f5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_object
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_object
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_object
+
+ EGL_STREAM_CROSS_OBJECT_NV 0x334D
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_partition b/glew/auto/extensions/gl/EGL_NV_stream_cross_partition
new file mode 100644
index 0000000..d2ae4bf
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_partition
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_partition
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_partition
+
+ EGL_STREAM_CROSS_PARTITION_NV 0x323F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_process b/glew/auto/extensions/gl/EGL_NV_stream_cross_process
new file mode 100644
index 0000000..93245f2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_process
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_process
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_process
+
+ EGL_STREAM_CROSS_PROCESS_NV 0x3245
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_system b/glew/auto/extensions/gl/EGL_NV_stream_cross_system
new file mode 100644
index 0000000..1e18048
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_system
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_system
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_system
+
+ EGL_STREAM_CROSS_SYSTEM_NV 0x334F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_dma b/glew/auto/extensions/gl/EGL_NV_stream_dma
new file mode 100644
index 0000000..13dbe0b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_dma
@@ -0,0 +1,6 @@
+EGL_NV_stream_dma
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_dma
+
+ EGL_STREAM_DMA_NV 0x3371
+ EGL_STREAM_DMA_SERVER_NV 0x3372
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_fifo_next b/glew/auto/extensions/gl/EGL_NV_stream_fifo_next
new file mode 100644
index 0000000..a313323
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_fifo_next
@@ -0,0 +1,6 @@
+EGL_NV_stream_fifo_next
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_fifo_next
+
+ EGL_PENDING_FRAME_NV 0x3329
+ EGL_STREAM_TIME_PENDING_NV 0x332A
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous b/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous
new file mode 100644
index 0000000..d8631ba
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous
@@ -0,0 +1,5 @@
+EGL_NV_stream_fifo_synchronous
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_fifo_synchronous
+
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_flush b/glew/auto/extensions/gl/EGL_NV_stream_flush
new file mode 100644
index 0000000..8f09516
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_flush
@@ -0,0 +1,5 @@
+EGL_NV_stream_flush
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_flush
+
+ EGLBoolean eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_frame_limits b/glew/auto/extensions/gl/EGL_NV_stream_frame_limits
new file mode 100644
index 0000000..2bad6f4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_frame_limits
@@ -0,0 +1,6 @@
+EGL_NV_stream_frame_limits
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_frame_limits
+
+ EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+ EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_metadata b/glew/auto/extensions/gl/EGL_NV_stream_metadata
new file mode 100644
index 0000000..521d2f3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_metadata
@@ -0,0 +1,21 @@
+EGL_NV_stream_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_metadata
+
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+ EGL_PRODUCER_METADATA_NV 0x3253
+ EGL_CONSUMER_METADATA_NV 0x3254
+ EGL_METADATA0_SIZE_NV 0x3255
+ EGL_METADATA1_SIZE_NV 0x3256
+ EGL_METADATA2_SIZE_NV 0x3257
+ EGL_METADATA3_SIZE_NV 0x3258
+ EGL_METADATA0_TYPE_NV 0x3259
+ EGL_METADATA1_TYPE_NV 0x325A
+ EGL_METADATA2_TYPE_NV 0x325B
+ EGL_METADATA3_TYPE_NV 0x325C
+ EGL_PENDING_METADATA_NV 0x3328
+ EGLBoolean eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib* value)
+ EGLBoolean eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void* data)
+ EGLBoolean eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void* data)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_origin b/glew/auto/extensions/gl/EGL_NV_stream_origin
new file mode 100644
index 0000000..8ea1660
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_origin
@@ -0,0 +1,15 @@
+EGL_NV_stream_origin
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_origin
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+ EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+ EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+ EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+ EGL_LEFT_NV 0x336B
+ EGL_RIGHT_NV 0x336C
+ EGL_TOP_NV 0x336D
+ EGL_BOTTOM_NV 0x336E
+ EGL_X_AXIS_NV 0x336F
+ EGL_Y_AXIS_NV 0x3370
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_remote b/glew/auto/extensions/gl/EGL_NV_stream_remote
new file mode 100644
index 0000000..9912d75
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_remote
@@ -0,0 +1,12 @@
+EGL_NV_stream_remote
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_remote
+
+ EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+ EGL_STREAM_TYPE_NV 0x3241
+ EGL_STREAM_PROTOCOL_NV 0x3242
+ EGL_STREAM_ENDPOINT_NV 0x3243
+ EGL_STREAM_LOCAL_NV 0x3244
+ EGL_STREAM_PROTOCOL_FD_NV 0x3246
+ EGL_STREAM_PRODUCER_NV 0x3247
+ EGL_STREAM_CONSUMER_NV 0x3248
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_reset b/glew/auto/extensions/gl/EGL_NV_stream_reset
new file mode 100644
index 0000000..f137755
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_reset
@@ -0,0 +1,7 @@
+EGL_NV_stream_reset
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_reset
+
+ EGL_SUPPORT_RESET_NV 0x3334
+ EGL_SUPPORT_REUSE_NV 0x3335
+ EGLBoolean eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket b/glew/auto/extensions/gl/EGL_NV_stream_socket
new file mode 100644
index 0000000..878cd9c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket
@@ -0,0 +1,7 @@
+EGL_NV_stream_socket
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket
+
+ EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+ EGL_SOCKET_HANDLE_NV 0x324C
+ EGL_SOCKET_TYPE_NV 0x324D
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket_inet b/glew/auto/extensions/gl/EGL_NV_stream_socket_inet
new file mode 100644
index 0000000..14f69fe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket_inet
@@ -0,0 +1,5 @@
+EGL_NV_stream_socket_inet
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket_inet
+
+ EGL_SOCKET_TYPE_INET_NV 0x324F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket_unix b/glew/auto/extensions/gl/EGL_NV_stream_socket_unix
new file mode 100644
index 0000000..1291470
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket_unix
@@ -0,0 +1,5 @@
+EGL_NV_stream_socket_unix
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket_unix
+
+ EGL_SOCKET_TYPE_UNIX_NV 0x324E
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_sync b/glew/auto/extensions/gl/EGL_NV_stream_sync
new file mode 100644
index 0000000..d47a0cd
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_sync
@@ -0,0 +1,7 @@
+EGL_NV_stream_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_sync
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_NEW_FRAME_NV 0x321F
+ EGLSyncKHR eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_NV_sync b/glew/auto/extensions/gl/EGL_NV_sync
new file mode 100644
index 0000000..9c66753
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_sync
@@ -0,0 +1,23 @@
+EGL_NV_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_sync
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+ EGL_SYNC_STATUS_NV 0x30E7
+ EGL_SIGNALED_NV 0x30E8
+ EGL_UNSIGNALED_NV 0x30E9
+ EGL_ALREADY_SIGNALED_NV 0x30EA
+ EGL_TIMEOUT_EXPIRED_NV 0x30EB
+ EGL_CONDITION_SATISFIED_NV 0x30EC
+ EGL_SYNC_TYPE_NV 0x30ED
+ EGL_SYNC_CONDITION_NV 0x30EE
+ EGL_SYNC_FENCE_NV 0x30EF
+ EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFF
+ EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
+ EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout)
+ EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint* attrib_list)
+ EGLBoolean eglDestroySyncNV (EGLSyncNV sync)
+ EGLBoolean eglFenceNV (EGLSyncNV sync)
+ EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint* value)
+ EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode)
diff --git a/glew/auto/extensions/gl/EGL_NV_system_time b/glew/auto/extensions/gl/EGL_NV_system_time
new file mode 100644
index 0000000..94d8239
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_system_time
@@ -0,0 +1,6 @@
+EGL_NV_system_time
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_system_time
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV (void)
+ EGLuint64NV eglGetSystemTimeNV (void)
diff --git a/glew/auto/extensions/gl/EGL_NV_triple_buffer b/glew/auto/extensions/gl/EGL_NV_triple_buffer
new file mode 100644
index 0000000..1ffe970
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_triple_buffer
@@ -0,0 +1,5 @@
+EGL_NV_triple_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_triple_buffer
+
+ EGL_TRIPLE_BUFFER_NV 0x3230
diff --git a/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer b/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer
new file mode 100644
index 0000000..eff695d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer
@@ -0,0 +1,5 @@
+EGL_TIZEN_image_native_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_TIZEN_image_native_buffer
+
+ EGL_NATIVE_BUFFER_TIZEN 0x32A0
diff --git a/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface b/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface
new file mode 100644
index 0000000..7d3afbe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface
@@ -0,0 +1,5 @@
+EGL_TIZEN_image_native_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_TIZEN_image_native_surface
+
+ EGL_NATIVE_SURFACE_TIZEN 0x32A1
diff --git a/glew/auto/extensions/gl/EGL_WL_bind_wayland_display b/glew/auto/extensions/gl/EGL_WL_bind_wayland_display
new file mode 100644
index 0000000..db6c49f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_WL_bind_wayland_display
@@ -0,0 +1,14 @@
+EGL_WL_bind_wayland_display
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_WL_bind_wayland_display
+
+ EGL_WAYLAND_BUFFER_WL 0x31D5
+ EGL_WAYLAND_PLANE_WL 0x31D6
+ EGL_TEXTURE_Y_U_V_WL 0x31D7
+ EGL_TEXTURE_Y_UV_WL 0x31D8
+ EGL_TEXTURE_Y_XUXV_WL 0x31D9
+ EGL_TEXTURE_EXTERNAL_WL 0x31DA
+ EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+ EGLBoolean eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display* display)
+ EGLBoolean eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource* buffer, EGLint attribute, EGLint* value)
+ EGLBoolean eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display* display)
diff --git a/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image b/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image
new file mode 100644
index 0000000..f914195
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image
@@ -0,0 +1,5 @@
+EGL_WL_create_wayland_buffer_from_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_WL_create_wayland_buffer_from_image
+
+ struct wl_buffer* eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image)
diff --git a/glew/auto/extensions/gl/GLX_3DFX_multisample b/glew/auto/extensions/gl/GLX_3DFX_multisample
new file mode 100644
index 0000000..66b1748
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_3DFX_multisample
@@ -0,0 +1,6 @@
+GLX_3DFX_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_3DFX_multisample
+
+ GLX_SAMPLE_BUFFERS_3DFX 0x8050
+ GLX_SAMPLES_3DFX 0x8051
diff --git a/glew/auto/extensions/gl/GLX_AMD_gpu_association b/glew/auto/extensions/gl/GLX_AMD_gpu_association
new file mode 100644
index 0000000..e4bdbb4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_AMD_gpu_association
@@ -0,0 +1,23 @@
+GLX_AMD_gpu_association
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_AMD_gpu_association
+
+ GLX_GPU_VENDOR_AMD 0x1F00
+ GLX_GPU_RENDERER_STRING_AMD 0x1F01
+ GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+ GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+ GLX_GPU_RAM_AMD 0x21A3
+ GLX_GPU_CLOCK_AMD 0x21A4
+ GLX_GPU_NUM_PIPES_AMD 0x21A5
+ GLX_GPU_NUM_SIMD_AMD 0x21A6
+ GLX_GPU_NUM_RB_AMD 0x21A7
+ GLX_GPU_NUM_SPI_AMD 0x21A8
+ void glXBlitContextFramebufferAMD (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLXContext glXCreateAssociatedContextAMD (unsigned int id, GLXContext share_list)
+ GLXContext glXCreateAssociatedContextAttribsAMD (unsigned int id, GLXContext share_context, const int* attribList)
+ Bool glXDeleteAssociatedContextAMD (GLXContext ctx)
+ unsigned int glXGetContextGPUIDAMD (GLXContext ctx)
+ GLXContext glXGetCurrentAssociatedContextAMD (void)
+ unsigned int glXGetGPUIDsAMD (unsigned int maxCount, unsigned int* ids)
+ int glXGetGPUInfoAMD (unsigned int id, int property, GLenum dataType, unsigned int size, void* data)
+ Bool glXMakeAssociatedContextCurrentAMD (GLXContext ctx)
diff --git a/glew/auto/extensions/gl/GLX_ARB_context_flush_control b/glew/auto/extensions/gl/GLX_ARB_context_flush_control
new file mode 100644
index 0000000..75293a1
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_context_flush_control
@@ -0,0 +1,7 @@
+GLX_ARB_context_flush_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_context_flush_control
+
+ GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+ GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+ GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context b/glew/auto/extensions/gl/GLX_ARB_create_context
new file mode 100644
index 0000000..9cf87e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context
@@ -0,0 +1,10 @@
+GLX_ARB_create_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context
+
+ GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+ GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+ GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+ GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+ GLX_CONTEXT_FLAGS_ARB 0x2094
+ GLXContext glXCreateContextAttribsARB (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int* attrib_list)
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_no_error b/glew/auto/extensions/gl/GLX_ARB_create_context_no_error
new file mode 100644
index 0000000..15f7999
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_no_error
@@ -0,0 +1,5 @@
+GLX_ARB_create_context_no_error
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_no_error
+
+ GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_profile b/glew/auto/extensions/gl/GLX_ARB_create_context_profile
new file mode 100644
index 0000000..e34e492
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_profile
@@ -0,0 +1,7 @@
+GLX_ARB_create_context_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_profile
+
+ GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+ GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+ GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_robustness b/glew/auto/extensions/gl/GLX_ARB_create_context_robustness
new file mode 100644
index 0000000..73bb9c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_robustness
@@ -0,0 +1,8 @@
+GLX_ARB_create_context_robustness
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_robustness
+
+ GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+ GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ GLX_NO_RESET_NOTIFICATION_ARB 0x8261
diff --git a/glew/auto/extensions/gl/GLX_ARB_fbconfig_float b/glew/auto/extensions/gl/GLX_ARB_fbconfig_float
new file mode 100644
index 0000000..882b4c9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_fbconfig_float
@@ -0,0 +1,6 @@
+GLX_ARB_fbconfig_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_fbconfig_float
+
+ GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+ GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
diff --git a/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..db59d27
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GLX_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_framebuffer_sRGB
+
+ GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
diff --git a/glew/auto/extensions/gl/GLX_ARB_get_proc_address b/glew/auto/extensions/gl/GLX_ARB_get_proc_address
new file mode 100644
index 0000000..e2cb2c5
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_get_proc_address
@@ -0,0 +1,5 @@
+GLX_ARB_get_proc_address
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.txt
+GLX_ARB_get_proc_address
+
+ extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
diff --git a/glew/auto/extensions/gl/GLX_ARB_multisample b/glew/auto/extensions/gl/GLX_ARB_multisample
new file mode 100644
index 0000000..5469836
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_multisample
@@ -0,0 +1,6 @@
+GLX_ARB_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_multisample
+
+ GLX_SAMPLE_BUFFERS_ARB 100000
+ GLX_SAMPLES_ARB 100001
diff --git a/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation b/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation
new file mode 100644
index 0000000..5c0987e
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation
@@ -0,0 +1,5 @@
+GLX_ARB_robustness_application_isolation
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_robustness_application_isolation
+
+ GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..1c83f27
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation
@@ -0,0 +1,5 @@
+GLX_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_robustness_share_group_isolation
+
+ GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object b/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object
new file mode 100644
index 0000000..740d0df
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object
@@ -0,0 +1,5 @@
+GLX_ARB_vertex_buffer_object
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_vertex_buffer_object
+
+ GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
diff --git a/glew/auto/extensions/gl/GLX_ATI_pixel_format_float b/glew/auto/extensions/gl/GLX_ATI_pixel_format_float
new file mode 100644
index 0000000..5336da4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ATI_pixel_format_float
@@ -0,0 +1,5 @@
+GLX_ATI_pixel_format_float
+
+GLX_ATI_pixel_format_float
+
+ GLX_RGBA_FLOAT_ATI_BIT 0x00000100
diff --git a/glew/auto/extensions/gl/GLX_ATI_render_texture b/glew/auto/extensions/gl/GLX_ATI_render_texture
new file mode 100644
index 0000000..6b35814
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ATI_render_texture
@@ -0,0 +1,42 @@
+GLX_ATI_render_texture
+
+GLX_ATI_render_texture
+
+ GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800
+ GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801
+ GLX_TEXTURE_FORMAT_ATI 0x9802
+ GLX_TEXTURE_TARGET_ATI 0x9803
+ GLX_MIPMAP_TEXTURE_ATI 0x9804
+ GLX_TEXTURE_RGB_ATI 0x9805
+ GLX_TEXTURE_RGBA_ATI 0x9806
+ GLX_NO_TEXTURE_ATI 0x9807
+ GLX_TEXTURE_CUBE_MAP_ATI 0x9808
+ GLX_TEXTURE_1D_ATI 0x9809
+ GLX_TEXTURE_2D_ATI 0x980A
+ GLX_MIPMAP_LEVEL_ATI 0x980B
+ GLX_CUBE_MAP_FACE_ATI 0x980C
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
+ GLX_FRONT_LEFT_ATI 0x9813
+ GLX_FRONT_RIGHT_ATI 0x9814
+ GLX_BACK_LEFT_ATI 0x9815
+ GLX_BACK_RIGHT_ATI 0x9816
+ GLX_AUX0_ATI 0x9817
+ GLX_AUX1_ATI 0x9818
+ GLX_AUX2_ATI 0x9819
+ GLX_AUX3_ATI 0x981A
+ GLX_AUX4_ATI 0x981B
+ GLX_AUX5_ATI 0x981C
+ GLX_AUX6_ATI 0x981D
+ GLX_AUX7_ATI 0x981E
+ GLX_AUX8_ATI 0x981F
+ GLX_AUX9_ATI 0x9820
+ GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821
+ GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822
+ void glXBindTexImageATI (Display *dpy, GLXPbuffer pbuf, int buffer)
+ void glXReleaseTexImageATI (Display *dpy, GLXPbuffer pbuf, int buffer)
+ void glXDrawableAttribATI (Display *dpy, GLXDrawable draw, const int *attrib_list)
diff --git a/glew/auto/extensions/gl/GLX_EXT_buffer_age b/glew/auto/extensions/gl/GLX_EXT_buffer_age
new file mode 100644
index 0000000..2dafead
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_buffer_age
@@ -0,0 +1,5 @@
+GLX_EXT_buffer_age
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_buffer_age
+
+ GLX_BACK_BUFFER_AGE_EXT 0x20F4
diff --git a/glew/auto/extensions/gl/GLX_EXT_context_priority b/glew/auto/extensions/gl/GLX_EXT_context_priority
new file mode 100644
index 0000000..285ca15
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_context_priority
@@ -0,0 +1,8 @@
+GLX_EXT_context_priority
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_context_priority
+
+ GLX_CONTEXT_PRIORITY_LEVEL_EXT 0x3100
+ GLX_CONTEXT_PRIORITY_HIGH_EXT 0x3101
+ GLX_CONTEXT_PRIORITY_MEDIUM_EXT 0x3102
+ GLX_CONTEXT_PRIORITY_LOW_EXT 0x3103
diff --git a/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile b/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile
new file mode 100644
index 0000000..43897f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile
@@ -0,0 +1,5 @@
+GLX_EXT_create_context_es2_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_create_context_es2_profile
+
+ GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile b/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile
new file mode 100644
index 0000000..5df31c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile
@@ -0,0 +1,5 @@
+GLX_EXT_create_context_es_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_create_context_es_profile
+
+ GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float b/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float
new file mode 100644
index 0000000..d1f36de
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float
@@ -0,0 +1,6 @@
+GLX_EXT_fbconfig_packed_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_fbconfig_packed_float
+
+ GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+ GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
diff --git a/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..b48f8e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GLX_EXT_framebuffer_sRGB
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_framebuffer_sRGB
+
+ GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
diff --git a/glew/auto/extensions/gl/GLX_EXT_get_drawable_type b/glew/auto/extensions/gl/GLX_EXT_get_drawable_type
new file mode 100644
index 0000000..140ab8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_get_drawable_type
@@ -0,0 +1,5 @@
+GLX_EXT_get_drawable_type
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_get_drawable_type
+
+ GLX_DRAWABLE_TYPE 0x8010
diff --git a/glew/auto/extensions/gl/GLX_EXT_import_context b/glew/auto/extensions/gl/GLX_EXT_import_context
new file mode 100644
index 0000000..d63ba0e
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_import_context
@@ -0,0 +1,13 @@
+GLX_EXT_import_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_import_context
+
+ GLX_SHARE_CONTEXT_EXT 0x800A
+ GLX_VISUAL_ID_EXT 0x800B
+ GLX_SCREEN_EXT 0x800C
+ void glXFreeContextEXT (Display* dpy, GLXContext context)
+ GLXContextID glXGetContextIDEXT (const GLXContext context)
+ Display* glXGetCurrentDisplayEXT (void)
+ GLXContext glXImportContextEXT (Display* dpy, GLXContextID contextID)
+ int glXQueryContextInfoEXT (Display* dpy, GLXContext context, int attribute, int* value)
+ typedef XID GLXContextID
diff --git a/glew/auto/extensions/gl/GLX_EXT_libglvnd b/glew/auto/extensions/gl/GLX_EXT_libglvnd
new file mode 100644
index 0000000..5a8d7cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_libglvnd
@@ -0,0 +1,5 @@
+GLX_EXT_libglvnd
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_libglvnd
+
+ GLX_VENDOR_NAMES_EXT 0x20F6
diff --git a/glew/auto/extensions/gl/GLX_EXT_no_config_context b/glew/auto/extensions/gl/GLX_EXT_no_config_context
new file mode 100644
index 0000000..1ae9a5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_no_config_context
@@ -0,0 +1,4 @@
+GLX_EXT_no_config_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_no_config_context
+
diff --git a/glew/auto/extensions/gl/GLX_EXT_scene_marker b/glew/auto/extensions/gl/GLX_EXT_scene_marker
new file mode 100644
index 0000000..064caac
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_scene_marker
@@ -0,0 +1,4 @@
+GLX_EXT_scene_marker
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt
+GLX_EXT_scene_marker
+
diff --git a/glew/auto/extensions/gl/GLX_EXT_stereo_tree b/glew/auto/extensions/gl/GLX_EXT_stereo_tree
new file mode 100644
index 0000000..e3fbd07
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_stereo_tree
@@ -0,0 +1,7 @@
+GLX_EXT_stereo_tree
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_stereo_tree
+
+ GLX_STEREO_NOTIFY_EXT 0x00000000
+ GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
+ GLX_STEREO_TREE_EXT 0x20F5
diff --git a/glew/auto/extensions/gl/GLX_EXT_swap_control b/glew/auto/extensions/gl/GLX_EXT_swap_control
new file mode 100644
index 0000000..fe0ba16
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_swap_control
@@ -0,0 +1,7 @@
+GLX_EXT_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_swap_control
+
+ GLX_SWAP_INTERVAL_EXT 0x20F1
+ GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+ void glXSwapIntervalEXT (Display* dpy, GLXDrawable drawable, int interval)
diff --git a/glew/auto/extensions/gl/GLX_EXT_swap_control_tear b/glew/auto/extensions/gl/GLX_EXT_swap_control_tear
new file mode 100644
index 0000000..1a498aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_swap_control_tear
@@ -0,0 +1,5 @@
+GLX_EXT_swap_control_tear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_swap_control_tear
+
+ GLX_LATE_SWAPS_TEAR_EXT 0x20F3
diff --git a/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap b/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap
new file mode 100644
index 0000000..773fccf
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap
@@ -0,0 +1,39 @@
+GLX_EXT_texture_from_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_texture_from_pixmap
+
+ GLX_TEXTURE_1D_BIT_EXT 0x00000001
+ GLX_TEXTURE_2D_BIT_EXT 0x00000002
+ GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+ GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+ GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+ GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+ GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+ GLX_Y_INVERTED_EXT 0x20D4
+ GLX_TEXTURE_FORMAT_EXT 0x20D5
+ GLX_TEXTURE_TARGET_EXT 0x20D6
+ GLX_MIPMAP_TEXTURE_EXT 0x20D7
+ GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+ GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+ GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+ GLX_TEXTURE_1D_EXT 0x20DB
+ GLX_TEXTURE_2D_EXT 0x20DC
+ GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+ GLX_FRONT_LEFT_EXT 0x20DE
+ GLX_FRONT_EXT 0x20DE
+ GLX_FRONT_RIGHT_EXT 0x20DF
+ GLX_BACK_LEFT_EXT 0x20E0
+ GLX_BACK_EXT 0x20E0
+ GLX_BACK_RIGHT_EXT 0x20E1
+ GLX_AUX0_EXT 0x20E2
+ GLX_AUX1_EXT 0x20E3
+ GLX_AUX2_EXT 0x20E4
+ GLX_AUX3_EXT 0x20E5
+ GLX_AUX4_EXT 0x20E6
+ GLX_AUX5_EXT 0x20E7
+ GLX_AUX6_EXT 0x20E8
+ GLX_AUX7_EXT 0x20E9
+ GLX_AUX8_EXT 0x20EA
+ GLX_AUX9_EXT 0x20EB
+ void glXBindTexImageEXT (Display* dpy, GLXDrawable drawable, int buffer, const int* attrib_list)
+ void glXReleaseTexImageEXT (Display* dpy, GLXDrawable drawable, int buffer)
diff --git a/glew/auto/extensions/gl/GLX_EXT_visual_info b/glew/auto/extensions/gl/GLX_EXT_visual_info
new file mode 100644
index 0000000..a057173
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_visual_info
@@ -0,0 +1,20 @@
+GLX_EXT_visual_info
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_visual_info
+
+ GLX_X_VISUAL_TYPE_EXT 0x22
+ GLX_TRANSPARENT_TYPE_EXT 0x23
+ GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+ GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+ GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+ GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+ GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+ GLX_NONE_EXT 0x8000
+ GLX_TRUE_COLOR_EXT 0x8002
+ GLX_DIRECT_COLOR_EXT 0x8003
+ GLX_PSEUDO_COLOR_EXT 0x8004
+ GLX_STATIC_COLOR_EXT 0x8005
+ GLX_GRAY_SCALE_EXT 0x8006
+ GLX_STATIC_GRAY_EXT 0x8007
+ GLX_TRANSPARENT_RGB_EXT 0x8008
+ GLX_TRANSPARENT_INDEX_EXT 0x8009
diff --git a/glew/auto/extensions/gl/GLX_EXT_visual_rating b/glew/auto/extensions/gl/GLX_EXT_visual_rating
new file mode 100644
index 0000000..1688cad
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_visual_rating
@@ -0,0 +1,7 @@
+GLX_EXT_visual_rating
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_visual_rating
+
+ GLX_VISUAL_CAVEAT_EXT 0x20
+ GLX_SLOW_VISUAL_EXT 0x8001
+ GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
diff --git a/glew/auto/extensions/gl/GLX_INTEL_swap_event b/glew/auto/extensions/gl/GLX_INTEL_swap_event
new file mode 100644
index 0000000..edb6dd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_INTEL_swap_event
@@ -0,0 +1,8 @@
+GLX_INTEL_swap_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_INTEL_swap_event
+
+ GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+ GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+ GLX_COPY_COMPLETE_INTEL 0x8181
+ GLX_FLIP_COMPLETE_INTEL 0x8182
diff --git a/glew/auto/extensions/gl/GLX_MESA_agp_offset b/glew/auto/extensions/gl/GLX_MESA_agp_offset
new file mode 100644
index 0000000..002527d
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_agp_offset
@@ -0,0 +1,5 @@
+GLX_MESA_agp_offset
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_agp_offset
+
+ unsigned int glXGetAGPOffsetMESA (const void* pointer)
diff --git a/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer b/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer
new file mode 100644
index 0000000..e0a1d3f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer
@@ -0,0 +1,5 @@
+GLX_MESA_copy_sub_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_copy_sub_buffer
+
+ void glXCopySubBufferMESA (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height)
diff --git a/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap b/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap
new file mode 100644
index 0000000..240467c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap
@@ -0,0 +1,5 @@
+GLX_MESA_pixmap_colormap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_pixmap_colormap
+
+ GLXPixmap glXCreateGLXPixmapMESA (Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap)
diff --git a/glew/auto/extensions/gl/GLX_MESA_query_renderer b/glew/auto/extensions/gl/GLX_MESA_query_renderer
new file mode 100644
index 0000000..86e667f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_query_renderer
@@ -0,0 +1,19 @@
+GLX_MESA_query_renderer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_query_renderer
+
+ GLX_RENDERER_VENDOR_ID_MESA 0x8183
+ GLX_RENDERER_DEVICE_ID_MESA 0x8184
+ GLX_RENDERER_VERSION_MESA 0x8185
+ GLX_RENDERER_ACCELERATED_MESA 0x8186
+ GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+ GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+ GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+ GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+ GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+ GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+ GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+ Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int* value)
+ const char* glXQueryCurrentRendererStringMESA (int attribute)
+ Bool glXQueryRendererIntegerMESA (Display* dpy, int screen, int renderer, int attribute, unsigned int* value)
+ const char* glXQueryRendererStringMESA (Display* dpy, int screen, int renderer, int attribute)
diff --git a/glew/auto/extensions/gl/GLX_MESA_release_buffers b/glew/auto/extensions/gl/GLX_MESA_release_buffers
new file mode 100644
index 0000000..a8b3efd
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_release_buffers
@@ -0,0 +1,5 @@
+GLX_MESA_release_buffers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_release_buffers
+
+ Bool glXReleaseBuffersMESA (Display* dpy, GLXDrawable drawable)
diff --git a/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode b/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode
new file mode 100644
index 0000000..3b18162
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode
@@ -0,0 +1,7 @@
+GLX_MESA_set_3dfx_mode
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_set_3dfx_mode
+
+ GLX_3DFX_WINDOW_MODE_MESA 0x1
+ GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+ GLboolean glXSet3DfxModeMESA (GLint mode)
diff --git a/glew/auto/extensions/gl/GLX_MESA_swap_control b/glew/auto/extensions/gl/GLX_MESA_swap_control
new file mode 100644
index 0000000..5ad2011
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_swap_control
@@ -0,0 +1,6 @@
+GLX_MESA_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_swap_control
+
+ int glXGetSwapIntervalMESA (void)
+ int glXSwapIntervalMESA (unsigned int interval)
diff --git a/glew/auto/extensions/gl/GLX_NV_copy_buffer b/glew/auto/extensions/gl/GLX_NV_copy_buffer
new file mode 100644
index 0000000..dbaa501
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_copy_buffer
@@ -0,0 +1,6 @@
+GLX_NV_copy_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_copy_buffer
+
+ void glXCopyBufferSubDataNV (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glXNamedCopyBufferSubDataNV (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GLX_NV_copy_image b/glew/auto/extensions/gl/GLX_NV_copy_image
new file mode 100644
index 0000000..9405e37
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_copy_image
@@ -0,0 +1,6 @@
+GLX_NV_copy_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_copy_image
+
+ void glXCopyImageSubDataNV (Display* dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GLX_NV_delay_before_swap b/glew/auto/extensions/gl/GLX_NV_delay_before_swap
new file mode 100644
index 0000000..02fab8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_delay_before_swap
@@ -0,0 +1,5 @@
+GLX_NV_delay_before_swap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_delay_before_swap
+
+ Bool glXDelayBeforeSwapNV (Display* dpy, GLXDrawable drawable, GLfloat seconds)
diff --git a/glew/auto/extensions/gl/GLX_NV_float_buffer b/glew/auto/extensions/gl/GLX_NV_float_buffer
new file mode 100644
index 0000000..3c1f9e9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_float_buffer
@@ -0,0 +1,5 @@
+GLX_NV_float_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_float_buffer
+
+ GLX_FLOAT_COMPONENTS_NV 0x20B0
diff --git a/glew/auto/extensions/gl/GLX_NV_multigpu_context b/glew/auto/extensions/gl/GLX_NV_multigpu_context
new file mode 100644
index 0000000..663f412
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_multigpu_context
@@ -0,0 +1,9 @@
+GLX_NV_multigpu_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_multigpu_context
+
+ GLX_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+ GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+ GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+ GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+ GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
diff --git a/glew/auto/extensions/gl/GLX_NV_multisample_coverage b/glew/auto/extensions/gl/GLX_NV_multisample_coverage
new file mode 100644
index 0000000..896bbc4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_multisample_coverage
@@ -0,0 +1,6 @@
+GLX_NV_multisample_coverage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_multisample_coverage
+
+ GLX_COLOR_SAMPLES_NV 0x20B3
+ GLX_COVERAGE_SAMPLES_NV 100001
diff --git a/glew/auto/extensions/gl/GLX_NV_present_video b/glew/auto/extensions/gl/GLX_NV_present_video
new file mode 100644
index 0000000..2f87fed
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_present_video
@@ -0,0 +1,7 @@
+GLX_NV_present_video
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_present_video
+
+ GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+ int glXBindVideoDeviceNV (Display* dpy, unsigned int video_slot, unsigned int video_device, const int* attrib_list)
+ unsigned int* glXEnumerateVideoDevicesNV (Display* dpy, int screen, int* nelements)
diff --git a/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..2ff8b91
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+GLX_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_robustness_video_memory_purge
+
+ GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
diff --git a/glew/auto/extensions/gl/GLX_NV_swap_group b/glew/auto/extensions/gl/GLX_NV_swap_group
new file mode 100644
index 0000000..e78acdc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_swap_group
@@ -0,0 +1,10 @@
+GLX_NV_swap_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_swap_group
+
+ Bool glXBindSwapBarrierNV (Display* dpy, GLuint group, GLuint barrier)
+ Bool glXJoinSwapGroupNV (Display* dpy, GLXDrawable drawable, GLuint group)
+ Bool glXQueryFrameCountNV (Display* dpy, int screen, GLuint* count)
+ Bool glXQueryMaxSwapGroupsNV (Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers)
+ Bool glXQuerySwapGroupNV (Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier)
+ Bool glXResetFrameCountNV (Display* dpy, int screen)
diff --git a/glew/auto/extensions/gl/GLX_NV_vertex_array_range b/glew/auto/extensions/gl/GLX_NV_vertex_array_range
new file mode 100644
index 0000000..9250ec2
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_vertex_array_range
@@ -0,0 +1,6 @@
+GLX_NV_vertex_array_range
+http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt
+GLX_NV_vertex_array_range
+
+ void * glXAllocateMemoryNV (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority)
+ void glXFreeMemoryNV (void *pointer)
diff --git a/glew/auto/extensions/gl/GLX_NV_video_capture b/glew/auto/extensions/gl/GLX_NV_video_capture
new file mode 100644
index 0000000..4f81c3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_video_capture
@@ -0,0 +1,13 @@
+GLX_NV_video_capture
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_video_capture
+
+ GLX_DEVICE_ID_NV 0x20CD
+ GLX_UNIQUE_ID_NV 0x20CE
+ GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+ int glXBindVideoCaptureDeviceNV (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device)
+ GLXVideoCaptureDeviceNV* glXEnumerateVideoCaptureDevicesNV (Display* dpy, int screen, int* nelements)
+ void glXLockVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device)
+ int glXQueryVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value)
+ void glXReleaseVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device)
+ typedef XID GLXVideoCaptureDeviceNV
diff --git a/glew/auto/extensions/gl/GLX_NV_video_out b/glew/auto/extensions/gl/GLX_NV_video_out
new file mode 100644
index 0000000..75e6235
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_video_out
@@ -0,0 +1,20 @@
+GLX_NV_video_out
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_video_out
+
+ GLX_VIDEO_OUT_COLOR_NV 0x20C3
+ GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+ GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+ GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+ GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+ GLX_VIDEO_OUT_FRAME_NV 0x20C8
+ GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+ GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+ GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+ GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+ int glXBindVideoImageNV (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer)
+ int glXGetVideoDeviceNV (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice)
+ int glXGetVideoInfoNV (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo)
+ int glXReleaseVideoDeviceNV (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice)
+ int glXReleaseVideoImageNV (Display* dpy, GLXPbuffer pbuf)
+ int glXSendPbufferToVideoNV (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock)
diff --git a/glew/auto/extensions/gl/GLX_OML_swap_method b/glew/auto/extensions/gl/GLX_OML_swap_method
new file mode 100644
index 0000000..4834429
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_OML_swap_method
@@ -0,0 +1,11 @@
+GLX_OML_swap_method
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_OML_swap_method
+
+ GLX_SWAP_METHOD_OML 0x8060
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
diff --git a/glew/auto/extensions/gl/GLX_OML_sync_control b/glew/auto/extensions/gl/GLX_OML_sync_control
new file mode 100644
index 0000000..0a35acc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_OML_sync_control
@@ -0,0 +1,9 @@
+GLX_OML_sync_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_OML_sync_control
+
+ Bool glXGetMscRateOML (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator)
+ Bool glXGetSyncValuesOML (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc)
+ int64_t glXSwapBuffersMscOML (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder)
+ Bool glXWaitForMscOML (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc)
+ Bool glXWaitForSbcOML (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc)
diff --git a/glew/auto/extensions/gl/GLX_SGIS_blended_overlay b/glew/auto/extensions/gl/GLX_SGIS_blended_overlay
new file mode 100644
index 0000000..25d7d7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_blended_overlay
@@ -0,0 +1,5 @@
+GLX_SGIS_blended_overlay
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_blended_overlay
+
+ GLX_BLENDED_RGBA_SGIS 0x8025
diff --git a/glew/auto/extensions/gl/GLX_SGIS_color_range b/glew/auto/extensions/gl/GLX_SGIS_color_range
new file mode 100644
index 0000000..9286cff
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_color_range
@@ -0,0 +1,4 @@
+GLX_SGIS_color_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt
+GLX_SGIS_color_range
+
diff --git a/glew/auto/extensions/gl/GLX_SGIS_multisample b/glew/auto/extensions/gl/GLX_SGIS_multisample
new file mode 100644
index 0000000..0c746ef
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_multisample
@@ -0,0 +1,6 @@
+GLX_SGIS_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_multisample
+
+ GLX_SAMPLE_BUFFERS_SGIS 100000
+ GLX_SAMPLES_SGIS 100001
diff --git a/glew/auto/extensions/gl/GLX_SGIS_shared_multisample b/glew/auto/extensions/gl/GLX_SGIS_shared_multisample
new file mode 100644
index 0000000..895b847
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_shared_multisample
@@ -0,0 +1,6 @@
+GLX_SGIS_shared_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_shared_multisample
+
+ GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+ GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
diff --git a/glew/auto/extensions/gl/GLX_SGIX_fbconfig b/glew/auto/extensions/gl/GLX_SGIX_fbconfig
new file mode 100644
index 0000000..86756bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_fbconfig
@@ -0,0 +1,23 @@
+GLX_SGIX_fbconfig
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_fbconfig
+
+ GLX_WINDOW_BIT_SGIX 0x00000001
+ GLX_RGBA_BIT_SGIX 0x00000001
+ GLX_PIXMAP_BIT_SGIX 0x00000002
+ GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+ GLX_SCREEN_EXT 0x800C
+ GLX_DRAWABLE_TYPE_SGIX 0x8010
+ GLX_RENDER_TYPE_SGIX 0x8011
+ GLX_X_RENDERABLE_SGIX 0x8012
+ GLX_FBCONFIG_ID_SGIX 0x8013
+ GLX_RGBA_TYPE_SGIX 0x8014
+ GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+ GLXFBConfigSGIX* glXChooseFBConfigSGIX (Display* dpy, int screen, int* attrib_list, int* nelements)
+ GLXContext glXCreateContextWithConfigSGIX (Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)
+ GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap)
+ int glXGetFBConfigAttribSGIX (Display* dpy, GLXFBConfigSGIX config, int attribute, int* value)
+ GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display* dpy, XVisualInfo* vis)
+ XVisualInfo* glXGetVisualFromFBConfigSGIX (Display* dpy, GLXFBConfigSGIX config)
+ typedef XID GLXFBConfigIDSGIX
+ typedef struct __GLXFBConfigRec *GLXFBConfigSGIX
diff --git a/glew/auto/extensions/gl/GLX_SGIX_hyperpipe b/glew/auto/extensions/gl/GLX_SGIX_hyperpipe
new file mode 100644
index 0000000..80fd7d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_hyperpipe
@@ -0,0 +1,26 @@
+GLX_SGIX_hyperpipe
+http://oss.sgi.com/projects/ogl-sample/registry/SGIX/hyperpipe_group.txt
+GLX_SGIX_hyperpipe
+
+ GLX_HYPERPIPE_ID_SGIX 0x8030
+ GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+ GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+ GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+ GLX_PIPE_RECT_SGIX 0x00000001
+ GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+ GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+ GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+ GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+ GLX_BAD_HYPERPIPE_SGIX 92
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int networkId; } GLXHyperpipeNetworkSGIX;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int channel; unsigned int participationType; int timeSlice; } GLXHyperpipeConfigSGIX;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int srcXOrigin; int srcYOrigin; int srcWidth; int srcHeight; int destXOrigin; int destYOrigin; int destWidth; int destHeight; } GLXPipeRect;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int XOrigin; int YOrigin; int maxHeight; int maxWidth; } GLXPipeRectLimits;
+ GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *dpy, int *npipes)
+ int glXHyperpipeConfigSGIX (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId)
+ GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *dpy, int hpId, int *npipes)
+ int glXDestroyHyperpipeConfigSGIX (Display *dpy, int hpId)
+ int glXBindHyperpipeSGIX (Display *dpy, int hpId)
+ int glXQueryHyperpipeBestAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList)
+ int glXHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList)
+ int glXQueryHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_pbuffer b/glew/auto/extensions/gl/GLX_SGIX_pbuffer
new file mode 100644
index 0000000..556c100
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_pbuffer
@@ -0,0 +1,36 @@
+GLX_SGIX_pbuffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_pbuffer
+
+ GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+ GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+ GLX_PBUFFER_BIT_SGIX 0x00000004
+ GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+ GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+ GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+ GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+ GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+ GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+ GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+ GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+ GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+ GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+ GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+ GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+ GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+ GLX_PRESERVED_CONTENTS_SGIX 0x801B
+ GLX_LARGEST_PBUFFER_SGIX 0x801C
+ GLX_WIDTH_SGIX 0x801D
+ GLX_HEIGHT_SGIX 0x801E
+ GLX_EVENT_MASK_SGIX 0x801F
+ GLX_DAMAGED_SGIX 0x8020
+ GLX_SAVED_SGIX 0x8021
+ GLX_WINDOW_SGIX 0x8022
+ GLX_PBUFFER_SGIX 0x8023
+ GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list)
+ void glXDestroyGLXPbufferSGIX (Display* dpy, GLXPbufferSGIX pbuf)
+ void glXGetSelectedEventSGIX (Display* dpy, GLXDrawable drawable, unsigned long* mask)
+ void glXQueryGLXPbufferSGIX (Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value)
+ void glXSelectEventSGIX (Display* dpy, GLXDrawable drawable, unsigned long mask)
+ typedef XID GLXPbufferSGIX
+ typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX
diff --git a/glew/auto/extensions/gl/GLX_SGIX_swap_barrier b/glew/auto/extensions/gl/GLX_SGIX_swap_barrier
new file mode 100644
index 0000000..61447c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_swap_barrier
@@ -0,0 +1,6 @@
+GLX_SGIX_swap_barrier
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_swap_barrier
+
+ void glXBindSwapBarrierSGIX (Display* dpy, GLXDrawable drawable, int barrier)
+ Bool glXQueryMaxSwapBarriersSGIX (Display* dpy, int screen, int* max)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_swap_group b/glew/auto/extensions/gl/GLX_SGIX_swap_group
new file mode 100644
index 0000000..790ea6b
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_swap_group
@@ -0,0 +1,5 @@
+GLX_SGIX_swap_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_swap_group
+
+ void glXJoinSwapGroupSGIX (Display* dpy, GLXDrawable drawable, GLXDrawable member)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_video_resize b/glew/auto/extensions/gl/GLX_SGIX_video_resize
new file mode 100644
index 0000000..fd834bf
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_video_resize
@@ -0,0 +1,11 @@
+GLX_SGIX_video_resize
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_video_resize
+
+ GLX_SYNC_FRAME_SGIX 0x00000000
+ GLX_SYNC_SWAP_SGIX 0x00000001
+ int glXBindChannelToWindowSGIX (Display* display, int screen, int channel, Window window)
+ int glXChannelRectSGIX (Display* display, int screen, int channel, int x, int y, int w, int h)
+ int glXChannelRectSyncSGIX (Display* display, int screen, int channel, GLenum synctype)
+ int glXQueryChannelDeltasSGIX (Display* display, int screen, int channel, int* x, int* y, int* w, int* h)
+ int glXQueryChannelRectSGIX (Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_visual_select_group b/glew/auto/extensions/gl/GLX_SGIX_visual_select_group
new file mode 100644
index 0000000..6aed22a
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_visual_select_group
@@ -0,0 +1,5 @@
+GLX_SGIX_visual_select_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_visual_select_group
+
+ GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
diff --git a/glew/auto/extensions/gl/GLX_SGI_cushion b/glew/auto/extensions/gl/GLX_SGI_cushion
new file mode 100644
index 0000000..99ab02f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_cushion
@@ -0,0 +1,5 @@
+GLX_SGI_cushion
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_cushion
+
+ void glXCushionSGI (Display* dpy, Window window, float cushion)
diff --git a/glew/auto/extensions/gl/GLX_SGI_make_current_read b/glew/auto/extensions/gl/GLX_SGI_make_current_read
new file mode 100644
index 0000000..2a4d8fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_make_current_read
@@ -0,0 +1,6 @@
+GLX_SGI_make_current_read
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_make_current_read
+
+ GLXDrawable glXGetCurrentReadDrawableSGI (void)
+ Bool glXMakeCurrentReadSGI (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
diff --git a/glew/auto/extensions/gl/GLX_SGI_swap_control b/glew/auto/extensions/gl/GLX_SGI_swap_control
new file mode 100644
index 0000000..40032fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_swap_control
@@ -0,0 +1,5 @@
+GLX_SGI_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_swap_control
+
+ int glXSwapIntervalSGI (int interval)
diff --git a/glew/auto/extensions/gl/GLX_SGI_video_sync b/glew/auto/extensions/gl/GLX_SGI_video_sync
new file mode 100644
index 0000000..9959651
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_video_sync
@@ -0,0 +1,6 @@
+GLX_SGI_video_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_video_sync
+
+ int glXGetVideoSyncSGI (unsigned int* count)
+ int glXWaitVideoSyncSGI (int divisor, int remainder, unsigned int* count)
diff --git a/glew/auto/extensions/gl/GLX_SUN_get_transparent_index b/glew/auto/extensions/gl/GLX_SUN_get_transparent_index
new file mode 100644
index 0000000..cb52690
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SUN_get_transparent_index
@@ -0,0 +1,5 @@
+GLX_SUN_get_transparent_index
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SUN_get_transparent_index
+
+ Status glXGetTransparentIndexSUN (Display* dpy, Window overlay, Window underlay, unsigned long* pTransparentIndex)
diff --git a/glew/auto/extensions/gl/GLX_SUN_video_resize b/glew/auto/extensions/gl/GLX_SUN_video_resize
new file mode 100644
index 0000000..3a5a176
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SUN_video_resize
@@ -0,0 +1,8 @@
+GLX_SUN_video_resize
+http://wwws.sun.com/software/graphics/opengl/extensions/glx_sun_video_resize.txt
+GLX_SUN_video_resize
+
+ GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD
+ GLX_VIDEO_RESIZE_SUN 0x8171
+ int glXVideoResizeSUN (Display* display, GLXDrawable window, float factor)
+ int glXGetVideoResizeSUN (Display* display, GLXDrawable window, float* factor)
diff --git a/glew/auto/extensions/gl/GL_3DFX_multisample b/glew/auto/extensions/gl/GL_3DFX_multisample
new file mode 100644
index 0000000..c7f62ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_multisample
@@ -0,0 +1,8 @@
+GL_3DFX_multisample
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_multisample.txt
+GL_3DFX_multisample
+
+ GL_MULTISAMPLE_3DFX 0x86B2
+ GL_SAMPLE_BUFFERS_3DFX 0x86B3
+ GL_SAMPLES_3DFX 0x86B4
+ GL_MULTISAMPLE_BIT_3DFX 0x20000000
diff --git a/glew/auto/extensions/gl/GL_3DFX_tbuffer b/glew/auto/extensions/gl/GL_3DFX_tbuffer
new file mode 100644
index 0000000..c4e1074
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_tbuffer
@@ -0,0 +1,5 @@
+GL_3DFX_tbuffer
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_tbuffer.txt
+GL_3DFX_tbuffer
+
+ void glTbufferMask3DFX (GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1 b/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1
new file mode 100644
index 0000000..f66e76c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1
@@ -0,0 +1,6 @@
+GL_3DFX_texture_compression_FXT1
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_texture_compression_FXT1.txt
+GL_3DFX_texture_compression_FXT1
+
+ GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+ GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
diff --git a/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor b/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor
new file mode 100644
index 0000000..b0d67f5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor
@@ -0,0 +1,6 @@
+GL_AMD_blend_minmax_factor
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_blend_minmax_factor.txt
+GL_AMD_blend_minmax_factor
+
+ GL_FACTOR_MIN_AMD 0x901C
+ GL_FACTOR_MAX_AMD 0x901D
diff --git a/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture b/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture
new file mode 100644
index 0000000..29b87f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture
@@ -0,0 +1,6 @@
+GL_AMD_compressed_3DC_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_3DC_texture.txt
+GL_AMD_compressed_3DC_texture
+
+ GL_3DC_X_AMD 0x87F9
+ GL_3DC_XY_AMD 0x87FA
diff --git a/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture b/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture
new file mode 100644
index 0000000..16e680e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture
@@ -0,0 +1,7 @@
+GL_AMD_compressed_ATC_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt
+GL_AMD_compressed_ATC_texture
+
+ GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
+ GL_ATC_RGB_AMD 0x8C92
+ GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
diff --git a/glew/auto/extensions/gl/GL_AMD_conservative_depth b/glew/auto/extensions/gl/GL_AMD_conservative_depth
new file mode 100644
index 0000000..49008ed
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_conservative_depth
@@ -0,0 +1,4 @@
+GL_AMD_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_conservative_depth.txt
+GL_AMD_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_AMD_debug_output b/glew/auto/extensions/gl/GL_AMD_debug_output
new file mode 100644
index 0000000..8a19a53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_debug_output
@@ -0,0 +1,23 @@
+GL_AMD_debug_output
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_debug_output.txt
+GL_AMD_debug_output
+
+ GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+ GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+ GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+ GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+ GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+ GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+ GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+ GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+ GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+ GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+ GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+ GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+ void glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam)
+ void glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message)
+ typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam)
diff --git a/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate b/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate
new file mode 100644
index 0000000..3089342
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate
@@ -0,0 +1,6 @@
+GL_AMD_depth_clamp_separate
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_depth_clamp_separate.txt
+GL_AMD_depth_clamp_separate
+
+ GL_DEPTH_CLAMP_NEAR_AMD 0x901E
+ GL_DEPTH_CLAMP_FAR_AMD 0x901F
diff --git a/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend b/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend
new file mode 100644
index 0000000..1564d9d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend
@@ -0,0 +1,8 @@
+GL_AMD_draw_buffers_blend
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_draw_buffers_blend.txt
+GL_AMD_draw_buffers_blend
+
+ void glBlendEquationIndexedAMD (GLuint buf, GLenum mode)
+ void glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst)
+ void glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
diff --git a/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced b/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced
new file mode 100644
index 0000000..a4d21e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced
@@ -0,0 +1,12 @@
+GL_AMD_framebuffer_multisample_advanced
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_multisample_advanced.txt
+GL_AMD_framebuffer_multisample_advanced
+
+ GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
+ GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
+ GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
+ GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
+ GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
+ GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
+ void glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions b/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions
new file mode 100644
index 0000000..edb8474
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions
@@ -0,0 +1,12 @@
+GL_AMD_framebuffer_sample_positions
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt
+GL_AMD_framebuffer_sample_positions
+
+ GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+ GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
+ GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
+ GL_ALL_PIXELS_AMD 0xFFFFFFFF
+ void glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat* values)
+ void glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values)
+ void glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values)
+ void glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat* values)
diff --git a/glew/auto/extensions/gl/GL_AMD_gcn_shader b/glew/auto/extensions/gl/GL_AMD_gcn_shader
new file mode 100644
index 0000000..9ade26b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gcn_shader
@@ -0,0 +1,4 @@
+GL_AMD_gcn_shader
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gcn_shader.txt
+GL_AMD_gcn_shader
+
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float
new file mode 100644
index 0000000..c15f6f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float
@@ -0,0 +1,17 @@
+GL_AMD_gpu_shader_half_float
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float.txt
+GL_AMD_gpu_shader_half_float
+
+ GL_FLOAT16_NV 0x8FF8
+ GL_FLOAT16_VEC2_NV 0x8FF9
+ GL_FLOAT16_VEC3_NV 0x8FFA
+ GL_FLOAT16_VEC4_NV 0x8FFB
+ GL_FLOAT16_MAT2_AMD 0x91C5
+ GL_FLOAT16_MAT3_AMD 0x91C6
+ GL_FLOAT16_MAT4_AMD 0x91C7
+ GL_FLOAT16_MAT2x3_AMD 0x91C8
+ GL_FLOAT16_MAT2x4_AMD 0x91C9
+ GL_FLOAT16_MAT3x2_AMD 0x91CA
+ GL_FLOAT16_MAT3x4_AMD 0x91CB
+ GL_FLOAT16_MAT4x2_AMD 0x91CC
+ GL_FLOAT16_MAT4x3_AMD 0x91CD
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch
new file mode 100644
index 0000000..8cbc117
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch
@@ -0,0 +1,33 @@
+GL_AMD_gpu_shader_half_float_fetch
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float_fetch.txt
+GL_AMD_gpu_shader_half_float_fetch
+
+ GL_FLOAT16_SAMPLER_1D_AMD 0x91CE
+ GL_FLOAT16_SAMPLER_2D_AMD 0x91CF
+ GL_FLOAT16_SAMPLER_3D_AMD 0x91D0
+ GL_FLOAT16_SAMPLER_CUBE_AMD 0x91D1
+ GL_FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2
+ GL_FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3
+ GL_FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4
+ GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5
+ GL_FLOAT16_SAMPLER_BUFFER_AMD 0x91D6
+ GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7
+ GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8
+ GL_FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9
+ GL_FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA
+ GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB
+ GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC
+ GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD
+ GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE
+ GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF
+ GL_FLOAT16_IMAGE_1D_AMD 0x91E0
+ GL_FLOAT16_IMAGE_2D_AMD 0x91E1
+ GL_FLOAT16_IMAGE_3D_AMD 0x91E2
+ GL_FLOAT16_IMAGE_2D_RECT_AMD 0x91E3
+ GL_FLOAT16_IMAGE_CUBE_AMD 0x91E4
+ GL_FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5
+ GL_FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6
+ GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7
+ GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8
+ GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9
+ GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16 b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16
new file mode 100644
index 0000000..6918da0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16
@@ -0,0 +1,4 @@
+GL_AMD_gpu_shader_int16
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int16.txt
+GL_AMD_gpu_shader_int16
+
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64 b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64
new file mode 100644
index 0000000..5612dbb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64
@@ -0,0 +1,4 @@
+GL_AMD_gpu_shader_int64
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int64.txt
+GL_AMD_gpu_shader_int64
+
diff --git a/glew/auto/extensions/gl/GL_AMD_interleaved_elements b/glew/auto/extensions/gl/GL_AMD_interleaved_elements
new file mode 100644
index 0000000..b930ad4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_interleaved_elements
@@ -0,0 +1,14 @@
+GL_AMD_interleaved_elements
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_interleaved_elements.txt
+GL_AMD_interleaved_elements
+
+ GL_RED 0x1903
+ GL_GREEN 0x1904
+ GL_BLUE 0x1905
+ GL_ALPHA 0x1906
+ GL_RG8UI 0x8238
+ GL_RG16UI 0x823A
+ GL_RGBA8UI 0x8D7C
+ GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
+ GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
+ void glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect b/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect
new file mode 100644
index 0000000..03efcc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_AMD_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_multi_draw_indirect.txt
+GL_AMD_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride)
+ void glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_AMD_name_gen_delete b/glew/auto/extensions/gl/GL_AMD_name_gen_delete
new file mode 100644
index 0000000..f0af15e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_name_gen_delete
@@ -0,0 +1,12 @@
+GL_AMD_name_gen_delete
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_name_gen_delete.txt
+GL_AMD_name_gen_delete
+
+ GL_DATA_BUFFER_AMD 0x9151
+ GL_PERFORMANCE_MONITOR_AMD 0x9152
+ GL_QUERY_OBJECT_AMD 0x9153
+ GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+ GL_SAMPLER_OBJECT_AMD 0x9155
+ void glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint* names)
+ void glGenNamesAMD (GLenum identifier, GLuint num, GLuint* names)
+ GLboolean glIsNameAMD (GLenum identifier, GLuint name)
diff --git a/glew/auto/extensions/gl/GL_AMD_occlusion_query_event b/glew/auto/extensions/gl/GL_AMD_occlusion_query_event
new file mode 100644
index 0000000..a33396d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_occlusion_query_event
@@ -0,0 +1,11 @@
+GL_AMD_occlusion_query_event
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_occlusion_query_event.txt
+GL_AMD_occlusion_query_event
+
+ GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
+ GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
+ GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
+ GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
+ GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
+ GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
+ void glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param)
diff --git a/glew/auto/extensions/gl/GL_AMD_performance_monitor b/glew/auto/extensions/gl/GL_AMD_performance_monitor
new file mode 100644
index 0000000..3b9a996
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_performance_monitor
@@ -0,0 +1,22 @@
+GL_AMD_performance_monitor
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_performance_monitor.txt
+GL_AMD_performance_monitor
+
+ GL_COUNTER_TYPE_AMD 0x8BC0
+ GL_COUNTER_RANGE_AMD 0x8BC1
+ GL_UNSIGNED_INT64_AMD 0x8BC2
+ GL_PERCENTAGE_AMD 0x8BC3
+ GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+ GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+ GL_PERFMON_RESULT_AMD 0x8BC6
+ void glBeginPerfMonitorAMD (GLuint monitor)
+ void glDeletePerfMonitorsAMD (GLsizei n, GLuint* monitors)
+ void glEndPerfMonitorAMD (GLuint monitor)
+ void glGenPerfMonitorsAMD (GLsizei n, GLuint* monitors)
+ void glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten)
+ void glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data)
+ void glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString)
+ void glGetPerfMonitorCountersAMD (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters)
+ void glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString)
+ void glGetPerfMonitorGroupsAMD (GLint* numGroups, GLsizei groupsSize, GLuint *groups)
+ void glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList)
diff --git a/glew/auto/extensions/gl/GL_AMD_pinned_memory b/glew/auto/extensions/gl/GL_AMD_pinned_memory
new file mode 100644
index 0000000..888fbc8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_pinned_memory
@@ -0,0 +1,5 @@
+GL_AMD_pinned_memory
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_pinned_memory.txt
+GL_AMD_pinned_memory
+
+ GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
diff --git a/glew/auto/extensions/gl/GL_AMD_program_binary_Z400 b/glew/auto/extensions/gl/GL_AMD_program_binary_Z400
new file mode 100644
index 0000000..6cedc0f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_program_binary_Z400
@@ -0,0 +1,5 @@
+GL_AMD_program_binary_Z400
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_program_binary_Z400.txt
+GL_AMD_program_binary_Z400
+
+ GL_Z400_BINARY_AMD 0x8740
diff --git a/glew/auto/extensions/gl/GL_AMD_query_buffer_object b/glew/auto/extensions/gl/GL_AMD_query_buffer_object
new file mode 100644
index 0000000..f31abc6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_query_buffer_object
@@ -0,0 +1,7 @@
+GL_AMD_query_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_query_buffer_object.txt
+GL_AMD_query_buffer_object
+
+ GL_QUERY_BUFFER_AMD 0x9192
+ GL_QUERY_BUFFER_BINDING_AMD 0x9193
+ GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
diff --git a/glew/auto/extensions/gl/GL_AMD_sample_positions b/glew/auto/extensions/gl/GL_AMD_sample_positions
new file mode 100644
index 0000000..9d62bb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_sample_positions
@@ -0,0 +1,6 @@
+GL_AMD_sample_positions
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sample_positions.txt
+GL_AMD_sample_positions
+
+ GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+ void glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat* val)
diff --git a/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture b/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture
new file mode 100644
index 0000000..e12e2aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture
@@ -0,0 +1,5 @@
+GL_AMD_seamless_cubemap_per_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_seamless_cubemap_per_texture.txt
+GL_AMD_seamless_cubemap_per_texture
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops b/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops
new file mode 100644
index 0000000..5557a69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops
@@ -0,0 +1,4 @@
+GL_AMD_shader_atomic_counter_ops
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_atomic_counter_ops.txt
+GL_AMD_shader_atomic_counter_ops
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_ballot b/glew/auto/extensions/gl/GL_AMD_shader_ballot
new file mode 100644
index 0000000..53283fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_ballot
@@ -0,0 +1,4 @@
+GL_AMD_shader_ballot
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_ballot.txt
+GL_AMD_shader_ballot
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter b/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter
new file mode 100644
index 0000000..58d38eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter
@@ -0,0 +1,4 @@
+GL_AMD_shader_explicit_vertex_parameter
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_explicit_vertex_parameter.txt
+GL_AMD_shader_explicit_vertex_parameter
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod b/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod
new file mode 100644
index 0000000..58e4196
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod
@@ -0,0 +1,4 @@
+GL_AMD_shader_image_load_store_lod
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt
+GL_AMD_shader_image_load_store_lod
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_stencil_export b/glew/auto/extensions/gl/GL_AMD_shader_stencil_export
new file mode 100644
index 0000000..b49a254
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_stencil_export
@@ -0,0 +1,4 @@
+GL_AMD_shader_stencil_export
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_export.txt
+GL_AMD_shader_stencil_export
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export b/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export
new file mode 100644
index 0000000..4ac4b1f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export
@@ -0,0 +1,4 @@
+GL_AMD_shader_stencil_value_export
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_value_export.txt
+GL_AMD_shader_stencil_value_export
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax b/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax
new file mode 100644
index 0000000..b9d6e5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax
@@ -0,0 +1,4 @@
+GL_AMD_shader_trinary_minmax
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_trinary_minmax.txt
+GL_AMD_shader_trinary_minmax
+
diff --git a/glew/auto/extensions/gl/GL_AMD_sparse_texture b/glew/auto/extensions/gl/GL_AMD_sparse_texture
new file mode 100644
index 0000000..21ff28e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_sparse_texture
@@ -0,0 +1,15 @@
+GL_AMD_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sparse_texture.txt
+GL_AMD_sparse_texture
+
+ GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
+ GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
+ GL_MIN_SPARSE_LEVEL_AMD 0x919B
+ GL_MIN_LOD_WARNING_AMD 0x919C
+ void glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)
+ void glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended b/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended
new file mode 100644
index 0000000..8aceec1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended
@@ -0,0 +1,9 @@
+GL_AMD_stencil_operation_extended
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_stencil_operation_extended.txt
+GL_AMD_stencil_operation_extended
+
+ GL_SET_AMD 0x874A
+ GL_REPLACE_VALUE_AMD 0x874B
+ GL_STENCIL_OP_VALUE_AMD 0x874C
+ GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
+ void glStencilOpValueAMD (GLenum face, GLuint value)
diff --git a/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod b/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod
new file mode 100644
index 0000000..4ef8020
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod
@@ -0,0 +1,4 @@
+GL_AMD_texture_gather_bias_lod
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_gather_bias_lod.txt
+GL_AMD_texture_gather_bias_lod
+
diff --git a/glew/auto/extensions/gl/GL_AMD_texture_texture4 b/glew/auto/extensions/gl/GL_AMD_texture_texture4
new file mode 100644
index 0000000..bc71132
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_texture_texture4
@@ -0,0 +1,4 @@
+GL_AMD_texture_texture4
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_texture4.txt
+GL_AMD_texture_texture4
+
diff --git a/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles b/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles
new file mode 100644
index 0000000..ff7b54a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles
@@ -0,0 +1,4 @@
+GL_AMD_transform_feedback3_lines_triangles
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback3_lines_triangles.txt
+GL_AMD_transform_feedback3_lines_triangles
+
diff --git a/glew/auto/extensions/gl/GL_AMD_transform_feedback4 b/glew/auto/extensions/gl/GL_AMD_transform_feedback4
new file mode 100644
index 0000000..baa0b4f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_transform_feedback4
@@ -0,0 +1,5 @@
+GL_AMD_transform_feedback4
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback4.txt
+GL_AMD_transform_feedback4
+
+ GL_STREAM_RASTERIZATION_AMD 0x91A0
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer b/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer
new file mode 100644
index 0000000..c18b26b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer
@@ -0,0 +1,4 @@
+GL_AMD_vertex_shader_layer
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt
+GL_AMD_vertex_shader_layer
+
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator b/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator
new file mode 100644
index 0000000..d183070
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator
@@ -0,0 +1,13 @@
+GL_AMD_vertex_shader_tessellator
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt
+GL_AMD_vertex_shader_tessellator
+
+ GL_SAMPLER_BUFFER_AMD 0x9001
+ GL_INT_SAMPLER_BUFFER_AMD 0x9002
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+ GL_TESSELLATION_MODE_AMD 0x9004
+ GL_TESSELLATION_FACTOR_AMD 0x9005
+ GL_DISCRETE_AMD 0x9006
+ GL_CONTINUOUS_AMD 0x9007
+ void glTessellationFactorAMD (GLfloat factor)
+ void glTessellationModeAMD (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index b/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index
new file mode 100644
index 0000000..a36f42d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index
@@ -0,0 +1,4 @@
+GL_AMD_vertex_shader_viewport_index
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt
+GL_AMD_vertex_shader_viewport_index
+
diff --git a/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a b/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a
new file mode 100644
index 0000000..c5def68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a
@@ -0,0 +1,4 @@
+GL_ANDROID_extension_pack_es31a
+https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt
+GL_ANDROID_extension_pack_es31a
+
diff --git a/glew/auto/extensions/gl/GL_ANGLE_depth_texture b/glew/auto/extensions/gl/GL_ANGLE_depth_texture
new file mode 100644
index 0000000..3849305
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_depth_texture
@@ -0,0 +1,4 @@
+GL_ANGLE_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/depth_texture.txt
+GL_ANGLE_depth_texture
+
diff --git a/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit
new file mode 100644
index 0000000..57a7a51
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_ANGLE_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_blit.txt
+GL_ANGLE_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+ GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
+ GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
+ void glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample
new file mode 100644
index 0000000..857a3ad
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample
@@ -0,0 +1,8 @@
+GL_ANGLE_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_multisample.txt
+GL_ANGLE_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
+ GL_MAX_SAMPLES_ANGLE 0x8D57
+ void glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays b/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays
new file mode 100644
index 0000000..4a4c390
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays
@@ -0,0 +1,8 @@
+GL_ANGLE_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/instanced_arrays.txt
+GL_ANGLE_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+ void glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
+ void glVertexAttribDivisorANGLE (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order b/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order
new file mode 100644
index 0000000..5c59c51
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order
@@ -0,0 +1,5 @@
+GL_ANGLE_pack_reverse_row_order
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/pack_reverse_row_order.txt
+GL_ANGLE_pack_reverse_row_order
+
+ GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
diff --git a/glew/auto/extensions/gl/GL_ANGLE_program_binary b/glew/auto/extensions/gl/GL_ANGLE_program_binary
new file mode 100644
index 0000000..dec7f06
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_program_binary
@@ -0,0 +1,5 @@
+GL_ANGLE_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/program_binary.txt
+GL_ANGLE_program_binary
+
+ GL_PROGRAM_BINARY_ANGLE 0x93A6
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1
new file mode 100644
index 0000000..1c12eb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt1
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt1
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3
new file mode 100644
index 0000000..ccaec40
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt3
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt3
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5
new file mode 100644
index 0000000..a0f1720
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt5
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt5
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_usage b/glew/auto/extensions/gl/GL_ANGLE_texture_usage
new file mode 100644
index 0000000..f902311
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_usage
@@ -0,0 +1,6 @@
+GL_ANGLE_texture_usage
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_usage.txt
+GL_ANGLE_texture_usage
+
+ GL_TEXTURE_USAGE_ANGLE 0x93A2
+ GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_timer_query b/glew/auto/extensions/gl/GL_ANGLE_timer_query
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_timer_query
@@ -0,0 +1,21 @@
+GL_ANGLE_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/timer_query.txt
+GL_ANGLE_timer_query
+
+ GL_QUERY_COUNTER_BITS_ANGLE 0x8864
+ GL_CURRENT_QUERY_ANGLE 0x8865
+ GL_QUERY_RESULT_ANGLE 0x8866
+ GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867
+ GL_TIME_ELAPSED_ANGLE 0x88BF
+ GL_TIMESTAMP_ANGLE 0x8E28
+ void glBeginQueryANGLE (GLenum target, GLuint id)
+ void glDeleteQueriesANGLE (GLsizei n, const GLuint* ids)
+ void glEndQueryANGLE (GLenum target)
+ void glGenQueriesANGLE (GLsizei n, GLuint* ids)
+ void glGetQueryObjecti64vANGLE (GLuint id, GLenum pname, GLint64* params)
+ void glGetQueryObjectivANGLE (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectui64vANGLE (GLuint id, GLenum pname, GLuint64* params)
+ void glGetQueryObjectuivANGLE (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivANGLE (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryANGLE (GLuint id)
+ void glQueryCounterANGLE (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source b/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source
new file mode 100644
index 0000000..dee5768
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source
@@ -0,0 +1,6 @@
+GL_ANGLE_translated_shader_source
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/translated_shader_source.txt
+GL_ANGLE_translated_shader_source
+
+ GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
+ void glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
diff --git a/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil b/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil
new file mode 100644
index 0000000..19c979b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil
@@ -0,0 +1,5 @@
+GL_APPLE_aux_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_aux_depth_stencil.txt
+GL_APPLE_aux_depth_stencil
+
+ GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
diff --git a/glew/auto/extensions/gl/GL_APPLE_client_storage b/glew/auto/extensions/gl/GL_APPLE_client_storage
new file mode 100644
index 0000000..fac0225
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_client_storage
@@ -0,0 +1,5 @@
+GL_APPLE_client_storage
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_client_storage.txt
+GL_APPLE_client_storage
+
+ GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
diff --git a/glew/auto/extensions/gl/GL_APPLE_clip_distance b/glew/auto/extensions/gl/GL_APPLE_clip_distance
new file mode 100644
index 0000000..83c12ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_clip_distance
@@ -0,0 +1,13 @@
+GL_APPLE_clip_distance
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_clip_distance.txt
+GL_APPLE_clip_distance
+
+ GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
+ GL_CLIP_DISTANCE0_APPLE 0x3000
+ GL_CLIP_DISTANCE1_APPLE 0x3001
+ GL_CLIP_DISTANCE2_APPLE 0x3002
+ GL_CLIP_DISTANCE3_APPLE 0x3003
+ GL_CLIP_DISTANCE4_APPLE 0x3004
+ GL_CLIP_DISTANCE5_APPLE 0x3005
+ GL_CLIP_DISTANCE6_APPLE 0x3006
+ GL_CLIP_DISTANCE7_APPLE 0x3007
diff --git a/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float b/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float
new file mode 100644
index 0000000..d7bb6b3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float
@@ -0,0 +1,4 @@
+GL_APPLE_color_buffer_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_color_buffer_packed_float.txt
+GL_APPLE_color_buffer_packed_float
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels b/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels
new file mode 100644
index 0000000..ab2b389
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels
@@ -0,0 +1,5 @@
+GL_APPLE_copy_texture_levels
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_copy_texture_levels.txt
+GL_APPLE_copy_texture_levels
+
+ void glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount)
diff --git a/glew/auto/extensions/gl/GL_APPLE_element_array b/glew/auto/extensions/gl/GL_APPLE_element_array
new file mode 100644
index 0000000..4db72b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_element_array
@@ -0,0 +1,12 @@
+GL_APPLE_element_array
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_element_array.txt
+GL_APPLE_element_array
+
+ GL_ELEMENT_ARRAY_APPLE 0x8A0C
+ GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+ GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+ void glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count)
+ void glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count)
+ void glElementPointerAPPLE (GLenum type, const void *pointer)
+ void glMultiDrawElementArrayAPPLE (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount)
+ void glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_APPLE_fence b/glew/auto/extensions/gl/GL_APPLE_fence
new file mode 100644
index 0000000..d26a7d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_fence
@@ -0,0 +1,14 @@
+GL_APPLE_fence
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_fence.txt
+GL_APPLE_fence
+
+ GL_DRAW_PIXELS_APPLE 0x8A0A
+ GL_FENCE_APPLE 0x8A0B
+ void glDeleteFencesAPPLE (GLsizei n, const GLuint* fences)
+ void glFinishFenceAPPLE (GLuint fence)
+ void glFinishObjectAPPLE (GLenum object, GLint name)
+ void glGenFencesAPPLE (GLsizei n, GLuint* fences)
+ GLboolean glIsFenceAPPLE (GLuint fence)
+ void glSetFenceAPPLE (GLuint fence)
+ GLboolean glTestFenceAPPLE (GLuint fence)
+ GLboolean glTestObjectAPPLE (GLenum object, GLuint name)
diff --git a/glew/auto/extensions/gl/GL_APPLE_float_pixels b/glew/auto/extensions/gl/GL_APPLE_float_pixels
new file mode 100644
index 0000000..3eacd42
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_float_pixels
@@ -0,0 +1,18 @@
+GL_APPLE_float_pixels
+http://www.opengl.org/registry/specs/APPLE/float_pixels.txt
+GL_APPLE_float_pixels
+
+ GL_HALF_APPLE 0x140B
+ GL_COLOR_FLOAT_APPLE 0x8A0F
+ GL_RGBA_FLOAT32_APPLE 0x8814
+ GL_RGB_FLOAT32_APPLE 0x8815
+ GL_ALPHA_FLOAT32_APPLE 0x8816
+ GL_INTENSITY_FLOAT32_APPLE 0x8817
+ GL_LUMINANCE_FLOAT32_APPLE 0x8818
+ GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+ GL_RGBA_FLOAT16_APPLE 0x881A
+ GL_RGB_FLOAT16_APPLE 0x881B
+ GL_ALPHA_FLOAT16_APPLE 0x881C
+ GL_INTENSITY_FLOAT16_APPLE 0x881D
+ GL_LUMINANCE_FLOAT16_APPLE 0x881E
+ GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
diff --git a/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range b/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range
new file mode 100644
index 0000000..df3b385
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range
@@ -0,0 +1,8 @@
+GL_APPLE_flush_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_flush_buffer_range.txt
+GL_APPLE_flush_buffer_range
+
+ GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+ GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+ void glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param)
+ void glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample b/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample
new file mode 100644
index 0000000..ebfd931
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample
@@ -0,0 +1,13 @@
+GL_APPLE_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_framebuffer_multisample.txt
+GL_APPLE_framebuffer_multisample
+
+ GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
+ GL_READ_FRAMEBUFFER_APPLE 0x8CA8
+ GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
+ GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
+ GL_MAX_SAMPLES_APPLE 0x8D57
+ void glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glResolveMultisampleFramebufferAPPLE (void)
diff --git a/glew/auto/extensions/gl/GL_APPLE_object_purgeable b/glew/auto/extensions/gl/GL_APPLE_object_purgeable
new file mode 100644
index 0000000..3d7b4f6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_object_purgeable
@@ -0,0 +1,13 @@
+GL_APPLE_object_purgeable
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_object_purgeable.txt
+GL_APPLE_object_purgeable
+
+ GL_BUFFER_OBJECT_APPLE 0x85B3
+ GL_RELEASED_APPLE 0x8A19
+ GL_VOLATILE_APPLE 0x8A1A
+ GL_RETAINED_APPLE 0x8A1B
+ GL_UNDEFINED_APPLE 0x8A1C
+ GL_PURGEABLE_APPLE 0x8A1D
+ void glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint* params)
+ GLenum glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option)
+ GLenum glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option)
diff --git a/glew/auto/extensions/gl/GL_APPLE_pixel_buffer b/glew/auto/extensions/gl/GL_APPLE_pixel_buffer
new file mode 100644
index 0000000..1a8ad97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_pixel_buffer
@@ -0,0 +1,5 @@
+GL_APPLE_pixel_buffer
+
+GL_APPLE_pixel_buffer
+
+ GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10
diff --git a/glew/auto/extensions/gl/GL_APPLE_rgb_422 b/glew/auto/extensions/gl/GL_APPLE_rgb_422
new file mode 100644
index 0000000..d4ae4d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_rgb_422
@@ -0,0 +1,8 @@
+GL_APPLE_rgb_422
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_rgb_422.txt
+GL_APPLE_rgb_422
+
+ GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+ GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+ GL_RGB_422_APPLE 0x8A1F
+ GL_RGB_RAW_422_APPLE 0x8A51
diff --git a/glew/auto/extensions/gl/GL_APPLE_row_bytes b/glew/auto/extensions/gl/GL_APPLE_row_bytes
new file mode 100644
index 0000000..674e007
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_row_bytes
@@ -0,0 +1,6 @@
+GL_APPLE_row_bytes
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_row_bytes.txt
+GL_APPLE_row_bytes
+
+ GL_PACK_ROW_BYTES_APPLE 0x8A15
+ GL_UNPACK_ROW_BYTES_APPLE 0x8A16
diff --git a/glew/auto/extensions/gl/GL_APPLE_specular_vector b/glew/auto/extensions/gl/GL_APPLE_specular_vector
new file mode 100644
index 0000000..a0f324b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_specular_vector
@@ -0,0 +1,5 @@
+GL_APPLE_specular_vector
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_specular_vector.txt
+GL_APPLE_specular_vector
+
+ GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
diff --git a/glew/auto/extensions/gl/GL_APPLE_sync b/glew/auto/extensions/gl/GL_APPLE_sync
new file mode 100644
index 0000000..697314c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_sync
@@ -0,0 +1,27 @@
+GL_APPLE_sync
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_sync.txt
+GL_APPLE_sync
+
+ GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
+ GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
+ GL_SYNC_OBJECT_APPLE 0x8A53
+ GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
+ GL_OBJECT_TYPE_APPLE 0x9112
+ GL_SYNC_CONDITION_APPLE 0x9113
+ GL_SYNC_STATUS_APPLE 0x9114
+ GL_SYNC_FLAGS_APPLE 0x9115
+ GL_SYNC_FENCE_APPLE 0x9116
+ GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
+ GL_UNSIGNALED_APPLE 0x9118
+ GL_SIGNALED_APPLE 0x9119
+ GL_ALREADY_SIGNALED_APPLE 0x911A
+ GL_TIMEOUT_EXPIRED_APPLE 0x911B
+ GL_CONDITION_SATISFIED_APPLE 0x911C
+ GL_WAIT_FAILED_APPLE 0x911D
+ GLenum glClientWaitSyncAPPLE (GLsync GLsync, GLbitfield flags, GLuint64 timeout)
+ void glDeleteSyncAPPLE (GLsync GLsync)
+ GLsync glFenceSyncAPPLE (GLenum condition, GLbitfield flags)
+ void glGetInteger64vAPPLE (GLenum pname, GLint64* params)
+ void glGetSyncivAPPLE (GLsync GLsync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values)
+ GLboolean glIsSyncAPPLE (GLsync GLsync)
+ void glWaitSyncAPPLE (GLsync GLsync, GLbitfield flags, GLuint64 timeout)
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot b/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot
new file mode 100644
index 0000000..18113c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot
@@ -0,0 +1,4 @@
+GL_APPLE_texture_2D_limited_npot
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_2D_limited_npot.txt
+GL_APPLE_texture_2D_limited_npot
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888 b/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888
new file mode 100644
index 0000000..85aa105
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888
@@ -0,0 +1,6 @@
+GL_APPLE_texture_format_BGRA8888
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_format_BGRA8888.txt
+GL_APPLE_texture_format_BGRA8888
+
+ GL_BGRA_EXT 0x80E1
+ GL_BGRA8_EXT 0x93A1
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_max_level b/glew/auto/extensions/gl/GL_APPLE_texture_max_level
new file mode 100644
index 0000000..284c5dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_max_level
@@ -0,0 +1,5 @@
+GL_APPLE_texture_max_level
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_max_level.txt
+GL_APPLE_texture_max_level
+
+ GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_packed_float b/glew/auto/extensions/gl/GL_APPLE_texture_packed_float
new file mode 100644
index 0000000..7164955
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_packed_float
@@ -0,0 +1,8 @@
+GL_APPLE_texture_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_packed_float.txt
+GL_APPLE_texture_packed_float
+
+ GL_R11F_G11F_B10F_APPLE 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
+ GL_RGB9_E5_APPLE 0x8C3D
+ GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_range b/glew/auto/extensions/gl/GL_APPLE_texture_range
new file mode 100644
index 0000000..e2bf85c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_range
@@ -0,0 +1,13 @@
+GL_APPLE_texture_range
+http://www.opengl.org/registry/specs/APPLE/texture_range.txt
+GL_APPLE_texture_range
+
+ GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+ GL_STORAGE_PRIVATE_APPLE 0x85BD
+ GL_STORAGE_CACHED_APPLE 0x85BE
+ GL_STORAGE_SHARED_APPLE 0x85BF
+ GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+ GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+ void glTextureRangeAPPLE (GLenum target, GLsizei length, void *pointer)
+ void glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params)
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_transform_hint b/glew/auto/extensions/gl/GL_APPLE_transform_hint
new file mode 100644
index 0000000..0dc9afe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_transform_hint
@@ -0,0 +1,5 @@
+GL_APPLE_transform_hint
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_transform_hint.txt
+GL_APPLE_transform_hint
+
+ GL_TRANSFORM_HINT_APPLE 0x85B1
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_array_object b/glew/auto/extensions/gl/GL_APPLE_vertex_array_object
new file mode 100644
index 0000000..c53d295
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_array_object
@@ -0,0 +1,9 @@
+GL_APPLE_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_object.txt
+GL_APPLE_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+ void glBindVertexArrayAPPLE (GLuint array)
+ void glDeleteVertexArraysAPPLE (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysAPPLE (GLsizei n, const GLuint* arrays)
+ GLboolean glIsVertexArrayAPPLE (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_array_range b/glew/auto/extensions/gl/GL_APPLE_vertex_array_range
new file mode 100644
index 0000000..6dd751c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_array_range
@@ -0,0 +1,15 @@
+GL_APPLE_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_range.txt
+GL_APPLE_vertex_array_range
+
+ GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+ GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+ GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+ GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520
+ GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+ GL_STORAGE_CLIENT_APPLE 0x85B4
+ GL_STORAGE_CACHED_APPLE 0x85BE
+ GL_STORAGE_SHARED_APPLE 0x85BF
+ void glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer)
+ void glVertexArrayParameteriAPPLE (GLenum pname, GLint param)
+ void glVertexArrayRangeAPPLE (GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators b/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators
new file mode 100644
index 0000000..253fb14
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators
@@ -0,0 +1,21 @@
+GL_APPLE_vertex_program_evaluators
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_program_evaluators.txt
+GL_APPLE_vertex_program_evaluators
+
+ GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+ GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+ GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+ GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+ GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+ GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+ GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+ GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+ GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+ GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+ void glDisableVertexAttribAPPLE (GLuint index, GLenum pname)
+ void glEnableVertexAttribAPPLE (GLuint index, GLenum pname)
+ GLboolean glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname)
+ void glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points)
+ void glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points)
+ void glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points)
+ void glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_APPLE_ycbcr_422 b/glew/auto/extensions/gl/GL_APPLE_ycbcr_422
new file mode 100644
index 0000000..85bf104
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_ycbcr_422
@@ -0,0 +1,5 @@
+GL_APPLE_ycbcr_422
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_ycbcr_422.txt
+GL_APPLE_ycbcr_422
+
+ GL_YCBCR_422_APPLE 0x85B9
diff --git a/glew/auto/extensions/gl/GL_ARB_ES2_compatibility b/glew/auto/extensions/gl/GL_ARB_ES2_compatibility
new file mode 100644
index 0000000..2789ae9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES2_compatibility
@@ -0,0 +1,26 @@
+GL_ARB_ES2_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES2_compatibility.txt
+GL_ARB_ES2_compatibility
+
+ GL_FIXED 0x140C
+ GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+ GL_RGB565 0x8D62
+ GL_LOW_FLOAT 0x8DF0
+ GL_MEDIUM_FLOAT 0x8DF1
+ GL_HIGH_FLOAT 0x8DF2
+ GL_LOW_INT 0x8DF3
+ GL_MEDIUM_INT 0x8DF4
+ GL_HIGH_INT 0x8DF5
+ GL_SHADER_BINARY_FORMATS 0x8DF8
+ GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+ GL_SHADER_COMPILER 0x8DFA
+ GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+ GL_MAX_VARYING_VECTORS 0x8DFC
+ GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+ void glClearDepthf (GLclampf d)
+ void glDepthRangef (GLclampf n, GLclampf f)
+ void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision)
+ void glReleaseShaderCompiler (void)
+ void glShaderBinary (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length)
+ typedef int GLfixed
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility
new file mode 100644
index 0000000..0974ddf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility
@@ -0,0 +1,5 @@
+GL_ARB_ES3_1_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_1_compatibility.txt
+GL_ARB_ES3_1_compatibility
+
+ void glMemoryBarrierByRegion (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility
new file mode 100644
index 0000000..d18dbba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility
@@ -0,0 +1,8 @@
+GL_ARB_ES3_2_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_2_compatibility.txt
+GL_ARB_ES3_2_compatibility
+
+ GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+ GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+ GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+ void glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_compatibility
new file mode 100644
index 0000000..c0a68d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_compatibility
@@ -0,0 +1,18 @@
+GL_ARB_ES3_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_compatibility.txt
+GL_ARB_ES3_compatibility
+
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+ GL_MAX_ELEMENT_INDEX 0x8D6B
+ GL_COMPRESSED_R11_EAC 0x9270
+ GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+ GL_COMPRESSED_RG11_EAC 0x9272
+ GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+ GL_COMPRESSED_RGB8_ETC2 0x9274
+ GL_COMPRESSED_SRGB8_ETC2 0x9275
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+ GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
diff --git a/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays b/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays
new file mode 100644
index 0000000..ff858c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays
@@ -0,0 +1,4 @@
+GL_ARB_arrays_of_arrays
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_arrays_of_arrays.txt
+GL_ARB_arrays_of_arrays
+
diff --git a/glew/auto/extensions/gl/GL_ARB_base_instance b/glew/auto/extensions/gl/GL_ARB_base_instance
new file mode 100644
index 0000000..5d028ea
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_base_instance
@@ -0,0 +1,7 @@
+GL_ARB_base_instance
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_base_instance.txt
+GL_ARB_base_instance
+
+ void glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)
diff --git a/glew/auto/extensions/gl/GL_ARB_bindless_texture b/glew/auto/extensions/gl/GL_ARB_bindless_texture
new file mode 100644
index 0000000..b714323
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_bindless_texture
@@ -0,0 +1,21 @@
+GL_ARB_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt
+GL_ARB_bindless_texture
+
+ GL_UNSIGNED_INT64_ARB 0x140F
+ GLuint64 glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format)
+ GLuint64 glGetTextureHandleARB (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler)
+ void glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT* params)
+ GLboolean glIsImageHandleResidentARB (GLuint64 handle)
+ GLboolean glIsTextureHandleResidentARB (GLuint64 handle)
+ void glMakeImageHandleNonResidentARB (GLuint64 handle)
+ void glMakeImageHandleResidentARB (GLuint64 handle, GLenum access)
+ void glMakeTextureHandleNonResidentARB (GLuint64 handle)
+ void glMakeTextureHandleResidentARB (GLuint64 handle)
+ void glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64ARB (GLint location, GLuint64 value)
+ void glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x)
+ void glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT* v)
diff --git a/glew/auto/extensions/gl/GL_ARB_blend_func_extended b/glew/auto/extensions/gl/GL_ARB_blend_func_extended
new file mode 100644
index 0000000..a70ac09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_blend_func_extended
@@ -0,0 +1,10 @@
+GL_ARB_blend_func_extended
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_blend_func_extended.txt
+GL_ARB_blend_func_extended
+
+ GL_SRC1_COLOR 0x88F9
+ GL_ONE_MINUS_SRC1_COLOR 0x88FA
+ GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+ void glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name)
+ GLint glGetFragDataIndex (GLuint program, const GLchar * name)
diff --git a/glew/auto/extensions/gl/GL_ARB_buffer_storage b/glew/auto/extensions/gl/GL_ARB_buffer_storage
new file mode 100644
index 0000000..ba15fff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_buffer_storage
@@ -0,0 +1,14 @@
+GL_ARB_buffer_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_buffer_storage.txt
+GL_ARB_buffer_storage
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_PERSISTENT_BIT 0x00000040
+ GL_MAP_COHERENT_BIT 0x00000080
+ GL_DYNAMIC_STORAGE_BIT 0x0100
+ GL_CLIENT_STORAGE_BIT 0x0200
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+ GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+ GL_BUFFER_STORAGE_FLAGS 0x8220
+ void glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_ARB_cl_event b/glew/auto/extensions/gl/GL_ARB_cl_event
new file mode 100644
index 0000000..cef176c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_cl_event
@@ -0,0 +1,9 @@
+GL_ARB_cl_event
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cl_event.txt
+GL_ARB_cl_event
+
+ GL_SYNC_CL_EVENT_ARB 0x8240
+ GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+ GLsync glCreateSyncFromCLeventARB (cl_context context, cl_event event, GLbitfield flags)
+ typedef struct _cl_context *cl_context
+ typedef struct _cl_event *cl_event
diff --git a/glew/auto/extensions/gl/GL_ARB_clear_buffer_object b/glew/auto/extensions/gl/GL_ARB_clear_buffer_object
new file mode 100644
index 0000000..ab291ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clear_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_clear_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_buffer_object.txt
+GL_ARB_clear_buffer_object
+
+ void glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_ARB_clear_texture b/glew/auto/extensions/gl/GL_ARB_clear_texture
new file mode 100644
index 0000000..693ee89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clear_texture
@@ -0,0 +1,7 @@
+GL_ARB_clear_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_texture.txt
+GL_ARB_clear_texture
+
+ GL_CLEAR_TEXTURE 0x9365
+ void glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
+ void glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_ARB_clip_control b/glew/auto/extensions/gl/GL_ARB_clip_control
new file mode 100644
index 0000000..f765c8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clip_control
@@ -0,0 +1,11 @@
+GL_ARB_clip_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clip_control.txt
+GL_ARB_clip_control
+
+ GL_LOWER_LEFT 0x8CA1
+ GL_UPPER_LEFT 0x8CA2
+ GL_CLIP_ORIGIN 0x935C
+ GL_CLIP_DEPTH_MODE 0x935D
+ GL_NEGATIVE_ONE_TO_ONE 0x935E
+ GL_ZERO_TO_ONE 0x935F
+ void glClipControl (GLenum origin, GLenum depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_color_buffer_float b/glew/auto/extensions/gl/GL_ARB_color_buffer_float
new file mode 100644
index 0000000..cdcc0d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_color_buffer_float
@@ -0,0 +1,10 @@
+GL_ARB_color_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_color_buffer_float.txt
+GL_ARB_color_buffer_float
+
+ GL_RGBA_FLOAT_MODE_ARB 0x8820
+ GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+ GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+ GL_CLAMP_READ_COLOR_ARB 0x891C
+ GL_FIXED_ONLY_ARB 0x891D
+ void glClampColorARB (GLenum target, GLenum clamp)
diff --git a/glew/auto/extensions/gl/GL_ARB_compatibility b/glew/auto/extensions/gl/GL_ARB_compatibility
new file mode 100644
index 0000000..b3706e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compatibility
@@ -0,0 +1,4 @@
+GL_ARB_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compatibility.txt
+GL_ARB_compatibility
+
diff --git a/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage b/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage
new file mode 100644
index 0000000..1386992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage
@@ -0,0 +1,12 @@
+GL_ARB_compressed_texture_pixel_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compressed_texture_pixel_storage.txt
+GL_ARB_compressed_texture_pixel_storage
+
+ GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+ GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+ GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+ GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+ GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+ GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+ GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+ GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
diff --git a/glew/auto/extensions/gl/GL_ARB_compute_shader b/glew/auto/extensions/gl/GL_ARB_compute_shader
new file mode 100644
index 0000000..bee5648
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compute_shader
@@ -0,0 +1,24 @@
+GL_ARB_compute_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt
+GL_ARB_compute_shader
+
+ GL_COMPUTE_SHADER_BIT 0x00000020
+ GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+ GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+ GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+ GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+ GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+ GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+ GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+ GL_COMPUTE_SHADER 0x91B9
+ GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+ GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+ GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+ GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+ void glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
+ void glDispatchComputeIndirect (GLintptr indirect)
diff --git a/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size b/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size
new file mode 100644
index 0000000..ebd1296
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size
@@ -0,0 +1,9 @@
+GL_ARB_compute_variable_group_size
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_variable_group_size.txt
+GL_ARB_compute_variable_group_size
+
+ GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+ GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+ GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+ GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+ void glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z)
diff --git a/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted b/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted
new file mode 100644
index 0000000..e365644
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted
@@ -0,0 +1,8 @@
+GL_ARB_conditional_render_inverted
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conditional_render_inverted.txt
+GL_ARB_conditional_render_inverted
+
+ GL_QUERY_WAIT_INVERTED 0x8E17
+ GL_QUERY_NO_WAIT_INVERTED 0x8E18
+ GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+ GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
diff --git a/glew/auto/extensions/gl/GL_ARB_conservative_depth b/glew/auto/extensions/gl/GL_ARB_conservative_depth
new file mode 100644
index 0000000..54a50fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_conservative_depth
@@ -0,0 +1,4 @@
+GL_ARB_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt
+GL_ARB_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_ARB_copy_buffer b/glew/auto/extensions/gl/GL_ARB_copy_buffer
new file mode 100644
index 0000000..75cfece
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_copy_buffer
@@ -0,0 +1,7 @@
+GL_ARB_copy_buffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_buffer.txt
+GL_ARB_copy_buffer
+
+ GL_COPY_READ_BUFFER 0x8F36
+ GL_COPY_WRITE_BUFFER 0x8F37
+ void glCopyBufferSubData (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_ARB_copy_image b/glew/auto/extensions/gl/GL_ARB_copy_image
new file mode 100644
index 0000000..81fd4d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_copy_image
@@ -0,0 +1,5 @@
+GL_ARB_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_image.txt
+GL_ARB_copy_image
+
+ void glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_ARB_cull_distance b/glew/auto/extensions/gl/GL_ARB_cull_distance
new file mode 100644
index 0000000..08e716c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_cull_distance
@@ -0,0 +1,6 @@
+GL_ARB_cull_distance
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cull_distance.txt
+GL_ARB_cull_distance
+
+ GL_MAX_CULL_DISTANCES 0x82F9
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
diff --git a/glew/auto/extensions/gl/GL_ARB_debug_output b/glew/auto/extensions/gl/GL_ARB_debug_output
new file mode 100644
index 0000000..3082b90
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_debug_output
@@ -0,0 +1,31 @@
+GL_ARB_debug_output
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_debug_output.txt
+GL_ARB_debug_output
+
+ GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+ GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+ GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+ GL_DEBUG_SOURCE_API_ARB 0x8246
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+ GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+ GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+ GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+ GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+ GL_DEBUG_TYPE_ERROR_ARB 0x824C
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+ GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+ GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+ GL_DEBUG_TYPE_OTHER_ARB 0x8251
+ GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+ GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+ GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+ GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+ void glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam)
+ void glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
+ typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_buffer_float b/glew/auto/extensions/gl/GL_ARB_depth_buffer_float
new file mode 100644
index 0000000..282ec09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_buffer_float
@@ -0,0 +1,7 @@
+GL_ARB_depth_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_buffer_float.txt
+GL_ARB_depth_buffer_float
+
+ GL_DEPTH_COMPONENT32F 0x8CAC
+ GL_DEPTH32F_STENCIL8 0x8CAD
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_clamp b/glew/auto/extensions/gl/GL_ARB_depth_clamp
new file mode 100644
index 0000000..c0c0e2f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_clamp
@@ -0,0 +1,5 @@
+GL_ARB_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt
+GL_ARB_depth_clamp
+
+ GL_DEPTH_CLAMP 0x864F
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_texture b/glew/auto/extensions/gl/GL_ARB_depth_texture
new file mode 100644
index 0000000..18d7d85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_texture
@@ -0,0 +1,9 @@
+GL_ARB_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_texture.txt
+GL_ARB_depth_texture
+
+ GL_DEPTH_COMPONENT16_ARB 0x81A5
+ GL_DEPTH_COMPONENT24_ARB 0x81A6
+ GL_DEPTH_COMPONENT32_ARB 0x81A7
+ GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+ GL_DEPTH_TEXTURE_MODE_ARB 0x884B
diff --git a/glew/auto/extensions/gl/GL_ARB_derivative_control b/glew/auto/extensions/gl/GL_ARB_derivative_control
new file mode 100644
index 0000000..b889e71
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_derivative_control
@@ -0,0 +1,4 @@
+GL_ARB_derivative_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_derivative_control.txt
+GL_ARB_derivative_control
+
diff --git a/glew/auto/extensions/gl/GL_ARB_direct_state_access b/glew/auto/extensions/gl/GL_ARB_direct_state_access
new file mode 100644
index 0000000..5eeabff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_direct_state_access
@@ -0,0 +1,103 @@
+GL_ARB_direct_state_access
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt
+GL_ARB_direct_state_access
+
+ GL_TEXTURE_TARGET 0x1006
+ GL_QUERY_TARGET 0x82EA
+ void glBindTextureUnit (GLuint unit, GLuint texture)
+ void glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLenum glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target)
+ void glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
+ void glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
+ void glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value)
+ void glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value)
+ void glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value)
+ void glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCreateBuffers (GLsizei n, GLuint* buffers)
+ void glCreateFramebuffers (GLsizei n, GLuint* framebuffers)
+ void glCreateProgramPipelines (GLsizei n, GLuint* pipelines)
+ void glCreateQueries (GLenum target, GLsizei n, GLuint* ids)
+ void glCreateRenderbuffers (GLsizei n, GLuint* renderbuffers)
+ void glCreateSamplers (GLsizei n, GLuint* samplers)
+ void glCreateTextures (GLenum target, GLsizei n, GLuint* textures)
+ void glCreateTransformFeedbacks (GLsizei n, GLuint* ids)
+ void glCreateVertexArrays (GLsizei n, GLuint* arrays)
+ void glDisableVertexArrayAttrib (GLuint vaobj, GLuint index)
+ void glEnableVertexArrayAttrib (GLuint vaobj, GLuint index)
+ void glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glGenerateTextureMipmap (GLuint texture)
+ void glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels)
+ void glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64* params)
+ void glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint* params)
+ void glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void** params)
+ void glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
+ void glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params)
+ void glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint* param)
+ void glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint* params)
+ void glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
+ void glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat* params)
+ void glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint* params)
+ void glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint* params)
+ void glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint* params)
+ void glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat* params)
+ void glGetTextureParameteriv (GLuint texture, GLenum pname, GLint* params)
+ void glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64* param)
+ void glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint* param)
+ void glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint* param)
+ void glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64* param)
+ void glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint* param)
+ void glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint* param)
+ void glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments)
+ void glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+ void * glMapNamedBuffer (GLuint buffer, GLenum access)
+ void * glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
+ void glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
+ void glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
+ void glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum mode)
+ void glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum* bufs)
+ void glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param)
+ void glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum mode)
+ void glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
+ void glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer)
+ void glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glTextureParameterIiv (GLuint texture, GLenum pname, const GLint* params)
+ void glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint* params)
+ void glTextureParameterf (GLuint texture, GLenum pname, GLfloat param)
+ void glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat* param)
+ void glTextureParameteri (GLuint texture, GLenum pname, GLint param)
+ void glTextureParameteriv (GLuint texture, GLenum pname, const GLint* param)
+ void glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+ void glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
+ void glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ void glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer)
+ void glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ GLboolean glUnmapNamedBuffer (GLuint buffer)
+ void glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
+ void glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor)
+ void glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer)
+ void glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_buffers b/glew/auto/extensions/gl/GL_ARB_draw_buffers
new file mode 100644
index 0000000..6ff3de4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_buffers
@@ -0,0 +1,22 @@
+GL_ARB_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers.txt
+GL_ARB_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_ARB 0x8824
+ GL_DRAW_BUFFER0_ARB 0x8825
+ GL_DRAW_BUFFER1_ARB 0x8826
+ GL_DRAW_BUFFER2_ARB 0x8827
+ GL_DRAW_BUFFER3_ARB 0x8828
+ GL_DRAW_BUFFER4_ARB 0x8829
+ GL_DRAW_BUFFER5_ARB 0x882A
+ GL_DRAW_BUFFER6_ARB 0x882B
+ GL_DRAW_BUFFER7_ARB 0x882C
+ GL_DRAW_BUFFER8_ARB 0x882D
+ GL_DRAW_BUFFER9_ARB 0x882E
+ GL_DRAW_BUFFER10_ARB 0x882F
+ GL_DRAW_BUFFER11_ARB 0x8830
+ GL_DRAW_BUFFER12_ARB 0x8831
+ GL_DRAW_BUFFER13_ARB 0x8832
+ GL_DRAW_BUFFER14_ARB 0x8833
+ GL_DRAW_BUFFER15_ARB 0x8834
+ void glDrawBuffersARB (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend b/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend
new file mode 100644
index 0000000..dcf7831
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend
@@ -0,0 +1,8 @@
+GL_ARB_draw_buffers_blend
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers_blend.txt
+GL_ARB_draw_buffers_blend
+
+ void glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiARB (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciARB (GLuint buf, GLenum src, GLenum dst)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex b/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex
new file mode 100644
index 0000000..486b86e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex
@@ -0,0 +1,8 @@
+GL_ARB_draw_elements_base_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_elements_base_vertex.txt
+GL_ARB_draw_elements_base_vertex
+
+ void glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
+ void glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei* count, GLenum type, const void*const *indices, GLsizei drawcount, const GLint *basevertex)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_indirect b/glew/auto/extensions/gl/GL_ARB_draw_indirect
new file mode 100644
index 0000000..103ab70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_indirect
@@ -0,0 +1,8 @@
+GL_ARB_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_indirect.txt
+GL_ARB_draw_indirect
+
+ GL_DRAW_INDIRECT_BUFFER 0x8F3F
+ GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+ void glDrawArraysIndirect (GLenum mode, const void *indirect)
+ void glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_instanced b/glew/auto/extensions/gl/GL_ARB_draw_instanced
new file mode 100644
index 0000000..a730952
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_instanced
@@ -0,0 +1,4 @@
+GL_ARB_draw_instanced
+http://www.opengl.org/registry/specs/ARB/draw_instanced.txt
+GL_ARB_draw_instanced
+
diff --git a/glew/auto/extensions/gl/GL_ARB_enhanced_layouts b/glew/auto/extensions/gl/GL_ARB_enhanced_layouts
new file mode 100644
index 0000000..2e31450
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_enhanced_layouts
@@ -0,0 +1,7 @@
+GL_ARB_enhanced_layouts
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_enhanced_layouts.txt
+GL_ARB_enhanced_layouts
+
+ GL_LOCATION_COMPONENT 0x934A
+ GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+ GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
diff --git a/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location b/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location
new file mode 100644
index 0000000..09beb53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location
@@ -0,0 +1,4 @@
+GL_ARB_explicit_attrib_location
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_attrib_location.txt
+GL_ARB_explicit_attrib_location
+
diff --git a/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location b/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location
new file mode 100644
index 0000000..8486347
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location
@@ -0,0 +1,5 @@
+GL_ARB_explicit_uniform_location
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_uniform_location.txt
+GL_ARB_explicit_uniform_location
+
+ GL_MAX_UNIFORM_LOCATIONS 0x826E
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions b/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions
new file mode 100644
index 0000000..6211c50
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions
@@ -0,0 +1,4 @@
+GL_ARB_fragment_coord_conventions
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_coord_conventions.txt
+GL_ARB_fragment_coord_conventions
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport b/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport
new file mode 100644
index 0000000..b6e97b8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport
@@ -0,0 +1,4 @@
+GL_ARB_fragment_layer_viewport
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_layer_viewport.txt
+GL_ARB_fragment_layer_viewport
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_program b/glew/auto/extensions/gl/GL_ARB_fragment_program
new file mode 100644
index 0000000..36f47b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_program
@@ -0,0 +1,19 @@
+GL_ARB_fragment_program
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program.txt
+GL_ARB_fragment_program
+
+ GL_FRAGMENT_PROGRAM_ARB 0x8804
+ GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+ GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+ GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+ GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+ GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+ GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+ GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+ GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+ GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+ GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+ GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+ GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+ GL_MAX_TEXTURE_COORDS_ARB 0x8871
+ GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow b/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow
new file mode 100644
index 0000000..0235b93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow
@@ -0,0 +1,4 @@
+GL_ARB_fragment_program_shadow
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program_shadow.txt
+GL_ARB_fragment_program_shadow
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_shader b/glew/auto/extensions/gl/GL_ARB_fragment_shader
new file mode 100644
index 0000000..bbb20e1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_shader
@@ -0,0 +1,7 @@
+GL_ARB_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader.txt
+GL_ARB_fragment_shader
+
+ GL_FRAGMENT_SHADER_ARB 0x8B30
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock b/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock
new file mode 100644
index 0000000..7180408
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock
@@ -0,0 +1,4 @@
+GL_ARB_fragment_shader_interlock
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt
+GL_ARB_fragment_shader_interlock
+
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments b/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments
new file mode 100644
index 0000000..46ecec1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments
@@ -0,0 +1,17 @@
+GL_ARB_framebuffer_no_attachments
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_no_attachments.txt
+GL_ARB_framebuffer_no_attachments
+
+ GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+ GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+ GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+ GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+ GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+ GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+ GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+ GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+ GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+ void glFramebufferParameteri (GLenum target, GLenum pname, GLint param)
+ void glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint* params)
+ void glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint* params)
+ void glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_object b/glew/auto/extensions/gl/GL_ARB_framebuffer_object
new file mode 100644
index 0000000..c1baf32
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_object
@@ -0,0 +1,98 @@
+GL_ARB_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt
+GL_ARB_framebuffer_object
+
+ GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+ GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+ GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+ GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+ GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+ GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+ GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+ GL_FRAMEBUFFER_DEFAULT 0x8218
+ GL_FRAMEBUFFER_UNDEFINED 0x8219
+ GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+ GL_INDEX 0x8222
+ GL_MAX_RENDERBUFFER_SIZE 0x84E8
+ GL_DEPTH_STENCIL 0x84F9
+ GL_UNSIGNED_INT_24_8 0x84FA
+ GL_DEPTH24_STENCIL8 0x88F0
+ GL_TEXTURE_STENCIL_SIZE 0x88F1
+ GL_UNSIGNED_NORMALIZED 0x8C17
+ GL_SRGB 0x8C40
+ GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+ GL_FRAMEBUFFER_BINDING 0x8CA6
+ GL_RENDERBUFFER_BINDING 0x8CA7
+ GL_READ_FRAMEBUFFER 0x8CA8
+ GL_DRAW_FRAMEBUFFER 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+ GL_RENDERBUFFER_SAMPLES 0x8CAB
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+ GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+ GL_COLOR_ATTACHMENT0 0x8CE0
+ GL_COLOR_ATTACHMENT1 0x8CE1
+ GL_COLOR_ATTACHMENT2 0x8CE2
+ GL_COLOR_ATTACHMENT3 0x8CE3
+ GL_COLOR_ATTACHMENT4 0x8CE4
+ GL_COLOR_ATTACHMENT5 0x8CE5
+ GL_COLOR_ATTACHMENT6 0x8CE6
+ GL_COLOR_ATTACHMENT7 0x8CE7
+ GL_COLOR_ATTACHMENT8 0x8CE8
+ GL_COLOR_ATTACHMENT9 0x8CE9
+ GL_COLOR_ATTACHMENT10 0x8CEA
+ GL_COLOR_ATTACHMENT11 0x8CEB
+ GL_COLOR_ATTACHMENT12 0x8CEC
+ GL_COLOR_ATTACHMENT13 0x8CED
+ GL_COLOR_ATTACHMENT14 0x8CEE
+ GL_COLOR_ATTACHMENT15 0x8CEF
+ GL_DEPTH_ATTACHMENT 0x8D00
+ GL_STENCIL_ATTACHMENT 0x8D20
+ GL_FRAMEBUFFER 0x8D40
+ GL_RENDERBUFFER 0x8D41
+ GL_RENDERBUFFER_WIDTH 0x8D42
+ GL_RENDERBUFFER_HEIGHT 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+ GL_STENCIL_INDEX1 0x8D46
+ GL_STENCIL_INDEX4 0x8D47
+ GL_STENCIL_INDEX8 0x8D48
+ GL_STENCIL_INDEX16 0x8D49
+ GL_RENDERBUFFER_RED_SIZE 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+ GL_MAX_SAMPLES 0x8D57
+ void glBindFramebuffer (GLenum target, GLuint framebuffer)
+ void glBindRenderbuffer (GLenum target, GLuint renderbuffer)
+ void glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLenum glCheckFramebufferStatus (GLenum target)
+ void glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer)
+ void glFramebufferTextureLayer (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer)
+ void glGenFramebuffers (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffers (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmap (GLenum target)
+ void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebuffer (GLuint framebuffer)
+ GLboolean glIsRenderbuffer (GLuint renderbuffer)
+ void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+ void glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..e3b2cb0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GL_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_sRGB.txt
+GL_ARB_framebuffer_sRGB
+
+ GL_FRAMEBUFFER_SRGB 0x8DB9
diff --git a/glew/auto/extensions/gl/GL_ARB_geometry_shader4 b/glew/auto/extensions/gl/GL_ARB_geometry_shader4
new file mode 100644
index 0000000..17092c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_geometry_shader4
@@ -0,0 +1,27 @@
+GL_ARB_geometry_shader4
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_geometry_shader4.txt
+GL_ARB_geometry_shader4
+
+ GL_LINES_ADJACENCY_ARB 0xA
+ GL_LINE_STRIP_ADJACENCY_ARB 0xB
+ GL_TRIANGLES_ADJACENCY_ARB 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD
+ GL_PROGRAM_POINT_SIZE_ARB 0x8642
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+ GL_GEOMETRY_SHADER_ARB 0x8DD9
+ GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+ GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+ GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+ GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+ void glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level)
+ void glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
+ void glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glProgramParameteriARB (GLuint program, GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_get_program_binary b/glew/auto/extensions/gl/GL_ARB_get_program_binary
new file mode 100644
index 0000000..78aaeef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_get_program_binary
@@ -0,0 +1,11 @@
+GL_ARB_get_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_program_binary.txt
+GL_ARB_get_program_binary
+
+ GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+ GL_PROGRAM_BINARY_LENGTH 0x8741
+ GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+ GL_PROGRAM_BINARY_FORMATS 0x87FF
+ void glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary)
+ void glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
+ void glProgramParameteri (GLuint program, GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image b/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image
new file mode 100644
index 0000000..0860365
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image
@@ -0,0 +1,6 @@
+GL_ARB_get_texture_sub_image
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_texture_sub_image.txt
+GL_ARB_get_texture_sub_image
+
+ void glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)
+ void glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
diff --git a/glew/auto/extensions/gl/GL_ARB_gl_spirv b/glew/auto/extensions/gl/GL_ARB_gl_spirv
new file mode 100644
index 0000000..ed35630
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gl_spirv
@@ -0,0 +1,7 @@
+GL_ARB_gl_spirv
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt
+GL_ARB_gl_spirv
+
+ GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+ GL_SPIR_V_BINARY_ARB 0x9552
+ void glSpecializeShaderARB (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue)
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader5 b/glew/auto/extensions/gl/GL_ARB_gpu_shader5
new file mode 100644
index 0000000..48a2658
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader5
@@ -0,0 +1,10 @@
+GL_ARB_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt
+GL_ARB_gpu_shader5
+
+ GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+ GL_MAX_VERTEX_STREAMS 0x8E71
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64 b/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64
new file mode 100644
index 0000000..1a02b5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64
@@ -0,0 +1,34 @@
+GL_ARB_gpu_shader_fp64
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_fp64.txt
+GL_ARB_gpu_shader_fp64
+
+ GL_DOUBLE_MAT2 0x8F46
+ GL_DOUBLE_MAT3 0x8F47
+ GL_DOUBLE_MAT4 0x8F48
+ GL_DOUBLE_MAT2x3 0x8F49
+ GL_DOUBLE_MAT2x4 0x8F4A
+ GL_DOUBLE_MAT3x2 0x8F4B
+ GL_DOUBLE_MAT3x4 0x8F4C
+ GL_DOUBLE_MAT4x2 0x8F4D
+ GL_DOUBLE_MAT4x3 0x8F4E
+ GL_DOUBLE_VEC2 0x8FFC
+ GL_DOUBLE_VEC3 0x8FFD
+ GL_DOUBLE_VEC4 0x8FFE
+ void glGetUniformdv (GLuint program, GLint location, GLdouble* params)
+ void glUniform1d (GLint location, GLdouble x)
+ void glUniform1dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform2d (GLint location, GLdouble x, GLdouble y)
+ void glUniform2dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glUniform3dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glUniform4dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64 b/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64
new file mode 100644
index 0000000..27458ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64
@@ -0,0 +1,48 @@
+GL_ARB_gpu_shader_int64
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_int64.txt
+GL_ARB_gpu_shader_int64
+
+ GL_INT64_ARB 0x140E
+ GL_UNSIGNED_INT64_ARB 0x140F
+ GL_INT64_VEC2_ARB 0x8FE9
+ GL_INT64_VEC3_ARB 0x8FEA
+ GL_INT64_VEC4_ARB 0x8FEB
+ GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+ GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+ GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+ void glGetUniformi64vARB (GLuint program, GLint location, GLint64* params)
+ void glGetUniformui64vARB (GLuint program, GLint location, GLuint64* params)
+ void glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64* params)
+ void glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64* params)
+ void glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x)
+ void glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x)
+ void glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y)
+ void glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y)
+ void glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z)
+ void glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z)
+ void glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)
+ void glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)
+ void glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glUniform1i64ARB (GLint location, GLint64 x)
+ void glUniform1i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform1ui64ARB (GLint location, GLuint64 x)
+ void glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform2i64ARB (GLint location, GLint64 x, GLint64 y)
+ void glUniform2i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y)
+ void glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z)
+ void glUniform3i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z)
+ void glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)
+ void glUniform4i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)
+ void glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_half_float_pixel b/glew/auto/extensions/gl/GL_ARB_half_float_pixel
new file mode 100644
index 0000000..c83bd91
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_half_float_pixel
@@ -0,0 +1,5 @@
+GL_ARB_half_float_pixel
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_pixel.txt
+GL_ARB_half_float_pixel
+
+ GL_HALF_FLOAT_ARB 0x140B
diff --git a/glew/auto/extensions/gl/GL_ARB_half_float_vertex b/glew/auto/extensions/gl/GL_ARB_half_float_vertex
new file mode 100644
index 0000000..0fd85e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_half_float_vertex
@@ -0,0 +1,5 @@
+GL_ARB_half_float_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_vertex.txt
+GL_ARB_half_float_vertex
+
+ GL_HALF_FLOAT 0x140B
diff --git a/glew/auto/extensions/gl/GL_ARB_imaging b/glew/auto/extensions/gl/GL_ARB_imaging
new file mode 100644
index 0000000..727adf0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_imaging
@@ -0,0 +1,113 @@
+GL_ARB_imaging
+
+GL_ARB_imaging
+
+ GL_CONSTANT_COLOR 0x8001
+ GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+ GL_CONSTANT_ALPHA 0x8003
+ GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+ GL_BLEND_COLOR 0x8005
+ GL_FUNC_ADD 0x8006
+ GL_MIN 0x8007
+ GL_MAX 0x8008
+ GL_BLEND_EQUATION 0x8009
+ GL_FUNC_SUBTRACT 0x800A
+ GL_FUNC_REVERSE_SUBTRACT 0x800B
+ GL_CONVOLUTION_1D 0x8010
+ GL_CONVOLUTION_2D 0x8011
+ GL_SEPARABLE_2D 0x8012
+ GL_CONVOLUTION_BORDER_MODE 0x8013
+ GL_CONVOLUTION_FILTER_SCALE 0x8014
+ GL_CONVOLUTION_FILTER_BIAS 0x8015
+ GL_REDUCE 0x8016
+ GL_CONVOLUTION_FORMAT 0x8017
+ GL_CONVOLUTION_WIDTH 0x8018
+ GL_CONVOLUTION_HEIGHT 0x8019
+ GL_MAX_CONVOLUTION_WIDTH 0x801A
+ GL_MAX_CONVOLUTION_HEIGHT 0x801B
+ GL_POST_CONVOLUTION_RED_SCALE 0x801C
+ GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+ GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+ GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+ GL_POST_CONVOLUTION_RED_BIAS 0x8020
+ GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+ GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+ GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+ GL_HISTOGRAM 0x8024
+ GL_PROXY_HISTOGRAM 0x8025
+ GL_HISTOGRAM_WIDTH 0x8026
+ GL_HISTOGRAM_FORMAT 0x8027
+ GL_HISTOGRAM_RED_SIZE 0x8028
+ GL_HISTOGRAM_GREEN_SIZE 0x8029
+ GL_HISTOGRAM_BLUE_SIZE 0x802A
+ GL_HISTOGRAM_ALPHA_SIZE 0x802B
+ GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+ GL_HISTOGRAM_SINK 0x802D
+ GL_MINMAX 0x802E
+ GL_MINMAX_FORMAT 0x802F
+ GL_MINMAX_SINK 0x8030
+ GL_TABLE_TOO_LARGE 0x8031
+ GL_COLOR_MATRIX 0x80B1
+ GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+ GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+ GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+ GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+ GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+ GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+ GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+ GL_COLOR_TABLE 0x80D0
+ GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+ GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+ GL_PROXY_COLOR_TABLE 0x80D3
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+ GL_COLOR_TABLE_SCALE 0x80D6
+ GL_COLOR_TABLE_BIAS 0x80D7
+ GL_COLOR_TABLE_FORMAT 0x80D8
+ GL_COLOR_TABLE_WIDTH 0x80D9
+ GL_COLOR_TABLE_RED_SIZE 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+ GL_IGNORE_BORDER 0x8150
+ GL_CONSTANT_BORDER 0x8151
+ GL_WRAP_BORDER 0x8152
+ GL_REPLICATE_BORDER 0x8153
+ GL_CONVOLUTION_BORDER_COLOR 0x8154
+ void glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)
+ void glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)
+ void glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params)
+ void glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params)
+ void glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+ void glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glGetColorTable (GLenum target, GLenum format, GLenum type, void *table)
+ void glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+ void glResetHistogram (GLenum target)
+ void glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glMinmax (GLenum target, GLenum internalformat, GLboolean sink)
+ void glResetMinmax (GLenum target)
+ void glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)
+ void glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)
+ void glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params)
+ void glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params)
+ void glConvolutionParameteri (GLenum target, GLenum pname, GLint params)
+ void glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params)
+ void glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image)
+ void glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)
+ void glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)
+ void glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values)
diff --git a/glew/auto/extensions/gl/GL_ARB_indirect_parameters b/glew/auto/extensions/gl/GL_ARB_indirect_parameters
new file mode 100644
index 0000000..2a33cc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_indirect_parameters
@@ -0,0 +1,8 @@
+GL_ARB_indirect_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_indirect_parameters.txt
+GL_ARB_indirect_parameters
+
+ GL_PARAMETER_BUFFER_ARB 0x80EE
+ GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+ void glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+ void glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_ARB_instanced_arrays b/glew/auto/extensions/gl/GL_ARB_instanced_arrays
new file mode 100644
index 0000000..1487d39
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_instanced_arrays
@@ -0,0 +1,8 @@
+GL_ARB_instanced_arrays
+http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt
+GL_ARB_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+ void glVertexAttribDivisorARB (GLuint index, GLuint divisor)
+ void glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_ARB_internalformat_query b/glew/auto/extensions/gl/GL_ARB_internalformat_query
new file mode 100644
index 0000000..a5e6173
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_internalformat_query
@@ -0,0 +1,6 @@
+GL_ARB_internalformat_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query.txt
+GL_ARB_internalformat_query
+
+ GL_NUM_SAMPLE_COUNTS 0x9380
+ void glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_internalformat_query2 b/glew/auto/extensions/gl/GL_ARB_internalformat_query2
new file mode 100644
index 0000000..7af5091
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_internalformat_query2
@@ -0,0 +1,104 @@
+GL_ARB_internalformat_query2
+http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt
+GL_ARB_internalformat_query2
+
+ GL_INTERNALFORMAT_SUPPORTED 0x826F
+ GL_INTERNALFORMAT_PREFERRED 0x8270
+ GL_INTERNALFORMAT_RED_SIZE 0x8271
+ GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+ GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+ GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+ GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+ GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+ GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+ GL_INTERNALFORMAT_RED_TYPE 0x8278
+ GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+ GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+ GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+ GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+ GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+ GL_MAX_WIDTH 0x827E
+ GL_MAX_HEIGHT 0x827F
+ GL_MAX_DEPTH 0x8280
+ GL_MAX_LAYERS 0x8281
+ GL_MAX_COMBINED_DIMENSIONS 0x8282
+ GL_COLOR_COMPONENTS 0x8283
+ GL_DEPTH_COMPONENTS 0x8284
+ GL_STENCIL_COMPONENTS 0x8285
+ GL_COLOR_RENDERABLE 0x8286
+ GL_DEPTH_RENDERABLE 0x8287
+ GL_STENCIL_RENDERABLE 0x8288
+ GL_FRAMEBUFFER_RENDERABLE 0x8289
+ GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+ GL_FRAMEBUFFER_BLEND 0x828B
+ GL_READ_PIXELS 0x828C
+ GL_READ_PIXELS_FORMAT 0x828D
+ GL_READ_PIXELS_TYPE 0x828E
+ GL_TEXTURE_IMAGE_FORMAT 0x828F
+ GL_TEXTURE_IMAGE_TYPE 0x8290
+ GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+ GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+ GL_MIPMAP 0x8293
+ GL_MANUAL_GENERATE_MIPMAP 0x8294
+ GL_AUTO_GENERATE_MIPMAP 0x8295
+ GL_COLOR_ENCODING 0x8296
+ GL_SRGB_READ 0x8297
+ GL_SRGB_WRITE 0x8298
+ GL_SRGB_DECODE_ARB 0x8299
+ GL_FILTER 0x829A
+ GL_VERTEX_TEXTURE 0x829B
+ GL_TESS_CONTROL_TEXTURE 0x829C
+ GL_TESS_EVALUATION_TEXTURE 0x829D
+ GL_GEOMETRY_TEXTURE 0x829E
+ GL_FRAGMENT_TEXTURE 0x829F
+ GL_COMPUTE_TEXTURE 0x82A0
+ GL_TEXTURE_SHADOW 0x82A1
+ GL_TEXTURE_GATHER 0x82A2
+ GL_TEXTURE_GATHER_SHADOW 0x82A3
+ GL_SHADER_IMAGE_LOAD 0x82A4
+ GL_SHADER_IMAGE_STORE 0x82A5
+ GL_SHADER_IMAGE_ATOMIC 0x82A6
+ GL_IMAGE_TEXEL_SIZE 0x82A7
+ GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+ GL_IMAGE_PIXEL_FORMAT 0x82A9
+ GL_IMAGE_PIXEL_TYPE 0x82AA
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+ GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+ GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+ GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+ GL_CLEAR_BUFFER 0x82B4
+ GL_TEXTURE_VIEW 0x82B5
+ GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+ GL_FULL_SUPPORT 0x82B7
+ GL_CAVEAT_SUPPORT 0x82B8
+ GL_IMAGE_CLASS_4_X_32 0x82B9
+ GL_IMAGE_CLASS_2_X_32 0x82BA
+ GL_IMAGE_CLASS_1_X_32 0x82BB
+ GL_IMAGE_CLASS_4_X_16 0x82BC
+ GL_IMAGE_CLASS_2_X_16 0x82BD
+ GL_IMAGE_CLASS_1_X_16 0x82BE
+ GL_IMAGE_CLASS_4_X_8 0x82BF
+ GL_IMAGE_CLASS_2_X_8 0x82C0
+ GL_IMAGE_CLASS_1_X_8 0x82C1
+ GL_IMAGE_CLASS_11_11_10 0x82C2
+ GL_IMAGE_CLASS_10_10_10_2 0x82C3
+ GL_VIEW_CLASS_128_BITS 0x82C4
+ GL_VIEW_CLASS_96_BITS 0x82C5
+ GL_VIEW_CLASS_64_BITS 0x82C6
+ GL_VIEW_CLASS_48_BITS 0x82C7
+ GL_VIEW_CLASS_32_BITS 0x82C8
+ GL_VIEW_CLASS_24_BITS 0x82C9
+ GL_VIEW_CLASS_16_BITS 0x82CA
+ GL_VIEW_CLASS_8_BITS 0x82CB
+ GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+ GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+ GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+ GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+ GL_VIEW_CLASS_RGTC1_RED 0x82D0
+ GL_VIEW_CLASS_RGTC2_RG 0x82D1
+ GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+ GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+ void glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_invalidate_subdata b/glew/auto/extensions/gl/GL_ARB_invalidate_subdata
new file mode 100644
index 0000000..fa86405
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_invalidate_subdata
@@ -0,0 +1,10 @@
+GL_ARB_invalidate_subdata
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_invalidate_subdata.txt
+GL_ARB_invalidate_subdata
+
+ void glInvalidateBufferData (GLuint buffer)
+ void glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments)
+ void glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glInvalidateTexImage (GLuint texture, GLint level)
+ void glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment b/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment
new file mode 100644
index 0000000..2adc38d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment
@@ -0,0 +1,5 @@
+GL_ARB_map_buffer_alignment
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_alignment.txt
+GL_ARB_map_buffer_alignment
+
+ GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
diff --git a/glew/auto/extensions/gl/GL_ARB_map_buffer_range b/glew/auto/extensions/gl/GL_ARB_map_buffer_range
new file mode 100644
index 0000000..1d9e055
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_map_buffer_range
@@ -0,0 +1,12 @@
+GL_ARB_map_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_range.txt
+GL_ARB_map_buffer_range
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+ GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+ GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+ GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+ void glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
+ void * glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
diff --git a/glew/auto/extensions/gl/GL_ARB_matrix_palette b/glew/auto/extensions/gl/GL_ARB_matrix_palette
new file mode 100644
index 0000000..98b0d0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_matrix_palette
@@ -0,0 +1,19 @@
+GL_ARB_matrix_palette
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt
+GL_ARB_matrix_palette
+
+ GL_MATRIX_PALETTE_ARB 0x8840
+ GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+ GL_MAX_PALETTE_MATRICES_ARB 0x8842
+ GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+ GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+ GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+ GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+ GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+ GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+ GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+ void glCurrentPaletteMatrixARB (GLint index)
+ void glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glMatrixIndexubvARB (GLint size, GLubyte *indices)
+ void glMatrixIndexusvARB (GLint size, GLushort *indices)
+ void glMatrixIndexuivARB (GLint size, GLuint *indices)
diff --git a/glew/auto/extensions/gl/GL_ARB_multi_bind b/glew/auto/extensions/gl/GL_ARB_multi_bind
new file mode 100644
index 0000000..8914ce0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multi_bind
@@ -0,0 +1,10 @@
+GL_ARB_multi_bind
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_bind.txt
+GL_ARB_multi_bind
+
+ void glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint* buffers)
+ void glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes)
+ void glBindImageTextures (GLuint first, GLsizei count, const GLuint* textures)
+ void glBindSamplers (GLuint first, GLsizei count, const GLuint* samplers)
+ void glBindTextures (GLuint first, GLsizei count, const GLuint* textures)
+ void glBindVertexBuffers (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides)
diff --git a/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect b/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect
new file mode 100644
index 0000000..f22c91d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_ARB_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_draw_indirect.txt
+GL_ARB_multi_draw_indirect
+
+ void glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride)
+ void glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_ARB_multisample b/glew/auto/extensions/gl/GL_ARB_multisample
new file mode 100644
index 0000000..12cf292
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multisample
@@ -0,0 +1,14 @@
+GL_ARB_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multisample.txt
+GL_ARB_multisample
+
+ GL_MULTISAMPLE_ARB 0x809D
+ GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+ GL_SAMPLE_COVERAGE_ARB 0x80A0
+ GL_SAMPLE_BUFFERS_ARB 0x80A8
+ GL_SAMPLES_ARB 0x80A9
+ GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+ GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+ GL_MULTISAMPLE_BIT_ARB 0x20000000
+ void glSampleCoverageARB (GLclampf value, GLboolean invert)
diff --git a/glew/auto/extensions/gl/GL_ARB_multitexture b/glew/auto/extensions/gl/GL_ARB_multitexture
new file mode 100644
index 0000000..46a9546
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multitexture
@@ -0,0 +1,73 @@
+GL_ARB_multitexture
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/multitexture.txt
+GL_ARB_multitexture
+
+ GL_TEXTURE0_ARB 0x84C0
+ GL_TEXTURE1_ARB 0x84C1
+ GL_TEXTURE2_ARB 0x84C2
+ GL_TEXTURE3_ARB 0x84C3
+ GL_TEXTURE4_ARB 0x84C4
+ GL_TEXTURE5_ARB 0x84C5
+ GL_TEXTURE6_ARB 0x84C6
+ GL_TEXTURE7_ARB 0x84C7
+ GL_TEXTURE8_ARB 0x84C8
+ GL_TEXTURE9_ARB 0x84C9
+ GL_TEXTURE10_ARB 0x84CA
+ GL_TEXTURE11_ARB 0x84CB
+ GL_TEXTURE12_ARB 0x84CC
+ GL_TEXTURE13_ARB 0x84CD
+ GL_TEXTURE14_ARB 0x84CE
+ GL_TEXTURE15_ARB 0x84CF
+ GL_TEXTURE16_ARB 0x84D0
+ GL_TEXTURE17_ARB 0x84D1
+ GL_TEXTURE18_ARB 0x84D2
+ GL_TEXTURE19_ARB 0x84D3
+ GL_TEXTURE20_ARB 0x84D4
+ GL_TEXTURE21_ARB 0x84D5
+ GL_TEXTURE22_ARB 0x84D6
+ GL_TEXTURE23_ARB 0x84D7
+ GL_TEXTURE24_ARB 0x84D8
+ GL_TEXTURE25_ARB 0x84D9
+ GL_TEXTURE26_ARB 0x84DA
+ GL_TEXTURE27_ARB 0x84DB
+ GL_TEXTURE28_ARB 0x84DC
+ GL_TEXTURE29_ARB 0x84DD
+ GL_TEXTURE30_ARB 0x84DE
+ GL_TEXTURE31_ARB 0x84DF
+ GL_ACTIVE_TEXTURE_ARB 0x84E0
+ GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+ GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+ void glActiveTextureARB (GLenum texture)
+ void glClientActiveTextureARB (GLenum texture)
+ void glMultiTexCoord1dARB (GLenum target, GLdouble s)
+ void glMultiTexCoord1dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord1fARB (GLenum target, GLfloat s)
+ void glMultiTexCoord1fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord1iARB (GLenum target, GLint s)
+ void glMultiTexCoord1ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord1sARB (GLenum target, GLshort s)
+ void glMultiTexCoord1svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t)
+ void glMultiTexCoord2dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t)
+ void glMultiTexCoord2fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord2iARB (GLenum target, GLint s, GLint t)
+ void glMultiTexCoord2ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t)
+ void glMultiTexCoord2svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r)
+ void glMultiTexCoord3dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r)
+ void glMultiTexCoord3fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r)
+ void glMultiTexCoord3ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r)
+ void glMultiTexCoord3svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+ void glMultiTexCoord4dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+ void glMultiTexCoord4fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q)
+ void glMultiTexCoord4ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+ void glMultiTexCoord4svARB (GLenum target, const GLshort *v)
diff --git a/glew/auto/extensions/gl/GL_ARB_occlusion_query b/glew/auto/extensions/gl/GL_ARB_occlusion_query
new file mode 100644
index 0000000..3f1f1d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_occlusion_query
@@ -0,0 +1,17 @@
+GL_ARB_occlusion_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt
+GL_ARB_occlusion_query
+
+ GL_QUERY_COUNTER_BITS_ARB 0x8864
+ GL_CURRENT_QUERY_ARB 0x8865
+ GL_QUERY_RESULT_ARB 0x8866
+ GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+ GL_SAMPLES_PASSED_ARB 0x8914
+ void glBeginQueryARB (GLenum target, GLuint id)
+ void glDeleteQueriesARB (GLsizei n, const GLuint* ids)
+ void glEndQueryARB (GLenum target)
+ void glGenQueriesARB (GLsizei n, GLuint* ids)
+ void glGetQueryObjectivARB (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivARB (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryARB (GLuint id)
diff --git a/glew/auto/extensions/gl/GL_ARB_occlusion_query2 b/glew/auto/extensions/gl/GL_ARB_occlusion_query2
new file mode 100644
index 0000000..605e0c1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_occlusion_query2
@@ -0,0 +1,5 @@
+GL_ARB_occlusion_query2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query2.txt
+GL_ARB_occlusion_query2
+
+ GL_ANY_SAMPLES_PASSED 0x8C2F
diff --git a/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile b/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile
new file mode 100644
index 0000000..04124a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile
@@ -0,0 +1,7 @@
+GL_ARB_parallel_shader_compile
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_parallel_shader_compile.txt
+GL_ARB_parallel_shader_compile
+
+ GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+ GL_COMPLETION_STATUS_ARB 0x91B1
+ void glMaxShaderCompilerThreadsARB (GLuint count)
diff --git a/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query b/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query
new file mode 100644
index 0000000..9db4e80
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query
@@ -0,0 +1,15 @@
+GL_ARB_pipeline_statistics_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pipeline_statistics_query.txt
+GL_ARB_pipeline_statistics_query
+
+ GL_VERTICES_SUBMITTED_ARB 0x82EE
+ GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+ GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+ GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+ GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+ GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+ GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+ GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+ GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+ GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+ GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
diff --git a/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object b/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object
new file mode 100644
index 0000000..89f18e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_pixel_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pixel_buffer_object.txt
+GL_ARB_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
diff --git a/glew/auto/extensions/gl/GL_ARB_point_parameters b/glew/auto/extensions/gl/GL_ARB_point_parameters
new file mode 100644
index 0000000..3f9ee60
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_point_parameters
@@ -0,0 +1,10 @@
+GL_ARB_point_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_parameters.txt
+GL_ARB_point_parameters
+
+ GL_POINT_SIZE_MIN_ARB 0x8126
+ GL_POINT_SIZE_MAX_ARB 0x8127
+ GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+ GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+ void glPointParameterfARB (GLenum pname, GLfloat param)
+ void glPointParameterfvARB (GLenum pname, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_point_sprite b/glew/auto/extensions/gl/GL_ARB_point_sprite
new file mode 100644
index 0000000..214f29b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_point_sprite
@@ -0,0 +1,6 @@
+GL_ARB_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_sprite.txt
+GL_ARB_point_sprite
+
+ GL_POINT_SPRITE_ARB 0x8861
+ GL_COORD_REPLACE_ARB 0x8862
diff --git a/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp b/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp
new file mode 100644
index 0000000..d04e827
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp
@@ -0,0 +1,6 @@
+GL_ARB_polygon_offset_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_polygon_offset_clamp.txt
+GL_ARB_polygon_offset_clamp
+
+ GL_POLYGON_OFFSET_CLAMP 0x8E1B
+ void glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
diff --git a/glew/auto/extensions/gl/GL_ARB_post_depth_coverage b/glew/auto/extensions/gl/GL_ARB_post_depth_coverage
new file mode 100644
index 0000000..49a054c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_post_depth_coverage
@@ -0,0 +1,4 @@
+GL_ARB_post_depth_coverage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt
+GL_ARB_post_depth_coverage
+
diff --git a/glew/auto/extensions/gl/GL_ARB_program_interface_query b/glew/auto/extensions/gl/GL_ARB_program_interface_query
new file mode 100644
index 0000000..5baa676
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_program_interface_query
@@ -0,0 +1,57 @@
+GL_ARB_program_interface_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_program_interface_query.txt
+GL_ARB_program_interface_query
+
+ GL_UNIFORM 0x92E1
+ GL_UNIFORM_BLOCK 0x92E2
+ GL_PROGRAM_INPUT 0x92E3
+ GL_PROGRAM_OUTPUT 0x92E4
+ GL_BUFFER_VARIABLE 0x92E5
+ GL_SHADER_STORAGE_BLOCK 0x92E6
+ GL_IS_PER_PATCH 0x92E7
+ GL_VERTEX_SUBROUTINE 0x92E8
+ GL_TESS_CONTROL_SUBROUTINE 0x92E9
+ GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+ GL_GEOMETRY_SUBROUTINE 0x92EB
+ GL_FRAGMENT_SUBROUTINE 0x92EC
+ GL_COMPUTE_SUBROUTINE 0x92ED
+ GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+ GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+ GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+ GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+ GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+ GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+ GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+ GL_ACTIVE_RESOURCES 0x92F5
+ GL_MAX_NAME_LENGTH 0x92F6
+ GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+ GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+ GL_NAME_LENGTH 0x92F9
+ GL_TYPE 0x92FA
+ GL_ARRAY_SIZE 0x92FB
+ GL_OFFSET 0x92FC
+ GL_BLOCK_INDEX 0x92FD
+ GL_ARRAY_STRIDE 0x92FE
+ GL_MATRIX_STRIDE 0x92FF
+ GL_IS_ROW_MAJOR 0x9300
+ GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+ GL_BUFFER_BINDING 0x9302
+ GL_BUFFER_DATA_SIZE 0x9303
+ GL_NUM_ACTIVE_VARIABLES 0x9304
+ GL_ACTIVE_VARIABLES 0x9305
+ GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+ GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+ GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+ GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+ GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+ GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+ GL_LOCATION 0x930E
+ GL_LOCATION_INDEX 0x930F
+ void glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint* params)
+ GLuint glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar* name)
+ GLint glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar* name)
+ GLint glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar* name)
+ void glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name)
+ void glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params)
diff --git a/glew/auto/extensions/gl/GL_ARB_provoking_vertex b/glew/auto/extensions/gl/GL_ARB_provoking_vertex
new file mode 100644
index 0000000..892c87c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_provoking_vertex
@@ -0,0 +1,9 @@
+GL_ARB_provoking_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_provoking_vertex.txt
+GL_ARB_provoking_vertex
+
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+ GL_FIRST_VERTEX_CONVENTION 0x8E4D
+ GL_LAST_VERTEX_CONVENTION 0x8E4E
+ GL_PROVOKING_VERTEX 0x8E4F
+ void glProvokingVertex (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_ARB_query_buffer_object b/glew/auto/extensions/gl/GL_ARB_query_buffer_object
new file mode 100644
index 0000000..f0dd16f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_query_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_query_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_query_buffer_object.txt
+GL_ARB_query_buffer_object
+
+ GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+ GL_QUERY_BUFFER 0x9192
+ GL_QUERY_BUFFER_BINDING 0x9193
+ GL_QUERY_RESULT_NO_WAIT 0x9194
diff --git a/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior b/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior
new file mode 100644
index 0000000..c2e92b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior
@@ -0,0 +1,4 @@
+GL_ARB_robust_buffer_access_behavior
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robust_buffer_access_behavior.txt
+GL_ARB_robust_buffer_access_behavior
+
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness b/glew/auto/extensions/gl/GL_ARB_robustness
new file mode 100644
index 0000000..82d48d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness
@@ -0,0 +1,31 @@
+GL_ARB_robustness
+http://www.opengl.org/registry/specs/ARB/robustness.txt
+GL_ARB_robustness
+
+ GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+ GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+ GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+ GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ GL_NO_RESET_NOTIFICATION_ARB 0x8261
+ GLenum glGetGraphicsResetStatusARB (void)
+ void glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table)
+ void glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void* img)
+ void glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image)
+ void glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values)
+ void glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v)
+ void glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v)
+ void glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint* v)
+ void glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values)
+ void glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat* values)
+ void glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint* values)
+ void glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort* values)
+ void glGetnPolygonStippleARB (GLsizei bufSize, GLubyte* pattern)
+ void glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span)
+ void glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img)
+ void glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble* params)
+ void glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint* params)
+ void glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data)
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation b/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation
new file mode 100644
index 0000000..b7da8b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation
@@ -0,0 +1,4 @@
+GL_ARB_robustness_application_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt
+GL_ARB_robustness_application_isolation
+
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..6c22cef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation
@@ -0,0 +1,4 @@
+GL_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt
+GL_ARB_robustness_share_group_isolation
+
diff --git a/glew/auto/extensions/gl/GL_ARB_sample_locations b/glew/auto/extensions/gl/GL_ARB_sample_locations
new file mode 100644
index 0000000..d8775f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sample_locations
@@ -0,0 +1,15 @@
+GL_ARB_sample_locations
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_locations.txt
+GL_ARB_sample_locations
+
+ GL_SAMPLE_LOCATION_ARB 0x8E50
+ GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+ GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+ GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+ GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+ GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+ void glEvaluateDepthValuesARB (void)
+ void glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat* v)
+ void glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
diff --git a/glew/auto/extensions/gl/GL_ARB_sample_shading b/glew/auto/extensions/gl/GL_ARB_sample_shading
new file mode 100644
index 0000000..5b40d4b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sample_shading
@@ -0,0 +1,7 @@
+GL_ARB_sample_shading
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_shading.txt
+GL_ARB_sample_shading
+
+ GL_SAMPLE_SHADING_ARB 0x8C36
+ GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+ void glMinSampleShadingARB (GLclampf value)
diff --git a/glew/auto/extensions/gl/GL_ARB_sampler_objects b/glew/auto/extensions/gl/GL_ARB_sampler_objects
new file mode 100644
index 0000000..f50b7a2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sampler_objects
@@ -0,0 +1,19 @@
+GL_ARB_sampler_objects
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sampler_objects.txt
+GL_ARB_sampler_objects
+
+ GL_SAMPLER_BINDING 0x8919
+ void glBindSampler (GLuint unit, GLuint sampler)
+ void glDeleteSamplers (GLsizei count, const GLuint * samplers)
+ void glGenSamplers (GLsizei count, GLuint* samplers)
+ void glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint* params)
+ void glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat* params)
+ void glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint* params)
+ GLboolean glIsSampler (GLuint sampler)
+ void glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint* params)
+ void glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param)
+ void glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat* params)
+ void glSamplerParameteri (GLuint sampler, GLenum pname, GLint param)
+ void glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_seamless_cube_map b/glew/auto/extensions/gl/GL_ARB_seamless_cube_map
new file mode 100644
index 0000000..015d7ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_seamless_cube_map
@@ -0,0 +1,5 @@
+GL_ARB_seamless_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cube_map.txt
+GL_ARB_seamless_cube_map
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture b/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture
new file mode 100644
index 0000000..22372d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture
@@ -0,0 +1,5 @@
+GL_ARB_seamless_cubemap_per_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cubemap_per_texture.txt
+GL_ARB_seamless_cubemap_per_texture
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_ARB_separate_shader_objects b/glew/auto/extensions/gl/GL_ARB_separate_shader_objects
new file mode 100644
index 0000000..3d3d869
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_separate_shader_objects
@@ -0,0 +1,73 @@
+GL_ARB_separate_shader_objects
+http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt
+GL_ARB_separate_shader_objects
+
+ GL_VERTEX_SHADER_BIT 0x00000001
+ GL_FRAGMENT_SHADER_BIT 0x00000002
+ GL_GEOMETRY_SHADER_BIT 0x00000004
+ GL_TESS_CONTROL_SHADER_BIT 0x00000008
+ GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+ GL_PROGRAM_SEPARABLE 0x8258
+ GL_ACTIVE_PROGRAM 0x8259
+ GL_PROGRAM_PIPELINE_BINDING 0x825A
+ GL_ALL_SHADER_BITS 0xFFFFFFFF
+ void glActiveShaderProgram (GLuint pipeline, GLuint program)
+ void glBindProgramPipeline (GLuint pipeline)
+ GLuint glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar * const * strings)
+ void glDeleteProgramPipelines (GLsizei n, const GLuint* pipelines)
+ void glGenProgramPipelines (GLsizei n, GLuint* pipelines)
+ void glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog)
+ void glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint* params)
+ GLboolean glIsProgramPipeline (GLuint pipeline)
+ void glProgramUniform1d (GLuint program, GLint location, GLdouble x)
+ void glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform1f (GLuint program, GLint location, GLfloat x)
+ void glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform1i (GLuint program, GLint location, GLint x)
+ void glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform1ui (GLuint program, GLint location, GLuint x)
+ void glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform2d (GLuint program, GLint location, GLdouble x, GLdouble y)
+ void glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform2f (GLuint program, GLint location, GLfloat x, GLfloat y)
+ void glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform2i (GLuint program, GLint location, GLint x, GLint y)
+ void glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform2ui (GLuint program, GLint location, GLuint x, GLuint y)
+ void glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform3d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform3f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z)
+ void glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform3i (GLuint program, GLint location, GLint x, GLint y, GLint z)
+ void glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform3ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z)
+ void glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform4d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform4f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform4i (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w)
+ void glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform4ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
+ void glValidateProgramPipeline (GLuint pipeline)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops
new file mode 100644
index 0000000..7a95862
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops
@@ -0,0 +1,4 @@
+GL_ARB_shader_atomic_counter_ops
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counter_ops.txt
+GL_ARB_shader_atomic_counter_ops
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters
new file mode 100644
index 0000000..ef8b9bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters
@@ -0,0 +1,34 @@
+GL_ARB_shader_atomic_counters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counters.txt
+GL_ARB_shader_atomic_counters
+
+ GL_ATOMIC_COUNTER_BUFFER 0x92C0
+ GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+ GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+ GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+ GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+ GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+ GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+ GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+ GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+ GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+ GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+ GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+ GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+ GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+ void glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_ballot b/glew/auto/extensions/gl/GL_ARB_shader_ballot
new file mode 100644
index 0000000..6cb763b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_ballot
@@ -0,0 +1,4 @@
+GL_ARB_shader_ballot
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt
+GL_ARB_shader_ballot
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding b/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding
new file mode 100644
index 0000000..44210a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding
@@ -0,0 +1,4 @@
+GL_ARB_shader_bit_encoding
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_bit_encoding.txt
+GL_ARB_shader_bit_encoding
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_clock b/glew/auto/extensions/gl/GL_ARB_shader_clock
new file mode 100644
index 0000000..db57161
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_clock
@@ -0,0 +1,4 @@
+GL_ARB_shader_clock
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt
+GL_ARB_shader_clock
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters b/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters
new file mode 100644
index 0000000..d92a180
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters
@@ -0,0 +1,4 @@
+GL_ARB_shader_draw_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt
+GL_ARB_shader_draw_parameters
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_group_vote b/glew/auto/extensions/gl/GL_ARB_shader_group_vote
new file mode 100644
index 0000000..0a0a984
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_group_vote
@@ -0,0 +1,4 @@
+GL_ARB_shader_group_vote
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt
+GL_ARB_shader_group_vote
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_image_load_store b/glew/auto/extensions/gl/GL_ARB_shader_image_load_store
new file mode 100644
index 0000000..38e6bf5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_image_load_store
@@ -0,0 +1,70 @@
+GL_ARB_shader_image_load_store
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_load_store.txt
+GL_ARB_shader_image_load_store
+
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+ GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+ GL_UNIFORM_BARRIER_BIT 0x00000004
+ GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+ GL_COMMAND_BARRIER_BIT 0x00000040
+ GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+ GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+ GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+ GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+ GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+ GL_MAX_IMAGE_UNITS 0x8F38
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+ GL_IMAGE_BINDING_NAME 0x8F3A
+ GL_IMAGE_BINDING_LEVEL 0x8F3B
+ GL_IMAGE_BINDING_LAYERED 0x8F3C
+ GL_IMAGE_BINDING_LAYER 0x8F3D
+ GL_IMAGE_BINDING_ACCESS 0x8F3E
+ GL_IMAGE_1D 0x904C
+ GL_IMAGE_2D 0x904D
+ GL_IMAGE_3D 0x904E
+ GL_IMAGE_2D_RECT 0x904F
+ GL_IMAGE_CUBE 0x9050
+ GL_IMAGE_BUFFER 0x9051
+ GL_IMAGE_1D_ARRAY 0x9052
+ GL_IMAGE_2D_ARRAY 0x9053
+ GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+ GL_IMAGE_2D_MULTISAMPLE 0x9055
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+ GL_INT_IMAGE_1D 0x9057
+ GL_INT_IMAGE_2D 0x9058
+ GL_INT_IMAGE_3D 0x9059
+ GL_INT_IMAGE_2D_RECT 0x905A
+ GL_INT_IMAGE_CUBE 0x905B
+ GL_INT_IMAGE_BUFFER 0x905C
+ GL_INT_IMAGE_1D_ARRAY 0x905D
+ GL_INT_IMAGE_2D_ARRAY 0x905E
+ GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+ GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+ GL_UNSIGNED_INT_IMAGE_1D 0x9062
+ GL_UNSIGNED_INT_IMAGE_2D 0x9063
+ GL_UNSIGNED_INT_IMAGE_3D 0x9064
+ GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+ GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+ GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+ GL_MAX_IMAGE_SAMPLES 0x906D
+ GL_IMAGE_BINDING_FORMAT 0x906E
+ GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+ GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+ GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+ GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+ GL_ALL_BARRIER_BITS 0xFFFFFFFF
+ void glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
+ void glMemoryBarrier (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_image_size b/glew/auto/extensions/gl/GL_ARB_shader_image_size
new file mode 100644
index 0000000..3f2a92f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_image_size
@@ -0,0 +1,4 @@
+GL_ARB_shader_image_size
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_size.txt
+GL_ARB_shader_image_size
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_objects b/glew/auto/extensions/gl/GL_ARB_shader_objects
new file mode 100644
index 0000000..e384e81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_objects
@@ -0,0 +1,79 @@
+GL_ARB_shader_objects
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_objects.txt
+GL_ARB_shader_objects
+
+ GL_PROGRAM_OBJECT_ARB 0x8B40
+ GL_SHADER_OBJECT_ARB 0x8B48
+ GL_OBJECT_TYPE_ARB 0x8B4E
+ GL_OBJECT_SUBTYPE_ARB 0x8B4F
+ GL_FLOAT_VEC2_ARB 0x8B50
+ GL_FLOAT_VEC3_ARB 0x8B51
+ GL_FLOAT_VEC4_ARB 0x8B52
+ GL_INT_VEC2_ARB 0x8B53
+ GL_INT_VEC3_ARB 0x8B54
+ GL_INT_VEC4_ARB 0x8B55
+ GL_BOOL_ARB 0x8B56
+ GL_BOOL_VEC2_ARB 0x8B57
+ GL_BOOL_VEC3_ARB 0x8B58
+ GL_BOOL_VEC4_ARB 0x8B59
+ GL_FLOAT_MAT2_ARB 0x8B5A
+ GL_FLOAT_MAT3_ARB 0x8B5B
+ GL_FLOAT_MAT4_ARB 0x8B5C
+ GL_SAMPLER_1D_ARB 0x8B5D
+ GL_SAMPLER_2D_ARB 0x8B5E
+ GL_SAMPLER_3D_ARB 0x8B5F
+ GL_SAMPLER_CUBE_ARB 0x8B60
+ GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+ GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+ GL_SAMPLER_2D_RECT_ARB 0x8B63
+ GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+ GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+ GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+ GL_OBJECT_LINK_STATUS_ARB 0x8B82
+ GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+ GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+ GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+ GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+ GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+ GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+ void glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj)
+ void glCompileShaderARB (GLhandleARB shaderObj)
+ GLhandleARB glCreateProgramObjectARB (void)
+ GLhandleARB glCreateShaderObjectARB (GLenum shaderType)
+ void glDeleteObjectARB (GLhandleARB obj)
+ void glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj)
+ void glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name)
+ void glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj)
+ GLhandleARB glGetHandleARB (GLenum pname)
+ void glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog)
+ void glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat* params)
+ void glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint* params)
+ void glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source)
+ GLint glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB* name)
+ void glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat* params)
+ void glGetUniformivARB (GLhandleARB programObj, GLint location, GLint* params)
+ void glLinkProgramARB (GLhandleARB programObj)
+ void glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length)
+ void glUniform1fARB (GLint location, GLfloat v0)
+ void glUniform1fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform1iARB (GLint location, GLint v0)
+ void glUniform1ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform2fARB (GLint location, GLfloat v0, GLfloat v1)
+ void glUniform2fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform2iARB (GLint location, GLint v0, GLint v1)
+ void glUniform2ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+ void glUniform3fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2)
+ void glUniform3ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+ void glUniform4fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+ void glUniform4ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUseProgramObjectARB (GLhandleARB programObj)
+ void glValidateProgramARB (GLhandleARB programObj)
+ typedef char GLcharARB
+ typedef unsigned int GLhandleARB
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_precision b/glew/auto/extensions/gl/GL_ARB_shader_precision
new file mode 100644
index 0000000..fb4b8e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_precision
@@ -0,0 +1,4 @@
+GL_ARB_shader_precision
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_precision.txt
+GL_ARB_shader_precision
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_stencil_export b/glew/auto/extensions/gl/GL_ARB_shader_stencil_export
new file mode 100644
index 0000000..3abadc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_stencil_export
@@ -0,0 +1,4 @@
+GL_ARB_shader_stencil_export
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_stencil_export.txt
+GL_ARB_shader_stencil_export
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object b/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object
new file mode 100644
index 0000000..9c8be2e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object
@@ -0,0 +1,21 @@
+GL_ARB_shader_storage_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_storage_buffer_object.txt
+GL_ARB_shader_storage_buffer_object
+
+ GL_SHADER_STORAGE_BARRIER_BIT 0x2000
+ GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+ GL_SHADER_STORAGE_BUFFER 0x90D2
+ GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+ GL_SHADER_STORAGE_BUFFER_START 0x90D4
+ GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+ GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+ GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+ GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+ GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+ void glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_subroutine b/glew/auto/extensions/gl/GL_ARB_shader_subroutine
new file mode 100644
index 0000000..485d8f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_subroutine
@@ -0,0 +1,21 @@
+GL_ARB_shader_subroutine
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_subroutine.txt
+GL_ARB_shader_subroutine
+
+ GL_ACTIVE_SUBROUTINES 0x8DE5
+ GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+ GL_MAX_SUBROUTINES 0x8DE7
+ GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+ GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+ GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+ GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+ GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+ GL_COMPATIBLE_SUBROUTINES 0x8E4B
+ void glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name)
+ void glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name)
+ void glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values)
+ void glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint* values)
+ GLuint glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar* name)
+ GLint glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar* name)
+ void glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint* params)
+ void glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint* indices)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples b/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples
new file mode 100644
index 0000000..5da958e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples
@@ -0,0 +1,4 @@
+GL_ARB_shader_texture_image_samples
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt
+GL_ARB_shader_texture_image_samples
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_texture_lod b/glew/auto/extensions/gl/GL_ARB_shader_texture_lod
new file mode 100644
index 0000000..178e399
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_ARB_shader_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_lod.txt
+GL_ARB_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array b/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array
new file mode 100644
index 0000000..4787e81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array
@@ -0,0 +1,4 @@
+GL_ARB_shader_viewport_layer_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt
+GL_ARB_shader_viewport_layer_array
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_100 b/glew/auto/extensions/gl/GL_ARB_shading_language_100
new file mode 100644
index 0000000..0f5e2b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_100
@@ -0,0 +1,5 @@
+GL_ARB_shading_language_100
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_100.txt
+GL_ARB_shading_language_100
+
+ GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_420pack b/glew/auto/extensions/gl/GL_ARB_shading_language_420pack
new file mode 100644
index 0000000..ed52b84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_420pack
@@ -0,0 +1,4 @@
+GL_ARB_shading_language_420pack
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_420pack.txt
+GL_ARB_shading_language_420pack
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_include b/glew/auto/extensions/gl/GL_ARB_shading_language_include
new file mode 100644
index 0000000..29576ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_include
@@ -0,0 +1,13 @@
+GL_ARB_shading_language_include
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_include.txt
+GL_ARB_shading_language_include
+
+ GL_SHADER_INCLUDE_ARB 0x8DAE
+ GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+ GL_NAMED_STRING_TYPE_ARB 0x8DEA
+ void glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length)
+ void glDeleteNamedStringARB (GLint namelen, const GLchar* name)
+ void glGetNamedStringARB (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string)
+ void glGetNamedStringivARB (GLint namelen, const GLchar* name, GLenum pname, GLint *params)
+ GLboolean glIsNamedStringARB (GLint namelen, const GLchar* name)
+ void glNamedStringARB (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string)
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_packing b/glew/auto/extensions/gl/GL_ARB_shading_language_packing
new file mode 100644
index 0000000..f84c68b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_packing
@@ -0,0 +1,4 @@
+GL_ARB_shading_language_packing
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_packing.txt
+GL_ARB_shading_language_packing
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shadow b/glew/auto/extensions/gl/GL_ARB_shadow
new file mode 100644
index 0000000..f606cba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shadow
@@ -0,0 +1,7 @@
+GL_ARB_shadow
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow.txt
+GL_ARB_shadow
+
+ GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+ GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+ GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
diff --git a/glew/auto/extensions/gl/GL_ARB_shadow_ambient b/glew/auto/extensions/gl/GL_ARB_shadow_ambient
new file mode 100644
index 0000000..3ddd334
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shadow_ambient
@@ -0,0 +1,5 @@
+GL_ARB_shadow_ambient
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow_ambient.txt
+GL_ARB_shadow_ambient
+
+ GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_buffer b/glew/auto/extensions/gl/GL_ARB_sparse_buffer
new file mode 100644
index 0000000..398cf8b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_buffer
@@ -0,0 +1,7 @@
+GL_ARB_sparse_buffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_buffer.txt
+GL_ARB_sparse_buffer
+
+ GL_SPARSE_STORAGE_BIT_ARB 0x0400
+ GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+ void glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture b/glew/auto/extensions/gl/GL_ARB_sparse_texture
new file mode 100644
index 0000000..ccd96ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture
@@ -0,0 +1,16 @@
+GL_ARB_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture.txt
+GL_ARB_sparse_texture
+
+ GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+ GL_TEXTURE_SPARSE_ARB 0x91A6
+ GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+ GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+ GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+ void glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture2 b/glew/auto/extensions/gl/GL_ARB_sparse_texture2
new file mode 100644
index 0000000..ceedfb2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture2
@@ -0,0 +1,4 @@
+GL_ARB_sparse_texture2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture2.txt
+GL_ARB_sparse_texture2
+
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp b/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp
new file mode 100644
index 0000000..1bf148e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp
@@ -0,0 +1,4 @@
+GL_ARB_sparse_texture_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture_clamp.txt
+GL_ARB_sparse_texture_clamp
+
diff --git a/glew/auto/extensions/gl/GL_ARB_spirv_extensions b/glew/auto/extensions/gl/GL_ARB_spirv_extensions
new file mode 100644
index 0000000..7cdedd6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_spirv_extensions
@@ -0,0 +1,6 @@
+GL_ARB_spirv_extensions
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_spirv_extensions.txt
+GL_ARB_spirv_extensions
+
+ GL_SPIR_V_EXTENSIONS 0x9553
+ GL_NUM_SPIR_V_EXTENSIONS 0x9554
diff --git a/glew/auto/extensions/gl/GL_ARB_stencil_texturing b/glew/auto/extensions/gl/GL_ARB_stencil_texturing
new file mode 100644
index 0000000..4821ad3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_stencil_texturing
@@ -0,0 +1,5 @@
+GL_ARB_stencil_texturing
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_stencil_texturing.txt
+GL_ARB_stencil_texturing
+
+ GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
diff --git a/glew/auto/extensions/gl/GL_ARB_sync b/glew/auto/extensions/gl/GL_ARB_sync
new file mode 100644
index 0000000..2131558
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sync
@@ -0,0 +1,26 @@
+GL_ARB_sync
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sync.txt
+GL_ARB_sync
+
+ GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+ GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+ GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+ GL_OBJECT_TYPE 0x9112
+ GL_SYNC_CONDITION 0x9113
+ GL_SYNC_STATUS 0x9114
+ GL_SYNC_FLAGS 0x9115
+ GL_SYNC_FENCE 0x9116
+ GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+ GL_UNSIGNALED 0x9118
+ GL_SIGNALED 0x9119
+ GL_ALREADY_SIGNALED 0x911A
+ GL_TIMEOUT_EXPIRED 0x911B
+ GL_CONDITION_SATISFIED 0x911C
+ GL_WAIT_FAILED 0x911D
+ GLenum glClientWaitSync (GLsync GLsync,GLbitfield flags,GLuint64 timeout)
+ void glDeleteSync (GLsync GLsync)
+ GLsync glFenceSync (GLenum condition,GLbitfield flags)
+ void glGetInteger64v (GLenum pname, GLint64* params)
+ void glGetSynciv (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values)
+ GLboolean glIsSync (GLsync GLsync)
+ void glWaitSync (GLsync GLsync,GLbitfield flags,GLuint64 timeout)
diff --git a/glew/auto/extensions/gl/GL_ARB_tessellation_shader b/glew/auto/extensions/gl/GL_ARB_tessellation_shader
new file mode 100644
index 0000000..fb4f525
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_tessellation_shader
@@ -0,0 +1,38 @@
+GL_ARB_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_tessellation_shader.txt
+GL_ARB_tessellation_shader
+
+ GL_PATCHES 0xE
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+ GL_PATCH_VERTICES 0x8E72
+ GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+ GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+ GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+ GL_TESS_GEN_MODE 0x8E76
+ GL_TESS_GEN_SPACING 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER 0x8E78
+ GL_TESS_GEN_POINT_MODE 0x8E79
+ GL_ISOLINES 0x8E7A
+ GL_FRACTIONAL_ODD 0x8E7B
+ GL_FRACTIONAL_EVEN 0x8E7C
+ GL_MAX_PATCH_VERTICES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+ GL_TESS_EVALUATION_SHADER 0x8E87
+ GL_TESS_CONTROL_SHADER 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+ void glPatchParameterfv (GLenum pname, const GLfloat* values)
+ void glPatchParameteri (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_barrier b/glew/auto/extensions/gl/GL_ARB_texture_barrier
new file mode 100644
index 0000000..65c7e96
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_barrier
@@ -0,0 +1,5 @@
+GL_ARB_texture_barrier
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt
+GL_ARB_texture_barrier
+
+ void glTextureBarrier (void)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_border_clamp b/glew/auto/extensions/gl/GL_ARB_texture_border_clamp
new file mode 100644
index 0000000..da64b38
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_border_clamp
@@ -0,0 +1,5 @@
+GL_ARB_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_border_clamp.txt
+GL_ARB_texture_border_clamp
+
+ GL_CLAMP_TO_BORDER_ARB 0x812D
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_object b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object
new file mode 100644
index 0000000..0a1da59
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object
@@ -0,0 +1,10 @@
+GL_ARB_texture_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object.txt
+GL_ARB_texture_buffer_object
+
+ GL_TEXTURE_BUFFER_ARB 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+ GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+ void glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32 b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32
new file mode 100644
index 0000000..572c7e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32
@@ -0,0 +1,4 @@
+GL_ARB_texture_buffer_object_rgb32
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object_rgb32.txt
+GL_ARB_texture_buffer_object_rgb32
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_range b/glew/auto/extensions/gl/GL_ARB_texture_buffer_range
new file mode 100644
index 0000000..16fad7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_range
@@ -0,0 +1,9 @@
+GL_ARB_texture_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_range.txt
+GL_ARB_texture_buffer_range
+
+ GL_TEXTURE_BUFFER_OFFSET 0x919D
+ GL_TEXTURE_BUFFER_SIZE 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+ void glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression b/glew/auto/extensions/gl/GL_ARB_texture_compression
new file mode 100644
index 0000000..d99614e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression
@@ -0,0 +1,22 @@
+GL_ARB_texture_compression
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression.txt
+GL_ARB_texture_compression
+
+ GL_COMPRESSED_ALPHA_ARB 0x84E9
+ GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+ GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+ GL_COMPRESSED_INTENSITY_ARB 0x84EC
+ GL_COMPRESSED_RGB_ARB 0x84ED
+ GL_COMPRESSED_RGBA_ARB 0x84EE
+ GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+ GL_TEXTURE_COMPRESSED_ARB 0x86A1
+ GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+ GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+ void glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glGetCompressedTexImageARB (GLenum target, GLint lod, void *img)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc b/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc
new file mode 100644
index 0000000..165e712
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc
@@ -0,0 +1,8 @@
+GL_ARB_texture_compression_bptc
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_bptc.txt
+GL_ARB_texture_compression_bptc
+
+ GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc b/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc
new file mode 100644
index 0000000..2ae6f71
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc
@@ -0,0 +1,8 @@
+GL_ARB_texture_compression_rgtc
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_rgtc.txt
+GL_ARB_texture_compression_rgtc
+
+ GL_COMPRESSED_RED_RGTC1 0x8DBB
+ GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+ GL_COMPRESSED_RG_RGTC2 0x8DBD
+ GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_cube_map b/glew/auto/extensions/gl/GL_ARB_texture_cube_map
new file mode 100644
index 0000000..ddac875
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_cube_map
@@ -0,0 +1,16 @@
+GL_ARB_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map.txt
+GL_ARB_texture_cube_map
+
+ GL_NORMAL_MAP_ARB 0x8511
+ GL_REFLECTION_MAP_ARB 0x8512
+ GL_TEXTURE_CUBE_MAP_ARB 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+ GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array b/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array
new file mode 100644
index 0000000..408257e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array
@@ -0,0 +1,11 @@
+GL_ARB_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map_array.txt
+GL_ARB_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+ GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+ GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_add b/glew/auto/extensions/gl/GL_ARB_texture_env_add
new file mode 100644
index 0000000..67c8e86
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_add
@@ -0,0 +1,4 @@
+GL_ARB_texture_env_add
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_add.txt
+GL_ARB_texture_env_add
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_combine b/glew/auto/extensions/gl/GL_ARB_texture_env_combine
new file mode 100644
index 0000000..d253677
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_combine
@@ -0,0 +1,26 @@
+GL_ARB_texture_env_combine
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_combine.txt
+GL_ARB_texture_env_combine
+
+ GL_SUBTRACT_ARB 0x84E7
+ GL_COMBINE_ARB 0x8570
+ GL_COMBINE_RGB_ARB 0x8571
+ GL_COMBINE_ALPHA_ARB 0x8572
+ GL_RGB_SCALE_ARB 0x8573
+ GL_ADD_SIGNED_ARB 0x8574
+ GL_INTERPOLATE_ARB 0x8575
+ GL_CONSTANT_ARB 0x8576
+ GL_PRIMARY_COLOR_ARB 0x8577
+ GL_PREVIOUS_ARB 0x8578
+ GL_SOURCE0_RGB_ARB 0x8580
+ GL_SOURCE1_RGB_ARB 0x8581
+ GL_SOURCE2_RGB_ARB 0x8582
+ GL_SOURCE0_ALPHA_ARB 0x8588
+ GL_SOURCE1_ALPHA_ARB 0x8589
+ GL_SOURCE2_ALPHA_ARB 0x858A
+ GL_OPERAND0_RGB_ARB 0x8590
+ GL_OPERAND1_RGB_ARB 0x8591
+ GL_OPERAND2_RGB_ARB 0x8592
+ GL_OPERAND0_ALPHA_ARB 0x8598
+ GL_OPERAND1_ALPHA_ARB 0x8599
+ GL_OPERAND2_ALPHA_ARB 0x859A
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar b/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar
new file mode 100644
index 0000000..3447fcb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar
@@ -0,0 +1,4 @@
+GL_ARB_texture_env_crossbar
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_crossbar.txt
+GL_ARB_texture_env_crossbar
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_dot3 b/glew/auto/extensions/gl/GL_ARB_texture_env_dot3
new file mode 100644
index 0000000..7dfd12d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_dot3
@@ -0,0 +1,6 @@
+GL_ARB_texture_env_dot3
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_dot3.txt
+GL_ARB_texture_env_dot3
+
+ GL_DOT3_RGB_ARB 0x86AE
+ GL_DOT3_RGBA_ARB 0x86AF
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic b/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic
new file mode 100644
index 0000000..250b1cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic
@@ -0,0 +1,6 @@
+GL_ARB_texture_filter_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_anisotropic.txt
+GL_ARB_texture_filter_anisotropic
+
+ GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+ GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax b/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax
new file mode 100644
index 0000000..bb57001
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax
@@ -0,0 +1,6 @@
+GL_ARB_texture_filter_minmax
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_minmax.txt
+GL_ARB_texture_filter_minmax
+
+ GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+ GL_WEIGHTED_AVERAGE_ARB 0x9367
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_float b/glew/auto/extensions/gl/GL_ARB_texture_float
new file mode 100644
index 0000000..548a547
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_float
@@ -0,0 +1,24 @@
+GL_ARB_texture_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt
+GL_ARB_texture_float
+
+ GL_RGBA32F_ARB 0x8814
+ GL_RGB32F_ARB 0x8815
+ GL_ALPHA32F_ARB 0x8816
+ GL_INTENSITY32F_ARB 0x8817
+ GL_LUMINANCE32F_ARB 0x8818
+ GL_LUMINANCE_ALPHA32F_ARB 0x8819
+ GL_RGBA16F_ARB 0x881A
+ GL_RGB16F_ARB 0x881B
+ GL_ALPHA16F_ARB 0x881C
+ GL_INTENSITY16F_ARB 0x881D
+ GL_LUMINANCE16F_ARB 0x881E
+ GL_LUMINANCE_ALPHA16F_ARB 0x881F
+ GL_TEXTURE_RED_TYPE_ARB 0x8C10
+ GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+ GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+ GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+ GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+ GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+ GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+ GL_UNSIGNED_NORMALIZED_ARB 0x8C17
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_gather b/glew/auto/extensions/gl/GL_ARB_texture_gather
new file mode 100644
index 0000000..fc09414
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_gather
@@ -0,0 +1,7 @@
+GL_ARB_texture_gather
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_gather.txt
+GL_ARB_texture_gather
+
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+ GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge b/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge
new file mode 100644
index 0000000..31d7343
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge
@@ -0,0 +1,5 @@
+GL_ARB_texture_mirror_clamp_to_edge
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirror_clamp_to_edge.txt
+GL_ARB_texture_mirror_clamp_to_edge
+
+ GL_MIRROR_CLAMP_TO_EDGE 0x8743
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat
new file mode 100644
index 0000000..206a019
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_ARB_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirrored_repeat.txt
+GL_ARB_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT_ARB 0x8370
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_multisample b/glew/auto/extensions/gl/GL_ARB_texture_multisample
new file mode 100644
index 0000000..5ce8aae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_multisample
@@ -0,0 +1,29 @@
+GL_ARB_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_multisample.txt
+GL_ARB_texture_multisample
+
+ GL_SAMPLE_POSITION 0x8E50
+ GL_SAMPLE_MASK 0x8E51
+ GL_SAMPLE_MASK_VALUE 0x8E52
+ GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+ GL_TEXTURE_2D_MULTISAMPLE 0x9100
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+ GL_TEXTURE_SAMPLES 0x9106
+ GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+ GL_SAMPLER_2D_MULTISAMPLE 0x9108
+ GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+ GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+ GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+ GL_MAX_INTEGER_SAMPLES 0x9110
+ void glGetMultisamplefv (GLenum pname, GLuint index, GLfloat* val)
+ void glSampleMaski (GLuint index, GLbitfield mask)
+ void glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two b/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two
new file mode 100644
index 0000000..a4a135d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two
@@ -0,0 +1,4 @@
+GL_ARB_texture_non_power_of_two
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_non_power_of_two.txt
+GL_ARB_texture_non_power_of_two
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_query_levels b/glew/auto/extensions/gl/GL_ARB_texture_query_levels
new file mode 100644
index 0000000..e0f29ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_query_levels
@@ -0,0 +1,4 @@
+GL_ARB_texture_query_levels
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_levels.txt
+GL_ARB_texture_query_levels
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_query_lod b/glew/auto/extensions/gl/GL_ARB_texture_query_lod
new file mode 100644
index 0000000..1116c36
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_query_lod
@@ -0,0 +1,4 @@
+GL_ARB_texture_query_lod
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_lod.txt
+GL_ARB_texture_query_lod
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rectangle b/glew/auto/extensions/gl/GL_ARB_texture_rectangle
new file mode 100644
index 0000000..102d72c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rectangle
@@ -0,0 +1,10 @@
+GL_ARB_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rectangle.txt
+GL_ARB_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_ARB 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+ GL_SAMPLER_2D_RECT_ARB 0x8B63
+ GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rg b/glew/auto/extensions/gl/GL_ARB_texture_rg
new file mode 100644
index 0000000..474690c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rg
@@ -0,0 +1,28 @@
+GL_ARB_texture_rg
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rg.txt
+GL_ARB_texture_rg
+
+ GL_COMPRESSED_RED 0x8225
+ GL_COMPRESSED_RG 0x8226
+ GL_RG 0x8227
+ GL_RG_INTEGER 0x8228
+ GL_R8 0x8229
+ GL_R16 0x822A
+ GL_RG8 0x822B
+ GL_RG16 0x822C
+ GL_R16F 0x822D
+ GL_R32F 0x822E
+ GL_RG16F 0x822F
+ GL_RG32F 0x8230
+ GL_R8I 0x8231
+ GL_R8UI 0x8232
+ GL_R16I 0x8233
+ GL_R16UI 0x8234
+ GL_R32I 0x8235
+ GL_R32UI 0x8236
+ GL_RG8I 0x8237
+ GL_RG8UI 0x8238
+ GL_RG16I 0x8239
+ GL_RG16UI 0x823A
+ GL_RG32I 0x823B
+ GL_RG32UI 0x823C
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui b/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui
new file mode 100644
index 0000000..0fb67a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui
@@ -0,0 +1,5 @@
+GL_ARB_texture_rgb10_a2ui
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rgb10_a2ui.txt
+GL_ARB_texture_rgb10_a2ui
+
+ GL_RGB10_A2UI 0x906F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_stencil8 b/glew/auto/extensions/gl/GL_ARB_texture_stencil8
new file mode 100644
index 0000000..87c9a34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_stencil8
@@ -0,0 +1,6 @@
+GL_ARB_texture_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_stencil8.txt
+GL_ARB_texture_stencil8
+
+ GL_STENCIL_INDEX 0x1901
+ GL_STENCIL_INDEX8 0x8D48
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_storage b/glew/auto/extensions/gl/GL_ARB_texture_storage
new file mode 100644
index 0000000..f6d82d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_storage
@@ -0,0 +1,8 @@
+GL_ARB_texture_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage.txt
+GL_ARB_texture_storage
+
+ GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+ void glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample b/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample
new file mode 100644
index 0000000..9d3c1a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample
@@ -0,0 +1,8 @@
+GL_ARB_texture_storage_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage_multisample.txt
+GL_ARB_texture_storage_multisample
+
+ void glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
+ void glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_swizzle b/glew/auto/extensions/gl/GL_ARB_texture_swizzle
new file mode 100644
index 0000000..e663bf2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_swizzle
@@ -0,0 +1,9 @@
+GL_ARB_texture_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_swizzle.txt
+GL_ARB_texture_swizzle
+
+ GL_TEXTURE_SWIZZLE_R 0x8E42
+ GL_TEXTURE_SWIZZLE_G 0x8E43
+ GL_TEXTURE_SWIZZLE_B 0x8E44
+ GL_TEXTURE_SWIZZLE_A 0x8E45
+ GL_TEXTURE_SWIZZLE_RGBA 0x8E46
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_view b/glew/auto/extensions/gl/GL_ARB_texture_view
new file mode 100644
index 0000000..82275e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_view
@@ -0,0 +1,10 @@
+GL_ARB_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_view.txt
+GL_ARB_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_ARB_timer_query b/glew/auto/extensions/gl/GL_ARB_timer_query
new file mode 100644
index 0000000..9c9bd56
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_timer_query
@@ -0,0 +1,9 @@
+GL_ARB_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_timer_query.txt
+GL_ARB_timer_query
+
+ GL_TIME_ELAPSED 0x88BF
+ GL_TIMESTAMP 0x8E28
+ void glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64* params)
+ void glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64* params)
+ void glQueryCounter (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback2 b/glew/auto/extensions/gl/GL_ARB_transform_feedback2
new file mode 100644
index 0000000..fedfe56
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback2
@@ -0,0 +1,15 @@
+GL_ARB_transform_feedback2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback2.txt
+GL_ARB_transform_feedback2
+
+ GL_TRANSFORM_FEEDBACK 0x8E22
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+ GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+ void glBindTransformFeedback (GLenum target, GLuint id)
+ void glDeleteTransformFeedbacks (GLsizei n, const GLuint* ids)
+ void glDrawTransformFeedback (GLenum mode, GLuint id)
+ void glGenTransformFeedbacks (GLsizei n, GLuint* ids)
+ GLboolean glIsTransformFeedback (GLuint id)
+ void glPauseTransformFeedback (void)
+ void glResumeTransformFeedback (void)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback3 b/glew/auto/extensions/gl/GL_ARB_transform_feedback3
new file mode 100644
index 0000000..66d846a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback3
@@ -0,0 +1,10 @@
+GL_ARB_transform_feedback3
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback3.txt
+GL_ARB_transform_feedback3
+
+ GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+ GL_MAX_VERTEX_STREAMS 0x8E71
+ void glBeginQueryIndexed (GLenum target, GLuint index, GLuint id)
+ void glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream)
+ void glEndQueryIndexed (GLenum target, GLuint index)
+ void glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced b/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced
new file mode 100644
index 0000000..bb48fa8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced
@@ -0,0 +1,6 @@
+GL_ARB_transform_feedback_instanced
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_instanced.txt
+GL_ARB_transform_feedback_instanced
+
+ void glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei primcount)
+ void glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query b/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query
new file mode 100644
index 0000000..ea06597
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query
@@ -0,0 +1,6 @@
+GL_ARB_transform_feedback_overflow_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_overflow_query.txt
+GL_ARB_transform_feedback_overflow_query
+
+ GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+ GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
diff --git a/glew/auto/extensions/gl/GL_ARB_transpose_matrix b/glew/auto/extensions/gl/GL_ARB_transpose_matrix
new file mode 100644
index 0000000..3fcca6c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transpose_matrix
@@ -0,0 +1,12 @@
+GL_ARB_transpose_matrix
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transpose_matrix.txt
+GL_ARB_transpose_matrix
+
+ GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+ GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+ GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+ GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+ void glLoadTransposeMatrixfARB (GLfloat m[16])
+ void glLoadTransposeMatrixdARB (GLdouble m[16])
+ void glMultTransposeMatrixfARB (GLfloat m[16])
+ void glMultTransposeMatrixdARB (GLdouble m[16])
diff --git a/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object b/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object
new file mode 100644
index 0000000..8768a82
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object
@@ -0,0 +1,47 @@
+GL_ARB_uniform_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt
+GL_ARB_uniform_buffer_object
+
+ GL_INVALID_INDEX 0xFFFFFFFFu
+ GL_UNIFORM_BUFFER 0x8A11
+ GL_UNIFORM_BUFFER_BINDING 0x8A28
+ GL_UNIFORM_BUFFER_START 0x8A29
+ GL_UNIFORM_BUFFER_SIZE 0x8A2A
+ GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+ GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+ GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+ GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+ GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+ GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+ GL_UNIFORM_TYPE 0x8A37
+ GL_UNIFORM_SIZE 0x8A38
+ GL_UNIFORM_NAME_LENGTH 0x8A39
+ GL_UNIFORM_BLOCK_INDEX 0x8A3A
+ GL_UNIFORM_OFFSET 0x8A3B
+ GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+ GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+ GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+ GL_UNIFORM_BLOCK_BINDING 0x8A3F
+ GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+ GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+ GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+ GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+ GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+ void glBindBufferBase (GLenum target, GLuint index, GLuint buffer)
+ void glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
+ void glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
+ void glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName)
+ void glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
+ void glGetIntegeri_v (GLenum target, GLuint index, GLint* data)
+ GLuint glGetUniformBlockIndex (GLuint program, const GLchar* uniformBlockName)
+ void glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices)
+ void glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra b/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra
new file mode 100644
index 0000000..3b8dd73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra
@@ -0,0 +1,5 @@
+GL_ARB_vertex_array_bgra
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_bgra.txt
+GL_ARB_vertex_array_bgra
+
+ GL_BGRA 0x80E1
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_array_object b/glew/auto/extensions/gl/GL_ARB_vertex_array_object
new file mode 100644
index 0000000..0ca6030
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_array_object
@@ -0,0 +1,9 @@
+GL_ARB_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_object.txt
+GL_ARB_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING 0x85B5
+ void glBindVertexArray (GLuint array)
+ void glDeleteVertexArrays (GLsizei n, const GLuint* arrays)
+ void glGenVertexArrays (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArray (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit
new file mode 100644
index 0000000..68117c5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit
@@ -0,0 +1,14 @@
+GL_ARB_vertex_attrib_64bit
+http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt
+GL_ARB_vertex_attrib_64bit
+
+ void glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble* params)
+ void glVertexAttribL1d (GLuint index, GLdouble x)
+ void glVertexAttribL1dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttribL2dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttribL3dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttribL4dv (GLuint index, const GLdouble* v)
+ void glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding
new file mode 100644
index 0000000..2510704
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding
@@ -0,0 +1,24 @@
+GL_ARB_vertex_attrib_binding
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_binding.txt
+GL_ARB_vertex_attrib_binding
+
+ GL_VERTEX_ATTRIB_BINDING 0x82D4
+ GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+ GL_VERTEX_BINDING_DIVISOR 0x82D6
+ GL_VERTEX_BINDING_OFFSET 0x82D7
+ GL_VERTEX_BINDING_STRIDE 0x82D8
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+ GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+ GL_VERTEX_BINDING_BUFFER 0x8F4F
+ void glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
+ void glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor)
+ void glVertexAttribBinding (GLuint attribindex, GLuint bindingindex)
+ void glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexBindingDivisor (GLuint bindingindex, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_blend b/glew/auto/extensions/gl/GL_ARB_vertex_blend
new file mode 100644
index 0000000..f4b3f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_blend
@@ -0,0 +1,56 @@
+GL_ARB_vertex_blend
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt
+GL_ARB_vertex_blend
+
+ GL_MAX_VERTEX_UNITS_ARB 0x86A4
+ GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+ GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+ GL_VERTEX_BLEND_ARB 0x86A7
+ GL_CURRENT_WEIGHT_ARB 0x86A8
+ GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+ GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+ GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+ GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+ GL_WEIGHT_ARRAY_ARB 0x86AD
+ GL_MODELVIEW0_ARB 0x1700
+ GL_MODELVIEW1_ARB 0x850A
+ GL_MODELVIEW2_ARB 0x8722
+ GL_MODELVIEW3_ARB 0x8723
+ GL_MODELVIEW4_ARB 0x8724
+ GL_MODELVIEW5_ARB 0x8725
+ GL_MODELVIEW6_ARB 0x8726
+ GL_MODELVIEW7_ARB 0x8727
+ GL_MODELVIEW8_ARB 0x8728
+ GL_MODELVIEW9_ARB 0x8729
+ GL_MODELVIEW10_ARB 0x872A
+ GL_MODELVIEW11_ARB 0x872B
+ GL_MODELVIEW12_ARB 0x872C
+ GL_MODELVIEW13_ARB 0x872D
+ GL_MODELVIEW14_ARB 0x872E
+ GL_MODELVIEW15_ARB 0x872F
+ GL_MODELVIEW16_ARB 0x8730
+ GL_MODELVIEW17_ARB 0x8731
+ GL_MODELVIEW18_ARB 0x8732
+ GL_MODELVIEW19_ARB 0x8733
+ GL_MODELVIEW20_ARB 0x8734
+ GL_MODELVIEW21_ARB 0x8735
+ GL_MODELVIEW22_ARB 0x8736
+ GL_MODELVIEW23_ARB 0x8737
+ GL_MODELVIEW24_ARB 0x8738
+ GL_MODELVIEW25_ARB 0x8739
+ GL_MODELVIEW26_ARB 0x873A
+ GL_MODELVIEW27_ARB 0x873B
+ GL_MODELVIEW28_ARB 0x873C
+ GL_MODELVIEW29_ARB 0x873D
+ GL_MODELVIEW30_ARB 0x873E
+ GL_MODELVIEW31_ARB 0x873F
+ void glWeightbvARB (GLint size, GLbyte *weights)
+ void glWeightsvARB (GLint size, GLshort *weights)
+ void glWeightivARB (GLint size, GLint *weights)
+ void glWeightfvARB (GLint size, GLfloat *weights)
+ void glWeightdvARB (GLint size, GLdouble *weights)
+ void glWeightubvARB (GLint size, GLubyte *weights)
+ void glWeightusvARB (GLint size, GLushort *weights)
+ void glWeightuivARB (GLint size, GLuint *weights)
+ void glWeightPointerARB (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glVertexBlendARB (GLint count)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object b/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object
new file mode 100644
index 0000000..095f23d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object
@@ -0,0 +1,48 @@
+GL_ARB_vertex_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_buffer_object.txt
+GL_ARB_vertex_buffer_object
+
+ GL_BUFFER_SIZE_ARB 0x8764
+ GL_BUFFER_USAGE_ARB 0x8765
+ GL_ARRAY_BUFFER_ARB 0x8892
+ GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+ GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+ GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+ GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+ GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+ GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+ GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+ GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+ GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+ GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+ GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+ GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+ GL_READ_ONLY_ARB 0x88B8
+ GL_WRITE_ONLY_ARB 0x88B9
+ GL_READ_WRITE_ARB 0x88BA
+ GL_BUFFER_ACCESS_ARB 0x88BB
+ GL_BUFFER_MAPPED_ARB 0x88BC
+ GL_BUFFER_MAP_POINTER_ARB 0x88BD
+ GL_STREAM_DRAW_ARB 0x88E0
+ GL_STREAM_READ_ARB 0x88E1
+ GL_STREAM_COPY_ARB 0x88E2
+ GL_STATIC_DRAW_ARB 0x88E4
+ GL_STATIC_READ_ARB 0x88E5
+ GL_STATIC_COPY_ARB 0x88E6
+ GL_DYNAMIC_DRAW_ARB 0x88E8
+ GL_DYNAMIC_READ_ARB 0x88E9
+ GL_DYNAMIC_COPY_ARB 0x88EA
+ void glBindBufferARB (GLenum target, GLuint buffer)
+ void glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage)
+ void glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data)
+ void glDeleteBuffersARB (GLsizei n, const GLuint* buffers)
+ void glGenBuffersARB (GLsizei n, GLuint* buffers)
+ void glGetBufferParameterivARB (GLenum target, GLenum pname, GLint* params)
+ void glGetBufferPointervARB (GLenum target, GLenum pname, void** params)
+ void glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data)
+ GLboolean glIsBufferARB (GLuint buffer)
+ void * glMapBufferARB (GLenum target, GLenum access)
+ GLboolean glUnmapBufferARB (GLenum target)
+ typedef ptrdiff_t GLsizeiptrARB
+ typedef ptrdiff_t GLintptrARB
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_program b/glew/auto/extensions/gl/GL_ARB_vertex_program
new file mode 100644
index 0000000..b930982
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_program
@@ -0,0 +1,145 @@
+GL_ARB_vertex_program
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_program.txt
+GL_ARB_vertex_program
+
+ GL_COLOR_SUM_ARB 0x8458
+ GL_VERTEX_PROGRAM_ARB 0x8620
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+ GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+ GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+ GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+ GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+ GL_PROGRAM_LENGTH_ARB 0x8627
+ GL_PROGRAM_STRING_ARB 0x8628
+ GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+ GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+ GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+ GL_CURRENT_MATRIX_ARB 0x8641
+ GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+ GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+ GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+ GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+ GL_PROGRAM_BINDING_ARB 0x8677
+ GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+ GL_PROGRAM_ERROR_STRING_ARB 0x8874
+ GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+ GL_PROGRAM_FORMAT_ARB 0x8876
+ GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+ GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+ GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+ GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+ GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+ GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+ GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+ GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+ GL_PROGRAM_PARAMETERS_ARB 0x88A8
+ GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+ GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+ GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+ GL_PROGRAM_ATTRIBS_ARB 0x88AC
+ GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+ GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+ GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+ GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+ GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+ GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+ GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+ GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+ GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+ GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+ GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+ GL_MATRIX0_ARB 0x88C0
+ GL_MATRIX1_ARB 0x88C1
+ GL_MATRIX2_ARB 0x88C2
+ GL_MATRIX3_ARB 0x88C3
+ GL_MATRIX4_ARB 0x88C4
+ GL_MATRIX5_ARB 0x88C5
+ GL_MATRIX6_ARB 0x88C6
+ GL_MATRIX7_ARB 0x88C7
+ GL_MATRIX8_ARB 0x88C8
+ GL_MATRIX9_ARB 0x88C9
+ GL_MATRIX10_ARB 0x88CA
+ GL_MATRIX11_ARB 0x88CB
+ GL_MATRIX12_ARB 0x88CC
+ GL_MATRIX13_ARB 0x88CD
+ GL_MATRIX14_ARB 0x88CE
+ GL_MATRIX15_ARB 0x88CF
+ GL_MATRIX16_ARB 0x88D0
+ GL_MATRIX17_ARB 0x88D1
+ GL_MATRIX18_ARB 0x88D2
+ GL_MATRIX19_ARB 0x88D3
+ GL_MATRIX20_ARB 0x88D4
+ GL_MATRIX21_ARB 0x88D5
+ GL_MATRIX22_ARB 0x88D6
+ GL_MATRIX23_ARB 0x88D7
+ GL_MATRIX24_ARB 0x88D8
+ GL_MATRIX25_ARB 0x88D9
+ GL_MATRIX26_ARB 0x88DA
+ GL_MATRIX27_ARB 0x88DB
+ GL_MATRIX28_ARB 0x88DC
+ GL_MATRIX29_ARB 0x88DD
+ GL_MATRIX30_ARB 0x88DE
+ GL_MATRIX31_ARB 0x88DF
+ void glBindProgramARB (GLenum target, GLuint program)
+ void glDeleteProgramsARB (GLsizei n, const GLuint* programs)
+ void glDisableVertexAttribArrayARB (GLuint index)
+ void glEnableVertexAttribArrayARB (GLuint index)
+ void glGenProgramsARB (GLsizei n, GLuint* programs)
+ void glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble* params)
+ void glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat* params)
+ void glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble* params)
+ void glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat* params)
+ void glGetProgramStringARB (GLenum target, GLenum pname, void *string)
+ void glGetProgramivARB (GLenum target, GLenum pname, GLint* params)
+ void glGetVertexAttribPointervARB (GLuint index, GLenum pname, void** pointer)
+ void glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble* params)
+ void glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribivARB (GLuint index, GLenum pname, GLint* params)
+ GLboolean glIsProgramARB (GLuint program)
+ void glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string)
+ void glVertexAttrib1dARB (GLuint index, GLdouble x)
+ void glVertexAttrib1dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib1fARB (GLuint index, GLfloat x)
+ void glVertexAttrib1fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib1sARB (GLuint index, GLshort x)
+ void glVertexAttrib1svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttrib2dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y)
+ void glVertexAttrib2fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y)
+ void glVertexAttrib2svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttrib3dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexAttrib3fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z)
+ void glVertexAttrib3svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4NbvARB (GLuint index, const GLbyte* v)
+ void glVertexAttrib4NivARB (GLuint index, const GLint* v)
+ void glVertexAttrib4NsvARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+ void glVertexAttrib4NubvARB (GLuint index, const GLubyte* v)
+ void glVertexAttrib4NuivARB (GLuint index, const GLuint* v)
+ void glVertexAttrib4NusvARB (GLuint index, const GLushort* v)
+ void glVertexAttrib4bvARB (GLuint index, const GLbyte* v)
+ void glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttrib4dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexAttrib4fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib4ivARB (GLuint index, const GLint* v)
+ void glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexAttrib4svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4ubvARB (GLuint index, const GLubyte* v)
+ void glVertexAttrib4uivARB (GLuint index, const GLuint* v)
+ void glVertexAttrib4usvARB (GLuint index, const GLushort* v)
+ void glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_shader b/glew/auto/extensions/gl/GL_ARB_vertex_shader
new file mode 100644
index 0000000..3406911
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_shader
@@ -0,0 +1,14 @@
+GL_ARB_vertex_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_shader.txt
+GL_ARB_vertex_shader
+
+ GL_VERTEX_SHADER_ARB 0x8B31
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+ GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+ GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+ GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+ void glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB* name)
+ void glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name)
+ GLint glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB* name)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev b/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev
new file mode 100644
index 0000000..70bd3bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev
@@ -0,0 +1,5 @@
+GL_ARB_vertex_type_10f_11f_11f_rev
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_10f_11f_11f_rev.txt
+GL_ARB_vertex_type_10f_11f_11f_rev
+
+ GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev b/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev
new file mode 100644
index 0000000..99e3e34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev
@@ -0,0 +1,44 @@
+GL_ARB_vertex_type_2_10_10_10_rev
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_2_10_10_10_rev.txt
+GL_ARB_vertex_type_2_10_10_10_rev
+
+ GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+ GL_INT_2_10_10_10_REV 0x8D9F
+ void glColorP3ui (GLenum type, GLuint color)
+ void glColorP3uiv (GLenum type, const GLuint* color)
+ void glColorP4ui (GLenum type, GLuint color)
+ void glColorP4uiv (GLenum type, const GLuint* color)
+ void glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glNormalP3ui (GLenum type, GLuint coords)
+ void glNormalP3uiv (GLenum type, const GLuint* coords)
+ void glSecondaryColorP3ui (GLenum type, GLuint color)
+ void glSecondaryColorP3uiv (GLenum type, const GLuint* color)
+ void glTexCoordP1ui (GLenum type, GLuint coords)
+ void glTexCoordP1uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP2ui (GLenum type, GLuint coords)
+ void glTexCoordP2uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP3ui (GLenum type, GLuint coords)
+ void glTexCoordP3uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP4ui (GLenum type, GLuint coords)
+ void glTexCoordP4uiv (GLenum type, const GLuint* coords)
+ void glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexP2ui (GLenum type, GLuint value)
+ void glVertexP2uiv (GLenum type, const GLuint* value)
+ void glVertexP3ui (GLenum type, GLuint value)
+ void glVertexP3uiv (GLenum type, const GLuint* value)
+ void glVertexP4ui (GLenum type, GLuint value)
+ void glVertexP4uiv (GLenum type, const GLuint* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_viewport_array b/glew/auto/extensions/gl/GL_ARB_viewport_array
new file mode 100644
index 0000000..9b07bac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_viewport_array
@@ -0,0 +1,27 @@
+GL_ARB_viewport_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_viewport_array.txt
+GL_ARB_viewport_array
+
+ GL_DEPTH_RANGE 0x0B70
+ GL_VIEWPORT 0x0BA2
+ GL_SCISSOR_BOX 0x0C10
+ GL_SCISSOR_TEST 0x0C11
+ GL_MAX_VIEWPORTS 0x825B
+ GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+ GL_VIEWPORT_BOUNDS_RANGE 0x825D
+ GL_LAYER_PROVOKING_VERTEX 0x825E
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+ GL_UNDEFINED_VERTEX 0x8260
+ GL_FIRST_VERTEX_CONVENTION 0x8E4D
+ GL_LAST_VERTEX_CONVENTION 0x8E4E
+ GL_PROVOKING_VERTEX 0x8E4F
+ void glDepthRangeArrayv (GLuint first, GLsizei count, const GLclampd * v)
+ void glDepthRangeIndexed (GLuint index, GLclampd n, GLclampd f)
+ void glGetDoublei_v (GLenum target, GLuint index, GLdouble* data)
+ void glGetFloati_v (GLenum target, GLuint index, GLfloat* data)
+ void glScissorArrayv (GLuint first, GLsizei count, const GLint * v)
+ void glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
+ void glScissorIndexedv (GLuint index, const GLint * v)
+ void glViewportArrayv (GLuint first, GLsizei count, const GLfloat * v)
+ void glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
+ void glViewportIndexedfv (GLuint index, const GLfloat * v)
diff --git a/glew/auto/extensions/gl/GL_ARB_window_pos b/glew/auto/extensions/gl/GL_ARB_window_pos
new file mode 100644
index 0000000..fecf547
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_window_pos
@@ -0,0 +1,20 @@
+GL_ARB_window_pos
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_window_pos.txt
+GL_ARB_window_pos
+
+ void glWindowPos2dARB (GLdouble x, GLdouble y)
+ void glWindowPos2dvARB (const GLdouble* p)
+ void glWindowPos2fARB (GLfloat x, GLfloat y)
+ void glWindowPos2fvARB (const GLfloat* p)
+ void glWindowPos2iARB (GLint x, GLint y)
+ void glWindowPos2ivARB (const GLint* p)
+ void glWindowPos2sARB (GLshort x, GLshort y)
+ void glWindowPos2svARB (const GLshort* p)
+ void glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z)
+ void glWindowPos3dvARB (const GLdouble* p)
+ void glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z)
+ void glWindowPos3fvARB (const GLfloat* p)
+ void glWindowPos3iARB (GLint x, GLint y, GLint z)
+ void glWindowPos3ivARB (const GLint* p)
+ void glWindowPos3sARB (GLshort x, GLshort y, GLshort z)
+ void glWindowPos3svARB (const GLshort* p)
diff --git a/glew/auto/extensions/gl/GL_ARM_mali_program_binary b/glew/auto/extensions/gl/GL_ARM_mali_program_binary
new file mode 100644
index 0000000..30ca0e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_mali_program_binary
@@ -0,0 +1,5 @@
+GL_ARM_mali_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_program_binary.txt
+GL_ARM_mali_program_binary
+
+ GL_MALI_PROGRAM_BINARY_ARM 0x8F61
diff --git a/glew/auto/extensions/gl/GL_ARM_mali_shader_binary b/glew/auto/extensions/gl/GL_ARM_mali_shader_binary
new file mode 100644
index 0000000..0dc7453
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_mali_shader_binary
@@ -0,0 +1,5 @@
+GL_ARM_mali_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_shader_binary.txt
+GL_ARM_mali_shader_binary
+
+ GL_MALI_SHADER_BINARY_ARM 0x8F60
diff --git a/glew/auto/extensions/gl/GL_ARM_rgba8 b/glew/auto/extensions/gl/GL_ARM_rgba8
new file mode 100644
index 0000000..4bef0d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_rgba8
@@ -0,0 +1,5 @@
+GL_ARM_rgba8
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_rgba8.txt
+GL_ARM_rgba8
+
+ GL_RGBA8_OES 0x8058
diff --git a/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch
new file mode 100644
index 0000000..e37dc4f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch
@@ -0,0 +1,6 @@
+GL_ARM_shader_framebuffer_fetch
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch.txt
+GL_ARM_shader_framebuffer_fetch
+
+ GL_FETCH_PER_SAMPLE_ARM 0x8F65
+ GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
diff --git a/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil
new file mode 100644
index 0000000..90c65ac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil
@@ -0,0 +1,4 @@
+GL_ARM_shader_framebuffer_fetch_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt
+GL_ARM_shader_framebuffer_fetch_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates b/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates
new file mode 100644
index 0000000..c7fabdd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates
@@ -0,0 +1,5 @@
+GL_ARM_texture_unnormalized_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_texture_unnormalized_coordinates.txt
+GL_ARM_texture_unnormalized_coordinates
+
+ GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A
diff --git a/glew/auto/extensions/gl/GL_ATIX_point_sprites b/glew/auto/extensions/gl/GL_ATIX_point_sprites
new file mode 100644
index 0000000..d2434e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_point_sprites
@@ -0,0 +1,10 @@
+GL_ATIX_point_sprites
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_point_sprites
+
+ GL_TEXTURE_POINT_MODE_ATIX 0x60B0
+ GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1
+ GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2
+ GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3
+ GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4
+ GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5
diff --git a/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3 b/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3
new file mode 100644
index 0000000..77f425d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3
@@ -0,0 +1,7 @@
+GL_ATIX_texture_env_combine3
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_texture_env_combine3
+
+ GL_MODULATE_ADD_ATIX 0x8744
+ GL_MODULATE_SIGNED_ADD_ATIX 0x8745
+ GL_MODULATE_SUBTRACT_ATIX 0x8746
diff --git a/glew/auto/extensions/gl/GL_ATIX_texture_env_route b/glew/auto/extensions/gl/GL_ATIX_texture_env_route
new file mode 100644
index 0000000..d972fd1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_texture_env_route
@@ -0,0 +1,7 @@
+GL_ATIX_texture_env_route
+http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATIX_texture_env_route.txt
+GL_ATIX_texture_env_route
+
+ GL_SECONDARY_COLOR_ATIX 0x8747
+ GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748
+ GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749
diff --git a/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size b/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size
new file mode 100644
index 0000000..85a6d58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size
@@ -0,0 +1,5 @@
+GL_ATIX_vertex_shader_output_point_size
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_vertex_shader_output_point_size
+
+ GL_OUTPUT_POINT_SIZE_ATIX 0x610E
diff --git a/glew/auto/extensions/gl/GL_ATI_draw_buffers b/glew/auto/extensions/gl/GL_ATI_draw_buffers
new file mode 100644
index 0000000..ee81356
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_draw_buffers
@@ -0,0 +1,22 @@
+GL_ATI_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_draw_buffers.txt
+GL_ATI_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_ATI 0x8824
+ GL_DRAW_BUFFER0_ATI 0x8825
+ GL_DRAW_BUFFER1_ATI 0x8826
+ GL_DRAW_BUFFER2_ATI 0x8827
+ GL_DRAW_BUFFER3_ATI 0x8828
+ GL_DRAW_BUFFER4_ATI 0x8829
+ GL_DRAW_BUFFER5_ATI 0x882A
+ GL_DRAW_BUFFER6_ATI 0x882B
+ GL_DRAW_BUFFER7_ATI 0x882C
+ GL_DRAW_BUFFER8_ATI 0x882D
+ GL_DRAW_BUFFER9_ATI 0x882E
+ GL_DRAW_BUFFER10_ATI 0x882F
+ GL_DRAW_BUFFER11_ATI 0x8830
+ GL_DRAW_BUFFER12_ATI 0x8831
+ GL_DRAW_BUFFER13_ATI 0x8832
+ GL_DRAW_BUFFER14_ATI 0x8833
+ GL_DRAW_BUFFER15_ATI 0x8834
+ void glDrawBuffersATI (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_ATI_element_array b/glew/auto/extensions/gl/GL_ATI_element_array
new file mode 100644
index 0000000..28f6320
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_element_array
@@ -0,0 +1,10 @@
+GL_ATI_element_array
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_element_array.txt
+GL_ATI_element_array
+
+ GL_ELEMENT_ARRAY_ATI 0x8768
+ GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+ GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+ void glDrawElementArrayATI (GLenum mode, GLsizei count)
+ void glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count)
+ void glElementPointerATI (GLenum type, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap b/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap
new file mode 100644
index 0000000..09a4112
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap
@@ -0,0 +1,16 @@
+GL_ATI_envmap_bumpmap
+http://oss.sgi.com/projects/ogl-sample/registry/ATI/envmap_bumpmap.txt
+GL_ATI_envmap_bumpmap
+
+ GL_BUMP_ROT_MATRIX_ATI 0x8775
+ GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+ GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+ GL_BUMP_TEX_UNITS_ATI 0x8778
+ GL_DUDV_ATI 0x8779
+ GL_DU8DV8_ATI 0x877A
+ GL_BUMP_ENVMAP_ATI 0x877B
+ GL_BUMP_TARGET_ATI 0x877C
+ void glTexBumpParameterivATI (GLenum pname, GLint *param)
+ void glTexBumpParameterfvATI (GLenum pname, GLfloat *param)
+ void glGetTexBumpParameterivATI (GLenum pname, GLint *param)
+ void glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param)
diff --git a/glew/auto/extensions/gl/GL_ATI_fragment_shader b/glew/auto/extensions/gl/GL_ATI_fragment_shader
new file mode 100644
index 0000000..51b49a5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_fragment_shader
@@ -0,0 +1,72 @@
+GL_ATI_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_fragment_shader.txt
+GL_ATI_fragment_shader
+
+ GL_2X_BIT_ATI 0x00000001
+ GL_RED_BIT_ATI 0x00000001
+ GL_4X_BIT_ATI 0x00000002
+ GL_COMP_BIT_ATI 0x00000002
+ GL_GREEN_BIT_ATI 0x00000002
+ GL_8X_BIT_ATI 0x00000004
+ GL_BLUE_BIT_ATI 0x00000004
+ GL_NEGATE_BIT_ATI 0x00000004
+ GL_BIAS_BIT_ATI 0x00000008
+ GL_HALF_BIT_ATI 0x00000008
+ GL_QUARTER_BIT_ATI 0x00000010
+ GL_EIGHTH_BIT_ATI 0x00000020
+ GL_SATURATE_BIT_ATI 0x00000040
+ GL_FRAGMENT_SHADER_ATI 0x8920
+ GL_REG_0_ATI 0x8921
+ GL_REG_1_ATI 0x8922
+ GL_REG_2_ATI 0x8923
+ GL_REG_3_ATI 0x8924
+ GL_REG_4_ATI 0x8925
+ GL_REG_5_ATI 0x8926
+ GL_CON_0_ATI 0x8941
+ GL_CON_1_ATI 0x8942
+ GL_CON_2_ATI 0x8943
+ GL_CON_3_ATI 0x8944
+ GL_CON_4_ATI 0x8945
+ GL_CON_5_ATI 0x8946
+ GL_CON_6_ATI 0x8947
+ GL_CON_7_ATI 0x8948
+ GL_MOV_ATI 0x8961
+ GL_ADD_ATI 0x8963
+ GL_MUL_ATI 0x8964
+ GL_SUB_ATI 0x8965
+ GL_DOT3_ATI 0x8966
+ GL_DOT4_ATI 0x8967
+ GL_MAD_ATI 0x8968
+ GL_LERP_ATI 0x8969
+ GL_CND_ATI 0x896A
+ GL_CND0_ATI 0x896B
+ GL_DOT2_ADD_ATI 0x896C
+ GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+ GL_SWIZZLE_STR_ATI 0x8976
+ GL_SWIZZLE_STQ_ATI 0x8977
+ GL_SWIZZLE_STR_DR_ATI 0x8978
+ GL_SWIZZLE_STQ_DQ_ATI 0x8979
+ void glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+ void glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+ void glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+ void glBeginFragmentShaderATI (void)
+ void glBindFragmentShaderATI (GLuint id)
+ void glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+ void glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+ void glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+ void glDeleteFragmentShaderATI (GLuint id)
+ void glEndFragmentShaderATI (void)
+ GLuint glGenFragmentShadersATI (GLuint range)
+ void glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle)
+ void glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle)
+ void glSetFragmentShaderConstantATI (GLuint dst, const GLfloat* value)
+ GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+ GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+ GL_NUM_PASSES_ATI 0x8970
+ GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+ GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+ GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+ GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+ GL_SWIZZLE_STRQ_ATI 0x897A
+ GL_SWIZZLE_STRQ_DQ_ATI 0x897B
diff --git a/glew/auto/extensions/gl/GL_ATI_map_object_buffer b/glew/auto/extensions/gl/GL_ATI_map_object_buffer
new file mode 100644
index 0000000..6a683d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_map_object_buffer
@@ -0,0 +1,6 @@
+GL_ATI_map_object_buffer
+http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt
+GL_ATI_map_object_buffer
+
+ void * glMapObjectBufferATI (GLuint buffer)
+ void glUnmapObjectBufferATI (GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_ATI_meminfo b/glew/auto/extensions/gl/GL_ATI_meminfo
new file mode 100644
index 0000000..e7e6fc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_meminfo
@@ -0,0 +1,7 @@
+GL_ATI_meminfo
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_meminfo.txt
+GL_ATI_meminfo
+
+ GL_VBO_FREE_MEMORY_ATI 0x87FB
+ GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+ GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
diff --git a/glew/auto/extensions/gl/GL_ATI_pn_triangles b/glew/auto/extensions/gl/GL_ATI_pn_triangles
new file mode 100644
index 0000000..ca3923d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_pn_triangles
@@ -0,0 +1,15 @@
+GL_ATI_pn_triangles
+http://www.opengl.org/registry/specs/ATI/pn_triangles.txt
+GL_ATI_pn_triangles
+
+ GL_PN_TRIANGLES_ATI 0x87F0
+ GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+ GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+ GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+ GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+ GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+ GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+ GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+ GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+ void glPNTrianglesiATI (GLenum pname, GLint param)
+ void glPNTrianglesfATI (GLenum pname, GLfloat param)
diff --git a/glew/auto/extensions/gl/GL_ATI_separate_stencil b/glew/auto/extensions/gl/GL_ATI_separate_stencil
new file mode 100644
index 0000000..b7237e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_separate_stencil
@@ -0,0 +1,10 @@
+GL_ATI_separate_stencil
+http://www.opengl.org/registry/specs/ATI/separate_stencil.txt
+GL_ATI_separate_stencil
+
+ GL_STENCIL_BACK_FUNC_ATI 0x8800
+ GL_STENCIL_BACK_FAIL_ATI 0x8801
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+ GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+ void glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
+ void glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_ATI_shader_texture_lod b/glew/auto/extensions/gl/GL_ATI_shader_texture_lod
new file mode 100644
index 0000000..e6e6c04
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_ATI_shader_texture_lod
+
+GL_ATI_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_ATI_text_fragment_shader b/glew/auto/extensions/gl/GL_ATI_text_fragment_shader
new file mode 100644
index 0000000..b0b93fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_text_fragment_shader
@@ -0,0 +1,5 @@
+GL_ATI_text_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_text_fragment_shader.txt
+GL_ATI_text_fragment_shader
+
+ GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc b/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc
new file mode 100644
index 0000000..fc3ee44
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc
@@ -0,0 +1,5 @@
+GL_ATI_texture_compression_3dc
+
+GL_ATI_texture_compression_3dc
+
+ GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_env_combine3 b/glew/auto/extensions/gl/GL_ATI_texture_env_combine3
new file mode 100644
index 0000000..fc6fc96
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_env_combine3
@@ -0,0 +1,7 @@
+GL_ATI_texture_env_combine3
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_env_combine3.txt
+GL_ATI_texture_env_combine3
+
+ GL_MODULATE_ADD_ATI 0x8744
+ GL_MODULATE_SIGNED_ADD_ATI 0x8745
+ GL_MODULATE_SUBTRACT_ATI 0x8746
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_float b/glew/auto/extensions/gl/GL_ATI_texture_float
new file mode 100644
index 0000000..aead237
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_float
@@ -0,0 +1,16 @@
+GL_ATI_texture_float
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_float.txt
+GL_ATI_texture_float
+
+ GL_RGBA_FLOAT32_ATI 0x8814
+ GL_RGB_FLOAT32_ATI 0x8815
+ GL_ALPHA_FLOAT32_ATI 0x8816
+ GL_INTENSITY_FLOAT32_ATI 0x8817
+ GL_LUMINANCE_FLOAT32_ATI 0x8818
+ GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+ GL_RGBA_FLOAT16_ATI 0x881A
+ GL_RGB_FLOAT16_ATI 0x881B
+ GL_ALPHA_FLOAT16_ATI 0x881C
+ GL_INTENSITY_FLOAT16_ATI 0x881D
+ GL_LUMINANCE_FLOAT16_ATI 0x881E
+ GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_mirror_once b/glew/auto/extensions/gl/GL_ATI_texture_mirror_once
new file mode 100644
index 0000000..e7ba761
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_mirror_once
@@ -0,0 +1,6 @@
+GL_ATI_texture_mirror_once
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_mirror_once.txt
+GL_ATI_texture_mirror_once
+
+ GL_MIRROR_CLAMP_ATI 0x8742
+ GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_array_object b/glew/auto/extensions/gl/GL_ATI_vertex_array_object
new file mode 100644
index 0000000..f0c01c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_array_object
@@ -0,0 +1,24 @@
+GL_ATI_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_array_object.txt
+GL_ATI_vertex_array_object
+
+ GL_STATIC_ATI 0x8760
+ GL_DYNAMIC_ATI 0x8761
+ GL_PRESERVE_ATI 0x8762
+ GL_DISCARD_ATI 0x8763
+ GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+ GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+ GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+ GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+ void glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)
+ void glFreeObjectBufferATI (GLuint buffer)
+ void glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat* params)
+ void glGetArrayObjectivATI (GLenum array, GLenum pname, GLint* params)
+ void glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat* params)
+ void glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint* params)
+ void glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat* params)
+ void glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint* params)
+ GLboolean glIsObjectBufferATI (GLuint buffer)
+ GLuint glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage)
+ void glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve)
+ void glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object b/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object
new file mode 100644
index 0000000..2659525
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object
@@ -0,0 +1,7 @@
+GL_ATI_vertex_attrib_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_attrib_array_object.txt
+GL_ATI_vertex_attrib_array_object
+
+ void glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint* params)
+ void glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset)
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_streams b/glew/auto/extensions/gl/GL_ATI_vertex_streams
new file mode 100644
index 0000000..f6e64fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_streams
@@ -0,0 +1,59 @@
+GL_ATI_vertex_streams
+http://www.opengl.org/registry/specs/ATI/vertex_streams.txt
+GL_ATI_vertex_streams
+
+ GL_MAX_VERTEX_STREAMS_ATI 0x876B
+ GL_VERTEX_SOURCE_ATI 0x876C
+ GL_VERTEX_STREAM0_ATI 0x876D
+ GL_VERTEX_STREAM1_ATI 0x876E
+ GL_VERTEX_STREAM2_ATI 0x876F
+ GL_VERTEX_STREAM3_ATI 0x8770
+ GL_VERTEX_STREAM4_ATI 0x8771
+ GL_VERTEX_STREAM5_ATI 0x8772
+ GL_VERTEX_STREAM6_ATI 0x8773
+ GL_VERTEX_STREAM7_ATI 0x8774
+ void glClientActiveVertexStreamATI (GLenum stream)
+ void glVertexBlendEnviATI (GLenum pname, GLint param)
+ void glVertexBlendEnvfATI (GLenum pname, GLfloat param)
+ void glVertexStream1sATI (GLenum stream, GLshort x)
+ void glVertexStream1svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream1iATI (GLenum stream, GLint x)
+ void glVertexStream1ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream1fATI (GLenum stream, GLfloat x)
+ void glVertexStream1fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream1dATI (GLenum stream, GLdouble x)
+ void glVertexStream1dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream2sATI (GLenum stream, GLshort x, GLshort y)
+ void glVertexStream2svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream2iATI (GLenum stream, GLint x, GLint y)
+ void glVertexStream2ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y)
+ void glVertexStream2fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y)
+ void glVertexStream2dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z)
+ void glVertexStream3svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z)
+ void glVertexStream3ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexStream3fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexStream3dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexStream4svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w)
+ void glVertexStream4ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexStream4fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexStream4dvATI (GLenum stream, const GLdouble *coords)
+ void glNormalStream3bATI (GLenum stream, GLbyte x, GLbyte y, GLbyte z)
+ void glNormalStream3bvATI (GLenum stream, const GLbyte *coords)
+ void glNormalStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z)
+ void glNormalStream3svATI (GLenum stream, const GLshort *coords)
+ void glNormalStream3iATI (GLenum stream, GLint x, GLint y, GLint z)
+ void glNormalStream3ivATI (GLenum stream, const GLint *coords)
+ void glNormalStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z)
+ void glNormalStream3fvATI (GLenum stream, const GLfloat *coords)
+ void glNormalStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z)
+ void glNormalStream3dvATI (GLenum stream, const GLdouble *coords)
diff --git a/glew/auto/extensions/gl/GL_DMP_program_binary b/glew/auto/extensions/gl/GL_DMP_program_binary
new file mode 100644
index 0000000..3264cf4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_DMP_program_binary
@@ -0,0 +1,7 @@
+GL_DMP_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_program_binary.txt
+GL_DMP_program_binary
+
+ GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
+ GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
+ GL_DMP_PROGRAM_BINARY_DMP 0x9253
diff --git a/glew/auto/extensions/gl/GL_DMP_shader_binary b/glew/auto/extensions/gl/GL_DMP_shader_binary
new file mode 100644
index 0000000..1b4b03b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_DMP_shader_binary
@@ -0,0 +1,5 @@
+GL_DMP_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_shader_binary.txt
+GL_DMP_shader_binary
+
+ GL_SHADER_BINARY_DMP 0x9250
diff --git a/glew/auto/extensions/gl/GL_EXT_422_pixels b/glew/auto/extensions/gl/GL_EXT_422_pixels
new file mode 100644
index 0000000..5ac06bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_422_pixels
@@ -0,0 +1,8 @@
+GL_EXT_422_pixels
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_422_pixels.txt
+GL_EXT_422_pixels
+
+ GL_422_EXT 0x80CC
+ GL_422_REV_EXT 0x80CD
+ GL_422_AVERAGE_EXT 0x80CE
+ GL_422_REV_AVERAGE_EXT 0x80CF
diff --git a/glew/auto/extensions/gl/GL_EXT_Cg_shader b/glew/auto/extensions/gl/GL_EXT_Cg_shader
new file mode 100644
index 0000000..b2df900
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_Cg_shader
@@ -0,0 +1,6 @@
+GL_EXT_Cg_shader
+http://download.nvidia.com/developer/GLSL/GLSL%20Release%20Notes%20for%20Release%2060.pdf
+GL_EXT_Cg_shader
+
+ GL_CG_VERTEX_SHADER_EXT 0x890E
+ GL_CG_FRAGMENT_SHADER_EXT 0x890F
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_array b/glew/auto/extensions/gl/GL_EXT_EGL_image_array
new file mode 100644
index 0000000..a916378
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_array
@@ -0,0 +1,4 @@
+GL_EXT_EGL_image_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt
+GL_EXT_EGL_image_array
+
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes b/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes
new file mode 100644
index 0000000..9fcae5a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes
@@ -0,0 +1,4 @@
+GL_EXT_EGL_image_external_wrap_modes
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_external_wrap_modes.txt
+GL_EXT_EGL_image_external_wrap_modes
+
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_storage b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage
new file mode 100644
index 0000000..dfab6b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage
@@ -0,0 +1,6 @@
+GL_EXT_EGL_image_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage.txt
+GL_EXT_EGL_image_storage
+
+ void glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list)
+ void glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list)
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression
new file mode 100644
index 0000000..de64135
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression
@@ -0,0 +1,7 @@
+GL_EXT_EGL_image_storage_compression
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage_compression.txt
+GL_EXT_EGL_image_storage_compression
+
+ GL_SURFACE_COMPRESSION_EXT 0x96C0
+ GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+ GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_sync b/glew/auto/extensions/gl/GL_EXT_EGL_sync
new file mode 100644
index 0000000..37beacc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_sync
@@ -0,0 +1,4 @@
+GL_EXT_EGL_sync
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_sync.txt
+GL_EXT_EGL_sync
+
diff --git a/glew/auto/extensions/gl/GL_EXT_YUV_target b/glew/auto/extensions/gl/GL_EXT_YUV_target
new file mode 100644
index 0000000..8123ee7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_YUV_target
@@ -0,0 +1,5 @@
+GL_EXT_YUV_target
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_YUV_target.txt
+GL_EXT_YUV_target
+
+ GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
diff --git a/glew/auto/extensions/gl/GL_EXT_abgr b/glew/auto/extensions/gl/GL_EXT_abgr
new file mode 100644
index 0000000..7954859
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_abgr
@@ -0,0 +1,5 @@
+GL_EXT_abgr
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_abgr.txt
+GL_EXT_abgr
+
+ GL_ABGR_EXT 0x8000
diff --git a/glew/auto/extensions/gl/GL_EXT_base_instance b/glew/auto/extensions/gl/GL_EXT_base_instance
new file mode 100644
index 0000000..a4a26ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_base_instance
@@ -0,0 +1,7 @@
+GL_EXT_base_instance
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_base_instance.txt
+GL_EXT_base_instance
+
+ void glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
diff --git a/glew/auto/extensions/gl/GL_EXT_bgra b/glew/auto/extensions/gl/GL_EXT_bgra
new file mode 100644
index 0000000..e80cb8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_bgra
@@ -0,0 +1,6 @@
+GL_EXT_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_bgra.txt
+GL_EXT_bgra
+
+ GL_BGR_EXT 0x80E0
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_bindable_uniform b/glew/auto/extensions/gl/GL_EXT_bindable_uniform
new file mode 100644
index 0000000..00ec270
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_bindable_uniform
@@ -0,0 +1,13 @@
+GL_EXT_bindable_uniform
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_bindable_uniform.txt
+GL_EXT_bindable_uniform
+
+ GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+ GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+ GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+ GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+ GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+ GL_UNIFORM_BUFFER_EXT 0x8DEE
+ void glUniformBufferEXT (GLuint program, GLint location, GLuint buffer)
+ GLint glGetUniformBufferSizeEXT (GLuint program, GLint location)
+ GLintptr glGetUniformOffsetEXT (GLuint program, GLint location)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_color b/glew/auto/extensions/gl/GL_EXT_blend_color
new file mode 100644
index 0000000..e70edf6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_color
@@ -0,0 +1,10 @@
+GL_EXT_blend_color
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_color.txt
+GL_EXT_blend_color
+
+ GL_CONSTANT_COLOR_EXT 0x8001
+ GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+ GL_CONSTANT_ALPHA_EXT 0x8003
+ GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+ GL_BLEND_COLOR_EXT 0x8005
+ void glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_equation_separate b/glew/auto/extensions/gl/GL_EXT_blend_equation_separate
new file mode 100644
index 0000000..f3417e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_equation_separate
@@ -0,0 +1,7 @@
+GL_EXT_blend_equation_separate
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_equation_separate.txt
+GL_EXT_blend_equation_separate
+
+ GL_BLEND_EQUATION_RGB_EXT 0x8009
+ GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+ void glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_func_extended b/glew/auto/extensions/gl/GL_EXT_blend_func_extended
new file mode 100644
index 0000000..fc28e2f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_func_extended
@@ -0,0 +1,14 @@
+GL_EXT_blend_func_extended
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_extended.txt
+GL_EXT_blend_func_extended
+
+ GL_SRC_ALPHA_SATURATE_EXT 0x0308
+ GL_SRC1_ALPHA_EXT 0x8589
+ GL_SRC1_COLOR_EXT 0x88F9
+ GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
+ GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
+ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
+ GL_LOCATION_INDEX_EXT 0x930F
+ void glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name)
+ GLint glGetFragDataIndexEXT (GLuint program, const GLchar * name)
+ GLint glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar* name)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_func_separate b/glew/auto/extensions/gl/GL_EXT_blend_func_separate
new file mode 100644
index 0000000..d8db1f1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_func_separate
@@ -0,0 +1,9 @@
+GL_EXT_blend_func_separate
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_separate.txt
+GL_EXT_blend_func_separate
+
+ GL_BLEND_DST_RGB_EXT 0x80C8
+ GL_BLEND_SRC_RGB_EXT 0x80C9
+ GL_BLEND_DST_ALPHA_EXT 0x80CA
+ GL_BLEND_SRC_ALPHA_EXT 0x80CB
+ void glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_logic_op b/glew/auto/extensions/gl/GL_EXT_blend_logic_op
new file mode 100644
index 0000000..e29e418
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_logic_op
@@ -0,0 +1,4 @@
+GL_EXT_blend_logic_op
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_logic_op.txt
+GL_EXT_blend_logic_op
+
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_minmax b/glew/auto/extensions/gl/GL_EXT_blend_minmax
new file mode 100644
index 0000000..8e33e6f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_minmax
@@ -0,0 +1,9 @@
+GL_EXT_blend_minmax
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_minmax.txt
+GL_EXT_blend_minmax
+
+ GL_FUNC_ADD_EXT 0x8006
+ GL_MIN_EXT 0x8007
+ GL_MAX_EXT 0x8008
+ GL_BLEND_EQUATION_EXT 0x8009
+ void glBlendEquationEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_subtract b/glew/auto/extensions/gl/GL_EXT_blend_subtract
new file mode 100644
index 0000000..eb93fba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_subtract
@@ -0,0 +1,6 @@
+GL_EXT_blend_subtract
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_subtract.txt
+GL_EXT_blend_subtract
+
+ GL_FUNC_SUBTRACT_EXT 0x800A
+ GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
diff --git a/glew/auto/extensions/gl/GL_EXT_buffer_storage b/glew/auto/extensions/gl/GL_EXT_buffer_storage
new file mode 100644
index 0000000..5bee2c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_buffer_storage
@@ -0,0 +1,15 @@
+GL_EXT_buffer_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_buffer_storage.txt
+GL_EXT_buffer_storage
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_PERSISTENT_BIT_EXT 0x0040
+ GL_MAP_COHERENT_BIT_EXT 0x0080
+ GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
+ GL_CLIENT_STORAGE_BIT_EXT 0x0200
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
+ GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
+ GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
+ void glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
+ void glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_EXT_clear_texture b/glew/auto/extensions/gl/GL_EXT_clear_texture
new file mode 100644
index 0000000..f575d91
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clear_texture
@@ -0,0 +1,6 @@
+GL_EXT_clear_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt
+GL_EXT_clear_texture
+
+ void glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
+ void glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_control b/glew/auto/extensions/gl/GL_EXT_clip_control
new file mode 100644
index 0000000..527358c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_control
@@ -0,0 +1,11 @@
+GL_EXT_clip_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_control.txt
+GL_EXT_clip_control
+
+ GL_LOWER_LEFT_EXT 0x8CA1
+ GL_UPPER_LEFT_EXT 0x8CA2
+ GL_CLIP_ORIGIN_EXT 0x935C
+ GL_CLIP_DEPTH_MODE_EXT 0x935D
+ GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
+ GL_ZERO_TO_ONE_EXT 0x935F
+ void glClipControlEXT (GLenum origin, GLenum depth)
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_cull_distance b/glew/auto/extensions/gl/GL_EXT_clip_cull_distance
new file mode 100644
index 0000000..ff1f926
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_cull_distance
@@ -0,0 +1,15 @@
+GL_EXT_clip_cull_distance
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt
+GL_EXT_clip_cull_distance
+
+ GL_MAX_CLIP_DISTANCES_EXT 0x0D32
+ GL_CLIP_DISTANCE0_EXT 0x3000
+ GL_CLIP_DISTANCE1_EXT 0x3001
+ GL_CLIP_DISTANCE2_EXT 0x3002
+ GL_CLIP_DISTANCE3_EXT 0x3003
+ GL_CLIP_DISTANCE4_EXT 0x3004
+ GL_CLIP_DISTANCE5_EXT 0x3005
+ GL_CLIP_DISTANCE6_EXT 0x3006
+ GL_CLIP_DISTANCE7_EXT 0x3007
+ GL_MAX_CULL_DISTANCES_EXT 0x82F9
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_volume_hint b/glew/auto/extensions/gl/GL_EXT_clip_volume_hint
new file mode 100644
index 0000000..c4bb91b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_volume_hint
@@ -0,0 +1,5 @@
+GL_EXT_clip_volume_hint
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_volume_hint.txt
+GL_EXT_clip_volume_hint
+
+ GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
diff --git a/glew/auto/extensions/gl/GL_EXT_cmyka b/glew/auto/extensions/gl/GL_EXT_cmyka
new file mode 100644
index 0000000..18ab3d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_cmyka
@@ -0,0 +1,8 @@
+GL_EXT_cmyka
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cmyka.txt
+GL_EXT_cmyka
+
+ GL_CMYK_EXT 0x800C
+ GL_CMYKA_EXT 0x800D
+ GL_PACK_CMYK_HINT_EXT 0x800E
+ GL_UNPACK_CMYK_HINT_EXT 0x800F
diff --git a/glew/auto/extensions/gl/GL_EXT_color_buffer_float b/glew/auto/extensions/gl/GL_EXT_color_buffer_float
new file mode 100644
index 0000000..0fa95a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_buffer_float
@@ -0,0 +1,4 @@
+GL_EXT_color_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_float.txt
+GL_EXT_color_buffer_float
+
diff --git a/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float b/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float
new file mode 100644
index 0000000..3b8d7b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float
@@ -0,0 +1,10 @@
+GL_EXT_color_buffer_half_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_half_float.txt
+GL_EXT_color_buffer_half_float
+
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
+ GL_R16F_EXT 0x822D
+ GL_RG16F_EXT 0x822F
+ GL_RGBA16F_EXT 0x881A
+ GL_RGB16F_EXT 0x881B
+ GL_UNSIGNED_NORMALIZED_EXT 0x8C17
diff --git a/glew/auto/extensions/gl/GL_EXT_color_subtable b/glew/auto/extensions/gl/GL_EXT_color_subtable
new file mode 100644
index 0000000..6a42010
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_subtable
@@ -0,0 +1,6 @@
+GL_EXT_color_subtable
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_subtable.txt
+GL_EXT_color_subtable
+
+ void glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)
+ void glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
diff --git a/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array b/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array
new file mode 100644
index 0000000..e801e55
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array
@@ -0,0 +1,8 @@
+GL_EXT_compiled_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compiled_vertex_array.txt
+GL_EXT_compiled_vertex_array
+
+ GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+ GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+ void glLockArraysEXT (GLint first, GLsizei count)
+ void glUnlockArraysEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture b/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture
new file mode 100644
index 0000000..a8879af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture
@@ -0,0 +1,4 @@
+GL_EXT_compressed_ETC1_RGB8_sub_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compressed_ETC1_RGB8_sub_texture.txt
+GL_EXT_compressed_ETC1_RGB8_sub_texture
+
diff --git a/glew/auto/extensions/gl/GL_EXT_conservative_depth b/glew/auto/extensions/gl/GL_EXT_conservative_depth
new file mode 100644
index 0000000..dc71faa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_conservative_depth
@@ -0,0 +1,4 @@
+GL_EXT_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt
+GL_EXT_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_EXT_convolution b/glew/auto/extensions/gl/GL_EXT_convolution
new file mode 100644
index 0000000..fdeab52
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_convolution
@@ -0,0 +1,37 @@
+GL_EXT_convolution
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_convolution.txt
+GL_EXT_convolution
+
+ GL_CONVOLUTION_1D_EXT 0x8010
+ GL_CONVOLUTION_2D_EXT 0x8011
+ GL_SEPARABLE_2D_EXT 0x8012
+ GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+ GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+ GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+ GL_REDUCE_EXT 0x8016
+ GL_CONVOLUTION_FORMAT_EXT 0x8017
+ GL_CONVOLUTION_WIDTH_EXT 0x8018
+ GL_CONVOLUTION_HEIGHT_EXT 0x8019
+ GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+ GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+ GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+ GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+ GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+ GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+ GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+ GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+ GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+ GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+ void glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)
+ void glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)
+ void glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat param)
+ void glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint param)
+ void glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint* params)
+ void glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image)
+ void glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)
+ void glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)
diff --git a/glew/auto/extensions/gl/GL_EXT_coordinate_frame b/glew/auto/extensions/gl/GL_EXT_coordinate_frame
new file mode 100644
index 0000000..b57c8d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_coordinate_frame
@@ -0,0 +1,20 @@
+GL_EXT_coordinate_frame
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_coordinate_frame.txt
+GL_EXT_coordinate_frame
+
+ GL_TANGENT_ARRAY_EXT 0x8439
+ GL_BINORMAL_ARRAY_EXT 0x843A
+ GL_CURRENT_TANGENT_EXT 0x843B
+ GL_CURRENT_BINORMAL_EXT 0x843C
+ GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+ GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+ GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+ GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+ GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+ GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+ GL_MAP1_TANGENT_EXT 0x8444
+ GL_MAP2_TANGENT_EXT 0x8445
+ GL_MAP1_BINORMAL_EXT 0x8446
+ GL_MAP2_BINORMAL_EXT 0x8447
+ void glBinormalPointerEXT (GLenum type, GLsizei stride, void *pointer)
+ void glTangentPointerEXT (GLenum type, GLsizei stride, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_copy_image b/glew/auto/extensions/gl/GL_EXT_copy_image
new file mode 100644
index 0000000..fba0373
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_copy_image
@@ -0,0 +1,5 @@
+GL_EXT_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_image.txt
+GL_EXT_copy_image
+
+ void glCopyImageSubDataEXT (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_EXT_copy_texture b/glew/auto/extensions/gl/GL_EXT_copy_texture
new file mode 100644
index 0000000..b1ba382
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_copy_texture
@@ -0,0 +1,9 @@
+GL_EXT_copy_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_texture.txt
+GL_EXT_copy_texture
+
+ void glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_EXT_cull_vertex b/glew/auto/extensions/gl/GL_EXT_cull_vertex
new file mode 100644
index 0000000..8e82290
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_cull_vertex
@@ -0,0 +1,9 @@
+GL_EXT_cull_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cull_vertex.txt
+GL_EXT_cull_vertex
+
+ GL_CULL_VERTEX_EXT 0x81AA
+ GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+ GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+ void glCullParameterdvEXT (GLenum pname, GLdouble* params)
+ void glCullParameterfvEXT (GLenum pname, GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_debug_label b/glew/auto/extensions/gl/GL_EXT_debug_label
new file mode 100644
index 0000000..74b8855
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_debug_label
@@ -0,0 +1,12 @@
+GL_EXT_debug_label
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_debug_label.txt
+GL_EXT_debug_label
+
+ GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+ GL_PROGRAM_OBJECT_EXT 0x8B40
+ GL_SHADER_OBJECT_EXT 0x8B48
+ GL_BUFFER_OBJECT_EXT 0x9151
+ GL_QUERY_OBJECT_EXT 0x9153
+ GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+ void glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar* label)
diff --git a/glew/auto/extensions/gl/GL_EXT_debug_marker b/glew/auto/extensions/gl/GL_EXT_debug_marker
new file mode 100644
index 0000000..ce9ffe4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_debug_marker
@@ -0,0 +1,7 @@
+GL_EXT_debug_marker
+http://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt
+GL_EXT_debug_marker
+
+ void glInsertEventMarkerEXT (GLsizei length, const GLchar* marker)
+ void glPushGroupMarkerEXT (GLsizei length, const GLchar* marker)
+ void glPopGroupMarkerEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_depth_bounds_test b/glew/auto/extensions/gl/GL_EXT_depth_bounds_test
new file mode 100644
index 0000000..da2a453
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_depth_bounds_test
@@ -0,0 +1,7 @@
+GL_EXT_depth_bounds_test
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_depth_bounds_test.txt
+GL_EXT_depth_bounds_test
+
+ GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+ GL_DEPTH_BOUNDS_EXT 0x8891
+ void glDepthBoundsEXT (GLclampd zmin, GLclampd zmax)
diff --git a/glew/auto/extensions/gl/GL_EXT_depth_clamp b/glew/auto/extensions/gl/GL_EXT_depth_clamp
new file mode 100644
index 0000000..2aee70f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_depth_clamp
@@ -0,0 +1,5 @@
+GL_EXT_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_depth_clamp.txt
+GL_EXT_depth_clamp
+
+ GL_DEPTH_CLAMP_EXT 0x864F
diff --git a/glew/auto/extensions/gl/GL_EXT_direct_state_access b/glew/auto/extensions/gl/GL_EXT_direct_state_access
new file mode 100644
index 0000000..6fa82bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_direct_state_access
@@ -0,0 +1,221 @@
+GL_EXT_direct_state_access
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_direct_state_access.txt
+GL_EXT_direct_state_access
+
+ GL_PROGRAM_MATRIX_EXT 0x8E2D
+ GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+ GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+ void glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture)
+ GLenum glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target)
+ void glClientAttribDefaultEXT (GLbitfield mask)
+ void glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glDisableClientStateIndexedEXT (GLenum array, GLuint index)
+ void glDisableClientStateiEXT (GLenum array, GLuint index)
+ void glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
+ void glDisableVertexArrayEXT (GLuint vaobj, GLenum array)
+ void glEnableClientStateIndexedEXT (GLenum array, GLuint index)
+ void glEnableClientStateiEXT (GLenum array, GLuint index)
+ void glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
+ void glEnableVertexArrayEXT (GLuint vaobj, GLenum array)
+ void glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode)
+ void glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum* bufs)
+ void glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode)
+ void glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target)
+ void glGenerateTextureMipmapEXT (GLuint texture, GLenum target)
+ void glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, void *img)
+ void glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint level, void *img)
+ void glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble* params)
+ void glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble* params)
+ void glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat* params)
+ void glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat* params)
+ void glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint* param)
+ void glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat* params)
+ void glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params)
+ void glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params)
+ void glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint* params)
+ void glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
+ void glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params)
+ void glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params)
+ void glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint* params)
+ void glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat* params)
+ void glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint* params)
+ void glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void** params)
+ void glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
+ void glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params)
+ void glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint* params)
+ void glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint* params)
+ void glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble* params)
+ void glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat* params)
+ void glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string)
+ void glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint* params)
+ void glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint* params)
+ void glGetPointerIndexedvEXT (GLenum target, GLuint index, void** params)
+ void glGetPointeri_vEXT (GLenum pname, GLuint index, void** params)
+ void glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
+ void glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params)
+ void glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params)
+ void glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint* params)
+ void glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint* params)
+ void glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat* params)
+ void glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint* params)
+ void glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint* param)
+ void glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint* param)
+ void glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void** param)
+ void glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void** param)
+ void * glMapNamedBufferEXT (GLuint buffer, GLenum access)
+ void * glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
+ void glMatrixFrustumEXT (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f)
+ void glMatrixLoadIdentityEXT (GLenum matrixMode)
+ void glMatrixLoadTransposedEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixLoadTransposefEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoaddEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixLoadfEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultTransposedEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixMultTransposefEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultdEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixMultfEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixOrthoEXT (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f)
+ void glMatrixPopEXT (GLenum matrixMode)
+ void glMatrixPushEXT (GLenum matrixMode)
+ void glMatrixRotatedEXT (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixRotatefEXT (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+ void glMatrixScaledEXT (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixScalefEXT (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z)
+ void glMatrixTranslatedEXT (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixTranslatefEXT (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z)
+ void glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer)
+ void glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
+ void glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params)
+ void glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
+ void glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* params)
+ void glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param)
+ void glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params)
+ void glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param)
+ void glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params)
+ void glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param)
+ void glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint* params)
+ void glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* params)
+ void glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint* params)
+ void glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
+ void glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param)
+ void glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
+ void glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* param)
+ void glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer)
+ void glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ void glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
+ void glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
+ void glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face)
+ void glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble* params)
+ void glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat* params)
+ void glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint* params)
+ void glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint* params)
+ void glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params)
+ void glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params)
+ void glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params)
+ void glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string)
+ void glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0)
+ void glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform1iEXT (GLuint program, GLint location, GLint v0)
+ void glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0)
+ void glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1)
+ void glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1)
+ void glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1)
+ void glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+ void glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
+ void glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
+ void glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+ void glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+ void glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+ void glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glPushClientAttribDefaultEXT (GLbitfield mask)
+ void glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer)
+ void glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint* params)
+ void glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint* params)
+ void glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param)
+ void glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat* param)
+ void glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param)
+ void glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint* param)
+ void glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer)
+ void glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ GLboolean glUnmapNamedBufferEXT (GLuint buffer)
+ void glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset)
+ void glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_EXT_discard_framebuffer b/glew/auto/extensions/gl/GL_EXT_discard_framebuffer
new file mode 100644
index 0000000..ddf9f3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_discard_framebuffer
@@ -0,0 +1,8 @@
+GL_EXT_discard_framebuffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_discard_framebuffer.txt
+GL_EXT_discard_framebuffer
+
+ GL_COLOR_EXT 0x1800
+ GL_DEPTH_EXT 0x1801
+ GL_STENCIL_EXT 0x1802
+ void glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum* attachments)
diff --git a/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query b/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query
new file mode 100644
index 0000000..b6db945
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query
@@ -0,0 +1,21 @@
+GL_EXT_disjoint_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_disjoint_timer_query.txt
+GL_EXT_disjoint_timer_query
+
+ GL_QUERY_COUNTER_BITS_EXT 0x8864
+ GL_CURRENT_QUERY_EXT 0x8865
+ GL_QUERY_RESULT_EXT 0x8866
+ GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+ GL_TIME_ELAPSED_EXT 0x88BF
+ GL_TIMESTAMP_EXT 0x8E28
+ GL_GPU_DISJOINT_EXT 0x8FBB
+ void glBeginQueryEXT (GLenum target, GLuint id)
+ void glDeleteQueriesEXT (GLsizei n, const GLuint* ids)
+ void glEndQueryEXT (GLenum target)
+ void glGenQueriesEXT (GLsizei n, GLuint* ids)
+ void glGetInteger64vEXT (GLenum pname, GLint64* data)
+ void glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivEXT (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryEXT (GLuint id)
+ void glQueryCounterEXT (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers b/glew/auto/extensions/gl/GL_EXT_draw_buffers
new file mode 100644
index 0000000..eb0a405
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers
@@ -0,0 +1,39 @@
+GL_EXT_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers.txt
+GL_EXT_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_EXT 0x8824
+ GL_DRAW_BUFFER0_EXT 0x8825
+ GL_DRAW_BUFFER1_EXT 0x8826
+ GL_DRAW_BUFFER2_EXT 0x8827
+ GL_DRAW_BUFFER3_EXT 0x8828
+ GL_DRAW_BUFFER4_EXT 0x8829
+ GL_DRAW_BUFFER5_EXT 0x882A
+ GL_DRAW_BUFFER6_EXT 0x882B
+ GL_DRAW_BUFFER7_EXT 0x882C
+ GL_DRAW_BUFFER8_EXT 0x882D
+ GL_DRAW_BUFFER9_EXT 0x882E
+ GL_DRAW_BUFFER10_EXT 0x882F
+ GL_DRAW_BUFFER11_EXT 0x8830
+ GL_DRAW_BUFFER12_EXT 0x8831
+ GL_DRAW_BUFFER13_EXT 0x8832
+ GL_DRAW_BUFFER14_EXT 0x8833
+ GL_DRAW_BUFFER15_EXT 0x8834
+ GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+ GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+ GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+ GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+ GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+ GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+ GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+ GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+ GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+ GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+ GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+ GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+ GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+ GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+ GL_COLOR_ATTACHMENT13_EXT 0x8CED
+ GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+ GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+ void glDrawBuffersEXT (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers2 b/glew/auto/extensions/gl/GL_EXT_draw_buffers2
new file mode 100644
index 0000000..02cb158
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers2
@@ -0,0 +1,10 @@
+GL_EXT_draw_buffers2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers2.txt
+GL_EXT_draw_buffers2
+
+ void glColorMaskIndexedEXT (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableIndexedEXT (GLenum target, GLuint index)
+ void glEnableIndexedEXT (GLenum target, GLuint index)
+ void glGetBooleanIndexedvEXT (GLenum value, GLuint index, GLboolean* data)
+ void glGetIntegerIndexedvEXT (GLenum value, GLuint index, GLint* data)
+ GLboolean glIsEnabledIndexedEXT (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed b/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed
new file mode 100644
index 0000000..cfaaf0a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed
@@ -0,0 +1,12 @@
+GL_EXT_draw_buffers_indexed
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers_indexed.txt
+GL_EXT_draw_buffers_indexed
+
+ void glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiEXT (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst)
+ void glColorMaskiEXT (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableiEXT (GLenum target, GLuint index)
+ void glEnableiEXT (GLenum target, GLuint index)
+ GLboolean glIsEnablediEXT (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex b/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex
new file mode 100644
index 0000000..2124d9d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex
@@ -0,0 +1,8 @@
+GL_EXT_draw_elements_base_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_elements_base_vertex.txt
+GL_EXT_draw_elements_base_vertex
+
+ void glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
+ void glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_instanced b/glew/auto/extensions/gl/GL_EXT_draw_instanced
new file mode 100644
index 0000000..ca7f17e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_instanced
@@ -0,0 +1,6 @@
+GL_EXT_draw_instanced
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_draw_instanced.txt
+GL_EXT_draw_instanced
+
+ void glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_range_elements b/glew/auto/extensions/gl/GL_EXT_draw_range_elements
new file mode 100644
index 0000000..f5346de
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_range_elements
@@ -0,0 +1,7 @@
+GL_EXT_draw_range_elements
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/draw_range_elements.txt
+GL_EXT_draw_range_elements
+
+ GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+ GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+ void glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback b/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback
new file mode 100644
index 0000000..1bf814a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback
@@ -0,0 +1,6 @@
+GL_EXT_draw_transform_feedback
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt
+GL_EXT_draw_transform_feedback
+
+ void glDrawTransformFeedbackEXT (GLenum mode, GLuint id)
+ void glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount)
diff --git a/glew/auto/extensions/gl/GL_EXT_external_buffer b/glew/auto/extensions/gl/GL_EXT_external_buffer
new file mode 100644
index 0000000..25a3ca6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_external_buffer
@@ -0,0 +1,7 @@
+GL_EXT_external_buffer
+http://www.opengl.org/registry/specs/EXT/external_buffer.txt
+GL_EXT_external_buffer
+
+ void glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)
+ void glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)
+ typedef void* GLeglClientBufferEXT \ No newline at end of file
diff --git a/glew/auto/extensions/gl/GL_EXT_float_blend b/glew/auto/extensions/gl/GL_EXT_float_blend
new file mode 100644
index 0000000..efed1a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_float_blend
@@ -0,0 +1,4 @@
+GL_EXT_float_blend
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt
+GL_EXT_float_blend
+
diff --git a/glew/auto/extensions/gl/GL_EXT_fog_coord b/glew/auto/extensions/gl/GL_EXT_fog_coord
new file mode 100644
index 0000000..148866a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_fog_coord
@@ -0,0 +1,17 @@
+GL_EXT_fog_coord
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/fog_coord.txt
+GL_EXT_fog_coord
+
+ GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+ GL_FOG_COORDINATE_EXT 0x8451
+ GL_FRAGMENT_DEPTH_EXT 0x8452
+ GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+ GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+ GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+ GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+ GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+ void glFogCoordfEXT (GLfloat coord)
+ void glFogCoordfvEXT (const GLfloat *coord)
+ void glFogCoorddEXT (GLdouble coord)
+ void glFogCoorddvEXT (const GLdouble *coord)
+ void glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_frag_depth b/glew/auto/extensions/gl/GL_EXT_frag_depth
new file mode 100644
index 0000000..cb5f316
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_frag_depth
@@ -0,0 +1,4 @@
+GL_EXT_frag_depth
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_frag_depth.txt
+GL_EXT_frag_depth
+
diff --git a/glew/auto/extensions/gl/GL_EXT_fragment_lighting b/glew/auto/extensions/gl/GL_EXT_fragment_lighting
new file mode 100644
index 0000000..af9491a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_fragment_lighting
@@ -0,0 +1,36 @@
+GL_EXT_fragment_lighting
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_fragment_lighting.txt
+GL_EXT_fragment_lighting
+
+ GL_FRAGMENT_LIGHTING_EXT 0x8400
+ GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401
+ GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402
+ GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403
+ GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404
+ GL_MAX_ACTIVE_LIGHTS_EXT 0x8405
+ GL_CURRENT_RASTER_NORMAL_EXT 0x8406
+ GL_LIGHT_ENV_MODE_EXT 0x8407
+ GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408
+ GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409
+ GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A
+ GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B
+ GL_FRAGMENT_LIGHT0_EXT 0x840C
+ GL_FRAGMENT_LIGHT7_EXT 0x8413
+ void glFragmentColorMaterialEXT (GLenum face, GLenum mode)
+ void glFragmentLightModelfEXT (GLenum pname, GLfloat param)
+ void glFragmentLightModelfvEXT (GLenum pname, GLfloat* params)
+ void glFragmentLightModeliEXT (GLenum pname, GLint param)
+ void glFragmentLightModelivEXT (GLenum pname, GLint* params)
+ void glFragmentLightfEXT (GLenum light, GLenum pname, GLfloat param)
+ void glFragmentLightfvEXT (GLenum light, GLenum pname, GLfloat* params)
+ void glFragmentLightiEXT (GLenum light, GLenum pname, GLint param)
+ void glFragmentLightivEXT (GLenum light, GLenum pname, GLint* params)
+ void glFragmentMaterialfEXT (GLenum face, GLenum pname, const GLfloat param)
+ void glFragmentMaterialfvEXT (GLenum face, GLenum pname, const GLfloat* params)
+ void glFragmentMaterialiEXT (GLenum face, GLenum pname, const GLint param)
+ void glFragmentMaterialivEXT (GLenum face, GLenum pname, const GLint* params)
+ void glGetFragmentLightfvEXT (GLenum light, GLenum pname, GLfloat* params)
+ void glGetFragmentLightivEXT (GLenum light, GLenum pname, GLint* params)
+ void glGetFragmentMaterialfvEXT (GLenum face, GLenum pname, const GLfloat* params)
+ void glGetFragmentMaterialivEXT (GLenum face, GLenum pname, const GLint* params)
+ void glLightEnviEXT (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_blit b/glew/auto/extensions/gl/GL_EXT_framebuffer_blit
new file mode 100644
index 0000000..24ca853
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_EXT_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_blit.txt
+GL_EXT_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
+ GL_READ_FRAMEBUFFER_EXT 0x8CA8
+ GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+ void glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample
new file mode 100644
index 0000000..2463a1b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample
@@ -0,0 +1,10 @@
+GL_EXT_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample.txt
+GL_EXT_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+ void glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled
new file mode 100644
index 0000000..947488f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled
@@ -0,0 +1,6 @@
+GL_EXT_framebuffer_multisample_blit_scaled
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample_blit_scaled.txt
+GL_EXT_framebuffer_multisample_blit_scaled
+
+ GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
+ GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_object b/glew/auto/extensions/gl/GL_EXT_framebuffer_object
new file mode 100644
index 0000000..7165eab
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_object
@@ -0,0 +1,72 @@
+GL_EXT_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_object.txt
+GL_EXT_framebuffer_object
+
+ GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+ GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+ GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+ GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+ GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+ GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+ GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+ GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+ GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+ GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+ GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+ GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+ GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+ GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+ GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+ GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+ GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+ GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+ GL_COLOR_ATTACHMENT13_EXT 0x8CED
+ GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+ GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+ GL_DEPTH_ATTACHMENT_EXT 0x8D00
+ GL_STENCIL_ATTACHMENT_EXT 0x8D20
+ GL_FRAMEBUFFER_EXT 0x8D40
+ GL_RENDERBUFFER_EXT 0x8D41
+ GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+ GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+ GL_STENCIL_INDEX1_EXT 0x8D46
+ GL_STENCIL_INDEX4_EXT 0x8D47
+ GL_STENCIL_INDEX8_EXT 0x8D48
+ GL_STENCIL_INDEX16_EXT 0x8D49
+ GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+ void glBindFramebufferEXT (GLenum target, GLuint framebuffer)
+ void glBindRenderbufferEXT (GLenum target, GLuint renderbuffer)
+ GLenum glCheckFramebufferStatusEXT (GLenum target)
+ void glDeleteFramebuffersEXT (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffersEXT (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glGenFramebuffersEXT (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffersEXT (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmapEXT (GLenum target)
+ void glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebufferEXT (GLuint framebuffer)
+ GLboolean glIsRenderbufferEXT (GLuint renderbuffer)
+ void glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..2f4c6ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB
@@ -0,0 +1,6 @@
+GL_EXT_framebuffer_sRGB
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt
+GL_EXT_framebuffer_sRGB
+
+ GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+ GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_point_size b/glew/auto/extensions/gl/GL_EXT_geometry_point_size
new file mode 100644
index 0000000..301e21e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_point_size
@@ -0,0 +1,37 @@
+GL_EXT_geometry_point_size
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt
+GL_EXT_geometry_point_size
+
+ GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+ GL_UNDEFINED_VERTEX_EXT 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_shader b/glew/auto/extensions/gl/GL_EXT_geometry_shader
new file mode 100644
index 0000000..4838c01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_shader
@@ -0,0 +1,37 @@
+GL_EXT_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt
+GL_EXT_geometry_shader
+
+ GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+ GL_UNDEFINED_VERTEX_EXT 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_shader4 b/glew/auto/extensions/gl/GL_EXT_geometry_shader4
new file mode 100644
index 0000000..a463c4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_shader4
@@ -0,0 +1,27 @@
+GL_EXT_geometry_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt
+GL_EXT_geometry_shader4
+
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+ GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+ GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+ GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+ GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+ GL_PROGRAM_POINT_SIZE_EXT 0x8642
+ void glProgramParameteriEXT (GLuint program, GLenum pname, GLint value)
+ void glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level)
+ void glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters b/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters
new file mode 100644
index 0000000..298bc36
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters
@@ -0,0 +1,6 @@
+GL_EXT_gpu_program_parameters
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_program_parameters.txt
+GL_EXT_gpu_program_parameters
+
+ void glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat* params)
+ void glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_shader4 b/glew/auto/extensions/gl/GL_EXT_gpu_shader4
new file mode 100644
index 0000000..7e95dbc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_shader4
@@ -0,0 +1,64 @@
+GL_EXT_gpu_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_shader4.txt
+GL_EXT_gpu_shader4
+
+ GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+ GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+ GL_SAMPLER_BUFFER_EXT 0x8DC2
+ GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+ GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+ GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+ GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+ GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+ GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+ GL_INT_SAMPLER_1D_EXT 0x8DC9
+ GL_INT_SAMPLER_2D_EXT 0x8DCA
+ GL_INT_SAMPLER_3D_EXT 0x8DCB
+ GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+ GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+ GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+ GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+ GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+ GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+ GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+ GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+ GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+ GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+ GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
+ void glGetUniformuivEXT (GLuint program, GLint location, GLuint *params)
+ void glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name)
+ GLint glGetFragDataLocationEXT (GLuint program, const GLchar *name)
+ void glUniform1uiEXT (GLint location, GLuint v0)
+ void glUniform2uiEXT (GLint location, GLuint v0, GLuint v1)
+ void glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2)
+ void glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+ void glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glVertexAttribI1iEXT (GLuint index, GLint x)
+ void glVertexAttribI2iEXT (GLuint index, GLint x, GLint y)
+ void glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z)
+ void glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glVertexAttribI1uiEXT (GLuint index, GLuint x)
+ void glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y)
+ void glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z)
+ void glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glVertexAttribI1ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI2ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI3ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI4ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI1uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI2uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI3uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI4uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI4bvEXT (GLuint index, const GLbyte *v)
+ void glVertexAttribI4svEXT (GLuint index, const GLshort *v)
+ void glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v)
+ void glVertexAttribI4usvEXT (GLuint index, const GLushort *v)
+ void glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params)
+ void glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_shader5 b/glew/auto/extensions/gl/GL_EXT_gpu_shader5
new file mode 100644
index 0000000..72fc0b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_shader5
@@ -0,0 +1,4 @@
+GL_EXT_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_gpu_shader5.txt
+GL_EXT_gpu_shader5
+
diff --git a/glew/auto/extensions/gl/GL_EXT_histogram b/glew/auto/extensions/gl/GL_EXT_histogram
new file mode 100644
index 0000000..565d9ae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_histogram
@@ -0,0 +1,27 @@
+GL_EXT_histogram
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_histogram.txt
+GL_EXT_histogram
+
+ GL_HISTOGRAM_EXT 0x8024
+ GL_PROXY_HISTOGRAM_EXT 0x8025
+ GL_HISTOGRAM_WIDTH_EXT 0x8026
+ GL_HISTOGRAM_FORMAT_EXT 0x8027
+ GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+ GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+ GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+ GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+ GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+ GL_HISTOGRAM_SINK_EXT 0x802D
+ GL_MINMAX_EXT 0x802E
+ GL_MINMAX_FORMAT_EXT 0x802F
+ GL_MINMAX_SINK_EXT 0x8030
+ void glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+ void glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink)
+ void glResetHistogramEXT (GLenum target)
+ void glResetMinmaxEXT (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_array_formats b/glew/auto/extensions/gl/GL_EXT_index_array_formats
new file mode 100644
index 0000000..6b772e9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_array_formats
@@ -0,0 +1,4 @@
+GL_EXT_index_array_formats
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_array_formats.txt
+GL_EXT_index_array_formats
+
diff --git a/glew/auto/extensions/gl/GL_EXT_index_func b/glew/auto/extensions/gl/GL_EXT_index_func
new file mode 100644
index 0000000..7a2b8dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_func
@@ -0,0 +1,5 @@
+GL_EXT_index_func
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_func.txt
+GL_EXT_index_func
+
+ void glIndexFuncEXT (GLenum func, GLfloat ref)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_material b/glew/auto/extensions/gl/GL_EXT_index_material
new file mode 100644
index 0000000..e5a1e07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_material
@@ -0,0 +1,5 @@
+GL_EXT_index_material
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_material.txt
+GL_EXT_index_material
+
+ void glIndexMaterialEXT (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_texture b/glew/auto/extensions/gl/GL_EXT_index_texture
new file mode 100644
index 0000000..4157657
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_texture
@@ -0,0 +1,4 @@
+GL_EXT_index_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_texture.txt
+GL_EXT_index_texture
+
diff --git a/glew/auto/extensions/gl/GL_EXT_instanced_arrays b/glew/auto/extensions/gl/GL_EXT_instanced_arrays
new file mode 100644
index 0000000..da3fb1d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_instanced_arrays
@@ -0,0 +1,6 @@
+GL_EXT_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_instanced_arrays.txt
+GL_EXT_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
+ void glVertexAttribDivisorEXT (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_EXT_light_texture b/glew/auto/extensions/gl/GL_EXT_light_texture
new file mode 100644
index 0000000..d38f050
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_light_texture
@@ -0,0 +1,16 @@
+GL_EXT_light_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_light_texture.txt
+GL_EXT_light_texture
+
+ GL_FRAGMENT_MATERIAL_EXT 0x8349
+ GL_FRAGMENT_NORMAL_EXT 0x834A
+ GL_FRAGMENT_COLOR_EXT 0x834C
+ GL_ATTENUATION_EXT 0x834D
+ GL_SHADOW_ATTENUATION_EXT 0x834E
+ GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+ GL_TEXTURE_LIGHT_EXT 0x8350
+ GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+ GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+ void glApplyTextureEXT (GLenum mode)
+ void glTextureLightEXT (GLenum pname)
+ void glTextureMaterialEXT (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_map_buffer_range b/glew/auto/extensions/gl/GL_EXT_map_buffer_range
new file mode 100644
index 0000000..7f05418
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_map_buffer_range
@@ -0,0 +1,12 @@
+GL_EXT_map_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_map_buffer_range.txt
+GL_EXT_map_buffer_range
+
+ GL_MAP_READ_BIT_EXT 0x0001
+ GL_MAP_WRITE_BIT_EXT 0x0002
+ GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
+ GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
+ GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
+ GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
+ void glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length)
+ void * glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object b/glew/auto/extensions/gl/GL_EXT_memory_object
new file mode 100644
index 0000000..5520422
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object
@@ -0,0 +1,34 @@
+GL_EXT_memory_object
+http://www.opengl.org/registry/specs/EXT/external_objects.txt
+GL_EXT_memory_object
+
+ GL_UUID_SIZE_EXT 16
+ GL_TEXTURE_TILING_EXT 0x9580
+ GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
+ GL_NUM_TILING_TYPES_EXT 0x9582
+ GL_TILING_TYPES_EXT 0x9583
+ GL_OPTIMAL_TILING_EXT 0x9584
+ GL_LINEAR_TILING_EXT 0x9585
+ GL_NUM_DEVICE_UUIDS_EXT 0x9596
+ GL_DEVICE_UUID_EXT 0x9597
+ GL_DRIVER_UUID_EXT 0x9598
+ GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
+ void glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset)
+ void glCreateMemoryObjectsEXT (GLsizei n, GLuint* memoryObjects)
+ void glDeleteMemoryObjectsEXT (GLsizei n, const GLuint* memoryObjects)
+ void glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint* params)
+ void glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte* data)
+ void glGetUnsignedBytevEXT (GLenum pname, GLubyte* data)
+ GLboolean glIsMemoryObjectEXT (GLuint memoryObject)
+ void glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint* params)
+ void glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset)
+ void glTexStorageMem1DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)
+ void glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)
+ void glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)
+ void glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem1DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object_fd b/glew/auto/extensions/gl/GL_EXT_memory_object_fd
new file mode 100644
index 0000000..38536c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object_fd
@@ -0,0 +1,6 @@
+GL_EXT_memory_object_fd
+http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt
+GL_EXT_memory_object_fd
+
+ GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+ void glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object_win32 b/glew/auto/extensions/gl/GL_EXT_memory_object_win32
new file mode 100644
index 0000000..6d36a69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object_win32
@@ -0,0 +1,17 @@
+GL_EXT_memory_object_win32
+http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt
+GL_EXT_memory_object_win32
+
+ GL_LUID_SIZE_EXT 8
+ GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
+ GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
+ GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
+ GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
+ GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
+ GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
+ GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
+ GL_D3D12_FENCE_VALUE_EXT 0x9595
+ GL_DEVICE_LUID_EXT 0x9599
+ GL_DEVICE_NODE_MASK_EXT 0x959A
+ void glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle)
+ void glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name)
diff --git a/glew/auto/extensions/gl/GL_EXT_misc_attribute b/glew/auto/extensions/gl/GL_EXT_misc_attribute
new file mode 100644
index 0000000..5d3f08f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_misc_attribute
@@ -0,0 +1,4 @@
+GL_EXT_misc_attribute
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_misc_attribute.txt
+GL_EXT_misc_attribute
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays b/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays
new file mode 100644
index 0000000..d353608
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays
@@ -0,0 +1,6 @@
+GL_EXT_multi_draw_arrays
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_arrays.txt
+GL_EXT_multi_draw_arrays
+
+ void glMultiDrawArraysEXT (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount)
+ void glMultiDrawElementsEXT (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect b/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect
new file mode 100644
index 0000000..e2f5b4e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_EXT_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_indirect.txt
+GL_EXT_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)
+ void glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_EXT_multiple_textures b/glew/auto/extensions/gl/GL_EXT_multiple_textures
new file mode 100644
index 0000000..17ca419
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiple_textures
@@ -0,0 +1,4 @@
+GL_EXT_multiple_textures
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiple_textures.txt
+GL_EXT_multiple_textures
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multisample b/glew/auto/extensions/gl/GL_EXT_multisample
new file mode 100644
index 0000000..96789ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisample
@@ -0,0 +1,23 @@
+GL_EXT_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt
+GL_EXT_multisample
+
+ GL_MULTISAMPLE_EXT 0x809D
+ GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+ GL_SAMPLE_MASK_EXT 0x80A0
+ GL_1PASS_EXT 0x80A1
+ GL_2PASS_0_EXT 0x80A2
+ GL_2PASS_1_EXT 0x80A3
+ GL_4PASS_0_EXT 0x80A4
+ GL_4PASS_1_EXT 0x80A5
+ GL_4PASS_2_EXT 0x80A6
+ GL_4PASS_3_EXT 0x80A7
+ GL_SAMPLE_BUFFERS_EXT 0x80A8
+ GL_SAMPLES_EXT 0x80A9
+ GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+ GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+ GL_SAMPLE_PATTERN_EXT 0x80AC
+ GL_MULTISAMPLE_BIT_EXT 0x20000000
+ void glSampleMaskEXT (GLclampf value, GLboolean invert)
+ void glSamplePatternEXT (GLenum pattern)
diff --git a/glew/auto/extensions/gl/GL_EXT_multisample_compatibility b/glew/auto/extensions/gl/GL_EXT_multisample_compatibility
new file mode 100644
index 0000000..8c30eca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisample_compatibility
@@ -0,0 +1,6 @@
+GL_EXT_multisample_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt
+GL_EXT_multisample_compatibility
+
+ GL_MULTISAMPLE_EXT 0x809D
+ GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
diff --git a/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture
new file mode 100644
index 0000000..2479ee1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture
@@ -0,0 +1,9 @@
+GL_EXT_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
+GL_EXT_multisampled_render_to_texture
+
+ GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
+ void glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
diff --git a/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2 b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2
new file mode 100644
index 0000000..9970e97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2
@@ -0,0 +1,4 @@
+GL_EXT_multisampled_render_to_texture2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture2.txt
+GL_EXT_multisampled_render_to_texture2
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers b/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers
new file mode 100644
index 0000000..8c5fb29
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers
@@ -0,0 +1,12 @@
+GL_EXT_multiview_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_draw_buffers.txt
+GL_EXT_multiview_draw_buffers
+
+ GL_DRAW_BUFFER_EXT 0x0C01
+ GL_READ_BUFFER_EXT 0x0C02
+ GL_COLOR_ATTACHMENT_EXT 0x90F0
+ GL_MULTIVIEW_EXT 0x90F1
+ GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
+ void glDrawBuffersIndexedEXT (GLint n, const GLenum* location, const GLint *indices)
+ void glGetIntegeri_vEXT (GLenum target, GLuint index, GLint* data)
+ void glReadBufferIndexedEXT (GLenum src, GLint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader b/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader
new file mode 100644
index 0000000..48eb94c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader
@@ -0,0 +1,4 @@
+GL_EXT_multiview_tessellation_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_tessellation_geometry_shader.txt
+GL_EXT_multiview_tessellation_geometry_shader
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample b/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample
new file mode 100644
index 0000000..4fc847f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample
@@ -0,0 +1,4 @@
+GL_EXT_multiview_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_texture_multisample.txt
+GL_EXT_multiview_texture_multisample
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_timer_query b/glew/auto/extensions/gl/GL_EXT_multiview_timer_query
new file mode 100644
index 0000000..6da6790
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_timer_query
@@ -0,0 +1,4 @@
+GL_EXT_multiview_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_timer_query.txt
+GL_EXT_multiview_timer_query
+
diff --git a/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean b/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean
new file mode 100644
index 0000000..e1742e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean
@@ -0,0 +1,9 @@
+GL_EXT_occlusion_query_boolean
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_occlusion_query_boolean.txt
+GL_EXT_occlusion_query_boolean
+
+ GL_CURRENT_QUERY_EXT 0x8865
+ GL_QUERY_RESULT_EXT 0x8866
+ GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+ GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil b/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil
new file mode 100644
index 0000000..1b6e0d5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil
@@ -0,0 +1,8 @@
+GL_EXT_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_depth_stencil.txt
+GL_EXT_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_EXT 0x84F9
+ GL_UNSIGNED_INT_24_8_EXT 0x84FA
+ GL_DEPTH24_STENCIL8_EXT 0x88F0
+ GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_float b/glew/auto/extensions/gl/GL_EXT_packed_float
new file mode 100644
index 0000000..15ac680
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_float
@@ -0,0 +1,7 @@
+GL_EXT_packed_float
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt
+GL_EXT_packed_float
+
+ GL_R11F_G11F_B10F_EXT 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+ GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_pixels b/glew/auto/extensions/gl/GL_EXT_packed_pixels
new file mode 100644
index 0000000..fd68a34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_pixels
@@ -0,0 +1,9 @@
+GL_EXT_packed_pixels
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_pixels.txt
+GL_EXT_packed_pixels
+
+ GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+ GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+ GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+ GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+ GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
diff --git a/glew/auto/extensions/gl/GL_EXT_paletted_texture b/glew/auto/extensions/gl/GL_EXT_paletted_texture
new file mode 100644
index 0000000..25a67e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_paletted_texture
@@ -0,0 +1,29 @@
+GL_EXT_paletted_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_paletted_texture.txt
+GL_EXT_paletted_texture
+
+ GL_TEXTURE_1D 0x0DE0
+ GL_TEXTURE_2D 0x0DE1
+ GL_PROXY_TEXTURE_1D 0x8063
+ GL_PROXY_TEXTURE_2D 0x8064
+ GL_COLOR_TABLE_FORMAT_EXT 0x80D8
+ GL_COLOR_TABLE_WIDTH_EXT 0x80D9
+ GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
+ GL_COLOR_INDEX1_EXT 0x80E2
+ GL_COLOR_INDEX2_EXT 0x80E3
+ GL_COLOR_INDEX4_EXT 0x80E4
+ GL_COLOR_INDEX8_EXT 0x80E5
+ GL_COLOR_INDEX12_EXT 0x80E6
+ GL_COLOR_INDEX16_EXT 0x80E7
+ GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+ GL_TEXTURE_CUBE_MAP_ARB 0x8513
+ GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+ void glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data)
+ void glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data)
+ void glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object b/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object
new file mode 100644
index 0000000..f685e4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_EXT_pixel_buffer_object
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_pixel_buffer_object.txt
+GL_EXT_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_transform b/glew/auto/extensions/gl/GL_EXT_pixel_transform
new file mode 100644
index 0000000..e964818
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_transform
@@ -0,0 +1,19 @@
+GL_EXT_pixel_transform
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform.txt
+GL_EXT_pixel_transform
+
+ GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+ GL_PIXEL_MAG_FILTER_EXT 0x8331
+ GL_PIXEL_MIN_FILTER_EXT 0x8332
+ GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+ GL_CUBIC_EXT 0x8334
+ GL_AVERAGE_EXT 0x8335
+ GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+ GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+ GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+ void glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint* params)
+ void glPixelTransformParameterfEXT (GLenum target, GLenum pname, const GLfloat param)
+ void glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glPixelTransformParameteriEXT (GLenum target, GLenum pname, const GLint param)
+ void glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table b/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table
new file mode 100644
index 0000000..4db533e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table
@@ -0,0 +1,4 @@
+GL_EXT_pixel_transform_color_table
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform_color_table.txt
+GL_EXT_pixel_transform_color_table
+
diff --git a/glew/auto/extensions/gl/GL_EXT_point_parameters b/glew/auto/extensions/gl/GL_EXT_point_parameters
new file mode 100644
index 0000000..25beb16
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_point_parameters
@@ -0,0 +1,10 @@
+GL_EXT_point_parameters
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_point_parameters.txt
+GL_EXT_point_parameters
+
+ GL_POINT_SIZE_MIN_EXT 0x8126
+ GL_POINT_SIZE_MAX_EXT 0x8127
+ GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+ GL_DISTANCE_ATTENUATION_EXT 0x8129
+ void glPointParameterfEXT (GLenum pname, GLfloat param)
+ void glPointParameterfvEXT (GLenum pname, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_polygon_offset b/glew/auto/extensions/gl/GL_EXT_polygon_offset
new file mode 100644
index 0000000..67f9e89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_polygon_offset
@@ -0,0 +1,8 @@
+GL_EXT_polygon_offset
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset.txt
+GL_EXT_polygon_offset
+
+ GL_POLYGON_OFFSET_EXT 0x8037
+ GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+ GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+ void glPolygonOffsetEXT (GLfloat factor, GLfloat bias)
diff --git a/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp b/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp
new file mode 100644
index 0000000..93f0577
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp
@@ -0,0 +1,6 @@
+GL_EXT_polygon_offset_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset_clamp.txt
+GL_EXT_polygon_offset_clamp
+
+ GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+ void glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp)
diff --git a/glew/auto/extensions/gl/GL_EXT_post_depth_coverage b/glew/auto/extensions/gl/GL_EXT_post_depth_coverage
new file mode 100644
index 0000000..4b2c10f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_post_depth_coverage
@@ -0,0 +1,4 @@
+GL_EXT_post_depth_coverage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt
+GL_EXT_post_depth_coverage
+
diff --git a/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box b/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box
new file mode 100644
index 0000000..0f792d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box
@@ -0,0 +1,6 @@
+GL_EXT_primitive_bounding_box
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_primitive_bounding_box.txt
+GL_EXT_primitive_bounding_box
+
+ GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
+ void glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
diff --git a/glew/auto/extensions/gl/GL_EXT_protected_textures b/glew/auto/extensions/gl/GL_EXT_protected_textures
new file mode 100644
index 0000000..39b8119
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_protected_textures
@@ -0,0 +1,6 @@
+GL_EXT_protected_textures
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt
+GL_EXT_protected_textures
+
+ GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
+ GL_TEXTURE_PROTECTED_EXT 0x8BFA
diff --git a/glew/auto/extensions/gl/GL_EXT_provoking_vertex b/glew/auto/extensions/gl/GL_EXT_provoking_vertex
new file mode 100644
index 0000000..cd8232d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_provoking_vertex
@@ -0,0 +1,9 @@
+GL_EXT_provoking_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_provoking_vertex.txt
+GL_EXT_provoking_vertex
+
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_PROVOKING_VERTEX_EXT 0x8E4F
+ void glProvokingVertexEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB b/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB
new file mode 100644
index 0000000..c3d75d1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB
@@ -0,0 +1,8 @@
+GL_EXT_pvrtc_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pvrtc_sRGB.txt
+GL_EXT_pvrtc_sRGB
+
+ GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
+ GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
diff --git a/glew/auto/extensions/gl/GL_EXT_raster_multisample b/glew/auto/extensions/gl/GL_EXT_raster_multisample
new file mode 100644
index 0000000..d47e504
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_raster_multisample
@@ -0,0 +1,22 @@
+GL_EXT_raster_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt
+GL_EXT_raster_multisample
+
+ GL_COLOR_SAMPLES_NV 0x8E20
+ GL_RASTER_MULTISAMPLE_EXT 0x9327
+ GL_RASTER_SAMPLES_EXT 0x9328
+ GL_MAX_RASTER_SAMPLES_EXT 0x9329
+ GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+ GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+ GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+ GL_DEPTH_SAMPLES_NV 0x932D
+ GL_STENCIL_SAMPLES_NV 0x932E
+ GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+ GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+ GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+ GL_COVERAGE_MODULATION_NV 0x9332
+ GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+ void glCoverageModulationNV (GLenum components)
+ void glCoverageModulationTableNV (GLsizei n, const GLfloat* v)
+ void glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat* v)
+ void glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_EXT_read_format_bgra b/glew/auto/extensions/gl/GL_EXT_read_format_bgra
new file mode 100644
index 0000000..e5d19d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_read_format_bgra
@@ -0,0 +1,7 @@
+GL_EXT_read_format_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_read_format_bgra.txt
+GL_EXT_read_format_bgra
+
+ GL_BGRA_EXT 0x80E1
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
+ GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
diff --git a/glew/auto/extensions/gl/GL_EXT_render_snorm b/glew/auto/extensions/gl/GL_EXT_render_snorm
new file mode 100644
index 0000000..1bd6a0d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_render_snorm
@@ -0,0 +1,12 @@
+GL_EXT_render_snorm
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_render_snorm.txt
+GL_EXT_render_snorm
+
+ GL_BYTE 0x1400
+ GL_SHORT 0x1402
+ GL_R8_SNORM 0x8F94
+ GL_RG8_SNORM 0x8F95
+ GL_RGBA8_SNORM 0x8F97
+ GL_R16_SNORM_EXT 0x8F98
+ GL_RG16_SNORM_EXT 0x8F99
+ GL_RGBA16_SNORM_EXT 0x8F9B
diff --git a/glew/auto/extensions/gl/GL_EXT_rescale_normal b/glew/auto/extensions/gl/GL_EXT_rescale_normal
new file mode 100644
index 0000000..a0b0e8a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_rescale_normal
@@ -0,0 +1,5 @@
+GL_EXT_rescale_normal
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_rescale_normal.txt
+GL_EXT_rescale_normal
+
+ GL_RESCALE_NORMAL_EXT 0x803A
diff --git a/glew/auto/extensions/gl/GL_EXT_robustness b/glew/auto/extensions/gl/GL_EXT_robustness
new file mode 100644
index 0000000..938bf83
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_robustness
@@ -0,0 +1,15 @@
+GL_EXT_robustness
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_robustness.txt
+GL_EXT_robustness
+
+ GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
+ GL_GUILTY_CONTEXT_RESET_EXT 0x8253
+ GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
+ GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
+ GL_NO_RESET_NOTIFICATION_EXT 0x8261
+ GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
+ GLenum glGetGraphicsResetStatusEXT (void)
+ void glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_sRGB b/glew/auto/extensions/gl/GL_EXT_sRGB
new file mode 100644
index 0000000..f6b3982
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sRGB
@@ -0,0 +1,8 @@
+GL_EXT_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB.txt
+GL_EXT_sRGB
+
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
+ GL_SRGB_EXT 0x8C40
+ GL_SRGB_ALPHA_EXT 0x8C42
+ GL_SRGB8_ALPHA8_EXT 0x8C43
diff --git a/glew/auto/extensions/gl/GL_EXT_sRGB_write_control b/glew/auto/extensions/gl/GL_EXT_sRGB_write_control
new file mode 100644
index 0000000..5e64b8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sRGB_write_control
@@ -0,0 +1,5 @@
+GL_EXT_sRGB_write_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt
+GL_EXT_sRGB_write_control
+
+ GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
diff --git a/glew/auto/extensions/gl/GL_EXT_scene_marker b/glew/auto/extensions/gl/GL_EXT_scene_marker
new file mode 100644
index 0000000..504efcf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_scene_marker
@@ -0,0 +1,6 @@
+GL_EXT_scene_marker
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt
+GL_EXT_scene_marker
+
+ void glBeginSceneEXT (void)
+ void glEndSceneEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_secondary_color b/glew/auto/extensions/gl/GL_EXT_secondary_color
new file mode 100644
index 0000000..505761d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_secondary_color
@@ -0,0 +1,28 @@
+GL_EXT_secondary_color
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/secondary_color.txt
+GL_EXT_secondary_color
+
+ GL_COLOR_SUM_EXT 0x8458
+ GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+ GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+ GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+ GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+ GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+ GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+ void glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue)
+ void glSecondaryColor3bvEXT (const GLbyte *v)
+ void glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue)
+ void glSecondaryColor3dvEXT (const GLdouble *v)
+ void glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue)
+ void glSecondaryColor3fvEXT (const GLfloat *v)
+ void glSecondaryColor3iEXT (GLint red, GLint green, GLint blue)
+ void glSecondaryColor3ivEXT (const GLint *v)
+ void glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue)
+ void glSecondaryColor3svEXT (const GLshort *v)
+ void glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue)
+ void glSecondaryColor3ubvEXT (const GLubyte *v)
+ void glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue)
+ void glSecondaryColor3uivEXT (const GLuint *v)
+ void glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue)
+ void glSecondaryColor3usvEXT (const GLushort *v)
+ void glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore b/glew/auto/extensions/gl/GL_EXT_semaphore
new file mode 100644
index 0000000..faf18b3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore
@@ -0,0 +1,21 @@
+GL_EXT_semaphore
+http://www.opengl.org/registry/specs/EXT/external_objects.txt
+GL_EXT_semaphore
+
+ GL_LAYOUT_GENERAL_EXT 0x958D
+ GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
+ GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
+ GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
+ GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
+ GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
+ GL_LAYOUT_TRANSFER_DST_EXT 0x9593
+ GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
+ GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
+
+ void glDeleteSemaphoresEXT (GLsizei n, const GLuint* semaphores)
+ void glGenSemaphoresEXT (GLsizei n, GLuint* semaphores)
+ void glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64* params)
+ GLboolean glIsSemaphoreEXT (GLuint semaphore)
+ void glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64* params)
+ void glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts)
+ void glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore_fd b/glew/auto/extensions/gl/GL_EXT_semaphore_fd
new file mode 100644
index 0000000..e3b2985
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore_fd
@@ -0,0 +1,5 @@
+GL_EXT_semaphore_fd
+http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt
+GL_EXT_semaphore_fd
+
+ void glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore_win32 b/glew/auto/extensions/gl/GL_EXT_semaphore_win32
new file mode 100644
index 0000000..4854f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore_win32
@@ -0,0 +1,6 @@
+GL_EXT_semaphore_win32
+http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt
+GL_EXT_semaphore_win32
+
+ void glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle)
+ void glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name)
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil b/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil
new file mode 100644
index 0000000..08f548e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil
@@ -0,0 +1,4 @@
+GL_EXT_separate_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_depth_stencil.txt
+GL_EXT_separate_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_shader_objects b/glew/auto/extensions/gl/GL_EXT_separate_shader_objects
new file mode 100644
index 0000000..0886a75
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_shader_objects
@@ -0,0 +1,8 @@
+GL_EXT_separate_shader_objects
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_shader_objects.gl.txt
+GL_EXT_separate_shader_objects
+
+ GL_ACTIVE_PROGRAM_EXT 0x8B8D
+ void glActiveProgramEXT (GLuint program)
+ GLuint glCreateShaderProgramEXT (GLenum type, const GLchar* string)
+ void glUseShaderProgramEXT (GLenum type, GLuint program)
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_specular_color b/glew/auto/extensions/gl/GL_EXT_separate_specular_color
new file mode 100644
index 0000000..6ee9da7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_specular_color
@@ -0,0 +1,7 @@
+GL_EXT_separate_specular_color
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_specular_color.txt
+GL_EXT_separate_specular_color
+
+ GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+ GL_SINGLE_COLOR_EXT 0x81F9
+ GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch
new file mode 100644
index 0000000..51ef160
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch
@@ -0,0 +1,6 @@
+GL_EXT_shader_framebuffer_fetch
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt
+GL_EXT_shader_framebuffer_fetch
+
+ GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+ void glFramebufferFetchBarrierEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent
new file mode 100644
index 0000000..62af709
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent
@@ -0,0 +1,5 @@
+GL_EXT_shader_framebuffer_fetch_non_coherent
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt
+GL_EXT_shader_framebuffer_fetch_non_coherent
+
+ GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_group_vote b/glew/auto/extensions/gl/GL_EXT_shader_group_vote
new file mode 100644
index 0000000..a1fd025
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_group_vote
@@ -0,0 +1,4 @@
+GL_EXT_shader_group_vote
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt
+GL_EXT_shader_group_vote
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted b/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted
new file mode 100644
index 0000000..0cae7aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted
@@ -0,0 +1,4 @@
+GL_EXT_shader_image_load_formatted
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_formatted.txt
+GL_EXT_shader_image_load_formatted
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_image_load_store b/glew/auto/extensions/gl/GL_EXT_shader_image_load_store
new file mode 100644
index 0000000..2f281f8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_image_load_store
@@ -0,0 +1,61 @@
+GL_EXT_shader_image_load_store
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_store.txt
+GL_EXT_shader_image_load_store
+
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+ GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+ GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+ GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+ GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+ GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+ GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+ GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+ GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+ GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+ GL_MAX_IMAGE_UNITS_EXT 0x8F38
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+ GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+ GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+ GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+ GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+ GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+ GL_IMAGE_1D_EXT 0x904C
+ GL_IMAGE_2D_EXT 0x904D
+ GL_IMAGE_3D_EXT 0x904E
+ GL_IMAGE_2D_RECT_EXT 0x904F
+ GL_IMAGE_CUBE_EXT 0x9050
+ GL_IMAGE_BUFFER_EXT 0x9051
+ GL_IMAGE_1D_ARRAY_EXT 0x9052
+ GL_IMAGE_2D_ARRAY_EXT 0x9053
+ GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+ GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+ GL_INT_IMAGE_1D_EXT 0x9057
+ GL_INT_IMAGE_2D_EXT 0x9058
+ GL_INT_IMAGE_3D_EXT 0x9059
+ GL_INT_IMAGE_2D_RECT_EXT 0x905A
+ GL_INT_IMAGE_CUBE_EXT 0x905B
+ GL_INT_IMAGE_BUFFER_EXT 0x905C
+ GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+ GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+ GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+ GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+ GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+ GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+ GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+ GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+ GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+ GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+ GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+ GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+ void glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format)
+ void glMemoryBarrierEXT (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions b/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions
new file mode 100644
index 0000000..8641350
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions
@@ -0,0 +1,4 @@
+GL_EXT_shader_implicit_conversions
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_implicit_conversions.txt
+GL_EXT_shader_implicit_conversions
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_integer_mix b/glew/auto/extensions/gl/GL_EXT_shader_integer_mix
new file mode 100644
index 0000000..20f77b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_integer_mix
@@ -0,0 +1,4 @@
+GL_EXT_shader_integer_mix
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_integer_mix.txt
+GL_EXT_shader_integer_mix
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_io_blocks b/glew/auto/extensions/gl/GL_EXT_shader_io_blocks
new file mode 100644
index 0000000..199f485
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_io_blocks
@@ -0,0 +1,4 @@
+GL_EXT_shader_io_blocks
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_io_blocks.txt
+GL_EXT_shader_io_blocks
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers b/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers
new file mode 100644
index 0000000..e183643
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers
@@ -0,0 +1,4 @@
+GL_EXT_shader_non_constant_global_initializers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt
+GL_EXT_shader_non_constant_global_initializers
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage
new file mode 100644
index 0000000..c9f26e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage
@@ -0,0 +1,7 @@
+GL_EXT_shader_pixel_local_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage.txt
+GL_EXT_shader_pixel_local_storage
+
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
+ GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2 b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2
new file mode 100644
index 0000000..7fb2e85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2
@@ -0,0 +1,10 @@
+GL_EXT_shader_pixel_local_storage2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt
+GL_EXT_shader_pixel_local_storage2
+
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
+ GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
+ void glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint* values)
+ void glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size)
+ GLsizei glGetFramebufferPixelLocalStorageSizeEXT (GLuint target)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_samples_identical b/glew/auto/extensions/gl/GL_EXT_shader_samples_identical
new file mode 100644
index 0000000..97e4e6d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_samples_identical
@@ -0,0 +1,4 @@
+GL_EXT_shader_samples_identical
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_samples_identical.txt
+GL_EXT_shader_samples_identical
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_texture_lod b/glew/auto/extensions/gl/GL_EXT_shader_texture_lod
new file mode 100644
index 0000000..4417972
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_EXT_shader_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_texture_lod.txt
+GL_EXT_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shadow_funcs b/glew/auto/extensions/gl/GL_EXT_shadow_funcs
new file mode 100644
index 0000000..0aabade
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shadow_funcs
@@ -0,0 +1,4 @@
+GL_EXT_shadow_funcs
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_funcs.txt
+GL_EXT_shadow_funcs
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shadow_samplers b/glew/auto/extensions/gl/GL_EXT_shadow_samplers
new file mode 100644
index 0000000..634421c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shadow_samplers
@@ -0,0 +1,8 @@
+GL_EXT_shadow_samplers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_samplers.txt
+GL_EXT_shadow_samplers
+
+ GL_TEXTURE_COMPARE_MODE_EXT 0x884C
+ GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
+ GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
+ GL_SAMPLER_2D_SHADOW_EXT 0x8B62
diff --git a/glew/auto/extensions/gl/GL_EXT_shared_texture_palette b/glew/auto/extensions/gl/GL_EXT_shared_texture_palette
new file mode 100644
index 0000000..f194758
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shared_texture_palette
@@ -0,0 +1,5 @@
+GL_EXT_shared_texture_palette
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shared_texture_palette.txt
+GL_EXT_shared_texture_palette
+
+ GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
diff --git a/glew/auto/extensions/gl/GL_EXT_sparse_texture b/glew/auto/extensions/gl/GL_EXT_sparse_texture
new file mode 100644
index 0000000..8da8992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sparse_texture
@@ -0,0 +1,22 @@
+GL_EXT_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture.txt
+GL_EXT_sparse_texture
+
+ GL_TEXTURE_2D 0x0DE1
+ GL_TEXTURE_3D 0x806F
+ GL_TEXTURE_CUBE_MAP 0x8513
+ GL_TEXTURE_2D_ARRAY 0x8C1A
+ GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+ GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
+ GL_TEXTURE_SPARSE_EXT 0x91A6
+ GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
+ GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
+ GL_NUM_SPARSE_LEVELS_EXT 0x91AA
+ void glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
+ void glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_EXT_sparse_texture2 b/glew/auto/extensions/gl/GL_EXT_sparse_texture2
new file mode 100644
index 0000000..7b80b53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sparse_texture2
@@ -0,0 +1,4 @@
+GL_EXT_sparse_texture2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture2.txt
+GL_EXT_sparse_texture2
+
diff --git a/glew/auto/extensions/gl/GL_EXT_static_vertex_array b/glew/auto/extensions/gl/GL_EXT_static_vertex_array
new file mode 100644
index 0000000..0396fd4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_static_vertex_array
@@ -0,0 +1,4 @@
+GL_EXT_static_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_static_vertex_array.txt
+GL_EXT_static_vertex_array
+
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag b/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag
new file mode 100644
index 0000000..e797fdc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag
@@ -0,0 +1,6 @@
+GL_EXT_stencil_clear_tag
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_clear_tag.txt
+GL_EXT_stencil_clear_tag
+
+ GL_STENCIL_TAG_BITS_EXT 0x88F2
+ GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_two_side b/glew/auto/extensions/gl/GL_EXT_stencil_two_side
new file mode 100644
index 0000000..5e9b990
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_two_side
@@ -0,0 +1,7 @@
+GL_EXT_stencil_two_side
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_two_side.txt
+GL_EXT_stencil_two_side
+
+ GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+ GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+ void glActiveStencilFaceEXT (GLenum face)
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_wrap b/glew/auto/extensions/gl/GL_EXT_stencil_wrap
new file mode 100644
index 0000000..728b988
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_wrap
@@ -0,0 +1,6 @@
+GL_EXT_stencil_wrap
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_wrap.txt
+GL_EXT_stencil_wrap
+
+ GL_INCR_WRAP_EXT 0x8507
+ GL_DECR_WRAP_EXT 0x8508
diff --git a/glew/auto/extensions/gl/GL_EXT_subtexture b/glew/auto/extensions/gl/GL_EXT_subtexture
new file mode 100644
index 0000000..987bfc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_subtexture
@@ -0,0 +1,7 @@
+GL_EXT_subtexture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_subtexture.txt
+GL_EXT_subtexture
+
+ void glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_EXT_tessellation_point_size b/glew/auto/extensions/gl/GL_EXT_tessellation_point_size
new file mode 100644
index 0000000..94ce6f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_tessellation_point_size
@@ -0,0 +1,48 @@
+GL_EXT_tessellation_point_size
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt
+GL_EXT_tessellation_point_size
+
+ GL_QUADS_EXT 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+ GL_PATCHES_EXT 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+ GL_PATCH_VERTICES_EXT 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+ GL_TESS_GEN_MODE_EXT 0x8E76
+ GL_TESS_GEN_SPACING_EXT 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+ GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+ GL_ISOLINES_EXT 0x8E7A
+ GL_FRACTIONAL_ODD_EXT 0x8E7B
+ GL_FRACTIONAL_EVEN_EXT 0x8E7C
+ GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+ GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+ GL_TESS_CONTROL_SHADER_EXT 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+ GL_IS_PER_PATCH_EXT 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+ void glPatchParameteriEXT (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_EXT_tessellation_shader b/glew/auto/extensions/gl/GL_EXT_tessellation_shader
new file mode 100644
index 0000000..8a0b0a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_tessellation_shader
@@ -0,0 +1,47 @@
+GL_EXT_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt
+GL_EXT_tessellation_shader
+
+ GL_QUADS_EXT 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+ GL_PATCHES_EXT 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+ GL_PATCH_VERTICES_EXT 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+ GL_TESS_GEN_MODE_EXT 0x8E76
+ GL_TESS_GEN_SPACING_EXT 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+ GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+ GL_ISOLINES_EXT 0x8E7A
+ GL_FRACTIONAL_ODD_EXT 0x8E7B
+ GL_FRACTIONAL_EVEN_EXT 0x8E7C
+ GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+ GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+ GL_TESS_CONTROL_SHADER_EXT 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+ GL_IS_PER_PATCH_EXT 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
diff --git a/glew/auto/extensions/gl/GL_EXT_texture b/glew/auto/extensions/gl/GL_EXT_texture
new file mode 100644
index 0000000..246bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture
@@ -0,0 +1,46 @@
+GL_EXT_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture.txt
+GL_EXT_texture
+
+ GL_ALPHA4_EXT 0x803B
+ GL_ALPHA8_EXT 0x803C
+ GL_ALPHA12_EXT 0x803D
+ GL_ALPHA16_EXT 0x803E
+ GL_LUMINANCE4_EXT 0x803F
+ GL_LUMINANCE8_EXT 0x8040
+ GL_LUMINANCE12_EXT 0x8041
+ GL_LUMINANCE16_EXT 0x8042
+ GL_LUMINANCE4_ALPHA4_EXT 0x8043
+ GL_LUMINANCE6_ALPHA2_EXT 0x8044
+ GL_LUMINANCE8_ALPHA8_EXT 0x8045
+ GL_LUMINANCE12_ALPHA4_EXT 0x8046
+ GL_LUMINANCE12_ALPHA12_EXT 0x8047
+ GL_LUMINANCE16_ALPHA16_EXT 0x8048
+ GL_INTENSITY_EXT 0x8049
+ GL_INTENSITY4_EXT 0x804A
+ GL_INTENSITY8_EXT 0x804B
+ GL_INTENSITY12_EXT 0x804C
+ GL_INTENSITY16_EXT 0x804D
+ GL_RGB2_EXT 0x804E
+ GL_RGB4_EXT 0x804F
+ GL_RGB5_EXT 0x8050
+ GL_RGB8_EXT 0x8051
+ GL_RGB10_EXT 0x8052
+ GL_RGB12_EXT 0x8053
+ GL_RGB16_EXT 0x8054
+ GL_RGBA2_EXT 0x8055
+ GL_RGBA4_EXT 0x8056
+ GL_RGB5_A1_EXT 0x8057
+ GL_RGBA8_EXT 0x8058
+ GL_RGB10_A2_EXT 0x8059
+ GL_RGBA12_EXT 0x805A
+ GL_RGBA16_EXT 0x805B
+ GL_TEXTURE_RED_SIZE_EXT 0x805C
+ GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+ GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+ GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+ GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+ GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+ GL_REPLACE_EXT 0x8062
+ GL_PROXY_TEXTURE_1D_EXT 0x8063
+ GL_PROXY_TEXTURE_2D_EXT 0x8064
diff --git a/glew/auto/extensions/gl/GL_EXT_texture3D b/glew/auto/extensions/gl/GL_EXT_texture3D
new file mode 100644
index 0000000..c325194
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture3D
@@ -0,0 +1,14 @@
+GL_EXT_texture3D
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture3D.txt
+GL_EXT_texture3D
+
+ GL_PACK_SKIP_IMAGES_EXT 0x806B
+ GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+ GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+ GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+ GL_TEXTURE_3D_EXT 0x806F
+ GL_PROXY_TEXTURE_3D_EXT 0x8070
+ GL_TEXTURE_DEPTH_EXT 0x8071
+ GL_TEXTURE_WRAP_R_EXT 0x8072
+ GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+ void glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_array b/glew/auto/extensions/gl/GL_EXT_texture_array
new file mode 100644
index 0000000..c5c2c9f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_array
@@ -0,0 +1,13 @@
+GL_EXT_texture_array
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_array.txt
+GL_EXT_texture_array
+
+ GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+ GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+ GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+ GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+ GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+ GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+ GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+ GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+ void glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_border_clamp b/glew/auto/extensions/gl/GL_EXT_texture_border_clamp
new file mode 100644
index 0000000..b347a6e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_border_clamp
@@ -0,0 +1,10 @@
+GL_EXT_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_border_clamp.txt
+GL_EXT_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_EXT 0x1004
+ GL_CLAMP_TO_BORDER_EXT 0x812D
+ void glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint* params)
+ void glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_buffer b/glew/auto/extensions/gl/GL_EXT_texture_buffer
new file mode 100644
index 0000000..29a3a78
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_buffer
@@ -0,0 +1,18 @@
+GL_EXT_texture_buffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_buffer.txt
+GL_EXT_texture_buffer
+
+ GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
+ GL_TEXTURE_BUFFER_EXT 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+ GL_SAMPLER_BUFFER_EXT 0x8DC2
+ GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+ GL_IMAGE_BUFFER_EXT 0x9051
+ GL_INT_IMAGE_BUFFER_EXT 0x905C
+ GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+ GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
+ GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_buffer_object b/glew/auto/extensions/gl/GL_EXT_texture_buffer_object
new file mode 100644
index 0000000..81b5835
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_buffer_object
@@ -0,0 +1,10 @@
+GL_EXT_texture_buffer_object
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_buffer_object.txt
+GL_EXT_texture_buffer_object
+
+ GL_TEXTURE_BUFFER_EXT 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+ GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+ void glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode
new file mode 100644
index 0000000..7386f59
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode
@@ -0,0 +1,5 @@
+GL_EXT_texture_compression_astc_decode_mode
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt
+GL_EXT_texture_compression_astc_decode_mode
+
+ GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5 b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5
new file mode 100644
index 0000000..56af888
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5
@@ -0,0 +1,5 @@
+GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt
+GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+
+ GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc b/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc
new file mode 100644
index 0000000..c2b1931
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_bptc
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_bptc.txt
+GL_EXT_texture_compression_bptc
+
+ GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1 b/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1
new file mode 100644
index 0000000..c28d47f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1
@@ -0,0 +1,4 @@
+GL_EXT_texture_compression_dxt1
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_dxt1.txt
+GL_EXT_texture_compression_dxt1
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_latc b/glew/auto/extensions/gl/GL_EXT_texture_compression_latc
new file mode 100644
index 0000000..e8fcacc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_latc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_latc
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_latc.txt
+GL_EXT_texture_compression_latc
+
+ GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+ GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+ GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+ GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc b/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc
new file mode 100644
index 0000000..054b7f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_rgtc
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_rgtc.txt
+GL_EXT_texture_compression_rgtc
+
+ GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+ GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+ GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+ GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc
new file mode 100644
index 0000000..5d039fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc.txt
+GL_EXT_texture_compression_s3tc
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb
new file mode 100644
index 0000000..92bbadf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_s3tc_srgb
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc_srgb.txt
+GL_EXT_texture_compression_s3tc_srgb
+
+ GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_cube_map b/glew/auto/extensions/gl/GL_EXT_texture_cube_map
new file mode 100644
index 0000000..73a2c73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_cube_map
@@ -0,0 +1,16 @@
+GL_EXT_texture_cube_map
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_texture_cube_map.txt
+GL_EXT_texture_cube_map
+
+ GL_NORMAL_MAP_EXT 0x8511
+ GL_REFLECTION_MAP_EXT 0x8512
+ GL_TEXTURE_CUBE_MAP_EXT 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+ GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array b/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array
new file mode 100644
index 0000000..3791aee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array
@@ -0,0 +1,13 @@
+GL_EXT_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_cube_map_array.txt
+GL_EXT_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
+ GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
+ GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp b/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp
new file mode 100644
index 0000000..c0b3e2a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp
@@ -0,0 +1,5 @@
+GL_EXT_texture_edge_clamp
+http://www.opengl.org/developers/documentation/Version1.2/1.2specs/texture_edge_clamp.txt
+GL_EXT_texture_edge_clamp
+
+ GL_CLAMP_TO_EDGE_EXT 0x812F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env b/glew/auto/extensions/gl/GL_EXT_texture_env
new file mode 100644
index 0000000..75275bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env
@@ -0,0 +1,4 @@
+GL_EXT_texture_env
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env.txt
+GL_EXT_texture_env
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_add b/glew/auto/extensions/gl/GL_EXT_texture_env_add
new file mode 100644
index 0000000..7d48873
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_add
@@ -0,0 +1,4 @@
+GL_EXT_texture_env_add
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_add.txt
+GL_EXT_texture_env_add
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_combine b/glew/auto/extensions/gl/GL_EXT_texture_env_combine
new file mode 100644
index 0000000..22fadda
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_combine
@@ -0,0 +1,25 @@
+GL_EXT_texture_env_combine
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_combine.txt
+GL_EXT_texture_env_combine
+
+ GL_COMBINE_EXT 0x8570
+ GL_COMBINE_RGB_EXT 0x8571
+ GL_COMBINE_ALPHA_EXT 0x8572
+ GL_RGB_SCALE_EXT 0x8573
+ GL_ADD_SIGNED_EXT 0x8574
+ GL_INTERPOLATE_EXT 0x8575
+ GL_CONSTANT_EXT 0x8576
+ GL_PRIMARY_COLOR_EXT 0x8577
+ GL_PREVIOUS_EXT 0x8578
+ GL_SOURCE0_RGB_EXT 0x8580
+ GL_SOURCE1_RGB_EXT 0x8581
+ GL_SOURCE2_RGB_EXT 0x8582
+ GL_SOURCE0_ALPHA_EXT 0x8588
+ GL_SOURCE1_ALPHA_EXT 0x8589
+ GL_SOURCE2_ALPHA_EXT 0x858A
+ GL_OPERAND0_RGB_EXT 0x8590
+ GL_OPERAND1_RGB_EXT 0x8591
+ GL_OPERAND2_RGB_EXT 0x8592
+ GL_OPERAND0_ALPHA_EXT 0x8598
+ GL_OPERAND1_ALPHA_EXT 0x8599
+ GL_OPERAND2_ALPHA_EXT 0x859A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_dot3 b/glew/auto/extensions/gl/GL_EXT_texture_env_dot3
new file mode 100644
index 0000000..7e65eb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_dot3
@@ -0,0 +1,6 @@
+GL_EXT_texture_env_dot3
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_dot3.txt
+GL_EXT_texture_env_dot3
+
+ GL_DOT3_RGB_EXT 0x8740
+ GL_DOT3_RGBA_EXT 0x8741
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic b/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic
new file mode 100644
index 0000000..6a7508c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic
@@ -0,0 +1,6 @@
+GL_EXT_texture_filter_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_anisotropic.txt
+GL_EXT_texture_filter_anisotropic
+
+ GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+ GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax b/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax
new file mode 100644
index 0000000..e7fb5d5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax
@@ -0,0 +1,6 @@
+GL_EXT_texture_filter_minmax
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_minmax.txt
+GL_EXT_texture_filter_minmax
+
+ GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+ GL_WEIGHTED_AVERAGE_EXT 0x9367
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888 b/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888
new file mode 100644
index 0000000..edc51d1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888
@@ -0,0 +1,5 @@
+GL_EXT_texture_format_BGRA8888
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_BGRA8888.txt
+GL_EXT_texture_format_BGRA8888
+
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override b/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override
new file mode 100644
index 0000000..88da490
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override
@@ -0,0 +1,5 @@
+GL_EXT_texture_format_sRGB_override
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_sRGB_override.txt
+GL_EXT_texture_format_sRGB_override
+
+ GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_integer b/glew/auto/extensions/gl/GL_EXT_texture_integer
new file mode 100644
index 0000000..43219cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_integer
@@ -0,0 +1,57 @@
+GL_EXT_texture_integer
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_integer.txt
+GL_EXT_texture_integer
+
+ GL_RGBA32UI_EXT 0x8D70
+ GL_RGB32UI_EXT 0x8D71
+ GL_ALPHA32UI_EXT 0x8D72
+ GL_INTENSITY32UI_EXT 0x8D73
+ GL_LUMINANCE32UI_EXT 0x8D74
+ GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+ GL_RGBA16UI_EXT 0x8D76
+ GL_RGB16UI_EXT 0x8D77
+ GL_ALPHA16UI_EXT 0x8D78
+ GL_INTENSITY16UI_EXT 0x8D79
+ GL_LUMINANCE16UI_EXT 0x8D7A
+ GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+ GL_RGBA8UI_EXT 0x8D7C
+ GL_RGB8UI_EXT 0x8D7D
+ GL_ALPHA8UI_EXT 0x8D7E
+ GL_INTENSITY8UI_EXT 0x8D7F
+ GL_LUMINANCE8UI_EXT 0x8D80
+ GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+ GL_RGBA32I_EXT 0x8D82
+ GL_RGB32I_EXT 0x8D83
+ GL_ALPHA32I_EXT 0x8D84
+ GL_INTENSITY32I_EXT 0x8D85
+ GL_LUMINANCE32I_EXT 0x8D86
+ GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+ GL_RGBA16I_EXT 0x8D88
+ GL_RGB16I_EXT 0x8D89
+ GL_ALPHA16I_EXT 0x8D8A
+ GL_INTENSITY16I_EXT 0x8D8B
+ GL_LUMINANCE16I_EXT 0x8D8C
+ GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+ GL_RGBA8I_EXT 0x8D8E
+ GL_RGB8I_EXT 0x8D8F
+ GL_ALPHA8I_EXT 0x8D90
+ GL_INTENSITY8I_EXT 0x8D91
+ GL_LUMINANCE8I_EXT 0x8D92
+ GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+ GL_RED_INTEGER_EXT 0x8D94
+ GL_GREEN_INTEGER_EXT 0x8D95
+ GL_BLUE_INTEGER_EXT 0x8D96
+ GL_ALPHA_INTEGER_EXT 0x8D97
+ GL_RGB_INTEGER_EXT 0x8D98
+ GL_RGBA_INTEGER_EXT 0x8D99
+ GL_BGR_INTEGER_EXT 0x8D9A
+ GL_BGRA_INTEGER_EXT 0x8D9B
+ GL_LUMINANCE_INTEGER_EXT 0x8D9C
+ GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+ GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+ void glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params)
+ void glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params)
+ void glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params)
+ void glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params)
+ void glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha)
+ void glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_lod_bias b/glew/auto/extensions/gl/GL_EXT_texture_lod_bias
new file mode 100644
index 0000000..17d0afc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_lod_bias
@@ -0,0 +1,7 @@
+GL_EXT_texture_lod_bias
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_lod_bias.txt
+GL_EXT_texture_lod_bias
+
+ GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+ GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+ GL_TEXTURE_LOD_BIAS_EXT 0x8501
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp
new file mode 100644
index 0000000..474192e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp
@@ -0,0 +1,7 @@
+GL_EXT_texture_mirror_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp.txt
+GL_EXT_texture_mirror_clamp
+
+ GL_MIRROR_CLAMP_EXT 0x8742
+ GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+ GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge
new file mode 100644
index 0000000..e919399
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge
@@ -0,0 +1,5 @@
+GL_EXT_texture_mirror_clamp_to_edge
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp_to_edge.txt
+GL_EXT_texture_mirror_clamp_to_edge
+
+ GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_norm16 b/glew/auto/extensions/gl/GL_EXT_texture_norm16
new file mode 100644
index 0000000..2d4dc93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_norm16
@@ -0,0 +1,12 @@
+GL_EXT_texture_norm16
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_norm16.txt
+GL_EXT_texture_norm16
+
+ GL_RGB16_EXT 0x8054
+ GL_RGBA16_EXT 0x805B
+ GL_R16_EXT 0x822A
+ GL_RG16_EXT 0x822C
+ GL_R16_SNORM_EXT 0x8F98
+ GL_RG16_SNORM_EXT 0x8F99
+ GL_RGB16_SNORM_EXT 0x8F9A
+ GL_RGBA16_SNORM_EXT 0x8F9B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_object b/glew/auto/extensions/gl/GL_EXT_texture_object
new file mode 100644
index 0000000..b87dfbc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_object
@@ -0,0 +1,15 @@
+GL_EXT_texture_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_object.txt
+GL_EXT_texture_object
+
+ GL_TEXTURE_PRIORITY_EXT 0x8066
+ GL_TEXTURE_RESIDENT_EXT 0x8067
+ GL_TEXTURE_1D_BINDING_EXT 0x8068
+ GL_TEXTURE_2D_BINDING_EXT 0x8069
+ GL_TEXTURE_3D_BINDING_EXT 0x806A
+ GLboolean glAreTexturesResidentEXT (GLsizei n, const GLuint* textures, GLboolean* residences)
+ void glBindTextureEXT (GLenum target, GLuint texture)
+ void glDeleteTexturesEXT (GLsizei n, const GLuint* textures)
+ void glGenTexturesEXT (GLsizei n, GLuint* textures)
+ GLboolean glIsTextureEXT (GLuint texture)
+ void glPrioritizeTexturesEXT (GLsizei n, const GLuint* textures, const GLclampf* priorities)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal b/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal
new file mode 100644
index 0000000..73899af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal
@@ -0,0 +1,7 @@
+GL_EXT_texture_perturb_normal
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_perturb_normal.txt
+GL_EXT_texture_perturb_normal
+
+ GL_PERTURB_EXT 0x85AE
+ GL_TEXTURE_NORMAL_EXT 0x85AF
+ void glTextureNormalEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_query_lod b/glew/auto/extensions/gl/GL_EXT_texture_query_lod
new file mode 100644
index 0000000..d556c3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_query_lod
@@ -0,0 +1,4 @@
+GL_EXT_texture_query_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_query_lod.txt
+GL_EXT_texture_query_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_rectangle b/glew/auto/extensions/gl/GL_EXT_texture_rectangle
new file mode 100644
index 0000000..1394311
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_rectangle
@@ -0,0 +1,8 @@
+GL_EXT_texture_rectangle
+http://developer.apple.com/opengl/extensions/ext_texture_rectangle.html
+GL_EXT_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_EXT 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_rg b/glew/auto/extensions/gl/GL_EXT_texture_rg
new file mode 100644
index 0000000..4208ff7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_rg
@@ -0,0 +1,8 @@
+GL_EXT_texture_rg
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_rg.txt
+GL_EXT_texture_rg
+
+ GL_RED_EXT 0x1903
+ GL_RG_EXT 0x8227
+ GL_R8_EXT 0x8229
+ GL_RG8_EXT 0x822B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB b/glew/auto/extensions/gl/GL_EXT_texture_sRGB
new file mode 100644
index 0000000..4808cf0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB
@@ -0,0 +1,20 @@
+GL_EXT_texture_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt
+GL_EXT_texture_sRGB
+
+ GL_SRGB_EXT 0x8C40
+ GL_SRGB8_EXT 0x8C41
+ GL_SRGB_ALPHA_EXT 0x8C42
+ GL_SRGB8_ALPHA8_EXT 0x8C43
+ GL_SLUMINANCE_ALPHA_EXT 0x8C44
+ GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+ GL_SLUMINANCE_EXT 0x8C46
+ GL_SLUMINANCE8_EXT 0x8C47
+ GL_COMPRESSED_SRGB_EXT 0x8C48
+ GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+ GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+ GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+ GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8 b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8
new file mode 100644
index 0000000..6be7ffc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8
@@ -0,0 +1,5 @@
+GL_EXT_texture_sRGB_R8
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_R8.txt
+GL_EXT_texture_sRGB_R8
+
+ GL_SR8_EXT 0x8FBD
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8 b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8
new file mode 100644
index 0000000..9bd1828
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8
@@ -0,0 +1,5 @@
+GL_EXT_texture_sRGB_RG8
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_RG8.txt
+GL_EXT_texture_sRGB_RG8
+
+ GL_SRG8_EXT 0x8FBE
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode
new file mode 100644
index 0000000..6e8bf70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode
@@ -0,0 +1,7 @@
+GL_EXT_texture_sRGB_decode
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt
+GL_EXT_texture_sRGB_decode
+
+ GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+ GL_DECODE_EXT 0x8A49
+ GL_SKIP_DECODE_EXT 0x8A4A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod b/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod
new file mode 100644
index 0000000..21c1501
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod
@@ -0,0 +1,4 @@
+GL_EXT_texture_shadow_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_shadow_lod.txt
+GL_EXT_texture_shadow_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent b/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent
new file mode 100644
index 0000000..4c7d461
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent
@@ -0,0 +1,7 @@
+GL_EXT_texture_shared_exponent
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_shared_exponent.txt
+GL_EXT_texture_shared_exponent
+
+ GL_RGB9_E5_EXT 0x8C3D
+ GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+ GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_snorm b/glew/auto/extensions/gl/GL_EXT_texture_snorm
new file mode 100644
index 0000000..2a03e33
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_snorm
@@ -0,0 +1,29 @@
+GL_EXT_texture_snorm
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_snorm.txt
+GL_EXT_texture_snorm
+
+ GL_RED_SNORM 0x8F90
+ GL_RG_SNORM 0x8F91
+ GL_RGB_SNORM 0x8F92
+ GL_RGBA_SNORM 0x8F93
+ GL_R8_SNORM 0x8F94
+ GL_RG8_SNORM 0x8F95
+ GL_RGB8_SNORM 0x8F96
+ GL_RGBA8_SNORM 0x8F97
+ GL_R16_SNORM 0x8F98
+ GL_RG16_SNORM 0x8F99
+ GL_RGB16_SNORM 0x8F9A
+ GL_RGBA16_SNORM 0x8F9B
+ GL_SIGNED_NORMALIZED 0x8F9C
+ GL_ALPHA_SNORM 0x9010
+ GL_LUMINANCE_SNORM 0x9011
+ GL_LUMINANCE_ALPHA_SNORM 0x9012
+ GL_INTENSITY_SNORM 0x9013
+ GL_ALPHA8_SNORM 0x9014
+ GL_LUMINANCE8_SNORM 0x9015
+ GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+ GL_INTENSITY8_SNORM 0x9017
+ GL_ALPHA16_SNORM 0x9018
+ GL_LUMINANCE16_SNORM 0x9019
+ GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+ GL_INTENSITY16_SNORM 0x901B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_storage b/glew/auto/extensions/gl/GL_EXT_texture_storage
new file mode 100644
index 0000000..b568cd7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_storage
@@ -0,0 +1,34 @@
+GL_EXT_texture_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage.txt
+GL_EXT_texture_storage
+
+ GL_ALPHA8_EXT 0x803C
+ GL_LUMINANCE8_EXT 0x8040
+ GL_LUMINANCE8_ALPHA8_EXT 0x8045
+ GL_RGB10_EXT 0x8052
+ GL_RGB10_A2_EXT 0x8059
+ GL_R8_EXT 0x8229
+ GL_RG8_EXT 0x822B
+ GL_R16F_EXT 0x822D
+ GL_R32F_EXT 0x822E
+ GL_RG16F_EXT 0x822F
+ GL_RG32F_EXT 0x8230
+ GL_RGBA32F_EXT 0x8814
+ GL_RGB32F_EXT 0x8815
+ GL_ALPHA32F_EXT 0x8816
+ GL_LUMINANCE32F_EXT 0x8818
+ GL_LUMINANCE_ALPHA32F_EXT 0x8819
+ GL_RGBA16F_EXT 0x881A
+ GL_RGB16F_EXT 0x881B
+ GL_ALPHA16F_EXT 0x881C
+ GL_LUMINANCE16F_EXT 0x881E
+ GL_LUMINANCE_ALPHA16F_EXT 0x881F
+ GL_RGB_RAW_422_APPLE 0x8A51
+ GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
+ GL_BGRA8_EXT 0x93A1
+ void glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+ void glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_storage_compression b/glew/auto/extensions/gl/GL_EXT_texture_storage_compression
new file mode 100644
index 0000000..5b76928
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_storage_compression
@@ -0,0 +1,22 @@
+GL_EXT_texture_storage_compression
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage_compression.txt
+GL_EXT_texture_storage_compression
+
+ GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E
+ GL_SURFACE_COMPRESSION_EXT 0x96C0
+ GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+ GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+ GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4
+ GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5
+ GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6
+ GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7
+ GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8
+ GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9
+ GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA
+ GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB
+ GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC
+ GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD
+ GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE
+ GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF
+ void glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list)
+ void glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_swizzle b/glew/auto/extensions/gl/GL_EXT_texture_swizzle
new file mode 100644
index 0000000..3a2ff6a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_swizzle
@@ -0,0 +1,9 @@
+GL_EXT_texture_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_swizzle.txt
+GL_EXT_texture_swizzle
+
+ GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+ GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+ GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+ GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+ GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV b/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV
new file mode 100644
index 0000000..82292da
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV
@@ -0,0 +1,5 @@
+GL_EXT_texture_type_2_10_10_10_REV
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_type_2_10_10_10_REV.txt
+GL_EXT_texture_type_2_10_10_10_REV
+
+ GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_view b/glew/auto/extensions/gl/GL_EXT_texture_view
new file mode 100644
index 0000000..092ca83
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_view
@@ -0,0 +1,10 @@
+GL_EXT_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_view.txt
+GL_EXT_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_EXT_timer_query b/glew/auto/extensions/gl/GL_EXT_timer_query
new file mode 100644
index 0000000..530ba35
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_timer_query
@@ -0,0 +1,7 @@
+GL_EXT_timer_query
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_timer_query.txt
+GL_EXT_timer_query
+
+ GL_TIME_ELAPSED_EXT 0x88BF
+ void glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64EXT *params)
+ void glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params)
diff --git a/glew/auto/extensions/gl/GL_EXT_transform_feedback b/glew/auto/extensions/gl/GL_EXT_transform_feedback
new file mode 100644
index 0000000..3b64b20
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_transform_feedback
@@ -0,0 +1,26 @@
+GL_EXT_transform_feedback
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_transform_feedback.txt
+GL_EXT_transform_feedback
+
+ GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+ GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+ GL_RASTERIZER_DISCARD_EXT 0x8C89
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+ GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+ GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+ GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+ void glBeginTransformFeedbackEXT (GLenum primitiveMode)
+ void glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer)
+ void glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset)
+ void glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glEndTransformFeedbackEXT (void)
+ void glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name)
+ void glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode)
diff --git a/glew/auto/extensions/gl/GL_EXT_unpack_subimage b/glew/auto/extensions/gl/GL_EXT_unpack_subimage
new file mode 100644
index 0000000..106d1d3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_unpack_subimage
@@ -0,0 +1,7 @@
+GL_EXT_unpack_subimage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_unpack_subimage.txt
+GL_EXT_unpack_subimage
+
+ GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
+ GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
+ GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array b/glew/auto/extensions/gl/GL_EXT_vertex_array
new file mode 100644
index 0000000..5f74e62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array
@@ -0,0 +1,45 @@
+GL_EXT_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array.txt
+GL_EXT_vertex_array
+
+ GL_DOUBLE_EXT 0x140A
+ GL_VERTEX_ARRAY_EXT 0x8074
+ GL_NORMAL_ARRAY_EXT 0x8075
+ GL_COLOR_ARRAY_EXT 0x8076
+ GL_INDEX_ARRAY_EXT 0x8077
+ GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+ GL_EDGE_FLAG_ARRAY_EXT 0x8079
+ GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+ GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+ GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+ GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+ GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+ GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+ GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+ GL_COLOR_ARRAY_SIZE_EXT 0x8081
+ GL_COLOR_ARRAY_TYPE_EXT 0x8082
+ GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+ GL_COLOR_ARRAY_COUNT_EXT 0x8084
+ GL_INDEX_ARRAY_TYPE_EXT 0x8085
+ GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+ GL_INDEX_ARRAY_COUNT_EXT 0x8087
+ GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+ GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+ GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+ GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+ GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+ GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+ GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+ GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+ GL_COLOR_ARRAY_POINTER_EXT 0x8090
+ GL_INDEX_ARRAY_POINTER_EXT 0x8091
+ GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+ GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+ void glArrayElementEXT (GLint i)
+ void glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glDrawArraysEXT (GLenum mode, GLint first, GLsizei count)
+ void glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean* pointer)
+ void glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra b/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra
new file mode 100644
index 0000000..59efae8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra
@@ -0,0 +1,5 @@
+GL_EXT_vertex_array_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_bgra.txt
+GL_EXT_vertex_array_bgra
+
+ GL_BGRA 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX b/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX
new file mode 100644
index 0000000..44636ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX
@@ -0,0 +1,7 @@
+GL_EXT_vertex_array_setXXX
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_setXXX.txt
+GL_EXT_vertex_array_setXXX
+
+ void glBindArraySetEXT (const void *arrayset)
+ const void * glCreateArraySetExt (void)
+ void glDeleteArraySetsEXT (GLsizei n, const void *arrayset[])
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit b/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit
new file mode 100644
index 0000000..f8c68eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit
@@ -0,0 +1,27 @@
+GL_EXT_vertex_attrib_64bit
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_attrib_64bit.txt
+GL_EXT_vertex_attrib_64bit
+
+ GL_DOUBLE_MAT2_EXT 0x8F46
+ GL_DOUBLE_MAT3_EXT 0x8F47
+ GL_DOUBLE_MAT4_EXT 0x8F48
+ GL_DOUBLE_MAT2x3_EXT 0x8F49
+ GL_DOUBLE_MAT2x4_EXT 0x8F4A
+ GL_DOUBLE_MAT3x2_EXT 0x8F4B
+ GL_DOUBLE_MAT3x4_EXT 0x8F4C
+ GL_DOUBLE_MAT4x2_EXT 0x8F4D
+ GL_DOUBLE_MAT4x3_EXT 0x8F4E
+ GL_DOUBLE_VEC2_EXT 0x8FFC
+ GL_DOUBLE_VEC3_EXT 0x8FFD
+ GL_DOUBLE_VEC4_EXT 0x8FFE
+ void glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble* params)
+ void glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexAttribL1dEXT (GLuint index, GLdouble x)
+ void glVertexAttribL1dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttribL2dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttribL3dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttribL4dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_shader b/glew/auto/extensions/gl/GL_EXT_vertex_shader
new file mode 100644
index 0000000..8d3314f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_shader
@@ -0,0 +1,157 @@
+GL_EXT_vertex_shader
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_shader.txt
+GL_EXT_vertex_shader
+
+ GL_VERTEX_SHADER_EXT 0x8780
+ GL_VERTEX_SHADER_BINDING_EXT 0x8781
+ GL_OP_INDEX_EXT 0x8782
+ GL_OP_NEGATE_EXT 0x8783
+ GL_OP_DOT3_EXT 0x8784
+ GL_OP_DOT4_EXT 0x8785
+ GL_OP_MUL_EXT 0x8786
+ GL_OP_ADD_EXT 0x8787
+ GL_OP_MADD_EXT 0x8788
+ GL_OP_FRAC_EXT 0x8789
+ GL_OP_MAX_EXT 0x878A
+ GL_OP_MIN_EXT 0x878B
+ GL_OP_SET_GE_EXT 0x878C
+ GL_OP_SET_LT_EXT 0x878D
+ GL_OP_CLAMP_EXT 0x878E
+ GL_OP_FLOOR_EXT 0x878F
+ GL_OP_ROUND_EXT 0x8790
+ GL_OP_EXP_BASE_2_EXT 0x8791
+ GL_OP_LOG_BASE_2_EXT 0x8792
+ GL_OP_POWER_EXT 0x8793
+ GL_OP_RECIP_EXT 0x8794
+ GL_OP_RECIP_SQRT_EXT 0x8795
+ GL_OP_SUB_EXT 0x8796
+ GL_OP_CROSS_PRODUCT_EXT 0x8797
+ GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+ GL_OP_MOV_EXT 0x8799
+ GL_OUTPUT_VERTEX_EXT 0x879A
+ GL_OUTPUT_COLOR0_EXT 0x879B
+ GL_OUTPUT_COLOR1_EXT 0x879C
+ GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+ GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+ GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+ GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+ GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+ GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+ GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+ GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+ GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+ GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+ GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+ GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+ GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+ GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+ GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+ GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+ GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+ GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+ GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+ GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+ GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+ GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+ GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+ GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+ GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+ GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+ GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+ GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+ GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+ GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+ GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+ GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+ GL_OUTPUT_FOG_EXT 0x87BD
+ GL_SCALAR_EXT 0x87BE
+ GL_VECTOR_EXT 0x87BF
+ GL_MATRIX_EXT 0x87C0
+ GL_VARIANT_EXT 0x87C1
+ GL_INVARIANT_EXT 0x87C2
+ GL_LOCAL_CONSTANT_EXT 0x87C3
+ GL_LOCAL_EXT 0x87C4
+ GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+ GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+ GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+ GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+ GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+ GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+ GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+ GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+ GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+ GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+ GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+ GL_X_EXT 0x87D5
+ GL_Y_EXT 0x87D6
+ GL_Z_EXT 0x87D7
+ GL_W_EXT 0x87D8
+ GL_NEGATIVE_X_EXT 0x87D9
+ GL_NEGATIVE_Y_EXT 0x87DA
+ GL_NEGATIVE_Z_EXT 0x87DB
+ GL_NEGATIVE_W_EXT 0x87DC
+ GL_ZERO_EXT 0x87DD
+ GL_ONE_EXT 0x87DE
+ GL_NEGATIVE_ONE_EXT 0x87DF
+ GL_NORMALIZED_RANGE_EXT 0x87E0
+ GL_FULL_RANGE_EXT 0x87E1
+ GL_CURRENT_VERTEX_EXT 0x87E2
+ GL_MVP_MATRIX_EXT 0x87E3
+ GL_VARIANT_VALUE_EXT 0x87E4
+ GL_VARIANT_DATATYPE_EXT 0x87E5
+ GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+ GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+ GL_VARIANT_ARRAY_EXT 0x87E8
+ GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+ GL_INVARIANT_VALUE_EXT 0x87EA
+ GL_INVARIANT_DATATYPE_EXT 0x87EB
+ GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+ GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+
+ void glBeginVertexShaderEXT (void)
+ void glEndVertexShaderEXT (void)
+ void glBindVertexShaderEXT (GLuint id)
+ GLuint glGenVertexShadersEXT (GLuint range)
+ void glDeleteVertexShaderEXT (GLuint id)
+ void glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1)
+ void glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2)
+ void glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3)
+ void glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)
+ void glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)
+ void glInsertComponentEXT (GLuint res, GLuint src, GLuint num)
+ void glExtractComponentEXT (GLuint res, GLuint src, GLuint num)
+ GLuint glGenSymbolsEXT (GLenum dataType, GLenum storageType, GLenum range, GLuint components)
+ void glSetInvariantEXT (GLuint id, GLenum type, void *addr)
+ void glSetLocalConstantEXT (GLuint id, GLenum type, void *addr)
+ void glVariantbvEXT (GLuint id, GLbyte *addr)
+ void glVariantsvEXT (GLuint id, GLshort *addr)
+ void glVariantivEXT (GLuint id, GLint *addr)
+ void glVariantfvEXT (GLuint id, GLfloat *addr)
+ void glVariantdvEXT (GLuint id, GLdouble *addr)
+ void glVariantubvEXT (GLuint id, GLubyte *addr)
+ void glVariantusvEXT (GLuint id, GLushort *addr)
+ void glVariantuivEXT (GLuint id, GLuint *addr)
+ void glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, void *addr)
+ void glEnableVariantClientStateEXT (GLuint id)
+ void glDisableVariantClientStateEXT (GLuint id)
+ GLuint glBindLightParameterEXT (GLenum light, GLenum value)
+ GLuint glBindMaterialParameterEXT (GLenum face, GLenum value)
+ GLuint glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value)
+ GLuint glBindTextureUnitParameterEXT (GLenum unit, GLenum value)
+ GLuint glBindParameterEXT (GLenum value)
+ GLboolean glIsVariantEnabledEXT (GLuint id, GLenum cap)
+ void glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
+ void glGetVariantPointervEXT (GLuint id, GLenum value, void **data)
+ void glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
+ void glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_weighting b/glew/auto/extensions/gl/GL_EXT_vertex_weighting
new file mode 100644
index 0000000..3b12240
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_weighting
@@ -0,0 +1,20 @@
+GL_EXT_vertex_weighting
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_weighting.txt
+GL_EXT_vertex_weighting
+
+ GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
+ GL_MODELVIEW0_MATRIX_EXT 0x0BA6
+ GL_MODELVIEW0_EXT 0x1700
+ GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+ GL_MODELVIEW1_MATRIX_EXT 0x8506
+ GL_VERTEX_WEIGHTING_EXT 0x8509
+ GL_MODELVIEW1_EXT 0x850A
+ GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+ GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+ GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+ GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+ GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+ GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+ void glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glVertexWeightfEXT (GLfloat weight)
+ void glVertexWeightfvEXT (GLfloat* weight)
diff --git a/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex b/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex
new file mode 100644
index 0000000..5d28a88
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex
@@ -0,0 +1,6 @@
+GL_EXT_win32_keyed_mutex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_win32_keyed_mutex.txt
+GL_EXT_win32_keyed_mutex
+
+ GLboolean glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout)
+ GLboolean glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key)
diff --git a/glew/auto/extensions/gl/GL_EXT_window_rectangles b/glew/auto/extensions/gl/GL_EXT_window_rectangles
new file mode 100644
index 0000000..194bff8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_window_rectangles
@@ -0,0 +1,11 @@
+GL_EXT_window_rectangles
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_window_rectangles.txt
+GL_EXT_window_rectangles
+
+ GL_INCLUSIVE_EXT 0x8F10
+ GL_EXCLUSIVE_EXT 0x8F11
+ GL_WINDOW_RECTANGLE_EXT 0x8F12
+ GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+ GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+ GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+ void glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint box[])
diff --git a/glew/auto/extensions/gl/GL_EXT_x11_sync_object b/glew/auto/extensions/gl/GL_EXT_x11_sync_object
new file mode 100644
index 0000000..30a771c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_x11_sync_object
@@ -0,0 +1,6 @@
+GL_EXT_x11_sync_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_x11_sync_object.txt
+GL_EXT_x11_sync_object
+
+ GL_SYNC_X11_FENCE_EXT 0x90E1
+ GLsync glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO b/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO
new file mode 100644
index 0000000..bdc37ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO
@@ -0,0 +1,5 @@
+GL_FJ_shader_binary_GCCSO
+https://www.khronos.org/registry/OpenGL/extensions/FJ/FJ_shader_binary_GCCSO.txt
+GL_FJ_shader_binary_GCCSO
+
+ GL_GCCSO_SHADER_BINARY_FJ 0x9260
diff --git a/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator b/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator
new file mode 100644
index 0000000..74dcecb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator
@@ -0,0 +1,5 @@
+GL_GREMEDY_frame_terminator
+https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_frame_terminator.txt
+GL_GREMEDY_frame_terminator
+
+ void glFrameTerminatorGREMEDY (void)
diff --git a/glew/auto/extensions/gl/GL_GREMEDY_string_marker b/glew/auto/extensions/gl/GL_GREMEDY_string_marker
new file mode 100644
index 0000000..2ff89d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_GREMEDY_string_marker
@@ -0,0 +1,5 @@
+GL_GREMEDY_string_marker
+https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_string_marker.txt
+GL_GREMEDY_string_marker
+
+ void glStringMarkerGREMEDY (GLsizei len, const void *string)
diff --git a/glew/auto/extensions/gl/GL_HP_convolution_border_modes b/glew/auto/extensions/gl/GL_HP_convolution_border_modes
new file mode 100644
index 0000000..d1f072c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_convolution_border_modes
@@ -0,0 +1,4 @@
+GL_HP_convolution_border_modes
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_convolution_border_modes.txt
+GL_HP_convolution_border_modes
+
diff --git a/glew/auto/extensions/gl/GL_HP_image_transform b/glew/auto/extensions/gl/GL_HP_image_transform
new file mode 100644
index 0000000..c54d05e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_image_transform
@@ -0,0 +1,10 @@
+GL_HP_image_transform
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_image_transform.txt
+GL_HP_image_transform
+
+ void glGetImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat* params)
+ void glGetImageTransformParameterivHP (GLenum target, GLenum pname, const GLint* params)
+ void glImageTransformParameterfHP (GLenum target, GLenum pname, const GLfloat param)
+ void glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat* params)
+ void glImageTransformParameteriHP (GLenum target, GLenum pname, const GLint param)
+ void glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_HP_occlusion_test b/glew/auto/extensions/gl/GL_HP_occlusion_test
new file mode 100644
index 0000000..99a70f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_occlusion_test
@@ -0,0 +1,4 @@
+GL_HP_occlusion_test
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_occlusion_test.txt
+GL_HP_occlusion_test
+
diff --git a/glew/auto/extensions/gl/GL_HP_texture_lighting b/glew/auto/extensions/gl/GL_HP_texture_lighting
new file mode 100644
index 0000000..cf26632
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_texture_lighting
@@ -0,0 +1,4 @@
+GL_HP_texture_lighting
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_texture_lighting.txt
+GL_HP_texture_lighting
+
diff --git a/glew/auto/extensions/gl/GL_IBM_cull_vertex b/glew/auto/extensions/gl/GL_IBM_cull_vertex
new file mode 100644
index 0000000..0f75755
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_cull_vertex
@@ -0,0 +1,5 @@
+GL_IBM_cull_vertex
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_cull_vertex.txt
+GL_IBM_cull_vertex
+
+ GL_CULL_VERTEX_IBM 103050
diff --git a/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays b/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays
new file mode 100644
index 0000000..4772ada
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays
@@ -0,0 +1,6 @@
+GL_IBM_multimode_draw_arrays
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_multimode_draw_arrays.txt
+GL_IBM_multimode_draw_arrays
+
+ void glMultiModeDrawArraysIBM (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)
+ void glMultiModeDrawElementsIBM (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride)
diff --git a/glew/auto/extensions/gl/GL_IBM_rasterpos_clip b/glew/auto/extensions/gl/GL_IBM_rasterpos_clip
new file mode 100644
index 0000000..14d19e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_rasterpos_clip
@@ -0,0 +1,5 @@
+GL_IBM_rasterpos_clip
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_rasterpos_clip.txt
+GL_IBM_rasterpos_clip
+
+ GL_RASTER_POSITION_UNCLIPPED_IBM 103010
diff --git a/glew/auto/extensions/gl/GL_IBM_static_data b/glew/auto/extensions/gl/GL_IBM_static_data
new file mode 100644
index 0000000..c546be7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_static_data
@@ -0,0 +1,6 @@
+GL_IBM_static_data
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_static_data.txt
+GL_IBM_static_data
+
+ GL_ALL_STATIC_DATA_IBM 103060
+ GL_STATIC_VERTEX_ARRAY_IBM 103061
diff --git a/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat
new file mode 100644
index 0000000..8c6011f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_IBM_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_texture_mirrored_repeat.txt
+GL_IBM_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT_IBM 0x8370
diff --git a/glew/auto/extensions/gl/GL_IBM_vertex_array_lists b/glew/auto/extensions/gl/GL_IBM_vertex_array_lists
new file mode 100644
index 0000000..edefa1d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_vertex_array_lists
@@ -0,0 +1,28 @@
+GL_IBM_vertex_array_lists
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_vertex_array_lists.txt
+GL_IBM_vertex_array_lists
+
+ GL_VERTEX_ARRAY_LIST_IBM 103070
+ GL_NORMAL_ARRAY_LIST_IBM 103071
+ GL_COLOR_ARRAY_LIST_IBM 103072
+ GL_INDEX_ARRAY_LIST_IBM 103073
+ GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+ GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+ GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+ GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+ GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+ GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+ GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+ GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+ GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+ GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+ GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+ GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+ void glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glEdgeFlagPointerListIBM (GLint stride, const GLboolean ** pointer, GLint ptrstride)
+ void glFogCoordPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glIndexPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glNormalPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
diff --git a/glew/auto/extensions/gl/GL_IMG_bindless_texture b/glew/auto/extensions/gl/GL_IMG_bindless_texture
new file mode 100644
index 0000000..5cb75fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_bindless_texture
@@ -0,0 +1,10 @@
+GL_IMG_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt
+GL_IMG_bindless_texture
+
+ GLuint64 glGetTextureHandleIMG (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler)
+ void glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64IMG (GLint location, GLuint64 value)
+ void glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample b/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample
new file mode 100644
index 0000000..b6f9acd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample
@@ -0,0 +1,10 @@
+GL_IMG_framebuffer_downsample
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt
+GL_IMG_framebuffer_downsample
+
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
+ GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
+ GL_DOWNSAMPLE_SCALES_IMG 0x913E
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
+ void glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale)
+ void glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale)
diff --git a/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture
new file mode 100644
index 0000000..03505f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture
@@ -0,0 +1,10 @@
+GL_IMG_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_multisampled_render_to_texture.txt
+GL_IMG_multisampled_render_to_texture
+
+ GL_RENDERBUFFER_SAMPLES_IMG 0x9133
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
+ GL_MAX_SAMPLES_IMG 0x9135
+ GL_TEXTURE_SAMPLES_IMG 0x9136
+ void glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+ void glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_IMG_program_binary b/glew/auto/extensions/gl/GL_IMG_program_binary
new file mode 100644
index 0000000..c16eb14
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_program_binary
@@ -0,0 +1,5 @@
+GL_IMG_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_program_binary.txt
+GL_IMG_program_binary
+
+ GL_SGX_PROGRAM_BINARY_IMG 0x9130
diff --git a/glew/auto/extensions/gl/GL_IMG_read_format b/glew/auto/extensions/gl/GL_IMG_read_format
new file mode 100644
index 0000000..1fecf62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_read_format
@@ -0,0 +1,6 @@
+GL_IMG_read_format
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_read_format.txt
+GL_IMG_read_format
+
+ GL_BGRA_IMG 0x80E1
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
diff --git a/glew/auto/extensions/gl/GL_IMG_shader_binary b/glew/auto/extensions/gl/GL_IMG_shader_binary
new file mode 100644
index 0000000..f7c7aec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_shader_binary
@@ -0,0 +1,5 @@
+GL_IMG_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_shader_binary.txt
+GL_IMG_shader_binary
+
+ GL_SGX_BINARY_IMG 0x8C0A
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc
new file mode 100644
index 0000000..338e965
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc
@@ -0,0 +1,8 @@
+GL_IMG_texture_compression_pvrtc
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt
+GL_IMG_texture_compression_pvrtc
+
+ GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
+ GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2 b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2
new file mode 100644
index 0000000..81d5447
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2
@@ -0,0 +1,6 @@
+GL_IMG_texture_compression_pvrtc2
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc2.txt
+GL_IMG_texture_compression_pvrtc2
+
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function b/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function
new file mode 100644
index 0000000..80a7ed3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function
@@ -0,0 +1,11 @@
+GL_IMG_texture_env_enhanced_fixed_function
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_env_enhanced_fixed_function.txt
+GL_IMG_texture_env_enhanced_fixed_function
+
+ GL_DOT3_RGBA_IMG 0x86AF
+ GL_MODULATE_COLOR_IMG 0x8C04
+ GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05
+ GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06
+ GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07
+ GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08
+ GL_ADD_BLEND_IMG 0x8C09
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic b/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic
new file mode 100644
index 0000000..df29bee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic
@@ -0,0 +1,7 @@
+GL_IMG_texture_filter_cubic
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt
+GL_IMG_texture_filter_cubic
+
+ GL_CUBIC_IMG 0x9139
+ GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
+ GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
diff --git a/glew/auto/extensions/gl/GL_IMG_tile_region_protection b/glew/auto/extensions/gl/GL_IMG_tile_region_protection
new file mode 100644
index 0000000..80c0848
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_tile_region_protection
@@ -0,0 +1,7 @@
+GL_IMG_tile_region_protection
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_tile_region_protection.txt
+GL_IMG_tile_region_protection
+
+ GL_TRP_IMG 0x8EA0
+ GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
+ GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
diff --git a/glew/auto/extensions/gl/GL_INGR_color_clamp b/glew/auto/extensions/gl/GL_INGR_color_clamp
new file mode 100644
index 0000000..630f82e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INGR_color_clamp
@@ -0,0 +1,12 @@
+GL_INGR_color_clamp
+https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_color_clamp.txt
+GL_INGR_color_clamp
+
+ GL_RED_MIN_CLAMP_INGR 0x8560
+ GL_GREEN_MIN_CLAMP_INGR 0x8561
+ GL_BLUE_MIN_CLAMP_INGR 0x8562
+ GL_ALPHA_MIN_CLAMP_INGR 0x8563
+ GL_RED_MAX_CLAMP_INGR 0x8564
+ GL_GREEN_MAX_CLAMP_INGR 0x8565
+ GL_BLUE_MAX_CLAMP_INGR 0x8566
+ GL_ALPHA_MAX_CLAMP_INGR 0x8567
diff --git a/glew/auto/extensions/gl/GL_INGR_interlace_read b/glew/auto/extensions/gl/GL_INGR_interlace_read
new file mode 100644
index 0000000..c9f9aa6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INGR_interlace_read
@@ -0,0 +1,5 @@
+GL_INGR_interlace_read
+https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_interlace_read.txt
+GL_INGR_interlace_read
+
+ GL_INTERLACE_READ_INGR 0x8568
diff --git a/glew/auto/extensions/gl/GL_INTEL_blackhole_render b/glew/auto/extensions/gl/GL_INTEL_blackhole_render
new file mode 100644
index 0000000..787616e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_blackhole_render
@@ -0,0 +1,5 @@
+GL_INTEL_blackhole_render
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_blackhole_render.txt
+GL_INTEL_blackhole_render
+
+ GL_BLACKHOLE_RENDER_INTEL 0x83FC
diff --git a/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization b/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization
new file mode 100644
index 0000000..f9c61bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization
@@ -0,0 +1,5 @@
+GL_INTEL_conservative_rasterization
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_conservative_rasterization.txt
+GL_INTEL_conservative_rasterization
+
+ GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
diff --git a/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering b/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering
new file mode 100644
index 0000000..acdb8e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering
@@ -0,0 +1,4 @@
+GL_INTEL_fragment_shader_ordering
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_fragment_shader_ordering.txt
+GL_INTEL_fragment_shader_ordering
+
diff --git a/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA b/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA
new file mode 100644
index 0000000..38c129c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA
@@ -0,0 +1,5 @@
+GL_INTEL_framebuffer_CMAA
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_framebuffer_CMAA.txt
+GL_INTEL_framebuffer_CMAA
+
+ void glApplyFramebufferAttachmentCMAAINTEL (void)
diff --git a/glew/auto/extensions/gl/GL_INTEL_map_texture b/glew/auto/extensions/gl/GL_INTEL_map_texture
new file mode 100644
index 0000000..f497dfa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_map_texture
@@ -0,0 +1,11 @@
+GL_INTEL_map_texture
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt
+GL_INTEL_map_texture
+
+ GL_LAYOUT_DEFAULT_INTEL 0
+ GL_LAYOUT_LINEAR_INTEL 1
+ GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
+ GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
+ void * glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout)
+ void glSyncTextureINTEL (GLuint texture)
+ void glUnmapTexture2DINTEL (GLuint texture, GLint level)
diff --git a/glew/auto/extensions/gl/GL_INTEL_parallel_arrays b/glew/auto/extensions/gl/GL_INTEL_parallel_arrays
new file mode 100644
index 0000000..2a69604
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_parallel_arrays
@@ -0,0 +1,13 @@
+GL_INTEL_parallel_arrays
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_parallel_arrays.txt
+GL_INTEL_parallel_arrays
+
+ GL_PARALLEL_ARRAYS_INTEL 0x83F4
+ GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+ GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+ GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+ GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+ void glColorPointervINTEL (GLint size, GLenum type, const void** pointer)
+ void glNormalPointervINTEL (GLenum type, const void** pointer)
+ void glTexCoordPointervINTEL (GLint size, GLenum type, const void** pointer)
+ void glVertexPointervINTEL (GLint size, GLenum type, const void** pointer)
diff --git a/glew/auto/extensions/gl/GL_INTEL_performance_query b/glew/auto/extensions/gl/GL_INTEL_performance_query
new file mode 100644
index 0000000..88955cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_performance_query
@@ -0,0 +1,34 @@
+GL_INTEL_performance_query
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_performance_query.txt
+GL_INTEL_performance_query
+
+ GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000
+ GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001
+ GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+ GL_PERFQUERY_FLUSH_INTEL 0x83FA
+ GL_PERFQUERY_WAIT_INTEL 0x83FB
+ GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+ GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+ GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+ GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+ GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+ GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+ GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+ GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+ GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+ GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+ GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+ GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+ GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+ GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+ GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+ void glBeginPerfQueryINTEL (GLuint queryHandle)
+ void glCreatePerfQueryINTEL (GLuint queryId, GLuint* queryHandle)
+ void glDeletePerfQueryINTEL (GLuint queryHandle)
+ void glEndPerfQueryINTEL (GLuint queryHandle)
+ void glGetFirstPerfQueryIdINTEL (GLuint* queryId)
+ void glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint* nextQueryId)
+ void glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar* counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue)
+ void glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten)
+ void glGetPerfQueryIdByNameINTEL (GLchar* queryName, GLuint *queryId)
+ void glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask)
diff --git a/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2 b/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2
new file mode 100644
index 0000000..647e528
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2
@@ -0,0 +1,4 @@
+GL_INTEL_shader_integer_functions2
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_shader_integer_functions2.txt
+GL_INTEL_shader_integer_functions2
+
diff --git a/glew/auto/extensions/gl/GL_INTEL_texture_scissor b/glew/auto/extensions/gl/GL_INTEL_texture_scissor
new file mode 100644
index 0000000..04507ef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_texture_scissor
@@ -0,0 +1,6 @@
+GL_INTEL_texture_scissor
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_texture_scissor.txt
+GL_INTEL_texture_scissor
+
+ void glTexScissorFuncINTEL (GLenum target, GLenum lfunc, GLenum hfunc)
+ void glTexScissorINTEL (GLenum target, GLclampf tlow, GLclampf thigh)
diff --git a/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced
new file mode 100644
index 0000000..0e13ada
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced
@@ -0,0 +1,21 @@
+GL_KHR_blend_equation_advanced
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt
+GL_KHR_blend_equation_advanced
+
+ GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+ GL_MULTIPLY_KHR 0x9294
+ GL_SCREEN_KHR 0x9295
+ GL_OVERLAY_KHR 0x9296
+ GL_DARKEN_KHR 0x9297
+ GL_LIGHTEN_KHR 0x9298
+ GL_COLORDODGE_KHR 0x9299
+ GL_COLORBURN_KHR 0x929A
+ GL_HARDLIGHT_KHR 0x929B
+ GL_SOFTLIGHT_KHR 0x929C
+ GL_DIFFERENCE_KHR 0x929E
+ GL_EXCLUSION_KHR 0x92A0
+ GL_HSL_HUE_KHR 0x92AD
+ GL_HSL_SATURATION_KHR 0x92AE
+ GL_HSL_COLOR_KHR 0x92AF
+ GL_HSL_LUMINOSITY_KHR 0x92B0
+ void glBlendBarrierKHR (void)
diff --git a/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent
new file mode 100644
index 0000000..901a886
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent
@@ -0,0 +1,4 @@
+GL_KHR_blend_equation_advanced_coherent
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt
+GL_KHR_blend_equation_advanced_coherent
+
diff --git a/glew/auto/extensions/gl/GL_KHR_context_flush_control b/glew/auto/extensions/gl/GL_KHR_context_flush_control
new file mode 100644
index 0000000..18de5aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_context_flush_control
@@ -0,0 +1,7 @@
+GL_KHR_context_flush_control
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt
+GL_KHR_context_flush_control
+
+ GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+ GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+
diff --git a/glew/auto/extensions/gl/GL_KHR_debug b/glew/auto/extensions/gl/GL_KHR_debug
new file mode 100644
index 0000000..1ffc83a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_debug
@@ -0,0 +1,55 @@
+GL_KHR_debug
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt
+GL_KHR_debug
+
+ GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+ GL_STACK_OVERFLOW 0x0503
+ GL_STACK_UNDERFLOW 0x0504
+ GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+ GL_DEBUG_CALLBACK_FUNCTION 0x8244
+ GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+ GL_DEBUG_SOURCE_API 0x8246
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+ GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+ GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+ GL_DEBUG_SOURCE_APPLICATION 0x824A
+ GL_DEBUG_SOURCE_OTHER 0x824B
+ GL_DEBUG_TYPE_ERROR 0x824C
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+ GL_DEBUG_TYPE_PORTABILITY 0x824F
+ GL_DEBUG_TYPE_PERFORMANCE 0x8250
+ GL_DEBUG_TYPE_OTHER 0x8251
+ GL_DEBUG_TYPE_MARKER 0x8268
+ GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+ GL_DEBUG_TYPE_POP_GROUP 0x826A
+ GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+ GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+ GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+ GL_BUFFER 0x82E0
+ GL_SHADER 0x82E1
+ GL_PROGRAM 0x82E2
+ GL_QUERY 0x82E3
+ GL_PROGRAM_PIPELINE 0x82E4
+ GL_SAMPLER 0x82E6
+ GL_DISPLAY_LIST 0x82E7
+ GL_MAX_LABEL_LENGTH 0x82E8
+ GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+ GL_DEBUG_LOGGED_MESSAGES 0x9145
+ GL_DEBUG_SEVERITY_HIGH 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM 0x9147
+ GL_DEBUG_SEVERITY_LOW 0x9148
+ GL_DEBUG_OUTPUT 0x92E0
+ void glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam)
+ void glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
+ void glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glGetObjectPtrLabel (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar* label)
+ void glObjectPtrLabel (void* ptr, GLsizei length, const GLchar* label)
+ void glPopDebugGroup (void)
+ void glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar * message)
+ typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
diff --git a/glew/auto/extensions/gl/GL_KHR_no_error b/glew/auto/extensions/gl/GL_KHR_no_error
new file mode 100644
index 0000000..33da047
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_no_error
@@ -0,0 +1,5 @@
+GL_KHR_no_error
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_no_error.txt
+GL_KHR_no_error
+
+ GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
diff --git a/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile b/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile
new file mode 100644
index 0000000..da163cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile
@@ -0,0 +1,7 @@
+GL_KHR_parallel_shader_compile
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_parallel_shader_compile.txt
+GL_KHR_parallel_shader_compile
+
+ GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+ GL_COMPLETION_STATUS_KHR 0x91B1
+ void glMaxShaderCompilerThreadsKHR (GLuint count)
diff --git a/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior b/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior
new file mode 100644
index 0000000..0b6c582
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior
@@ -0,0 +1,4 @@
+GL_KHR_robust_buffer_access_behavior
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robust_buffer_access_behavior.txt
+GL_KHR_robust_buffer_access_behavior
+
diff --git a/glew/auto/extensions/gl/GL_KHR_robustness b/glew/auto/extensions/gl/GL_KHR_robustness
new file mode 100644
index 0000000..c775801
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_robustness
@@ -0,0 +1,16 @@
+GL_KHR_robustness
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robustness.txt
+GL_KHR_robustness
+
+ GL_CONTEXT_LOST 0x0507
+ GL_LOSE_CONTEXT_ON_RESET 0x8252
+ GL_GUILTY_CONTEXT_RESET 0x8253
+ GL_INNOCENT_CONTEXT_RESET 0x8254
+ GL_UNKNOWN_CONTEXT_RESET 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY 0x8256
+ GL_NO_RESET_NOTIFICATION 0x8261
+ GL_CONTEXT_ROBUST_ACCESS 0x90F3
+ void glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint* params)
+ void glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
diff --git a/glew/auto/extensions/gl/GL_KHR_shader_subgroup b/glew/auto/extensions/gl/GL_KHR_shader_subgroup
new file mode 100644
index 0000000..da16f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_shader_subgroup
@@ -0,0 +1,16 @@
+GL_KHR_shader_subgroup
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_shader_subgroup.txt
+GL_KHR_shader_subgroup
+
+ GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+ GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
+ GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+ GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+ GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+ GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+ GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+ GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
+ GL_SUBGROUP_SIZE_KHR 0x9532
+ GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
+ GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+ GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr
new file mode 100644
index 0000000..a4a2f3e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr
@@ -0,0 +1,52 @@
+GL_KHR_texture_compression_astc_hdr
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_KHR_texture_compression_astc_hdr
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr
new file mode 100644
index 0000000..f928aad
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr
@@ -0,0 +1,52 @@
+GL_KHR_texture_compression_astc_ldr
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_KHR_texture_compression_astc_ldr
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d
new file mode 100644
index 0000000..06a71aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d
@@ -0,0 +1,4 @@
+GL_KHR_texture_compression_astc_sliced_3d
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_sliced_3d.txt
+GL_KHR_texture_compression_astc_sliced_3d
+
diff --git a/glew/auto/extensions/gl/GL_KTX_buffer_region b/glew/auto/extensions/gl/GL_KTX_buffer_region
new file mode 100644
index 0000000..ef281b1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KTX_buffer_region
@@ -0,0 +1,13 @@
+GL_KTX_buffer_region
+
+GL_KTX_buffer_region
+
+ GL_KTX_FRONT_REGION 0x0
+ GL_KTX_BACK_REGION 0x1
+ GL_KTX_Z_REGION 0x2
+ GL_KTX_STENCIL_REGION 0x3
+ GLuint glBufferRegionEnabled (void)
+ GLuint glNewBufferRegion (GLenum region)
+ void glDeleteBufferRegion (GLenum region)
+ void glReadBufferRegion (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glDrawBufferRegion (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest)
diff --git a/glew/auto/extensions/gl/GL_MESAX_texture_stack b/glew/auto/extensions/gl/GL_MESAX_texture_stack
new file mode 100644
index 0000000..f4423dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESAX_texture_stack
@@ -0,0 +1,10 @@
+GL_MESAX_texture_stack
+https://www.khronos.org/registry/OpenGL/extensions/MESAX/MESAX_texture_stack.txt
+GL_MESAX_texture_stack
+
+ GL_TEXTURE_1D_STACK_MESAX 0x8759
+ GL_TEXTURE_2D_STACK_MESAX 0x875A
+ GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+ GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+ GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+ GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
diff --git a/glew/auto/extensions/gl/GL_MESA_bgra b/glew/auto/extensions/gl/GL_MESA_bgra
new file mode 100644
index 0000000..e364079
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_bgra
@@ -0,0 +1,6 @@
+GL_MESA_bgra
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_bgra.txt
+GL_MESA_bgra
+
+ GL_BGR_EXT 0x80E0
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x
new file mode 100644
index 0000000..d3367ac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x
@@ -0,0 +1,5 @@
+GL_MESA_framebuffer_flip_x
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_x.txt
+GL_MESA_framebuffer_flip_x
+
+ GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y
new file mode 100644
index 0000000..4f83a5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y
@@ -0,0 +1,7 @@
+GL_MESA_framebuffer_flip_y
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt
+GL_MESA_framebuffer_flip_y
+
+ GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
+ void glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param)
+ void glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy b/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy
new file mode 100644
index 0000000..a42bbb2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy
@@ -0,0 +1,5 @@
+GL_MESA_framebuffer_swap_xy
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_swap_xy.txt
+GL_MESA_framebuffer_swap_xy
+
+ GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
diff --git a/glew/auto/extensions/gl/GL_MESA_pack_invert b/glew/auto/extensions/gl/GL_MESA_pack_invert
new file mode 100644
index 0000000..009bdd2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_pack_invert
@@ -0,0 +1,5 @@
+GL_MESA_pack_invert
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_pack_invert.txt
+GL_MESA_pack_invert
+
+ GL_PACK_INVERT_MESA 0x8758
diff --git a/glew/auto/extensions/gl/GL_MESA_program_binary_formats b/glew/auto/extensions/gl/GL_MESA_program_binary_formats
new file mode 100644
index 0000000..45e7d18
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_program_binary_formats
@@ -0,0 +1,5 @@
+GL_MESA_program_binary_formats
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_program_binary_formats.txt
+GL_MESA_program_binary_formats
+
+ GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
diff --git a/glew/auto/extensions/gl/GL_MESA_resize_buffers b/glew/auto/extensions/gl/GL_MESA_resize_buffers
new file mode 100644
index 0000000..d3c332b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_resize_buffers
@@ -0,0 +1,5 @@
+GL_MESA_resize_buffers
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_resize_buffers.txt
+GL_MESA_resize_buffers
+
+ void glResizeBuffersMESA (void)
diff --git a/glew/auto/extensions/gl/GL_MESA_shader_integer_functions b/glew/auto/extensions/gl/GL_MESA_shader_integer_functions
new file mode 100644
index 0000000..bc97f8f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_shader_integer_functions
@@ -0,0 +1,4 @@
+GL_MESA_shader_integer_functions
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_shader_integer_functions.txt
+GL_MESA_shader_integer_functions
+
diff --git a/glew/auto/extensions/gl/GL_MESA_tile_raster_order b/glew/auto/extensions/gl/GL_MESA_tile_raster_order
new file mode 100644
index 0000000..3eb9306
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_tile_raster_order
@@ -0,0 +1,4 @@
+GL_MESA_tile_raster_order
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_tile_raster_order.txt
+GL_MESA_tile_raster_order
+
diff --git a/glew/auto/extensions/gl/GL_MESA_window_pos b/glew/auto/extensions/gl/GL_MESA_window_pos
new file mode 100644
index 0000000..4282ff4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_window_pos
@@ -0,0 +1,28 @@
+GL_MESA_window_pos
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_window_pos.txt
+GL_MESA_window_pos
+
+ void glWindowPos2dMESA (GLdouble x, GLdouble y)
+ void glWindowPos2dvMESA (const GLdouble* p)
+ void glWindowPos2fMESA (GLfloat x, GLfloat y)
+ void glWindowPos2fvMESA (const GLfloat* p)
+ void glWindowPos2iMESA (GLint x, GLint y)
+ void glWindowPos2ivMESA (const GLint* p)
+ void glWindowPos2sMESA (GLshort x, GLshort y)
+ void glWindowPos2svMESA (const GLshort* p)
+ void glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z)
+ void glWindowPos3dvMESA (const GLdouble* p)
+ void glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z)
+ void glWindowPos3fvMESA (const GLfloat* p)
+ void glWindowPos3iMESA (GLint x, GLint y, GLint z)
+ void glWindowPos3ivMESA (const GLint* p)
+ void glWindowPos3sMESA (GLshort x, GLshort y, GLshort z)
+ void glWindowPos3svMESA (const GLshort* p)
+ void glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble)
+ void glWindowPos4dvMESA (const GLdouble* p)
+ void glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glWindowPos4fvMESA (const GLfloat* p)
+ void glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w)
+ void glWindowPos4ivMESA (const GLint* p)
+ void glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w)
+ void glWindowPos4svMESA (const GLshort* p)
diff --git a/glew/auto/extensions/gl/GL_MESA_ycbcr_texture b/glew/auto/extensions/gl/GL_MESA_ycbcr_texture
new file mode 100644
index 0000000..b82f635
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_ycbcr_texture
@@ -0,0 +1,7 @@
+GL_MESA_ycbcr_texture
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_ycbcr_texture.txt
+GL_MESA_ycbcr_texture
+
+ GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+ GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+ GL_YCBCR_MESA 0x8757
diff --git a/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers b/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers
new file mode 100644
index 0000000..2a88bf9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers
@@ -0,0 +1,4 @@
+GL_NVX_blend_equation_advanced_multi_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_blend_equation_advanced_multi_draw_buffers.txt
+GL_NVX_blend_equation_advanced_multi_draw_buffers
+
diff --git a/glew/auto/extensions/gl/GL_NVX_conditional_render b/glew/auto/extensions/gl/GL_NVX_conditional_render
new file mode 100644
index 0000000..71b9541
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_conditional_render
@@ -0,0 +1,6 @@
+GL_NVX_conditional_render
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_conditional_render.txt
+GL_NVX_conditional_render
+
+ void glBeginConditionalRenderNVX (GLuint id)
+ void glEndConditionalRenderNVX (void)
diff --git a/glew/auto/extensions/gl/GL_NVX_gpu_memory_info b/glew/auto/extensions/gl/GL_NVX_gpu_memory_info
new file mode 100644
index 0000000..a8d97b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_gpu_memory_info
@@ -0,0 +1,9 @@
+GL_NVX_gpu_memory_info
+http://developer.download.nvidia.com/opengl/specs/GL_NVX_gpu_memory_info.txt
+GL_NVX_gpu_memory_info
+
+ GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+ GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+ GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+ GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+ GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
diff --git a/glew/auto/extensions/gl/GL_NVX_gpu_multicast2 b/glew/auto/extensions/gl/GL_NVX_gpu_multicast2
new file mode 100644
index 0000000..bc1d221
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_gpu_multicast2
@@ -0,0 +1,11 @@
+GL_NVX_gpu_multicast2
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_gpu_multicast2.txt
+GL_NVX_gpu_multicast2
+
+ GL_UPLOAD_GPU_MASK_NVX 0x954A
+ GLsync glAsyncCopyBufferSubDataNVX (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray)
+ GLuint glAsyncCopyImageSubDataNVX (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray)
+ void glMulticastScissorArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLint* v)
+ void glMulticastViewportArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLfloat* v)
+ void glMulticastViewportPositionWScaleNVX (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff)
+ void glUploadGpuMaskNVX (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast b/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast
new file mode 100644
index 0000000..1386279
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast
@@ -0,0 +1,9 @@
+GL_NVX_linked_gpu_multicast
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_linked_gpu_multicast.txt
+GL_NVX_linked_gpu_multicast
+
+ GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
+ GL_MAX_LGPU_GPUS_NVX 0x92BA
+ void glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ void glLGPUInterlockNVX (void)
+ void glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
diff --git a/glew/auto/extensions/gl/GL_NVX_progress_fence b/glew/auto/extensions/gl/GL_NVX_progress_fence
new file mode 100644
index 0000000..fb19688
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_progress_fence
@@ -0,0 +1,8 @@
+GL_NVX_progress_fence
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_progress_fence.txt
+GL_NVX_progress_fence
+
+ void glClientWaitSemaphoreui64NVX (GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
+ GLuint glCreateProgressFenceNVX (void)
+ void glSignalSemaphoreui64NVX (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
+ void glWaitSemaphoreui64NVX (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
diff --git a/glew/auto/extensions/gl/GL_NV_3dvision_settings b/glew/auto/extensions/gl/GL_NV_3dvision_settings
new file mode 100644
index 0000000..daf8ab7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_3dvision_settings
@@ -0,0 +1,13 @@
+GL_NV_3dvision_settings
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_3dvision_settings.txt
+GL_NV_3dvision_settings
+
+ GL_3DVISION_STEREO_NV 0x90F4
+ GL_STEREO_SEPARATION_NV 0x90F5
+ GL_STEREO_CONVERGENCE_NV 0x90F6
+ GL_STEREO_CUTOFF_NV 0x90F7
+ GL_STEREO_PROJECTION_NV 0x90F8
+ GL_STEREO_PROJECTION_PERSPECTIVE_NV 0x90F9
+ GL_STEREO_PROJECTION_ORTHO_NV 0x90FA
+ void glStereoParameterfNV (GLenum pname, GLfloat param)
+ void glStereoParameteriNV (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external b/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external
new file mode 100644
index 0000000..0b2e201
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external
@@ -0,0 +1,8 @@
+GL_NV_EGL_stream_consumer_external
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_EGL_stream_consumer_external.txt
+GL_NV_EGL_stream_consumer_external
+
+ GL_TEXTURE_EXTERNAL_OES 0x8D65
+ GL_SAMPLER_EXTERNAL_OES 0x8D66
+ GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
diff --git a/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control b/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control
new file mode 100644
index 0000000..0e836c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control
@@ -0,0 +1,9 @@
+GL_NV_alpha_to_coverage_dither_control
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_alpha_to_coverage_dither_control.txt
+GL_NV_alpha_to_coverage_dither_control
+
+ GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
+ GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
+ GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
+ GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
+ void glAlphaToCoverageDitherControlNV (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_bgr b/glew/auto/extensions/gl/GL_NV_bgr
new file mode 100644
index 0000000..83a68cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bgr
@@ -0,0 +1,5 @@
+GL_NV_bgr
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bgr.txt
+GL_NV_bgr
+
+ GL_BGR_NV 0x80E0
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect
new file mode 100644
index 0000000..62119f5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_NV_bindless_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect.txt
+GL_NV_bindless_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)
+ void glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count
new file mode 100644
index 0000000..3bf66b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count
@@ -0,0 +1,6 @@
+GL_NV_bindless_multi_draw_indirect_count
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect_count.txt
+GL_NV_bindless_multi_draw_indirect_count
+
+ void glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)
+ void glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_texture b/glew/auto/extensions/gl/GL_NV_bindless_texture
new file mode 100644
index 0000000..30011fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_texture
@@ -0,0 +1,17 @@
+GL_NV_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_texture.txt
+GL_NV_bindless_texture
+
+ GLuint64 glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format)
+ GLuint64 glGetTextureHandleNV (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler)
+ GLboolean glIsImageHandleResidentNV (GLuint64 handle)
+ GLboolean glIsTextureHandleResidentNV (GLuint64 handle)
+ void glMakeImageHandleNonResidentNV (GLuint64 handle)
+ void glMakeImageHandleResidentNV (GLuint64 handle, GLenum access)
+ void glMakeTextureHandleNonResidentNV (GLuint64 handle)
+ void glMakeTextureHandleResidentNV (GLuint64 handle)
+ void glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64NV (GLint location, GLuint64 value)
+ void glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_NV_blend_equation_advanced b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced
new file mode 100644
index 0000000..861c9ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced
@@ -0,0 +1,56 @@
+GL_NV_blend_equation_advanced
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt
+GL_NV_blend_equation_advanced
+
+ GL_XOR_NV 0x1506
+ GL_RED_NV 0x1903
+ GL_GREEN_NV 0x1904
+ GL_BLUE_NV 0x1905
+ GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+ GL_BLEND_OVERLAP_NV 0x9281
+ GL_UNCORRELATED_NV 0x9282
+ GL_DISJOINT_NV 0x9283
+ GL_CONJOINT_NV 0x9284
+ GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+ GL_SRC_NV 0x9286
+ GL_DST_NV 0x9287
+ GL_SRC_OVER_NV 0x9288
+ GL_DST_OVER_NV 0x9289
+ GL_SRC_IN_NV 0x928A
+ GL_DST_IN_NV 0x928B
+ GL_SRC_OUT_NV 0x928C
+ GL_DST_OUT_NV 0x928D
+ GL_SRC_ATOP_NV 0x928E
+ GL_DST_ATOP_NV 0x928F
+ GL_PLUS_NV 0x9291
+ GL_PLUS_DARKER_NV 0x9292
+ GL_MULTIPLY_NV 0x9294
+ GL_SCREEN_NV 0x9295
+ GL_OVERLAY_NV 0x9296
+ GL_DARKEN_NV 0x9297
+ GL_LIGHTEN_NV 0x9298
+ GL_COLORDODGE_NV 0x9299
+ GL_COLORBURN_NV 0x929A
+ GL_HARDLIGHT_NV 0x929B
+ GL_SOFTLIGHT_NV 0x929C
+ GL_DIFFERENCE_NV 0x929E
+ GL_MINUS_NV 0x929F
+ GL_EXCLUSION_NV 0x92A0
+ GL_CONTRAST_NV 0x92A1
+ GL_INVERT_RGB_NV 0x92A3
+ GL_LINEARDODGE_NV 0x92A4
+ GL_LINEARBURN_NV 0x92A5
+ GL_VIVIDLIGHT_NV 0x92A6
+ GL_LINEARLIGHT_NV 0x92A7
+ GL_PINLIGHT_NV 0x92A8
+ GL_HARDMIX_NV 0x92A9
+ GL_HSL_HUE_NV 0x92AD
+ GL_HSL_SATURATION_NV 0x92AE
+ GL_HSL_COLOR_NV 0x92AF
+ GL_HSL_LUMINOSITY_NV 0x92B0
+ GL_PLUS_CLAMPED_NV 0x92B1
+ GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+ GL_MINUS_CLAMPED_NV 0x92B3
+ GL_INVERT_OVG_NV 0x92B4
+ void glBlendBarrierNV (void)
+ void glBlendParameteriNV (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent
new file mode 100644
index 0000000..9a041df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent
@@ -0,0 +1,4 @@
+GL_NV_blend_equation_advanced_coherent
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt
+GL_NV_blend_equation_advanced_coherent
+
diff --git a/glew/auto/extensions/gl/GL_NV_blend_minmax_factor b/glew/auto/extensions/gl/GL_NV_blend_minmax_factor
new file mode 100644
index 0000000..61f39b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_minmax_factor
@@ -0,0 +1,6 @@
+GL_NV_blend_minmax_factor
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_minmax_factor.txt
+GL_NV_blend_minmax_factor
+
+ GL_FACTOR_MIN_AMD 0x901C
+ GL_FACTOR_MAX_AMD 0x901D
diff --git a/glew/auto/extensions/gl/GL_NV_blend_square b/glew/auto/extensions/gl/GL_NV_blend_square
new file mode 100644
index 0000000..23d009e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_square
@@ -0,0 +1,4 @@
+GL_NV_blend_square
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_square.txt
+GL_NV_blend_square
+
diff --git a/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling b/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling
new file mode 100644
index 0000000..82f272b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling
@@ -0,0 +1,8 @@
+GL_NV_clip_space_w_scaling
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_clip_space_w_scaling.txt
+GL_NV_clip_space_w_scaling
+
+ GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+ GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+ GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+ void glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff)
diff --git a/glew/auto/extensions/gl/GL_NV_command_list b/glew/auto/extensions/gl/GL_NV_command_list
new file mode 100644
index 0000000..7dc2488
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_command_list
@@ -0,0 +1,40 @@
+GL_NV_command_list
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_command_list.txt
+GL_NV_command_list
+
+ GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+ GL_NOP_COMMAND_NV 0x0001
+ GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+ GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+ GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+ GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+ GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+ GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+ GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+ GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+ GL_UNIFORM_ADDRESS_COMMAND_NV 0x000a
+ GL_BLEND_COLOR_COMMAND_NV 0x000b
+ GL_STENCIL_REF_COMMAND_NV 0x000c
+ GL_LINE_WIDTH_COMMAND_NV 0x000d
+ GL_POLYGON_OFFSET_COMMAND_NV 0x000e
+ GL_ALPHA_REF_COMMAND_NV 0x000f
+ GL_VIEWPORT_COMMAND_NV 0x0010
+ GL_SCISSOR_COMMAND_NV 0x0011
+ GL_FRONT_FACE_COMMAND_NV 0x0012
+ void glCallCommandListNV (GLuint list)
+ void glCommandListSegmentsNV (GLuint list, GLuint segments)
+ void glCompileCommandListNV (GLuint list)
+ void glCreateCommandListsNV (GLsizei n, GLuint* lists)
+ void glCreateStatesNV (GLsizei n, GLuint* states)
+ void glDeleteCommandListsNV (GLsizei n, const GLuint* lists)
+ void glDeleteStatesNV (GLsizei n, const GLuint* states)
+ void glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count)
+ void glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, GLuint count)
+ void glDrawCommandsStatesAddressNV (const GLuint64* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ void glDrawCommandsStatesNV (GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ GLuint glGetCommandHeaderNV (GLenum tokenID, GLuint size)
+ GLushort glGetStageIndexNV (GLenum shadertype)
+ GLboolean glIsCommandListNV (GLuint list)
+ GLboolean glIsStateNV (GLuint state)
+ void glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void** indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ void glStateCaptureNV (GLuint state, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_compute_program5 b/glew/auto/extensions/gl/GL_NV_compute_program5
new file mode 100644
index 0000000..ddca154
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_compute_program5
@@ -0,0 +1,6 @@
+GL_NV_compute_program5
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_program5.txt
+GL_NV_compute_program5
+
+ GL_COMPUTE_PROGRAM_NV 0x90FB
+ GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
diff --git a/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives b/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives
new file mode 100644
index 0000000..7b6886c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives
@@ -0,0 +1,4 @@
+GL_NV_compute_shader_derivatives
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_shader_derivatives.txt
+GL_NV_compute_shader_derivatives
+
diff --git a/glew/auto/extensions/gl/GL_NV_conditional_render b/glew/auto/extensions/gl/GL_NV_conditional_render
new file mode 100644
index 0000000..62a4e34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conditional_render
@@ -0,0 +1,10 @@
+GL_NV_conditional_render
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conditional_render.txt
+GL_NV_conditional_render
+
+ GL_QUERY_WAIT_NV 0x8E13
+ GL_QUERY_NO_WAIT_NV 0x8E14
+ GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+ GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+ void glBeginConditionalRenderNV (GLuint id, GLenum mode)
+ void glEndConditionalRenderNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster b/glew/auto/extensions/gl/GL_NV_conservative_raster
new file mode 100644
index 0000000..70afbc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster
@@ -0,0 +1,9 @@
+GL_NV_conservative_raster
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster.txt
+GL_NV_conservative_raster
+
+ GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+ GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+ GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+ GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+ void glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate b/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate
new file mode 100644
index 0000000..394ed9e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate
@@ -0,0 +1,8 @@
+GL_NV_conservative_raster_dilate
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_dilate.txt
+GL_NV_conservative_raster_dilate
+
+ GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+ GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+ GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+ void glConservativeRasterParameterfNV (GLenum pname, GLfloat value)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap
new file mode 100644
index 0000000..5f361a2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap
@@ -0,0 +1,5 @@
+GL_NV_conservative_raster_pre_snap
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap.txt
+GL_NV_conservative_raster_pre_snap
+
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles
new file mode 100644
index 0000000..9dd4457
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles
@@ -0,0 +1,8 @@
+GL_NV_conservative_raster_pre_snap_triangles
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap_triangles.txt
+GL_NV_conservative_raster_pre_snap_triangles
+
+ GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+ GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+ void glConservativeRasterParameteriNV (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation b/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation
new file mode 100644
index 0000000..900435f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation
@@ -0,0 +1,4 @@
+GL_NV_conservative_raster_underestimation
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt
+GL_NV_conservative_raster_underestimation
+
diff --git a/glew/auto/extensions/gl/GL_NV_copy_buffer b/glew/auto/extensions/gl/GL_NV_copy_buffer
new file mode 100644
index 0000000..9cbd6ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_buffer
@@ -0,0 +1,7 @@
+GL_NV_copy_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_buffer.txt
+GL_NV_copy_buffer
+
+ GL_COPY_READ_BUFFER_NV 0x8F36
+ GL_COPY_WRITE_BUFFER_NV 0x8F37
+ void glCopyBufferSubDataNV (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_NV_copy_depth_to_color b/glew/auto/extensions/gl/GL_NV_copy_depth_to_color
new file mode 100644
index 0000000..c11c4d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_depth_to_color
@@ -0,0 +1,6 @@
+GL_NV_copy_depth_to_color
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_depth_to_color.txt
+GL_NV_copy_depth_to_color
+
+ GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+ GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
diff --git a/glew/auto/extensions/gl/GL_NV_copy_image b/glew/auto/extensions/gl/GL_NV_copy_image
new file mode 100644
index 0000000..8c7b610
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_image
@@ -0,0 +1,5 @@
+GL_NV_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_image.txt
+GL_NV_copy_image
+
+ void glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_NV_deep_texture3D b/glew/auto/extensions/gl/GL_NV_deep_texture3D
new file mode 100644
index 0000000..d55fc35
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_deep_texture3D
@@ -0,0 +1,6 @@
+GL_NV_deep_texture3D
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_deep_texture3D.txt
+GL_NV_deep_texture3D
+
+ GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
+ GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
diff --git a/glew/auto/extensions/gl/GL_NV_depth_buffer_float b/glew/auto/extensions/gl/GL_NV_depth_buffer_float
new file mode 100644
index 0000000..421d266
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_buffer_float
@@ -0,0 +1,11 @@
+GL_NV_depth_buffer_float
+http://developer.download.nvidia.com/opengl/specs/GL_NV_depth_buffer_float.txt
+GL_NV_depth_buffer_float
+
+ GL_DEPTH_COMPONENT32F_NV 0x8DAB
+ GL_DEPTH32F_STENCIL8_NV 0x8DAC
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+ GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+ void glDepthRangedNV (GLdouble zNear, GLdouble zFar)
+ void glClearDepthdNV (GLdouble depth)
+ void glDepthBoundsdNV (GLdouble zmin, GLdouble zmax)
diff --git a/glew/auto/extensions/gl/GL_NV_depth_clamp b/glew/auto/extensions/gl/GL_NV_depth_clamp
new file mode 100644
index 0000000..df48d4e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_clamp
@@ -0,0 +1,5 @@
+GL_NV_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_depth_clamp.txt
+GL_NV_depth_clamp
+
+ GL_DEPTH_CLAMP_NV 0x864F
diff --git a/glew/auto/extensions/gl/GL_NV_depth_nonlinear b/glew/auto/extensions/gl/GL_NV_depth_nonlinear
new file mode 100644
index 0000000..b215e77
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_nonlinear
@@ -0,0 +1,5 @@
+GL_NV_depth_nonlinear
+https://www.khronos.org/registry/OpenGL/extensions/NV/EGL_NV_depth_nonlinear.txt
+GL_NV_depth_nonlinear
+
+ GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
diff --git a/glew/auto/extensions/gl/GL_NV_depth_range_unclamped b/glew/auto/extensions/gl/GL_NV_depth_range_unclamped
new file mode 100644
index 0000000..b63a0ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_range_unclamped
@@ -0,0 +1,9 @@
+GL_NV_depth_range_unclamped
+
+GL_NV_depth_range_unclamped
+
+ GL_SAMPLE_COUNT_BITS_NV 0x8864
+ GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865
+ GL_QUERY_RESULT_NV 0x8866
+ GL_QUERY_RESULT_AVAILABLE_NV 0x8867
+ GL_SAMPLE_COUNT_NV 0x8914
diff --git a/glew/auto/extensions/gl/GL_NV_draw_buffers b/glew/auto/extensions/gl/GL_NV_draw_buffers
new file mode 100644
index 0000000..8f664c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_buffers
@@ -0,0 +1,38 @@
+GL_NV_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_buffers.txt
+GL_NV_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_NV 0x8824
+ GL_DRAW_BUFFER0_NV 0x8825
+ GL_DRAW_BUFFER1_NV 0x8826
+ GL_DRAW_BUFFER2_NV 0x8827
+ GL_DRAW_BUFFER3_NV 0x8828
+ GL_DRAW_BUFFER4_NV 0x8829
+ GL_DRAW_BUFFER5_NV 0x882A
+ GL_DRAW_BUFFER6_NV 0x882B
+ GL_DRAW_BUFFER7_NV 0x882C
+ GL_DRAW_BUFFER8_NV 0x882D
+ GL_DRAW_BUFFER9_NV 0x882E
+ GL_DRAW_BUFFER10_NV 0x882F
+ GL_DRAW_BUFFER11_NV 0x8830
+ GL_DRAW_BUFFER12_NV 0x8831
+ GL_DRAW_BUFFER13_NV 0x8832
+ GL_DRAW_BUFFER14_NV 0x8833
+ GL_DRAW_BUFFER15_NV 0x8834
+ GL_COLOR_ATTACHMENT0_NV 0x8CE0
+ GL_COLOR_ATTACHMENT1_NV 0x8CE1
+ GL_COLOR_ATTACHMENT2_NV 0x8CE2
+ GL_COLOR_ATTACHMENT3_NV 0x8CE3
+ GL_COLOR_ATTACHMENT4_NV 0x8CE4
+ GL_COLOR_ATTACHMENT5_NV 0x8CE5
+ GL_COLOR_ATTACHMENT6_NV 0x8CE6
+ GL_COLOR_ATTACHMENT7_NV 0x8CE7
+ GL_COLOR_ATTACHMENT8_NV 0x8CE8
+ GL_COLOR_ATTACHMENT9_NV 0x8CE9
+ GL_COLOR_ATTACHMENT10_NV 0x8CEA
+ GL_COLOR_ATTACHMENT11_NV 0x8CEB
+ GL_COLOR_ATTACHMENT12_NV 0x8CEC
+ GL_COLOR_ATTACHMENT13_NV 0x8CED
+ GL_COLOR_ATTACHMENT14_NV 0x8CEE
+ GL_COLOR_ATTACHMENT15_NV 0x8CEF
+ void glDrawBuffersNV (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_instanced b/glew/auto/extensions/gl/GL_NV_draw_instanced
new file mode 100644
index 0000000..0de9a2b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_instanced
@@ -0,0 +1,6 @@
+GL_NV_draw_instanced
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_instanced.txt
+GL_NV_draw_instanced
+
+ void glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_texture b/glew/auto/extensions/gl/GL_NV_draw_texture
new file mode 100644
index 0000000..a6189ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_texture
@@ -0,0 +1,5 @@
+GL_NV_draw_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_texture.txt
+GL_NV_draw_texture
+
+ void glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_vulkan_image b/glew/auto/extensions/gl/GL_NV_draw_vulkan_image
new file mode 100644
index 0000000..899e510
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_vulkan_image
@@ -0,0 +1,10 @@
+GL_NV_draw_vulkan_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_vulkan_image.txt
+GL_NV_draw_vulkan_image
+
+ void glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)
+ GLVULKANPROCNV glGetVkProcAddrNV (const GLchar* name)
+ void glSignalVkFenceNV (GLuint64 vkFence)
+ void glSignalVkSemaphoreNV (GLuint64 vkSemaphore)
+ void glWaitVkSemaphoreNV (GLuint64 vkSemaphore)
+ typedef void (APIENTRY *GLVULKANPROCNV)(void)
diff --git a/glew/auto/extensions/gl/GL_NV_evaluators b/glew/auto/extensions/gl/GL_NV_evaluators
new file mode 100644
index 0000000..63bd9bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_evaluators
@@ -0,0 +1,37 @@
+GL_NV_evaluators
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_evaluators.txt
+GL_NV_evaluators
+
+ GL_EVAL_2D_NV 0x86C0
+ GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+ GL_MAP_TESSELLATION_NV 0x86C2
+ GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+ GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+ GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+ GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+ GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+ GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+ GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+ GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+ GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+ GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+ GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+ GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+ GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+ GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+ GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+ GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+ GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+ GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+ GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+ GL_MAX_MAP_TESSELLATION_NV 0x86D6
+ GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+ void glEvalMapsNV (GLenum target, GLenum mode)
+ void glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat* params)
+ void glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint* params)
+ void glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points)
+ void glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMapParameterivNV (GLenum target, GLenum pname, GLint* params)
+ void glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points)
+ void glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat* params)
+ void glMapParameterivNV (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_explicit_attrib_location b/glew/auto/extensions/gl/GL_NV_explicit_attrib_location
new file mode 100644
index 0000000..f5095f7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_explicit_attrib_location
@@ -0,0 +1,4 @@
+GL_NV_explicit_attrib_location
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_attrib_location.txt
+GL_NV_explicit_attrib_location
+
diff --git a/glew/auto/extensions/gl/GL_NV_explicit_multisample b/glew/auto/extensions/gl/GL_NV_explicit_multisample
new file mode 100644
index 0000000..243fe3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_explicit_multisample
@@ -0,0 +1,17 @@
+GL_NV_explicit_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_multisample.txt
+GL_NV_explicit_multisample
+
+ GL_SAMPLE_POSITION_NV 0x8E50
+ GL_SAMPLE_MASK_NV 0x8E51
+ GL_SAMPLE_MASK_VALUE_NV 0x8E52
+ GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+ GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+ GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+ GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+ GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+ GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+ void glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat* val)
+ void glSampleMaskIndexedNV (GLuint index, GLbitfield mask)
+ void glTexRenderbufferNV (GLenum target, GLuint renderbuffer)
diff --git a/glew/auto/extensions/gl/GL_NV_fbo_color_attachments b/glew/auto/extensions/gl/GL_NV_fbo_color_attachments
new file mode 100644
index 0000000..fb96200
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fbo_color_attachments
@@ -0,0 +1,21 @@
+GL_NV_fbo_color_attachments
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fbo_color_attachments.txt
+GL_NV_fbo_color_attachments
+
+ GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
+ GL_COLOR_ATTACHMENT0_NV 0x8CE0
+ GL_COLOR_ATTACHMENT1_NV 0x8CE1
+ GL_COLOR_ATTACHMENT2_NV 0x8CE2
+ GL_COLOR_ATTACHMENT3_NV 0x8CE3
+ GL_COLOR_ATTACHMENT4_NV 0x8CE4
+ GL_COLOR_ATTACHMENT5_NV 0x8CE5
+ GL_COLOR_ATTACHMENT6_NV 0x8CE6
+ GL_COLOR_ATTACHMENT7_NV 0x8CE7
+ GL_COLOR_ATTACHMENT8_NV 0x8CE8
+ GL_COLOR_ATTACHMENT9_NV 0x8CE9
+ GL_COLOR_ATTACHMENT10_NV 0x8CEA
+ GL_COLOR_ATTACHMENT11_NV 0x8CEB
+ GL_COLOR_ATTACHMENT12_NV 0x8CEC
+ GL_COLOR_ATTACHMENT13_NV 0x8CED
+ GL_COLOR_ATTACHMENT14_NV 0x8CEE
+ GL_COLOR_ATTACHMENT15_NV 0x8CEF
diff --git a/glew/auto/extensions/gl/GL_NV_fence b/glew/auto/extensions/gl/GL_NV_fence
new file mode 100644
index 0000000..edd53d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fence
@@ -0,0 +1,14 @@
+GL_NV_fence
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fence.txt
+GL_NV_fence
+
+ GL_ALL_COMPLETED_NV 0x84F2
+ GL_FENCE_STATUS_NV 0x84F3
+ GL_FENCE_CONDITION_NV 0x84F4
+ void glDeleteFencesNV (GLsizei n, const GLuint* fences)
+ void glFinishFenceNV (GLuint fence)
+ void glGenFencesNV (GLsizei n, GLuint* fences)
+ void glGetFenceivNV (GLuint fence, GLenum pname, GLint* params)
+ GLboolean glIsFenceNV (GLuint fence)
+ void glSetFenceNV (GLuint fence, GLenum condition)
+ GLboolean glTestFenceNV (GLuint fence)
diff --git a/glew/auto/extensions/gl/GL_NV_fill_rectangle b/glew/auto/extensions/gl/GL_NV_fill_rectangle
new file mode 100644
index 0000000..d008a3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fill_rectangle
@@ -0,0 +1,5 @@
+GL_NV_fill_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fill_rectangle.txt
+GL_NV_fill_rectangle
+
+ GL_FILL_RECTANGLE_NV 0x933C
diff --git a/glew/auto/extensions/gl/GL_NV_float_buffer b/glew/auto/extensions/gl/GL_NV_float_buffer
new file mode 100644
index 0000000..5fc2128
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_float_buffer
@@ -0,0 +1,19 @@
+GL_NV_float_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_float_buffer.txt
+GL_NV_float_buffer
+
+ GL_FLOAT_R_NV 0x8880
+ GL_FLOAT_RG_NV 0x8881
+ GL_FLOAT_RGB_NV 0x8882
+ GL_FLOAT_RGBA_NV 0x8883
+ GL_FLOAT_R16_NV 0x8884
+ GL_FLOAT_R32_NV 0x8885
+ GL_FLOAT_RG16_NV 0x8886
+ GL_FLOAT_RG32_NV 0x8887
+ GL_FLOAT_RGB16_NV 0x8888
+ GL_FLOAT_RGB32_NV 0x8889
+ GL_FLOAT_RGBA16_NV 0x888A
+ GL_FLOAT_RGBA32_NV 0x888B
+ GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+ GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+ GL_FLOAT_RGBA_MODE_NV 0x888E
diff --git a/glew/auto/extensions/gl/GL_NV_fog_distance b/glew/auto/extensions/gl/GL_NV_fog_distance
new file mode 100644
index 0000000..2a1dadb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fog_distance
@@ -0,0 +1,7 @@
+GL_NV_fog_distance
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fog_distance.txt
+GL_NV_fog_distance
+
+ GL_FOG_DISTANCE_MODE_NV 0x855A
+ GL_EYE_RADIAL_NV 0x855B
+ GL_EYE_PLANE_ABSOLUTE_NV 0x855C
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color b/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color
new file mode 100644
index 0000000..c3b869b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color
@@ -0,0 +1,7 @@
+GL_NV_fragment_coverage_to_color
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_coverage_to_color.txt
+GL_NV_fragment_coverage_to_color
+
+ GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+ GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+ void glFragmentCoverageColorNV (GLuint color)
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program b/glew/auto/extensions/gl/GL_NV_fragment_program
new file mode 100644
index 0000000..4421863
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program
@@ -0,0 +1,16 @@
+GL_NV_fragment_program
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_program.txt
+GL_NV_fragment_program
+
+ GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+ GL_FRAGMENT_PROGRAM_NV 0x8870
+ GL_MAX_TEXTURE_COORDS_NV 0x8871
+ GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+ GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+ GL_PROGRAM_ERROR_STRING_NV 0x8874
+ void glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params)
+ void glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params)
+ void glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[])
+ void glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[])
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program2 b/glew/auto/extensions/gl/GL_NV_fragment_program2
new file mode 100644
index 0000000..79d4b63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program2
@@ -0,0 +1,9 @@
+GL_NV_fragment_program2
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program2.txt
+GL_NV_fragment_program2
+
+ GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+ GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+ GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+ GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+ GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program4 b/glew/auto/extensions/gl/GL_NV_fragment_program4
new file mode 100644
index 0000000..edd4383
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program4
@@ -0,0 +1,4 @@
+GL_NV_fragment_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_fragment_program4.txt
+GL_NV_gpu_program4
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program_option b/glew/auto/extensions/gl/GL_NV_fragment_program_option
new file mode 100644
index 0000000..01b8ed6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program_option
@@ -0,0 +1,4 @@
+GL_NV_fragment_program_option
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program_option.txt
+GL_NV_fragment_program_option
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric b/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric
new file mode 100644
index 0000000..562bee5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric
@@ -0,0 +1,4 @@
+GL_NV_fragment_shader_barycentric
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_barycentric.txt
+GL_NV_fragment_shader_barycentric
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock b/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock
new file mode 100644
index 0000000..87fbfbb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock
@@ -0,0 +1,4 @@
+GL_NV_fragment_shader_interlock
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_interlock.txt
+GL_NV_fragment_shader_interlock
+
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_blit b/glew/auto/extensions/gl/GL_NV_framebuffer_blit
new file mode 100644
index 0000000..f27ab32
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_NV_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_blit.txt
+GL_NV_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
+ GL_READ_FRAMEBUFFER_NV 0x8CA8
+ GL_DRAW_FRAMEBUFFER_NV 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
+ void glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples b/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples
new file mode 100644
index 0000000..23e73a1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples
@@ -0,0 +1,18 @@
+GL_NV_framebuffer_mixed_samples
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt
+GL_NV_framebuffer_mixed_samples
+
+ GL_COLOR_SAMPLES_NV 0x8E20
+ GL_RASTER_MULTISAMPLE_EXT 0x9327
+ GL_RASTER_SAMPLES_EXT 0x9328
+ GL_MAX_RASTER_SAMPLES_EXT 0x9329
+ GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+ GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+ GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+ GL_DEPTH_SAMPLES_NV 0x932D
+ GL_STENCIL_SAMPLES_NV 0x932E
+ GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+ GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+ GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+ GL_COVERAGE_MODULATION_NV 0x9332
+ GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_multisample b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample
new file mode 100644
index 0000000..7531b93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample
@@ -0,0 +1,8 @@
+GL_NV_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_multisample.txt
+GL_NV_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
+ GL_MAX_SAMPLES_NV 0x8D57
+ void glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage
new file mode 100644
index 0000000..526d0f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage
@@ -0,0 +1,9 @@
+GL_NV_framebuffer_multisample_coverage
+http://developer.download.nvidia.com/opengl/specs/GL_NV_framebuffer_multisample_coverage.txt
+GL_NV_framebuffer_multisample_coverage
+
+ GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+ GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+ GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+ GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+ void glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB b/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB
new file mode 100644
index 0000000..82e75fe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB
@@ -0,0 +1,4 @@
+GL_NV_generate_mipmap_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_generate_mipmap_sRGB.txt
+GL_NV_generate_mipmap_sRGB
+
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_program4 b/glew/auto/extensions/gl/GL_NV_geometry_program4
new file mode 100644
index 0000000..a6cb164
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_program4
@@ -0,0 +1,8 @@
+GL_NV_geometry_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_program4.txt
+GL_NV_gpu_program4
+
+ GL_GEOMETRY_PROGRAM_NV 0x8C26
+ GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+ GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+ void glProgramVertexLimitNV (GLenum target, GLint limit)
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_shader4 b/glew/auto/extensions/gl/GL_NV_geometry_shader4
new file mode 100644
index 0000000..1b00429
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_shader4
@@ -0,0 +1,4 @@
+GL_NV_geometry_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_shader4.txt
+GL_NV_geometry_shader4
+
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough b/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough
new file mode 100644
index 0000000..0aeeee9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough
@@ -0,0 +1,4 @@
+GL_NV_geometry_shader_passthrough
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt
+GL_NV_geometry_shader_passthrough
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_multicast b/glew/auto/extensions/gl/GL_NV_gpu_multicast
new file mode 100644
index 0000000..3e6ee0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_multicast
@@ -0,0 +1,21 @@
+GL_NV_gpu_multicast
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_multicast.txt
+GL_NV_gpu_multicast
+
+ GL_PER_GPU_STORAGE_BIT_NV 0x0800
+ GL_MULTICAST_GPUS_NV 0x92BA
+ GL_PER_GPU_STORAGE_NV 0x9548
+ GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
+ GL_RENDER_GPU_MASK_NV 0x9558
+ void glMulticastBarrierNV (void)
+ void glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ void glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
+ void glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
+ void glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64* params)
+ void glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint* params)
+ void glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64* params)
+ void glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint* params)
+ void glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask)
+ void glRenderGpuMaskNV (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program4 b/glew/auto/extensions/gl/GL_NV_gpu_program4
new file mode 100644
index 0000000..19f7169
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program4
@@ -0,0 +1,24 @@
+GL_NV_gpu_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_gpu_program4.txt
+GL_NV_gpu_program4
+
+ GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+ GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+ GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+ GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+ GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+ GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+ GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+ GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+ void glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params)
+ void glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params)
+ void glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params)
+ void glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params)
+ void glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params)
+ void glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params)
+ void glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params)
+ void glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program5 b/glew/auto/extensions/gl/GL_NV_gpu_program5
new file mode 100644
index 0000000..68079f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program5
@@ -0,0 +1,10 @@
+GL_NV_gpu_program5
+http://www.opengl.org/registry/specs/NV/gpu_program5.txt
+GL_NV_gpu_program5
+
+ GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+ GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended b/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended
new file mode 100644
index 0000000..5187acd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended
@@ -0,0 +1,4 @@
+GL_NV_gpu_program5_mem_extended
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5_mem_extended.txt
+GL_NV_gpu_program5_mem_extended
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program_fp64 b/glew/auto/extensions/gl/GL_NV_gpu_program_fp64
new file mode 100644
index 0000000..d759d70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program_fp64
@@ -0,0 +1,4 @@
+GL_NV_gpu_program_fp64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5.txt
+GL_NV_gpu_program_fp64
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_shader5 b/glew/auto/extensions/gl/GL_NV_gpu_shader5
new file mode 100644
index 0000000..a68b541
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_shader5
@@ -0,0 +1,66 @@
+GL_NV_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_shader5.txt
+GL_NV_gpu_shader5
+
+ GL_INT64_NV 0x140E
+ GL_UNSIGNED_INT64_NV 0x140F
+ GL_INT8_NV 0x8FE0
+ GL_INT8_VEC2_NV 0x8FE1
+ GL_INT8_VEC3_NV 0x8FE2
+ GL_INT8_VEC4_NV 0x8FE3
+ GL_INT16_NV 0x8FE4
+ GL_INT16_VEC2_NV 0x8FE5
+ GL_INT16_VEC3_NV 0x8FE6
+ GL_INT16_VEC4_NV 0x8FE7
+ GL_INT64_VEC2_NV 0x8FE9
+ GL_INT64_VEC3_NV 0x8FEA
+ GL_INT64_VEC4_NV 0x8FEB
+ GL_UNSIGNED_INT8_NV 0x8FEC
+ GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+ GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+ GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+ GL_UNSIGNED_INT16_NV 0x8FF0
+ GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+ GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+ GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+ GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+ GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+ GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+ GL_FLOAT16_NV 0x8FF8
+ GL_FLOAT16_VEC2_NV 0x8FF9
+ GL_FLOAT16_VEC3_NV 0x8FFA
+ GL_FLOAT16_VEC4_NV 0x8FFB
+ void glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT* params)
+ void glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT* params)
+ void glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x)
+ void glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x)
+ void glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y)
+ void glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y)
+ void glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform1i64NV (GLint location, GLint64EXT x)
+ void glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform1ui64NV (GLint location, GLuint64EXT x)
+ void glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y)
+ void glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y)
+ void glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
diff --git a/glew/auto/extensions/gl/GL_NV_half_float b/glew/auto/extensions/gl/GL_NV_half_float
new file mode 100644
index 0000000..7640902
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_half_float
@@ -0,0 +1,52 @@
+GL_NV_half_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_half_float.txt
+GL_NV_half_float
+
+ GL_HALF_FLOAT_NV 0x140B
+ void glColor3hNV (GLhalf red, GLhalf green, GLhalf blue)
+ void glColor3hvNV (const GLhalf* v)
+ void glColor4hNV (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha)
+ void glColor4hvNV (const GLhalf* v)
+ void glFogCoordhNV (GLhalf fog)
+ void glFogCoordhvNV (const GLhalf* fog)
+ void glMultiTexCoord1hNV (GLenum target, GLhalf s)
+ void glMultiTexCoord1hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord2hNV (GLenum target, GLhalf s, GLhalf t)
+ void glMultiTexCoord2hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord3hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r)
+ void glMultiTexCoord3hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord4hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q)
+ void glMultiTexCoord4hvNV (GLenum target, const GLhalf* v)
+ void glNormal3hNV (GLhalf nx, GLhalf ny, GLhalf nz)
+ void glNormal3hvNV (const GLhalf* v)
+ void glSecondaryColor3hNV (GLhalf red, GLhalf green, GLhalf blue)
+ void glSecondaryColor3hvNV (const GLhalf* v)
+ void glTexCoord1hNV (GLhalf s)
+ void glTexCoord1hvNV (const GLhalf* v)
+ void glTexCoord2hNV (GLhalf s, GLhalf t)
+ void glTexCoord2hvNV (const GLhalf* v)
+ void glTexCoord3hNV (GLhalf s, GLhalf t, GLhalf r)
+ void glTexCoord3hvNV (const GLhalf* v)
+ void glTexCoord4hNV (GLhalf s, GLhalf t, GLhalf r, GLhalf q)
+ void glTexCoord4hvNV (const GLhalf* v)
+ void glVertex2hNV (GLhalf x, GLhalf y)
+ void glVertex2hvNV (const GLhalf* v)
+ void glVertex3hNV (GLhalf x, GLhalf y, GLhalf z)
+ void glVertex3hvNV (const GLhalf* v)
+ void glVertex4hNV (GLhalf x, GLhalf y, GLhalf z, GLhalf w)
+ void glVertex4hvNV (const GLhalf* v)
+ void glVertexAttrib1hNV (GLuint index, GLhalf x)
+ void glVertexAttrib1hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib2hNV (GLuint index, GLhalf x, GLhalf y)
+ void glVertexAttrib2hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib3hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z)
+ void glVertexAttrib3hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib4hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w)
+ void glVertexAttrib4hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexWeighthNV (GLhalf weight)
+ void glVertexWeighthvNV (const GLhalf* weight)
+ typedef unsigned short GLhalf
diff --git a/glew/auto/extensions/gl/GL_NV_image_formats b/glew/auto/extensions/gl/GL_NV_image_formats
new file mode 100644
index 0000000..f6d8f97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_image_formats
@@ -0,0 +1,4 @@
+GL_NV_image_formats
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_image_formats.txt
+GL_NV_image_formats
+
diff --git a/glew/auto/extensions/gl/GL_NV_instanced_arrays b/glew/auto/extensions/gl/GL_NV_instanced_arrays
new file mode 100644
index 0000000..a05b1a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_instanced_arrays
@@ -0,0 +1,6 @@
+GL_NV_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_instanced_arrays.txt
+GL_NV_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
+ void glVertexAttribDivisorNV (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_NV_internalformat_sample_query b/glew/auto/extensions/gl/GL_NV_internalformat_sample_query
new file mode 100644
index 0000000..d3dc53d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_internalformat_sample_query
@@ -0,0 +1,9 @@
+GL_NV_internalformat_sample_query
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_internalformat_sample_query.txt
+GL_NV_internalformat_sample_query
+
+ GL_MULTISAMPLES_NV 0x9371
+ GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+ GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+ GL_CONFORMANT_NV 0x9374
+ void glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_light_max_exponent b/glew/auto/extensions/gl/GL_NV_light_max_exponent
new file mode 100644
index 0000000..c455a24
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_light_max_exponent
@@ -0,0 +1,6 @@
+GL_NV_light_max_exponent
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_light_max_exponent.txt
+GL_NV_light_max_exponent
+
+ GL_MAX_SHININESS_NV 0x8504
+ GL_MAX_SPOT_EXPONENT_NV 0x8505
diff --git a/glew/auto/extensions/gl/GL_NV_memory_attachment b/glew/auto/extensions/gl/GL_NV_memory_attachment
new file mode 100644
index 0000000..ee54164
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_memory_attachment
@@ -0,0 +1,20 @@
+GL_NV_memory_attachment
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_attachment.txt
+GL_NV_memory_attachment
+
+ GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
+ GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
+ GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
+ GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
+ GL_MEMORY_ATTACHABLE_NV 0x95A8
+ GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
+ GL_DETACHED_TEXTURES_NV 0x95AA
+ GL_DETACHED_BUFFERS_NV 0x95AB
+ GL_MAX_DETACHED_TEXTURES_NV 0x95AC
+ GL_MAX_DETACHED_BUFFERS_NV 0x95AD
+ void glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset)
+ void glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params)
+ void glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset)
+ void glResetMemoryObjectParameterNV (GLuint memory, GLenum pname)
+ void glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset)
+ void glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset)
diff --git a/glew/auto/extensions/gl/GL_NV_memory_object_sparse b/glew/auto/extensions/gl/GL_NV_memory_object_sparse
new file mode 100644
index 0000000..7c71774
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_memory_object_sparse
@@ -0,0 +1,8 @@
+GL_NV_memory_object_sparse
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_object_sparse.txt
+GL_NV_memory_object_sparse
+
+ void glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)
+ void glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)
+ void glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit)
+ void glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_NV_mesh_shader b/glew/auto/extensions/gl/GL_NV_mesh_shader
new file mode 100644
index 0000000..6254e1f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_mesh_shader
@@ -0,0 +1,56 @@
+GL_NV_mesh_shader
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_mesh_shader.txt
+GL_NV_mesh_shader
+
+ GL_MESH_SHADER_BIT_NV 0x00000040
+ GL_TASK_SHADER_BIT_NV 0x00000080
+ GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
+ GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
+ GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
+ GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
+ GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
+ GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
+ GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
+ GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
+ GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
+ GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
+ GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
+ GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
+ GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
+ GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
+ GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
+ GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
+ GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
+ GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
+ GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
+ GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
+ GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
+ GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
+ GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
+ GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
+ GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
+ GL_MESH_WORK_GROUP_SIZE_NV 0x953E
+ GL_TASK_WORK_GROUP_SIZE_NV 0x953F
+ GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
+ GL_MAX_MESH_VIEWS_NV 0x9557
+ GL_MESH_SHADER_NV 0x9559
+ GL_TASK_SHADER_NV 0x955A
+ GL_MESH_VERTICES_OUT_NV 0x9579
+ GL_MESH_PRIMITIVES_OUT_NV 0x957A
+ GL_MESH_OUTPUT_TYPE_NV 0x957B
+ GL_MESH_SUBROUTINE_NV 0x957C
+ GL_TASK_SUBROUTINE_NV 0x957D
+ GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
+ GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
+ GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
+ GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
+ GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
+ GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
+ GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
+ void glDrawMeshTasksIndirectNV (GLintptr indirect)
+ void glDrawMeshTasksNV (GLuint first, GLuint count)
+ void glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+ void glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_NV_multisample_coverage b/glew/auto/extensions/gl/GL_NV_multisample_coverage
new file mode 100644
index 0000000..9f2add6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_multisample_coverage
@@ -0,0 +1,5 @@
+GL_NV_multisample_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_coverage.txt
+GL_NV_multisample_coverage
+
+ GL_COLOR_SAMPLES_NV 0x8E20
diff --git a/glew/auto/extensions/gl/GL_NV_multisample_filter_hint b/glew/auto/extensions/gl/GL_NV_multisample_filter_hint
new file mode 100644
index 0000000..b21dba3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_multisample_filter_hint
@@ -0,0 +1,5 @@
+GL_NV_multisample_filter_hint
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_filter_hint.txt
+GL_NV_multisample_filter_hint
+
+ GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
diff --git a/glew/auto/extensions/gl/GL_NV_non_square_matrices b/glew/auto/extensions/gl/GL_NV_non_square_matrices
new file mode 100644
index 0000000..3fd6b78
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_non_square_matrices
@@ -0,0 +1,16 @@
+GL_NV_non_square_matrices
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_non_square_matrices.txt
+GL_NV_non_square_matrices
+
+ GL_FLOAT_MAT2x3_NV 0x8B65
+ GL_FLOAT_MAT2x4_NV 0x8B66
+ GL_FLOAT_MAT3x2_NV 0x8B67
+ GL_FLOAT_MAT3x4_NV 0x8B68
+ GL_FLOAT_MAT4x2_NV 0x8B69
+ GL_FLOAT_MAT4x3_NV 0x8B6A
+ void glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
diff --git a/glew/auto/extensions/gl/GL_NV_occlusion_query b/glew/auto/extensions/gl/GL_NV_occlusion_query
new file mode 100644
index 0000000..8ecd77a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_occlusion_query
@@ -0,0 +1,15 @@
+GL_NV_occlusion_query
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_occlusion_query.txt
+GL_NV_occlusion_query
+
+ GL_PIXEL_COUNTER_BITS_NV 0x8864
+ GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+ GL_PIXEL_COUNT_NV 0x8866
+ GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+ void glBeginOcclusionQueryNV (GLuint id)
+ void glDeleteOcclusionQueriesNV (GLsizei n, const GLuint* ids)
+ void glEndOcclusionQueryNV (void)
+ void glGenOcclusionQueriesNV (GLsizei n, GLuint* ids)
+ void glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint* params)
+ void glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint* params)
+ GLboolean glIsOcclusionQueryNV (GLuint id)
diff --git a/glew/auto/extensions/gl/GL_NV_pack_subimage b/glew/auto/extensions/gl/GL_NV_pack_subimage
new file mode 100644
index 0000000..2e8488c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pack_subimage
@@ -0,0 +1,7 @@
+GL_NV_pack_subimage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pack_subimage.txt
+GL_NV_pack_subimage
+
+ GL_PACK_ROW_LENGTH_NV 0x0D02
+ GL_PACK_SKIP_ROWS_NV 0x0D03
+ GL_PACK_SKIP_PIXELS_NV 0x0D04
diff --git a/glew/auto/extensions/gl/GL_NV_packed_depth_stencil b/glew/auto/extensions/gl/GL_NV_packed_depth_stencil
new file mode 100644
index 0000000..10d567d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_depth_stencil
@@ -0,0 +1,6 @@
+GL_NV_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_depth_stencil.txt
+GL_NV_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_NV 0x84F9
+ GL_UNSIGNED_INT_24_8_NV 0x84FA
diff --git a/glew/auto/extensions/gl/GL_NV_packed_float b/glew/auto/extensions/gl/GL_NV_packed_float
new file mode 100644
index 0000000..2cac7d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_float
@@ -0,0 +1,6 @@
+GL_NV_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt
+GL_NV_packed_float
+
+ GL_R11F_G11F_B10F_NV 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_NV_packed_float_linear b/glew/auto/extensions/gl/GL_NV_packed_float_linear
new file mode 100644
index 0000000..b5bce68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_float_linear
@@ -0,0 +1,6 @@
+GL_NV_packed_float_linear
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt
+GL_NV_packed_float_linear
+
+ GL_R11F_G11F_B10F_NV 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_NV_parameter_buffer_object b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object
new file mode 100644
index 0000000..91494e3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object
@@ -0,0 +1,12 @@
+GL_NV_parameter_buffer_object
+http://developer.download.nvidia.com/opengl/specs/GL_NV_parameter_buffer_object.txt
+GL_NV_parameter_buffer_object
+
+ GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+ GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+ GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+ void glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params)
+ void glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params)
+ void glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2 b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2
new file mode 100644
index 0000000..f0cbce2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2
@@ -0,0 +1,4 @@
+GL_NV_parameter_buffer_object2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_parameter_buffer_object2.txt
+GL_NV_parameter_buffer_object2
+
diff --git a/glew/auto/extensions/gl/GL_NV_path_rendering b/glew/auto/extensions/gl/GL_NV_path_rendering
new file mode 100644
index 0000000..4fe92a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_path_rendering
@@ -0,0 +1,217 @@
+GL_NV_path_rendering
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering.txt
+GL_NV_path_rendering
+
+ GL_CLOSE_PATH_NV 0x00
+ GL_BOLD_BIT_NV 0x01
+ GL_GLYPH_WIDTH_BIT_NV 0x01
+ GL_GLYPH_HEIGHT_BIT_NV 0x02
+ GL_ITALIC_BIT_NV 0x02
+ GL_MOVE_TO_NV 0x02
+ GL_RELATIVE_MOVE_TO_NV 0x03
+ GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+ GL_LINE_TO_NV 0x04
+ GL_RELATIVE_LINE_TO_NV 0x05
+ GL_HORIZONTAL_LINE_TO_NV 0x06
+ GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+ GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+ GL_VERTICAL_LINE_TO_NV 0x08
+ GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+ GL_QUADRATIC_CURVE_TO_NV 0x0A
+ GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+ GL_CUBIC_CURVE_TO_NV 0x0C
+ GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+ GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+ GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+ GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+ GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+ GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+ GL_SMALL_CCW_ARC_TO_NV 0x12
+ GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+ GL_SMALL_CW_ARC_TO_NV 0x14
+ GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+ GL_LARGE_CCW_ARC_TO_NV 0x16
+ GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+ GL_LARGE_CW_ARC_TO_NV 0x18
+ GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+ GL_CONIC_CURVE_TO_NV 0x1A
+ GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+ GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+ GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+ GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+ GL_ROUNDED_RECT_NV 0xE8
+ GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+ GL_ROUNDED_RECT2_NV 0xEA
+ GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+ GL_ROUNDED_RECT4_NV 0xEC
+ GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+ GL_ROUNDED_RECT8_NV 0xEE
+ GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+ GL_RESTART_PATH_NV 0xF0
+ GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+ GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+ GL_RECT_NV 0xF6
+ GL_RELATIVE_RECT_NV 0xF7
+ GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+ GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+ GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+ GL_ARC_TO_NV 0xFE
+ GL_RELATIVE_ARC_TO_NV 0xFF
+ GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+ GL_PRIMARY_COLOR_NV 0x852C
+ GL_SECONDARY_COLOR_NV 0x852D
+ GL_PRIMARY_COLOR 0x8577
+ GL_PATH_FORMAT_SVG_NV 0x9070
+ GL_PATH_FORMAT_PS_NV 0x9071
+ GL_STANDARD_FONT_NAME_NV 0x9072
+ GL_SYSTEM_FONT_NAME_NV 0x9073
+ GL_FILE_NAME_NV 0x9074
+ GL_PATH_STROKE_WIDTH_NV 0x9075
+ GL_PATH_END_CAPS_NV 0x9076
+ GL_PATH_INITIAL_END_CAP_NV 0x9077
+ GL_PATH_TERMINAL_END_CAP_NV 0x9078
+ GL_PATH_JOIN_STYLE_NV 0x9079
+ GL_PATH_MITER_LIMIT_NV 0x907A
+ GL_PATH_DASH_CAPS_NV 0x907B
+ GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+ GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+ GL_PATH_DASH_OFFSET_NV 0x907E
+ GL_PATH_CLIENT_LENGTH_NV 0x907F
+ GL_PATH_FILL_MODE_NV 0x9080
+ GL_PATH_FILL_MASK_NV 0x9081
+ GL_PATH_FILL_COVER_MODE_NV 0x9082
+ GL_PATH_STROKE_COVER_MODE_NV 0x9083
+ GL_PATH_STROKE_MASK_NV 0x9084
+ GL_PATH_STROKE_BOUND_NV 0x9086
+ GL_COUNT_UP_NV 0x9088
+ GL_COUNT_DOWN_NV 0x9089
+ GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+ GL_CONVEX_HULL_NV 0x908B
+ GL_BOUNDING_BOX_NV 0x908D
+ GL_TRANSLATE_X_NV 0x908E
+ GL_TRANSLATE_Y_NV 0x908F
+ GL_TRANSLATE_2D_NV 0x9090
+ GL_TRANSLATE_3D_NV 0x9091
+ GL_AFFINE_2D_NV 0x9092
+ GL_AFFINE_3D_NV 0x9094
+ GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+ GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+ GL_UTF8_NV 0x909A
+ GL_UTF16_NV 0x909B
+ GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+ GL_PATH_COMMAND_COUNT_NV 0x909D
+ GL_PATH_COORD_COUNT_NV 0x909E
+ GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+ GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+ GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+ GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+ GL_SQUARE_NV 0x90A3
+ GL_ROUND_NV 0x90A4
+ GL_TRIANGULAR_NV 0x90A5
+ GL_BEVEL_NV 0x90A6
+ GL_MITER_REVERT_NV 0x90A7
+ GL_MITER_TRUNCATE_NV 0x90A8
+ GL_SKIP_MISSING_GLYPH_NV 0x90A9
+ GL_USE_MISSING_GLYPH_NV 0x90AA
+ GL_PATH_ERROR_POSITION_NV 0x90AB
+ GL_PATH_FOG_GEN_MODE_NV 0x90AC
+ GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+ GL_ADJACENT_PAIRS_NV 0x90AE
+ GL_FIRST_TO_REST_NV 0x90AF
+ GL_PATH_GEN_MODE_NV 0x90B0
+ GL_PATH_GEN_COEFF_NV 0x90B1
+ GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
+ GL_PATH_GEN_COMPONENTS_NV 0x90B3
+ GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+ GL_MOVE_TO_RESETS_NV 0x90B5
+ GL_MOVE_TO_CONTINUES_NV 0x90B6
+ GL_PATH_STENCIL_FUNC_NV 0x90B7
+ GL_PATH_STENCIL_REF_NV 0x90B8
+ GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+ GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+ GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+ GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+ GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+ GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+ GL_FONT_UNAVAILABLE_NV 0x936A
+ GL_FONT_UNINTELLIGIBLE_NV 0x936B
+ GL_STANDARD_FONT_FORMAT_NV 0x936C
+ GL_FRAGMENT_INPUT_NV 0x936D
+ GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+ GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+ GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+ GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+ GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+ GL_FONT_ASCENDER_BIT_NV 0x00200000
+ GL_FONT_DESCENDER_BIT_NV 0x00400000
+ GL_FONT_HEIGHT_BIT_NV 0x00800000
+ GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+ GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+ GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+ GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+ GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+ void glCopyPathNV (GLuint resultPath, GLuint srcPath)
+ void glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glCoverFillPathNV (GLuint path, GLenum coverMode)
+ void glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glCoverStrokePathNV (GLuint path, GLenum coverMode)
+ void glDeletePathsNV (GLuint path, GLsizei range)
+ GLuint glGenPathsNV (GLsizei range)
+ void glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat* value)
+ void glGetPathColorGenivNV (GLenum color, GLenum pname, GLint* value)
+ void glGetPathCommandsNV (GLuint path, GLubyte* commands)
+ void glGetPathCoordsNV (GLuint path, GLfloat* coords)
+ void glGetPathDashArrayNV (GLuint path, GLfloat* dashArray)
+ GLfloat glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments)
+ void glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)
+ void glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)
+ void glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat* value)
+ void glGetPathParameterivNV (GLuint path, GLenum pname, GLint* value)
+ void glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)
+ void glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat* value)
+ void glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint* value)
+ void glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params)
+ void glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight)
+ GLboolean glIsPathNV (GLuint path)
+ GLboolean glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y)
+ GLboolean glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y)
+ void glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs)
+ void glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords)
+ void glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)
+ void glPathCoverDepthFuncNV (GLenum zfunc)
+ void glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat* dashArray)
+ void glPathFogGenNV (GLenum genMode)
+ GLenum glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ GLenum glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint* baseAndCount)
+ void glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ void glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ GLenum glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ void glPathParameterfNV (GLuint path, GLenum pname, GLfloat value)
+ void glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat* value)
+ void glPathParameteriNV (GLuint path, GLenum pname, GLint value)
+ void glPathParameterivNV (GLuint path, GLenum pname, const GLint* value)
+ void glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units)
+ void glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask)
+ void glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString)
+ void glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords)
+ void glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)
+ void glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs)
+ GLboolean glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)
+ void glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs)
+ void glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)
+ void glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask)
+ void glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)
+ void glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask)
+ void glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)
+ void glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode)
+ void glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues)
+ void glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[])
diff --git a/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge b/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge
new file mode 100644
index 0000000..8d38a09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge
@@ -0,0 +1,5 @@
+GL_NV_path_rendering_shared_edge
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering_shared_edge.txt
+GL_NV_path_rendering_shared_edge
+
+ GL_SHARED_EDGE_NV 0xC0
diff --git a/glew/auto/extensions/gl/GL_NV_pixel_buffer_object b/glew/auto/extensions/gl/GL_NV_pixel_buffer_object
new file mode 100644
index 0000000..d674a76
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_NV_pixel_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_buffer_object.txt
+GL_NV_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_NV 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
diff --git a/glew/auto/extensions/gl/GL_NV_pixel_data_range b/glew/auto/extensions/gl/GL_NV_pixel_data_range
new file mode 100644
index 0000000..14bcc7a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pixel_data_range
@@ -0,0 +1,12 @@
+GL_NV_pixel_data_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_data_range.txt
+GL_NV_pixel_data_range
+
+ GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+ GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+ GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+ GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+ GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+ GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+ void glFlushPixelDataRangeNV (GLenum target)
+ void glPixelDataRangeNV (GLenum target, GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_NV_platform_binary b/glew/auto/extensions/gl/GL_NV_platform_binary
new file mode 100644
index 0000000..7c91456
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_platform_binary
@@ -0,0 +1,5 @@
+GL_NV_platform_binary
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_platform_binary.txt
+GL_NV_platform_binary
+
+ GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
diff --git a/glew/auto/extensions/gl/GL_NV_point_sprite b/glew/auto/extensions/gl/GL_NV_point_sprite
new file mode 100644
index 0000000..4cbfde7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_point_sprite
@@ -0,0 +1,9 @@
+GL_NV_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_point_sprite.txt
+GL_NV_point_sprite
+
+ GL_POINT_SPRITE_NV 0x8861
+ GL_COORD_REPLACE_NV 0x8862
+ GL_POINT_SPRITE_R_MODE_NV 0x8863
+ void glPointParameteriNV (GLenum pname, GLint param)
+ void glPointParameterivNV (GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_polygon_mode b/glew/auto/extensions/gl/GL_NV_polygon_mode
new file mode 100644
index 0000000..35c177d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_polygon_mode
@@ -0,0 +1,11 @@
+GL_NV_polygon_mode
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_polygon_mode.txt
+GL_NV_polygon_mode
+
+ GL_POLYGON_MODE_NV 0x0B40
+ GL_POINT_NV 0x1B00
+ GL_LINE_NV 0x1B01
+ GL_FILL_NV 0x1B02
+ GL_POLYGON_OFFSET_POINT_NV 0x2A01
+ GL_POLYGON_OFFSET_LINE_NV 0x2A02
+ void glPolygonModeNV (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_present_video b/glew/auto/extensions/gl/GL_NV_present_video
new file mode 100644
index 0000000..1a5b8ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_present_video
@@ -0,0 +1,16 @@
+GL_NV_present_video
+http://www.opengl.org/registry/specs/NV/present_video.txt
+GL_NV_present_video
+
+ GL_FRAME_NV 0x8E26
+ GL_FIELDS_NV 0x8E27
+ GL_CURRENT_TIME_NV 0x8E28
+ GL_NUM_FILL_STREAMS_NV 0x8E29
+ GL_PRESENT_TIME_NV 0x8E2A
+ GL_PRESENT_DURATION_NV 0x8E2B
+ void glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT* params)
+ void glGetVideoivNV (GLuint video_slot, GLenum pname, GLint* params)
+ void glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT* params)
+ void glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint* params)
+ void glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3)
+ void glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1)
diff --git a/glew/auto/extensions/gl/GL_NV_primitive_restart b/glew/auto/extensions/gl/GL_NV_primitive_restart
new file mode 100644
index 0000000..aca79ba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_primitive_restart
@@ -0,0 +1,8 @@
+GL_NV_primitive_restart
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_restart.txt
+GL_NV_primitive_restart
+
+ GL_PRIMITIVE_RESTART_NV 0x8558
+ GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+ void glPrimitiveRestartIndexNV (GLuint index)
+ void glPrimitiveRestartNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_primitive_shading_rate b/glew/auto/extensions/gl/GL_NV_primitive_shading_rate
new file mode 100644
index 0000000..c8fec9c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_primitive_shading_rate
@@ -0,0 +1,6 @@
+GL_NV_primitive_shading_rate
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_shading_rate.txt
+GL_NV_primitive_shading_rate
+
+ GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+ GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
diff --git a/glew/auto/extensions/gl/GL_NV_query_resource_tag b/glew/auto/extensions/gl/GL_NV_query_resource_tag
new file mode 100644
index 0000000..b45a02f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_query_resource_tag
@@ -0,0 +1,4 @@
+GL_NV_query_resource_tag
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_query_resource_tag.txt
+GL_NV_query_resource_tag
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_buffer b/glew/auto/extensions/gl/GL_NV_read_buffer
new file mode 100644
index 0000000..980432a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_buffer
@@ -0,0 +1,6 @@
+GL_NV_read_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt
+GL_NV_read_buffer
+
+ GL_READ_BUFFER_NV 0x0C02
+ void glReadBufferNV (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_read_buffer_front b/glew/auto/extensions/gl/GL_NV_read_buffer_front
new file mode 100644
index 0000000..70904f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_buffer_front
@@ -0,0 +1,5 @@
+GL_NV_read_buffer_front
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt
+GL_NV_read_buffer_front
+
+ GL_READ_BUFFER_NV 0x0C02
diff --git a/glew/auto/extensions/gl/GL_NV_read_depth b/glew/auto/extensions/gl/GL_NV_read_depth
new file mode 100644
index 0000000..3dab317
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_depth
@@ -0,0 +1,4 @@
+GL_NV_read_depth
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_depth
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_depth_stencil b/glew/auto/extensions/gl/GL_NV_read_depth_stencil
new file mode 100644
index 0000000..0f35e80
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_depth_stencil
@@ -0,0 +1,4 @@
+GL_NV_read_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_stencil b/glew/auto/extensions/gl/GL_NV_read_stencil
new file mode 100644
index 0000000..4a91298
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_stencil
@@ -0,0 +1,4 @@
+GL_NV_read_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_stencil
+
diff --git a/glew/auto/extensions/gl/GL_NV_register_combiners b/glew/auto/extensions/gl/GL_NV_register_combiners
new file mode 100644
index 0000000..4d90284
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_register_combiners
@@ -0,0 +1,68 @@
+GL_NV_register_combiners
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners.txt
+GL_NV_register_combiners
+
+ GL_REGISTER_COMBINERS_NV 0x8522
+ GL_VARIABLE_A_NV 0x8523
+ GL_VARIABLE_B_NV 0x8524
+ GL_VARIABLE_C_NV 0x8525
+ GL_VARIABLE_D_NV 0x8526
+ GL_VARIABLE_E_NV 0x8527
+ GL_VARIABLE_F_NV 0x8528
+ GL_VARIABLE_G_NV 0x8529
+ GL_CONSTANT_COLOR0_NV 0x852A
+ GL_CONSTANT_COLOR1_NV 0x852B
+ GL_PRIMARY_COLOR_NV 0x852C
+ GL_SECONDARY_COLOR_NV 0x852D
+ GL_SPARE0_NV 0x852E
+ GL_SPARE1_NV 0x852F
+ GL_DISCARD_NV 0x8530
+ GL_E_TIMES_F_NV 0x8531
+ GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+ GL_UNSIGNED_IDENTITY_NV 0x8536
+ GL_UNSIGNED_INVERT_NV 0x8537
+ GL_EXPAND_NORMAL_NV 0x8538
+ GL_EXPAND_NEGATE_NV 0x8539
+ GL_HALF_BIAS_NORMAL_NV 0x853A
+ GL_HALF_BIAS_NEGATE_NV 0x853B
+ GL_SIGNED_IDENTITY_NV 0x853C
+ GL_SIGNED_NEGATE_NV 0x853D
+ GL_SCALE_BY_TWO_NV 0x853E
+ GL_SCALE_BY_FOUR_NV 0x853F
+ GL_SCALE_BY_ONE_HALF_NV 0x8540
+ GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+ GL_COMBINER_INPUT_NV 0x8542
+ GL_COMBINER_MAPPING_NV 0x8543
+ GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+ GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+ GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+ GL_COMBINER_MUX_SUM_NV 0x8547
+ GL_COMBINER_SCALE_NV 0x8548
+ GL_COMBINER_BIAS_NV 0x8549
+ GL_COMBINER_AB_OUTPUT_NV 0x854A
+ GL_COMBINER_CD_OUTPUT_NV 0x854B
+ GL_COMBINER_SUM_OUTPUT_NV 0x854C
+ GL_MAX_GENERAL_COMBINERS_NV 0x854D
+ GL_NUM_GENERAL_COMBINERS_NV 0x854E
+ GL_COLOR_SUM_CLAMP_NV 0x854F
+ GL_COMBINER0_NV 0x8550
+ GL_COMBINER1_NV 0x8551
+ GL_COMBINER2_NV 0x8552
+ GL_COMBINER3_NV 0x8553
+ GL_COMBINER4_NV 0x8554
+ GL_COMBINER5_NV 0x8555
+ GL_COMBINER6_NV 0x8556
+ GL_COMBINER7_NV 0x8557
+ void glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+ void glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
+ void glCombinerParameterfNV (GLenum pname, GLfloat param)
+ void glCombinerParameterfvNV (GLenum pname, const GLfloat* params)
+ void glCombinerParameteriNV (GLenum pname, GLint param)
+ void glCombinerParameterivNV (GLenum pname, const GLint* params)
+ void glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+ void glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params)
+ void glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params)
+ void glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat* params)
+ void glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint* params)
+ void glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat* params)
+ void glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_register_combiners2 b/glew/auto/extensions/gl/GL_NV_register_combiners2
new file mode 100644
index 0000000..9005509
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_register_combiners2
@@ -0,0 +1,7 @@
+GL_NV_register_combiners2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners2.txt
+GL_NV_register_combiners2
+
+ GL_PER_STAGE_CONSTANTS_NV 0x8535
+ void glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat* params)
+ void glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_NV_representative_fragment_test b/glew/auto/extensions/gl/GL_NV_representative_fragment_test
new file mode 100644
index 0000000..a7d19db
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_representative_fragment_test
@@ -0,0 +1,5 @@
+GL_NV_representative_fragment_test
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_representative_fragment_test.txt
+GL_NV_representative_fragment_test
+
+ GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
diff --git a/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..5766321
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+GL_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_robustness_video_memory_purge.txt
+GL_NV_robustness_video_memory_purge
+
+ GL_PURGED_CONTEXT_RESET_NV 0x92BB
diff --git a/glew/auto/extensions/gl/GL_NV_sRGB_formats b/glew/auto/extensions/gl/GL_NV_sRGB_formats
new file mode 100644
index 0000000..5cd7645
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sRGB_formats
@@ -0,0 +1,14 @@
+GL_NV_sRGB_formats
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sRGB_formats.txt
+GL_NV_sRGB_formats
+
+ GL_ETC1_SRGB8_NV 0x88EE
+ GL_SRGB8_NV 0x8C41
+ GL_SLUMINANCE_ALPHA_NV 0x8C44
+ GL_SLUMINANCE8_ALPHA8_NV 0x8C45
+ GL_SLUMINANCE_NV 0x8C46
+ GL_SLUMINANCE8_NV 0x8C47
+ GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_NV_sample_locations b/glew/auto/extensions/gl/GL_NV_sample_locations
new file mode 100644
index 0000000..f3dfc98
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sample_locations
@@ -0,0 +1,15 @@
+GL_NV_sample_locations
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_locations.txt
+GL_NV_sample_locations
+
+ GL_SAMPLE_LOCATION_NV 0x8E50
+ GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+ GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+ GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+ GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+ GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+ void glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat* v)
+ void glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
+ void glResolveDepthValuesNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage b/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage
new file mode 100644
index 0000000..4e184a4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage
@@ -0,0 +1,4 @@
+GL_NV_sample_mask_override_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt
+GL_NV_sample_mask_override_coverage
+
diff --git a/glew/auto/extensions/gl/GL_NV_scissor_exclusive b/glew/auto/extensions/gl/GL_NV_scissor_exclusive
new file mode 100644
index 0000000..dbb486c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_scissor_exclusive
@@ -0,0 +1,8 @@
+GL_NV_scissor_exclusive
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_scissor_exclusive.txt
+GL_NV_scissor_exclusive
+
+ GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
+ GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
+ void glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint* v)
+ void glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_counters b/glew/auto/extensions/gl/GL_NV_shader_atomic_counters
new file mode 100644
index 0000000..529e319
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_counters
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_counters
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_counters.txt
+GL_NV_shader_atomic_counters
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_float b/glew/auto/extensions/gl/GL_NV_shader_atomic_float
new file mode 100644
index 0000000..2d122dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_float
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float.txt
+GL_NV_shader_atomic_float
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_float64 b/glew/auto/extensions/gl/GL_NV_shader_atomic_float64
new file mode 100644
index 0000000..f124742
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_float64
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_float64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float64.txt
+GL_NV_shader_atomic_float64
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector b/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector
new file mode 100644
index 0000000..582d386
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_fp16_vector
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_fp16_vector.txt
+GL_NV_shader_atomic_fp16_vector
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_int64 b/glew/auto/extensions/gl/GL_NV_shader_atomic_int64
new file mode 100644
index 0000000..4d36748
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_int64
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_int64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_int64.txt
+GL_NV_shader_atomic_int64
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_buffer_load b/glew/auto/extensions/gl/GL_NV_shader_buffer_load
new file mode 100644
index 0000000..3b53b6e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_buffer_load
@@ -0,0 +1,20 @@
+GL_NV_shader_buffer_load
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_buffer_load.txt
+GL_NV_shader_buffer_load
+
+ GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+ GL_GPU_ADDRESS_NV 0x8F34
+ GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+ void glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT* params)
+ void glGetIntegerui64vNV (GLenum value, GLuint64EXT* result)
+ void glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT* params)
+ GLboolean glIsBufferResidentNV (GLenum target)
+ GLboolean glIsNamedBufferResidentNV (GLuint buffer)
+ void glMakeBufferNonResidentNV (GLenum target)
+ void glMakeBufferResidentNV (GLenum target, GLenum access)
+ void glMakeNamedBufferNonResidentNV (GLuint buffer)
+ void glMakeNamedBufferResidentNV (GLuint buffer, GLenum access)
+ void glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value)
+ void glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniformui64NV (GLint location, GLuint64EXT value)
+ void glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
diff --git a/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation b/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation
new file mode 100644
index 0000000..26efc1a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation
@@ -0,0 +1,4 @@
+GL_NV_shader_noperspective_interpolation
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_noperspective_interpolation.txt
+GL_NV_shader_noperspective_interpolation
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object b/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object
new file mode 100644
index 0000000..3a04476
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object
@@ -0,0 +1,4 @@
+GL_NV_shader_storage_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_storage_buffer_object.txt
+GL_NV_shader_storage_buffer_object
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned b/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned
new file mode 100644
index 0000000..71f23df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned
@@ -0,0 +1,5 @@
+GL_NV_shader_subgroup_partitioned
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_subgroup_partitioned.txt
+GL_NV_shader_subgroup_partitioned
+
+ GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
diff --git a/glew/auto/extensions/gl/GL_NV_shader_texture_footprint b/glew/auto/extensions/gl/GL_NV_shader_texture_footprint
new file mode 100644
index 0000000..3ac5d63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_texture_footprint
@@ -0,0 +1,4 @@
+GL_NV_shader_texture_footprint
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_texture_footprint.txt
+GL_NV_shader_texture_footprint
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_thread_group b/glew/auto/extensions/gl/GL_NV_shader_thread_group
new file mode 100644
index 0000000..788aac5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_thread_group
@@ -0,0 +1,7 @@
+GL_NV_shader_thread_group
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
+GL_NV_shader_thread_group
+
+ GL_WARP_SIZE_NV 0x9339
+ GL_WARPS_PER_SM_NV 0x933A
+ GL_SM_COUNT_NV 0x933B
diff --git a/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle b/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle
new file mode 100644
index 0000000..fd79f84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle
@@ -0,0 +1,4 @@
+GL_NV_shader_thread_shuffle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_shuffle.txt
+GL_NV_shader_thread_shuffle
+
diff --git a/glew/auto/extensions/gl/GL_NV_shading_rate_image b/glew/auto/extensions/gl/GL_NV_shading_rate_image
new file mode 100644
index 0000000..78c61f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shading_rate_image
@@ -0,0 +1,32 @@
+GL_NV_shading_rate_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shading_rate_image.txt
+GL_NV_shading_rate_image
+
+ GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
+ GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
+ GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
+ GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
+ GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
+ GL_SHADING_RATE_IMAGE_NV 0x9563
+ GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
+ GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
+ GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
+ GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
+ GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
+ GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
+ GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
+ GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
+ GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
+ GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
+ GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
+ GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
+ GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
+ GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
+ GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
+ void glBindShadingRateImageNV (GLuint texture)
+ void glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum* rate)
+ void glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint* location)
+ void glShadingRateImageBarrierNV (GLboolean synchronize)
+ void glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum* rates)
+ void glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint* locations)
+ void glShadingRateSampleOrderNV (GLenum order)
diff --git a/glew/auto/extensions/gl/GL_NV_shadow_samplers_array b/glew/auto/extensions/gl/GL_NV_shadow_samplers_array
new file mode 100644
index 0000000..a3369b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shadow_samplers_array
@@ -0,0 +1,5 @@
+GL_NV_shadow_samplers_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_array.txt
+GL_NV_shadow_samplers_array
+
+ GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
diff --git a/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube b/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube
new file mode 100644
index 0000000..74b2447
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube
@@ -0,0 +1,5 @@
+GL_NV_shadow_samplers_cube
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_cube.txt
+GL_NV_shadow_samplers_cube
+
+ GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
diff --git a/glew/auto/extensions/gl/GL_NV_stereo_view_rendering b/glew/auto/extensions/gl/GL_NV_stereo_view_rendering
new file mode 100644
index 0000000..698b0c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_stereo_view_rendering
@@ -0,0 +1,4 @@
+GL_NV_stereo_view_rendering
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_stereo_view_rendering.txt
+GL_NV_stereo_view_rendering
+
diff --git a/glew/auto/extensions/gl/GL_NV_tessellation_program5 b/glew/auto/extensions/gl/GL_NV_tessellation_program5
new file mode 100644
index 0000000..75fd3c7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_tessellation_program5
@@ -0,0 +1,9 @@
+GL_NV_tessellation_program5
+http://www.opengl.org/registry/specs/NV/tessellation_program5.txt
+GL_NV_gpu_program5
+
+ GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+ GL_TESS_CONTROL_PROGRAM_NV 0x891E
+ GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+ GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+ GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
diff --git a/glew/auto/extensions/gl/GL_NV_texgen_emboss b/glew/auto/extensions/gl/GL_NV_texgen_emboss
new file mode 100644
index 0000000..1544a24
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texgen_emboss
@@ -0,0 +1,7 @@
+GL_NV_texgen_emboss
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_emboss.txt
+GL_NV_texgen_emboss
+
+ GL_EMBOSS_LIGHT_NV 0x855D
+ GL_EMBOSS_CONSTANT_NV 0x855E
+ GL_EMBOSS_MAP_NV 0x855F
diff --git a/glew/auto/extensions/gl/GL_NV_texgen_reflection b/glew/auto/extensions/gl/GL_NV_texgen_reflection
new file mode 100644
index 0000000..011807b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texgen_reflection
@@ -0,0 +1,6 @@
+GL_NV_texgen_reflection
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_reflection.txt
+GL_NV_texgen_reflection
+
+ GL_NORMAL_MAP_NV 0x8511
+ GL_REFLECTION_MAP_NV 0x8512
diff --git a/glew/auto/extensions/gl/GL_NV_texture_array b/glew/auto/extensions/gl/GL_NV_texture_array
new file mode 100644
index 0000000..635ce85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_array
@@ -0,0 +1,17 @@
+GL_NV_texture_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_array.txt
+GL_NV_texture_array
+
+ GL_UNPACK_SKIP_IMAGES_NV 0x806D
+ GL_UNPACK_IMAGE_HEIGHT_NV 0x806E
+ GL_MAX_ARRAY_TEXTURE_LAYERS_NV 0x88FF
+ GL_TEXTURE_2D_ARRAY_NV 0x8C1A
+ GL_TEXTURE_BINDING_2D_ARRAY_NV 0x8C1D
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_NV 0x8CD4
+ GL_SAMPLER_2D_ARRAY_NV 0x8DC1
+ void glCompressedTexImage3DNV (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glFramebufferTextureLayerNV (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glTexImage3DNV (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_barrier b/glew/auto/extensions/gl/GL_NV_texture_barrier
new file mode 100644
index 0000000..b7028d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_barrier
@@ -0,0 +1,5 @@
+GL_NV_texture_barrier
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt
+GL_NV_texture_barrier
+
+ void glTextureBarrierNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_border_clamp b/glew/auto/extensions/gl/GL_NV_texture_border_clamp
new file mode 100644
index 0000000..25c92aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_border_clamp
@@ -0,0 +1,6 @@
+GL_NV_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_border_clamp.txt
+GL_NV_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_NV 0x1004
+ GL_CLAMP_TO_BORDER_NV 0x812D
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_latc b/glew/auto/extensions/gl/GL_NV_texture_compression_latc
new file mode 100644
index 0000000..92ff118
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_latc
@@ -0,0 +1,8 @@
+GL_NV_texture_compression_latc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_latc.txt
+GL_NV_texture_compression_latc
+
+ GL_COMPRESSED_LUMINANCE_LATC1_NV 0x8C70
+ GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_NV 0x8C71
+ GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_NV 0x8C72
+ GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_NV 0x8C73
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc
new file mode 100644
index 0000000..036c535
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc
@@ -0,0 +1,8 @@
+GL_NV_texture_compression_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc.txt
+GL_NV_texture_compression_s3tc
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_NV 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_NV 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_NV 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_NV 0x83F3
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update
new file mode 100644
index 0000000..13e4fd1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update
@@ -0,0 +1,4 @@
+GL_NV_texture_compression_s3tc_update
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc_update.txt
+GL_NV_texture_compression_s3tc_update
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_vtc b/glew/auto/extensions/gl/GL_NV_texture_compression_vtc
new file mode 100644
index 0000000..e41289a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_vtc
@@ -0,0 +1,4 @@
+GL_NV_texture_compression_vtc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_vtc.txt
+GL_NV_texture_compression_vtc
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_env_combine4 b/glew/auto/extensions/gl/GL_NV_texture_env_combine4
new file mode 100644
index 0000000..0175daa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_env_combine4
@@ -0,0 +1,9 @@
+GL_NV_texture_env_combine4
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_env_combine4.txt
+GL_NV_texture_env_combine4
+
+ GL_COMBINE4_NV 0x8503
+ GL_SOURCE3_RGB_NV 0x8583
+ GL_SOURCE3_ALPHA_NV 0x858B
+ GL_OPERAND3_RGB_NV 0x8593
+ GL_OPERAND3_ALPHA_NV 0x859B
diff --git a/glew/auto/extensions/gl/GL_NV_texture_expand_normal b/glew/auto/extensions/gl/GL_NV_texture_expand_normal
new file mode 100644
index 0000000..a708cfe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_expand_normal
@@ -0,0 +1,5 @@
+GL_NV_texture_expand_normal
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_expand_normal.txt
+GL_NV_texture_expand_normal
+
+ GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
diff --git a/glew/auto/extensions/gl/GL_NV_texture_multisample b/glew/auto/extensions/gl/GL_NV_texture_multisample
new file mode 100644
index 0000000..9457b5d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_multisample
@@ -0,0 +1,12 @@
+GL_NV_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_multisample.txt
+GL_NV_texture_multisample
+
+ GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
+ GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
+ void glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
+ void glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
+ void glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap b/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap
new file mode 100644
index 0000000..6e07b17
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap
@@ -0,0 +1,4 @@
+GL_NV_texture_npot_2D_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_npot_2D_mipmap.txt
+GL_NV_texture_npot_2D_mipmap
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_rectangle b/glew/auto/extensions/gl/GL_NV_texture_rectangle
new file mode 100644
index 0000000..43c6afe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_rectangle
@@ -0,0 +1,8 @@
+GL_NV_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle.txt
+GL_NV_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_NV 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
diff --git a/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed b/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed
new file mode 100644
index 0000000..17be6d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed
@@ -0,0 +1,4 @@
+GL_NV_texture_rectangle_compressed
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle_compressed.txt
+GL_NV_texture_rectangle_compressed
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader b/glew/auto/extensions/gl/GL_NV_texture_shader
new file mode 100644
index 0000000..98a986e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader
@@ -0,0 +1,77 @@
+GL_NV_texture_shader
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader.txt
+GL_NV_texture_shader
+
+ GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+ GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+ GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+ GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+ GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+ GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+ GL_DSDT_MAG_INTENSITY_NV 0x86DC
+ GL_SHADER_CONSISTENT_NV 0x86DD
+ GL_TEXTURE_SHADER_NV 0x86DE
+ GL_SHADER_OPERATION_NV 0x86DF
+ GL_CULL_MODES_NV 0x86E0
+ GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+ GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+ GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+ GL_CONST_EYE_NV 0x86E5
+ GL_PASS_THROUGH_NV 0x86E6
+ GL_CULL_FRAGMENT_NV 0x86E7
+ GL_OFFSET_TEXTURE_2D_NV 0x86E8
+ GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+ GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+ GL_DOT_PRODUCT_NV 0x86EC
+ GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+ GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+ GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+ GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+ GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+ GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+ GL_HILO_NV 0x86F4
+ GL_DSDT_NV 0x86F5
+ GL_DSDT_MAG_NV 0x86F6
+ GL_DSDT_MAG_VIB_NV 0x86F7
+ GL_HILO16_NV 0x86F8
+ GL_SIGNED_HILO_NV 0x86F9
+ GL_SIGNED_HILO16_NV 0x86FA
+ GL_SIGNED_RGBA_NV 0x86FB
+ GL_SIGNED_RGBA8_NV 0x86FC
+ GL_SIGNED_RGB_NV 0x86FE
+ GL_SIGNED_RGB8_NV 0x86FF
+ GL_SIGNED_LUMINANCE_NV 0x8701
+ GL_SIGNED_LUMINANCE8_NV 0x8702
+ GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+ GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+ GL_SIGNED_ALPHA_NV 0x8705
+ GL_SIGNED_ALPHA8_NV 0x8706
+ GL_SIGNED_INTENSITY_NV 0x8707
+ GL_SIGNED_INTENSITY8_NV 0x8708
+ GL_DSDT8_NV 0x8709
+ GL_DSDT8_MAG8_NV 0x870A
+ GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+ GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+ GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+ GL_HI_SCALE_NV 0x870E
+ GL_LO_SCALE_NV 0x870F
+ GL_DS_SCALE_NV 0x8710
+ GL_DT_SCALE_NV 0x8711
+ GL_MAGNITUDE_SCALE_NV 0x8712
+ GL_VIBRANCE_SCALE_NV 0x8713
+ GL_HI_BIAS_NV 0x8714
+ GL_LO_BIAS_NV 0x8715
+ GL_DS_BIAS_NV 0x8716
+ GL_DT_BIAS_NV 0x8717
+ GL_MAGNITUDE_BIAS_NV 0x8718
+ GL_VIBRANCE_BIAS_NV 0x8719
+ GL_TEXTURE_BORDER_VALUES_NV 0x871A
+ GL_TEXTURE_HI_SIZE_NV 0x871B
+ GL_TEXTURE_LO_SIZE_NV 0x871C
+ GL_TEXTURE_DS_SIZE_NV 0x871D
+ GL_TEXTURE_DT_SIZE_NV 0x871E
+ GL_TEXTURE_MAG_SIZE_NV 0x871F
+ GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+ GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader2 b/glew/auto/extensions/gl/GL_NV_texture_shader2
new file mode 100644
index 0000000..7f1176e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader2
@@ -0,0 +1,32 @@
+GL_NV_texture_shader2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader2.txt
+GL_NV_texture_shader2
+
+ GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+ GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+ GL_DSDT_MAG_INTENSITY_NV 0x86DC
+ GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+ GL_HILO_NV 0x86F4
+ GL_DSDT_NV 0x86F5
+ GL_DSDT_MAG_NV 0x86F6
+ GL_DSDT_MAG_VIB_NV 0x86F7
+ GL_HILO16_NV 0x86F8
+ GL_SIGNED_HILO_NV 0x86F9
+ GL_SIGNED_HILO16_NV 0x86FA
+ GL_SIGNED_RGBA_NV 0x86FB
+ GL_SIGNED_RGBA8_NV 0x86FC
+ GL_SIGNED_RGB_NV 0x86FE
+ GL_SIGNED_RGB8_NV 0x86FF
+ GL_SIGNED_LUMINANCE_NV 0x8701
+ GL_SIGNED_LUMINANCE8_NV 0x8702
+ GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+ GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+ GL_SIGNED_ALPHA_NV 0x8705
+ GL_SIGNED_ALPHA8_NV 0x8706
+ GL_SIGNED_INTENSITY_NV 0x8707
+ GL_SIGNED_INTENSITY8_NV 0x8708
+ GL_DSDT8_NV 0x8709
+ GL_DSDT8_MAG8_NV 0x870A
+ GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+ GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+ GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader3 b/glew/auto/extensions/gl/GL_NV_texture_shader3
new file mode 100644
index 0000000..4f98d77
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader3
@@ -0,0 +1,21 @@
+GL_NV_texture_shader3
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader3.txt
+GL_NV_texture_shader3
+
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+ GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+ GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+ GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+ GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+ GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+ GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+ GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+ GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+ GL_HILO8_NV 0x885E
+ GL_SIGNED_HILO8_NV 0x885F
+ GL_FORCE_BLUE_TO_ONE_NV 0x8860
diff --git a/glew/auto/extensions/gl/GL_NV_timeline_semaphore b/glew/auto/extensions/gl/GL_NV_timeline_semaphore
new file mode 100644
index 0000000..b6c11be
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_timeline_semaphore
@@ -0,0 +1,12 @@
+GL_NV_timeline_semaphore
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_timeline_semaphore.txt
+GL_NV_timeline_semaphore
+
+ GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
+ GL_SEMAPHORE_TYPE_NV 0x95B3
+ GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
+ GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
+ GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+ void glCreateSemaphoresNV (GLsizei n, GLuint* semaphores)
+ void glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint* params)
+ void glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_transform_feedback b/glew/auto/extensions/gl/GL_NV_transform_feedback
new file mode 100644
index 0000000..5f1816e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_transform_feedback
@@ -0,0 +1,40 @@
+GL_NV_transform_feedback
+http://developer.download.nvidia.com/opengl/specs/GL_NV_transform_feedback.txt
+GL_NV_transform_feedback
+
+ GL_BACK_PRIMARY_COLOR_NV 0x8C77
+ GL_BACK_SECONDARY_COLOR_NV 0x8C78
+ GL_TEXTURE_COORD_NV 0x8C79
+ GL_CLIP_DISTANCE_NV 0x8C7A
+ GL_VERTEX_ID_NV 0x8C7B
+ GL_PRIMITIVE_ID_NV 0x8C7C
+ GL_GENERIC_ATTRIB_NV 0x8C7D
+ GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+ GL_ACTIVE_VARYINGS_NV 0x8C81
+ GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+ GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+ GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+ GL_PRIMITIVES_GENERATED_NV 0x8C87
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+ GL_RASTERIZER_DISCARD_NV 0x8C89
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+ GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+ GL_SEPARATE_ATTRIBS_NV 0x8C8D
+ GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+ void glBeginTransformFeedbackNV (GLenum primitiveMode)
+ void glEndTransformFeedbackNV (void)
+ void glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode)
+ void glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset)
+ void glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer)
+ void glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode)
+ void glActiveVaryingNV (GLuint program, const GLchar *name)
+ GLint glGetVaryingLocationNV (GLuint program, const GLchar *name)
+ void glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
+ void glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location)
diff --git a/glew/auto/extensions/gl/GL_NV_transform_feedback2 b/glew/auto/extensions/gl/GL_NV_transform_feedback2
new file mode 100644
index 0000000..540d336
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_transform_feedback2
@@ -0,0 +1,15 @@
+GL_NV_transform_feedback2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_transform_feedback2.txt
+GL_NV_transform_feedback2
+
+ GL_TRANSFORM_FEEDBACK_NV 0x8E22
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+ GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+ void glBindTransformFeedbackNV (GLenum target, GLuint id)
+ void glDeleteTransformFeedbacksNV (GLsizei n, const GLuint* ids)
+ void glDrawTransformFeedbackNV (GLenum mode, GLuint id)
+ void glGenTransformFeedbacksNV (GLsizei n, GLuint* ids)
+ GLboolean glIsTransformFeedbackNV (GLuint id)
+ void glPauseTransformFeedbackNV (void)
+ void glResumeTransformFeedbackNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory b/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory
new file mode 100644
index 0000000..b398e3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory
@@ -0,0 +1,7 @@
+GL_NV_uniform_buffer_unified_memory
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_uniform_buffer_unified_memory.txt
+GL_NV_uniform_buffer_unified_memory
+
+ GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+ GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+ GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
diff --git a/glew/auto/extensions/gl/GL_NV_vdpau_interop b/glew/auto/extensions/gl/GL_NV_vdpau_interop
new file mode 100644
index 0000000..f52949c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vdpau_interop
@@ -0,0 +1,19 @@
+GL_NV_vdpau_interop
+http://www.opengl.org/registry/specs/NV/vdpau_interop.txt
+GL_NV_vdpau_interop
+
+ GL_SURFACE_STATE_NV 0x86EB
+ GL_SURFACE_REGISTERED_NV 0x86FD
+ GL_SURFACE_MAPPED_NV 0x8700
+ GL_WRITE_DISCARD_NV 0x88BE
+ void glVDPAUFiniNV (void)
+ void glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values)
+ void glVDPAUInitNV (const void* vdpDevice, const void*getProcAddress)
+ void glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface)
+ void glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces)
+ GLvdpauSurfaceNV glVDPAURegisterOutputSurfaceNV (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)
+ GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceNV (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)
+ void glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access)
+ void glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces)
+ void glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface)
+ typedef GLintptr GLvdpauSurfaceNV
diff --git a/glew/auto/extensions/gl/GL_NV_vdpau_interop2 b/glew/auto/extensions/gl/GL_NV_vdpau_interop2
new file mode 100644
index 0000000..c92a64e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vdpau_interop2
@@ -0,0 +1,5 @@
+GL_NV_vdpau_interop2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vdpau_interop2.txt
+GL_NV_vdpau_interop2
+
+ GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_array_range b/glew/auto/extensions/gl/GL_NV_vertex_array_range
new file mode 100644
index 0000000..c845534
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_array_range
@@ -0,0 +1,11 @@
+GL_NV_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range.txt
+GL_NV_vertex_array_range
+
+ GL_VERTEX_ARRAY_RANGE_NV 0x851D
+ GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+ GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+ GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+ GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+ void glFlushVertexArrayRangeNV (void)
+ void glVertexArrayRangeNV (GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_array_range2 b/glew/auto/extensions/gl/GL_NV_vertex_array_range2
new file mode 100644
index 0000000..6ebd4d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_array_range2
@@ -0,0 +1,5 @@
+GL_NV_vertex_array_range2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range2.txt
+GL_NV_vertex_array_range2
+
+ GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit b/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit
new file mode 100644
index 0000000..7d2eaa4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit
@@ -0,0 +1,25 @@
+GL_NV_vertex_attrib_integer_64bit
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_attrib_integer_64bit.txt
+GL_NV_vertex_attrib_integer_64bit
+
+ GL_INT64_NV 0x140E
+ GL_UNSIGNED_INT64_NV 0x140F
+ void glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT* params)
+ void glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT* params)
+ void glVertexAttribL1i64NV (GLuint index, GLint64EXT x)
+ void glVertexAttribL1i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x)
+ void glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y)
+ void glVertexAttribL2i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y)
+ void glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glVertexAttribL3i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glVertexAttribL4i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory b/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory
new file mode 100644
index 0000000..21e77a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory
@@ -0,0 +1,41 @@
+GL_NV_vertex_buffer_unified_memory
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_buffer_unified_memory.txt
+GL_NV_vertex_buffer_unified_memory
+
+ GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+ GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+ GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+ GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+ GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+ GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+ GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+ GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+ GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+ GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+ GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+ GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+ GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+ GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+ GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+ GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+ GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+ GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+ GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+ GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+ GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+ GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+ void glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length)
+ void glColorFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glEdgeFlagFormatNV (GLsizei stride)
+ void glFogCoordFormatNV (GLenum type, GLsizei stride)
+ void glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT result[])
+ void glIndexFormatNV (GLenum type, GLsizei stride)
+ void glNormalFormatNV (GLenum type, GLsizei stride)
+ void glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride)
+ void glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride)
+ void glVertexFormatNV (GLint size, GLenum type, GLsizei stride)
+ GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+ GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+ GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program b/glew/auto/extensions/gl/GL_NV_vertex_program
new file mode 100644
index 0000000..861ede0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program
@@ -0,0 +1,151 @@
+GL_NV_vertex_program
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt
+GL_NV_vertex_program
+
+ GL_VERTEX_PROGRAM_NV 0x8620
+ GL_VERTEX_STATE_PROGRAM_NV 0x8621
+ GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+ GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+ GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+ GL_CURRENT_ATTRIB_NV 0x8626
+ GL_PROGRAM_LENGTH_NV 0x8627
+ GL_PROGRAM_STRING_NV 0x8628
+ GL_MODELVIEW_PROJECTION_NV 0x8629
+ GL_IDENTITY_NV 0x862A
+ GL_INVERSE_NV 0x862B
+ GL_TRANSPOSE_NV 0x862C
+ GL_INVERSE_TRANSPOSE_NV 0x862D
+ GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+ GL_MAX_TRACK_MATRICES_NV 0x862F
+ GL_MATRIX0_NV 0x8630
+ GL_MATRIX1_NV 0x8631
+ GL_MATRIX2_NV 0x8632
+ GL_MATRIX3_NV 0x8633
+ GL_MATRIX4_NV 0x8634
+ GL_MATRIX5_NV 0x8635
+ GL_MATRIX6_NV 0x8636
+ GL_MATRIX7_NV 0x8637
+ GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+ GL_CURRENT_MATRIX_NV 0x8641
+ GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+ GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+ GL_PROGRAM_PARAMETER_NV 0x8644
+ GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+ GL_PROGRAM_TARGET_NV 0x8646
+ GL_PROGRAM_RESIDENT_NV 0x8647
+ GL_TRACK_MATRIX_NV 0x8648
+ GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+ GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+ GL_PROGRAM_ERROR_POSITION_NV 0x864B
+ GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+ GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+ GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+ GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+ GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+ GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+ GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+ GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+ GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+ GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+ GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+ GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+ GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+ GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+ GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+ GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+ GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+ GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+ GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+ GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+ GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+ GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+ GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+ GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+ GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+ GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+ GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+ GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+ GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+ GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+ GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+ GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+ GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+ GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+ GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+ GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+ GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+ GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+ GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+ GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+ GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+ GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+ GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+ GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+ GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+ GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+ GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+ GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+ GLboolean glAreProgramsResidentNV (GLsizei n, const GLuint* ids, GLboolean *residences)
+ void glBindProgramNV (GLenum target, GLuint id)
+ void glDeleteProgramsNV (GLsizei n, const GLuint* ids)
+ void glExecuteProgramNV (GLenum target, GLuint id, const GLfloat* params)
+ void glGenProgramsNV (GLsizei n, GLuint* ids)
+ void glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble* params)
+ void glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat* params)
+ void glGetProgramStringNV (GLuint id, GLenum pname, GLubyte* program)
+ void glGetProgramivNV (GLuint id, GLenum pname, GLint* params)
+ void glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint* params)
+ void glGetVertexAttribPointervNV (GLuint index, GLenum pname, void** pointer)
+ void glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble* params)
+ void glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribivNV (GLuint index, GLenum pname, GLint* params)
+ GLboolean glIsProgramNV (GLuint id)
+ void glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte* program)
+ void glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei num, const GLdouble* params)
+ void glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei num, const GLfloat* params)
+ void glRequestResidentProgramsNV (GLsizei n, GLuint* ids)
+ void glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform)
+ void glVertexAttrib1dNV (GLuint index, GLdouble x)
+ void glVertexAttrib1dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib1fNV (GLuint index, GLfloat x)
+ void glVertexAttrib1fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib1sNV (GLuint index, GLshort x)
+ void glVertexAttrib1svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttrib2dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y)
+ void glVertexAttrib2fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y)
+ void glVertexAttrib2svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttrib3dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexAttrib3fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z)
+ void glVertexAttrib3svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttrib4dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexAttrib4fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexAttrib4svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+ void glVertexAttrib4ubvNV (GLuint index, const GLubyte* v)
+ void glVertexAttribPointerNV (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glVertexAttribs1dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs1fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs1svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs2dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs2fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs2svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs3dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs3fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs3svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs4dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs4fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs4svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs4ubvNV (GLuint index, GLsizei n, const GLubyte* v)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program1_1 b/glew/auto/extensions/gl/GL_NV_vertex_program1_1
new file mode 100644
index 0000000..5a88dd3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program1_1
@@ -0,0 +1,4 @@
+GL_NV_vertex_program1_1
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program1_1.txt
+GL_NV_vertex_program1_1
+
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program2 b/glew/auto/extensions/gl/GL_NV_vertex_program2
new file mode 100644
index 0000000..e25e47f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program2
@@ -0,0 +1,4 @@
+GL_NV_vertex_program2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program2.txt
+GL_NV_vertex_program2
+
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program2_option b/glew/auto/extensions/gl/GL_NV_vertex_program2_option
new file mode 100644
index 0000000..3e3e0b7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program2_option
@@ -0,0 +1,6 @@
+GL_NV_vertex_program2_option
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program2_option.txt
+GL_NV_vertex_program2_option
+
+ GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+ GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program3 b/glew/auto/extensions/gl/GL_NV_vertex_program3
new file mode 100644
index 0000000..fbd3899
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program3
@@ -0,0 +1,5 @@
+GL_NV_vertex_program3
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program3.txt
+GL_NV_vertex_program3
+
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program4 b/glew/auto/extensions/gl/GL_NV_vertex_program4
new file mode 100644
index 0000000..b1ff7f8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program4
@@ -0,0 +1,5 @@
+GL_NV_vertex_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_vertex_program4.txt
+GL_NV_gpu_program4
+
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
diff --git a/glew/auto/extensions/gl/GL_NV_video_capture b/glew/auto/extensions/gl/GL_NV_video_capture
new file mode 100644
index 0000000..90a94db
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_video_capture
@@ -0,0 +1,45 @@
+GL_NV_video_capture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_video_capture.txt
+GL_NV_video_capture
+
+ GL_VIDEO_BUFFER_NV 0x9020
+ GL_VIDEO_BUFFER_BINDING_NV 0x9021
+ GL_FIELD_UPPER_NV 0x9022
+ GL_FIELD_LOWER_NV 0x9023
+ GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+ GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+ GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+ GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+ GL_VIDEO_BUFFER_PITCH_NV 0x9028
+ GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+ GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+ GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+ GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+ GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+ GL_PARTIAL_SUCCESS_NV 0x902E
+ GL_SUCCESS_NV 0x902F
+ GL_FAILURE_NV 0x9030
+ GL_YCBYCR8_422_NV 0x9031
+ GL_YCBAYCR8A_4224_NV 0x9032
+ GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+ GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+ GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+ GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+ GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+ GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+ GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+ GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+ GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+ GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+ void glBeginVideoCaptureNV (GLuint video_capture_slot)
+ void glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset)
+ void glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture)
+ void glEndVideoCaptureNV (GLuint video_capture_slot)
+ void glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint* params)
+ GLenum glVideoCaptureNV (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time)
+ void glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params)
+ void glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params)
+ void glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params)
+ void glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params)
+ void glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params)
+ void glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params)
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_array b/glew/auto/extensions/gl/GL_NV_viewport_array
new file mode 100644
index 0000000..ed49bee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_array
@@ -0,0 +1,24 @@
+GL_NV_viewport_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array.txt
+GL_NV_viewport_array
+
+ GL_DEPTH_RANGE 0x0B70
+ GL_VIEWPORT 0x0BA2
+ GL_SCISSOR_BOX 0x0C10
+ GL_SCISSOR_TEST 0x0C11
+ GL_MAX_VIEWPORTS_NV 0x825B
+ GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
+ GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
+ void glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat * v)
+ void glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f)
+ void glDisableiNV (GLenum target, GLuint index)
+ void glEnableiNV (GLenum target, GLuint index)
+ void glGetFloati_vNV (GLenum target, GLuint index, GLfloat* data)
+ GLboolean glIsEnablediNV (GLenum target, GLuint index)
+ void glScissorArrayvNV (GLuint first, GLsizei count, const GLint * v)
+ void glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
+ void glScissorIndexedvNV (GLuint index, const GLint * v)
+ void glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat * v)
+ void glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
+ void glViewportIndexedfvNV (GLuint index, const GLfloat * v)
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_array2 b/glew/auto/extensions/gl/GL_NV_viewport_array2
new file mode 100644
index 0000000..233b5f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_array2
@@ -0,0 +1,4 @@
+GL_NV_viewport_array2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt
+GL_NV_viewport_array2
+
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_swizzle b/glew/auto/extensions/gl/GL_NV_viewport_swizzle
new file mode 100644
index 0000000..bf157f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_swizzle
@@ -0,0 +1,17 @@
+GL_NV_viewport_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_swizzle.txt
+GL_NV_viewport_swizzle
+
+ GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+ GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+ GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+ GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+ GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+ GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+ void glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew)
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image b/glew/auto/extensions/gl/GL_OES_EGL_image
new file mode 100644
index 0000000..c602141
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image
@@ -0,0 +1,6 @@
+GL_OES_EGL_image
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image.txt
+GL_OES_EGL_image
+
+ void glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image)
+ void glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image_external b/glew/auto/extensions/gl/GL_OES_EGL_image_external
new file mode 100644
index 0000000..6116d73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image_external
@@ -0,0 +1,8 @@
+GL_OES_EGL_image_external
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt
+GL_OES_EGL_image_external
+
+ GL_TEXTURE_EXTERNAL_OES 0x8D65
+ GL_SAMPLER_EXTERNAL_OES 0x8D66
+ GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3 b/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3
new file mode 100644
index 0000000..bed4631
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3
@@ -0,0 +1,4 @@
+GL_OES_EGL_image_external_essl3
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external_essl3.txt
+GL_OES_EGL_image_external_essl3
+
diff --git a/glew/auto/extensions/gl/GL_OES_blend_equation_separate b/glew/auto/extensions/gl/GL_OES_blend_equation_separate
new file mode 100644
index 0000000..7cc038c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_equation_separate
@@ -0,0 +1,7 @@
+GL_OES_blend_equation_separate
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_equation_separate.txt
+GL_OES_blend_equation_separate
+
+ GL_BLEND_EQUATION_RGB_OES 0x8009
+ GL_BLEND_EQUATION_ALPHA_OES 0x883D
+ void glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha)
diff --git a/glew/auto/extensions/gl/GL_OES_blend_func_separate b/glew/auto/extensions/gl/GL_OES_blend_func_separate
new file mode 100644
index 0000000..00d2ce3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_func_separate
@@ -0,0 +1,9 @@
+GL_OES_blend_func_separate
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_func_separate.txt
+GL_OES_blend_func_separate
+
+ GL_BLEND_DST_RGB_OES 0x80C8
+ GL_BLEND_SRC_RGB_OES 0x80C9
+ GL_BLEND_DST_ALPHA_OES 0x80CA
+ GL_BLEND_SRC_ALPHA_OES 0x80CB
+ void glBlendFuncSeparateOES (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
diff --git a/glew/auto/extensions/gl/GL_OES_blend_subtract b/glew/auto/extensions/gl/GL_OES_blend_subtract
new file mode 100644
index 0000000..4dd7105
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_subtract
@@ -0,0 +1,9 @@
+GL_OES_blend_subtract
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_subtract.txt
+GL_OES_blend_subtract
+
+ GL_FUNC_ADD_OES 0x8006
+ GL_BLEND_EQUATION_OES 0x8009
+ GL_FUNC_SUBTRACT_OES 0x800A
+ GL_FUNC_REVERSE_SUBTRACT_OES 0x800B
+ void glBlendEquationOES (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_OES_byte_coordinates b/glew/auto/extensions/gl/GL_OES_byte_coordinates
new file mode 100644
index 0000000..446d175
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_byte_coordinates
@@ -0,0 +1,4 @@
+GL_OES_byte_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_byte_coordinates.txt
+GL_OES_byte_coordinates
+
diff --git a/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture b/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture
new file mode 100644
index 0000000..62f4a41
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture
@@ -0,0 +1,5 @@
+GL_OES_compressed_ETC1_RGB8_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
+GL_OES_compressed_ETC1_RGB8_texture
+
+ GL_ETC1_RGB8_OES 0x8D64
diff --git a/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture b/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture
new file mode 100644
index 0000000..f50eddc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture
@@ -0,0 +1,14 @@
+GL_OES_compressed_paletted_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_paletted_texture.txt
+GL_OES_compressed_paletted_texture
+
+ GL_PALETTE4_RGB8_OES 0x8B90
+ GL_PALETTE4_RGBA8_OES 0x8B91
+ GL_PALETTE4_R5_G6_B5_OES 0x8B92
+ GL_PALETTE4_RGBA4_OES 0x8B93
+ GL_PALETTE4_RGB5_A1_OES 0x8B94
+ GL_PALETTE8_RGB8_OES 0x8B95
+ GL_PALETTE8_RGBA8_OES 0x8B96
+ GL_PALETTE8_R5_G6_B5_OES 0x8B97
+ GL_PALETTE8_RGBA4_OES 0x8B98
+ GL_PALETTE8_RGB5_A1_OES 0x8B99
diff --git a/glew/auto/extensions/gl/GL_OES_copy_image b/glew/auto/extensions/gl/GL_OES_copy_image
new file mode 100644
index 0000000..1a22b81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_copy_image
@@ -0,0 +1,5 @@
+GL_OES_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_copy_image.txt
+GL_OES_copy_image
+
+ void glCopyImageSubDataOES (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_OES_depth24 b/glew/auto/extensions/gl/GL_OES_depth24
new file mode 100644
index 0000000..e23721e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth24
@@ -0,0 +1,5 @@
+GL_OES_depth24
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth24.txt
+GL_OES_depth24
+
+ GL_DEPTH_COMPONENT24_OES 0x81A6
diff --git a/glew/auto/extensions/gl/GL_OES_depth32 b/glew/auto/extensions/gl/GL_OES_depth32
new file mode 100644
index 0000000..8c5b78b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth32
@@ -0,0 +1,5 @@
+GL_OES_depth32
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth32.txt
+GL_OES_depth32
+
+ GL_DEPTH_COMPONENT32_OES 0x81A7
diff --git a/glew/auto/extensions/gl/GL_OES_depth_texture b/glew/auto/extensions/gl/GL_OES_depth_texture
new file mode 100644
index 0000000..5109bf4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth_texture
@@ -0,0 +1,7 @@
+GL_OES_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt
+GL_OES_depth_texture
+
+ GL_UNSIGNED_SHORT 0x1403
+ GL_UNSIGNED_INT 0x1405
+ GL_DEPTH_COMPONENT 0x1902
diff --git a/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map b/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map
new file mode 100644
index 0000000..f7e9f07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map
@@ -0,0 +1,9 @@
+GL_OES_depth_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture_cube_map.txt
+GL_OES_depth_texture_cube_map
+
+ GL_UNSIGNED_SHORT 0x1403
+ GL_UNSIGNED_INT 0x1405
+ GL_DEPTH_COMPONENT 0x1902
+ GL_DEPTH_STENCIL_OES 0x84F9
+ GL_DEPTH24_STENCIL8_OES 0x88F0
diff --git a/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed b/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed
new file mode 100644
index 0000000..5b92ed1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed
@@ -0,0 +1,12 @@
+GL_OES_draw_buffers_indexed
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_buffers_indexed.txt
+GL_OES_draw_buffers_indexed
+
+ void glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiOES (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciOES (GLuint buf, GLenum src, GLenum dst)
+ void glColorMaskiOES (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableiOES (GLenum target, GLuint index)
+ void glEnableiOES (GLenum target, GLuint index)
+ GLboolean glIsEnablediOES (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_OES_draw_texture b/glew/auto/extensions/gl/GL_OES_draw_texture
new file mode 100644
index 0000000..f0ee773
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_draw_texture
@@ -0,0 +1,5 @@
+GL_OES_draw_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_texture.txt
+GL_OES_draw_texture
+
+ GL_TEXTURE_CROP_RECT_OES 0x8B9D
diff --git a/glew/auto/extensions/gl/GL_OES_element_index_uint b/glew/auto/extensions/gl/GL_OES_element_index_uint
new file mode 100644
index 0000000..a54cc62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_element_index_uint
@@ -0,0 +1,5 @@
+GL_OES_element_index_uint
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_element_index_uint.txt
+GL_OES_element_index_uint
+
+ GL_UNSIGNED_INT 0x1405
diff --git a/glew/auto/extensions/gl/GL_OES_extended_matrix_palette b/glew/auto/extensions/gl/GL_OES_extended_matrix_palette
new file mode 100644
index 0000000..0c4c3b5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_extended_matrix_palette
@@ -0,0 +1,4 @@
+GL_OES_extended_matrix_palette
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_extended_matrix_palette.txt
+GL_OES_extended_matrix_palette
+
diff --git a/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap b/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap
new file mode 100644
index 0000000..420c2b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap
@@ -0,0 +1,4 @@
+GL_OES_fbo_render_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fbo_render_mipmap.txt
+GL_OES_fbo_render_mipmap
+
diff --git a/glew/auto/extensions/gl/GL_OES_fragment_precision_high b/glew/auto/extensions/gl/GL_OES_fragment_precision_high
new file mode 100644
index 0000000..19b6410
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_fragment_precision_high
@@ -0,0 +1,4 @@
+GL_OES_fragment_precision_high
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fragment_precision_high.txt
+GL_OES_fragment_precision_high
+
diff --git a/glew/auto/extensions/gl/GL_OES_framebuffer_object b/glew/auto/extensions/gl/GL_OES_framebuffer_object
new file mode 100644
index 0000000..bdef4b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_framebuffer_object
@@ -0,0 +1,58 @@
+GL_OES_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_framebuffer_object.txt
+GL_OES_framebuffer_object
+
+ GL_NONE_OES 0
+ GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506
+ GL_RGBA4_OES 0x8056
+ GL_RGB5_A1_OES 0x8057
+ GL_DEPTH_COMPONENT16_OES 0x81A5
+ GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8
+ GL_FRAMEBUFFER_BINDING_OES 0x8CA6
+ GL_RENDERBUFFER_BINDING_OES 0x8CA7
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD
+ GL_COLOR_ATTACHMENT0_OES 0x8CE0
+ GL_DEPTH_ATTACHMENT_OES 0x8D00
+ GL_STENCIL_ATTACHMENT_OES 0x8D20
+ GL_FRAMEBUFFER_OES 0x8D40
+ GL_RENDERBUFFER_OES 0x8D41
+ GL_RENDERBUFFER_WIDTH_OES 0x8D42
+ GL_RENDERBUFFER_HEIGHT_OES 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44
+ GL_STENCIL_INDEX1_OES 0x8D46
+ GL_STENCIL_INDEX4_OES 0x8D47
+ GL_STENCIL_INDEX8_OES 0x8D48
+ GL_RENDERBUFFER_RED_SIZE_OES 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55
+ GL_RGB565_OES 0x8D62
+ void glBindFramebufferOES (GLenum target, GLuint framebuffer)
+ void glBindRenderbufferOES (GLenum target, GLuint renderbuffer)
+ GLenum glCheckFramebufferStatusOES (GLenum target)
+ void glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glGenFramebuffersOES (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmapOES (GLenum target)
+ void glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebufferOES (GLuint framebuffer)
+ GLboolean glIsRenderbufferOES (GLuint renderbuffer)
+ void glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_OES_geometry_point_size b/glew/auto/extensions/gl/GL_OES_geometry_point_size
new file mode 100644
index 0000000..cdaab67
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_geometry_point_size
@@ -0,0 +1,37 @@
+GL_OES_geometry_point_size
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt
+GL_OES_geometry_point_size
+
+ GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+ GL_LINES_ADJACENCY_OES 0xA
+ GL_LINE_STRIP_ADJACENCY_OES 0xB
+ GL_TRIANGLES_ADJACENCY_OES 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+ GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+ GL_UNDEFINED_VERTEX_OES 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+ GL_PRIMITIVES_GENERATED_OES 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+ GL_GEOMETRY_SHADER_OES 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
diff --git a/glew/auto/extensions/gl/GL_OES_geometry_shader b/glew/auto/extensions/gl/GL_OES_geometry_shader
new file mode 100644
index 0000000..997148b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_geometry_shader
@@ -0,0 +1,37 @@
+GL_OES_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt
+GL_OES_geometry_shader
+
+ GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+ GL_LINES_ADJACENCY_OES 0xA
+ GL_LINE_STRIP_ADJACENCY_OES 0xB
+ GL_TRIANGLES_ADJACENCY_OES 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+ GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+ GL_UNDEFINED_VERTEX_OES 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+ GL_PRIMITIVES_GENERATED_OES 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+ GL_GEOMETRY_SHADER_OES 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
diff --git a/glew/auto/extensions/gl/GL_OES_get_program_binary b/glew/auto/extensions/gl/GL_OES_get_program_binary
new file mode 100644
index 0000000..7644673
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_get_program_binary
@@ -0,0 +1,9 @@
+GL_OES_get_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_get_program_binary.txt
+GL_OES_get_program_binary
+
+ GL_PROGRAM_BINARY_LENGTH_OES 0x8741
+ GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
+ GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
+ void glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary)
+ void glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length)
diff --git a/glew/auto/extensions/gl/GL_OES_gpu_shader5 b/glew/auto/extensions/gl/GL_OES_gpu_shader5
new file mode 100644
index 0000000..714662e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_gpu_shader5
@@ -0,0 +1,4 @@
+GL_OES_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_gpu_shader5.txt
+GL_OES_gpu_shader5
+
diff --git a/glew/auto/extensions/gl/GL_OES_mapbuffer b/glew/auto/extensions/gl/GL_OES_mapbuffer
new file mode 100644
index 0000000..7738d3d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_mapbuffer
@@ -0,0 +1,11 @@
+GL_OES_mapbuffer
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_mapbuffer.txt
+GL_OES_mapbuffer
+
+ GL_WRITE_ONLY_OES 0x88B9
+ GL_BUFFER_ACCESS_OES 0x88BB
+ GL_BUFFER_MAPPED_OES 0x88BC
+ GL_BUFFER_MAP_POINTER_OES 0x88BD
+ void glGetBufferPointervOES (GLenum target, GLenum pname, void** params)
+ void * glMapBufferOES (GLenum target, GLenum access)
+ GLboolean glUnmapBufferOES (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_OES_matrix_get b/glew/auto/extensions/gl/GL_OES_matrix_get
new file mode 100644
index 0000000..6fe9301
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_matrix_get
@@ -0,0 +1,7 @@
+GL_OES_matrix_get
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_get.txt
+GL_OES_matrix_get
+
+ GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898d
+ GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898e
+ GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898f
diff --git a/glew/auto/extensions/gl/GL_OES_matrix_palette b/glew/auto/extensions/gl/GL_OES_matrix_palette
new file mode 100644
index 0000000..d50bdf2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_matrix_palette
@@ -0,0 +1,24 @@
+GL_OES_matrix_palette
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_palette.txt
+GL_OES_matrix_palette
+
+ GL_MAX_VERTEX_UNITS_OES 0x86A4
+ GL_WEIGHT_ARRAY_TYPE_OES 0x86A9
+ GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA
+ GL_WEIGHT_ARRAY_SIZE_OES 0x86AB
+ GL_WEIGHT_ARRAY_POINTER_OES 0x86AC
+ GL_WEIGHT_ARRAY_OES 0x86AD
+ GL_MATRIX_PALETTE_OES 0x8840
+ GL_MAX_PALETTE_MATRICES_OES 0x8842
+ GL_CURRENT_PALETTE_MATRIX_OES 0x8843
+ GL_MATRIX_INDEX_ARRAY_OES 0x8844
+ GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846
+ GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847
+ GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848
+ GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E
+ GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E
+ void glCurrentPaletteMatrixOES (GLuint index)
+ void glLoadPaletteFromModelViewMatrixOES (void)
+ void glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glWeightPointerOES (GLint size, GLenum type, GLsizei stride, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_OES_packed_depth_stencil b/glew/auto/extensions/gl/GL_OES_packed_depth_stencil
new file mode 100644
index 0000000..89f530c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_packed_depth_stencil
@@ -0,0 +1,7 @@
+GL_OES_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_packed_depth_stencil.txt
+GL_OES_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_OES 0x84F9
+ GL_UNSIGNED_INT_24_8_OES 0x84FA
+ GL_DEPTH24_STENCIL8_OES 0x88F0
diff --git a/glew/auto/extensions/gl/GL_OES_point_size_array b/glew/auto/extensions/gl/GL_OES_point_size_array
new file mode 100644
index 0000000..b964a47
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_point_size_array
@@ -0,0 +1,9 @@
+GL_OES_point_size_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_size_array.txt
+GL_OES_point_size_array
+
+ GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
+ GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
+ GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
+ GL_POINT_SIZE_ARRAY_OES 0x8B9C
+ GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
diff --git a/glew/auto/extensions/gl/GL_OES_point_sprite b/glew/auto/extensions/gl/GL_OES_point_sprite
new file mode 100644
index 0000000..d6f0a65
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_point_sprite
@@ -0,0 +1,6 @@
+GL_OES_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_sprite.txt
+GL_OES_point_sprite
+
+ GL_POINT_SPRITE_OES 0x8861
+ GL_COORD_REPLACE_OES 0x8862
diff --git a/glew/auto/extensions/gl/GL_OES_read_format b/glew/auto/extensions/gl/GL_OES_read_format
new file mode 100644
index 0000000..125b9eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_read_format
@@ -0,0 +1,6 @@
+GL_OES_read_format
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_read_format.txt
+GL_OES_read_format
+
+ GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
diff --git a/glew/auto/extensions/gl/GL_OES_required_internalformat b/glew/auto/extensions/gl/GL_OES_required_internalformat
new file mode 100644
index 0000000..d74084c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_required_internalformat
@@ -0,0 +1,19 @@
+GL_OES_required_internalformat
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_required_internalformat.txt
+GL_OES_required_internalformat
+
+ GL_ALPHA8_OES 0x803C
+ GL_LUMINANCE8_OES 0x8040
+ GL_LUMINANCE4_ALPHA4_OES 0x8043
+ GL_LUMINANCE8_ALPHA8_OES 0x8045
+ GL_RGB8_OES 0x8051
+ GL_RGB10_EXT 0x8052
+ GL_RGBA4_OES 0x8056
+ GL_RGB5_A1_OES 0x8057
+ GL_RGBA8_OES 0x8058
+ GL_RGB10_A2_EXT 0x8059
+ GL_DEPTH_COMPONENT16_OES 0x81A5
+ GL_DEPTH_COMPONENT24_OES 0x81A6
+ GL_DEPTH_COMPONENT32_OES 0x81A7
+ GL_DEPTH24_STENCIL8_OES 0x88F0
+ GL_RGB565_OES 0x8D62
diff --git a/glew/auto/extensions/gl/GL_OES_rgb8_rgba8 b/glew/auto/extensions/gl/GL_OES_rgb8_rgba8
new file mode 100644
index 0000000..df75ea0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_rgb8_rgba8
@@ -0,0 +1,6 @@
+GL_OES_rgb8_rgba8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_rgb8_rgba8.txt
+GL_OES_rgb8_rgba8
+
+ GL_RGB8_OES 0x8051
+ GL_RGBA8_OES 0x8058
diff --git a/glew/auto/extensions/gl/GL_OES_sample_shading b/glew/auto/extensions/gl/GL_OES_sample_shading
new file mode 100644
index 0000000..b27dc5b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_sample_shading
@@ -0,0 +1,7 @@
+GL_OES_sample_shading
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_shading.txt
+GL_OES_sample_shading
+
+ GL_SAMPLE_SHADING_OES 0x8C36
+ GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
+ void glMinSampleShadingOES (GLfloat value)
diff --git a/glew/auto/extensions/gl/GL_OES_sample_variables b/glew/auto/extensions/gl/GL_OES_sample_variables
new file mode 100644
index 0000000..db6fb7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_sample_variables
@@ -0,0 +1,4 @@
+GL_OES_sample_variables
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_variables.txt
+GL_OES_sample_variables
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_image_atomic b/glew/auto/extensions/gl/GL_OES_shader_image_atomic
new file mode 100644
index 0000000..09ab403
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_image_atomic
@@ -0,0 +1,4 @@
+GL_OES_shader_image_atomic
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_image_atomic.txt
+GL_OES_shader_image_atomic
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_io_blocks b/glew/auto/extensions/gl/GL_OES_shader_io_blocks
new file mode 100644
index 0000000..08b24fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_io_blocks
@@ -0,0 +1,4 @@
+GL_OES_shader_io_blocks
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_io_blocks.txt
+GL_OES_shader_io_blocks
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation b/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation
new file mode 100644
index 0000000..24b6919
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation
@@ -0,0 +1,7 @@
+GL_OES_shader_multisample_interpolation
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_multisample_interpolation.txt
+GL_OES_shader_multisample_interpolation
+
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
diff --git a/glew/auto/extensions/gl/GL_OES_single_precision b/glew/auto/extensions/gl/GL_OES_single_precision
new file mode 100644
index 0000000..8dc86ae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_single_precision
@@ -0,0 +1,10 @@
+GL_OES_single_precision
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_single_precision.txt
+GL_OES_single_precision
+
+ void glClearDepthfOES (GLclampf depth)
+ void glClipPlanefOES (GLenum plane, const GLfloat* equation)
+ void glDepthRangefOES (GLclampf n, GLclampf f)
+ void glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)
+ void glGetClipPlanefOES (GLenum plane, GLfloat* equation)
+ void glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)
diff --git a/glew/auto/extensions/gl/GL_OES_standard_derivatives b/glew/auto/extensions/gl/GL_OES_standard_derivatives
new file mode 100644
index 0000000..7dc1bd2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_standard_derivatives
@@ -0,0 +1,5 @@
+GL_OES_standard_derivatives
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_standard_derivatives.txt
+GL_OES_standard_derivatives
+
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
diff --git a/glew/auto/extensions/gl/GL_OES_stencil1 b/glew/auto/extensions/gl/GL_OES_stencil1
new file mode 100644
index 0000000..8464243
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil1
@@ -0,0 +1,5 @@
+GL_OES_stencil1
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil1.txt
+GL_OES_stencil1
+
+ GL_STENCIL_INDEX1_OES 0x8D46
diff --git a/glew/auto/extensions/gl/GL_OES_stencil4 b/glew/auto/extensions/gl/GL_OES_stencil4
new file mode 100644
index 0000000..4ae2518
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil4
@@ -0,0 +1,5 @@
+GL_OES_stencil4
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil4.txt
+GL_OES_stencil4
+
+ GL_STENCIL_INDEX4_OES 0x8D47
diff --git a/glew/auto/extensions/gl/GL_OES_stencil8 b/glew/auto/extensions/gl/GL_OES_stencil8
new file mode 100644
index 0000000..044da16
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil8
@@ -0,0 +1,5 @@
+GL_OES_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil8.txt
+GL_OES_stencil8
+
+ GL_STENCIL_INDEX8_OES 0x8D48
diff --git a/glew/auto/extensions/gl/GL_OES_surfaceless_context b/glew/auto/extensions/gl/GL_OES_surfaceless_context
new file mode 100644
index 0000000..4085999
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_surfaceless_context
@@ -0,0 +1,5 @@
+GL_OES_surfaceless_context
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_surfaceless_context.txt
+GL_OES_surfaceless_context
+
+ GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
diff --git a/glew/auto/extensions/gl/GL_OES_tessellation_point_size b/glew/auto/extensions/gl/GL_OES_tessellation_point_size
new file mode 100644
index 0000000..8cebeae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_tessellation_point_size
@@ -0,0 +1,47 @@
+GL_OES_tessellation_point_size
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt
+GL_OES_tessellation_point_size
+
+ GL_QUADS_OES 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+ GL_PATCHES_OES 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+ GL_PATCH_VERTICES_OES 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+ GL_TESS_GEN_MODE_OES 0x8E76
+ GL_TESS_GEN_SPACING_OES 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+ GL_TESS_GEN_POINT_MODE_OES 0x8E79
+ GL_ISOLINES_OES 0x8E7A
+ GL_FRACTIONAL_ODD_OES 0x8E7B
+ GL_FRACTIONAL_EVEN_OES 0x8E7C
+ GL_MAX_PATCH_VERTICES_OES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+ GL_TESS_EVALUATION_SHADER_OES 0x8E87
+ GL_TESS_CONTROL_SHADER_OES 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+ GL_IS_PER_PATCH_OES 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
diff --git a/glew/auto/extensions/gl/GL_OES_tessellation_shader b/glew/auto/extensions/gl/GL_OES_tessellation_shader
new file mode 100644
index 0000000..461893e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_tessellation_shader
@@ -0,0 +1,47 @@
+GL_OES_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt
+GL_OES_tessellation_shader
+
+ GL_QUADS_OES 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+ GL_PATCHES_OES 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+ GL_PATCH_VERTICES_OES 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+ GL_TESS_GEN_MODE_OES 0x8E76
+ GL_TESS_GEN_SPACING_OES 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+ GL_TESS_GEN_POINT_MODE_OES 0x8E79
+ GL_ISOLINES_OES 0x8E7A
+ GL_FRACTIONAL_ODD_OES 0x8E7B
+ GL_FRACTIONAL_EVEN_OES 0x8E7C
+ GL_MAX_PATCH_VERTICES_OES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+ GL_TESS_EVALUATION_SHADER_OES 0x8E87
+ GL_TESS_CONTROL_SHADER_OES 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+ GL_IS_PER_PATCH_OES 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
diff --git a/glew/auto/extensions/gl/GL_OES_texture_3D b/glew/auto/extensions/gl/GL_OES_texture_3D
new file mode 100644
index 0000000..4be0473
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_3D
@@ -0,0 +1,14 @@
+GL_OES_texture_3D
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_3D.txt
+GL_OES_texture_3D
+
+ GL_TEXTURE_BINDING_3D_OES 0x806A
+ GL_TEXTURE_3D_OES 0x806F
+ GL_TEXTURE_WRAP_R_OES 0x8072
+ GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
+ void glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glTexImage3DOES (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_border_clamp b/glew/auto/extensions/gl/GL_OES_texture_border_clamp
new file mode 100644
index 0000000..e642831
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_border_clamp
@@ -0,0 +1,14 @@
+GL_OES_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_border_clamp.txt
+GL_OES_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_OES 0x1004
+ GL_CLAMP_TO_BORDER_OES 0x812D
+ void glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint* params)
+ void glGetTexParameterIivOES (GLenum target, GLenum pname, GLint* params)
+ void glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint* params)
+ void glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint* params)
+ void glTexParameterIivOES (GLenum target, GLenum pname, const GLint* params)
+ void glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint* params)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_buffer b/glew/auto/extensions/gl/GL_OES_texture_buffer
new file mode 100644
index 0000000..1dde1a8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_buffer
@@ -0,0 +1,20 @@
+GL_OES_texture_buffer
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_buffer.txt
+GL_OES_texture_buffer
+
+ GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
+ GL_TEXTURE_BUFFER_OES 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
+ GL_SAMPLER_BUFFER_OES 0x8DC2
+ GL_INT_SAMPLER_BUFFER_OES 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
+ GL_IMAGE_BUFFER_OES 0x9051
+ GL_INT_IMAGE_BUFFER_OES 0x905C
+ GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
+ GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
+ GL_TEXTURE_BUFFER_SIZE_OES 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
+ void glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer)
+ void glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_compression_astc b/glew/auto/extensions/gl/GL_OES_texture_compression_astc
new file mode 100644
index 0000000..c4a49e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_compression_astc
@@ -0,0 +1,52 @@
+GL_OES_texture_compression_astc
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_OES_texture_compression_astc
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_OES_texture_cube_map b/glew/auto/extensions/gl/GL_OES_texture_cube_map
new file mode 100644
index 0000000..b4770b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_cube_map
@@ -0,0 +1,26 @@
+GL_OES_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map.txt
+GL_OES_texture_cube_map
+
+ GL_TEXTURE_GEN_MODE_OES 0x2500
+ GL_NORMAL_MAP_OES 0x8511
+ GL_REFLECTION_MAP_OES 0x8512
+ GL_TEXTURE_CUBE_MAP_OES 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C
+ GL_TEXTURE_GEN_STR_OES 0x8D60
+ void glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat* params)
+ void glGetTexGenivOES (GLenum coord, GLenum pname, GLint* params)
+ void glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed* params)
+ void glTexGenfOES (GLenum coord, GLenum pname, GLfloat param)
+ void glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat* params)
+ void glTexGeniOES (GLenum coord, GLenum pname, GLint param)
+ void glTexGenivOES (GLenum coord, GLenum pname, const GLint* params)
+ void glTexGenxOES (GLenum coord, GLenum pname, GLfixed param)
+ void glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed* params)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_cube_map_array b/glew/auto/extensions/gl/GL_OES_texture_cube_map_array
new file mode 100644
index 0000000..6f0d225
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_cube_map_array
@@ -0,0 +1,13 @@
+GL_OES_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map_array.txt
+GL_OES_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
+ GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
+ GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
diff --git a/glew/auto/extensions/gl/GL_OES_texture_env_crossbar b/glew/auto/extensions/gl/GL_OES_texture_env_crossbar
new file mode 100644
index 0000000..11ed8b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_env_crossbar
@@ -0,0 +1,4 @@
+GL_OES_texture_env_crossbar
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_env_crossbar.txt
+GL_OES_texture_env_crossbar
+
diff --git a/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat
new file mode 100644
index 0000000..2375ae7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_OES_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_mirrored_repeat.txt
+GL_OES_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT 0x8370
diff --git a/glew/auto/extensions/gl/GL_OES_texture_npot b/glew/auto/extensions/gl/GL_OES_texture_npot
new file mode 100644
index 0000000..76a008d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_npot
@@ -0,0 +1,4 @@
+GL_OES_texture_npot
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_npot.txt
+GL_OES_texture_npot
+
diff --git a/glew/auto/extensions/gl/GL_OES_texture_stencil8 b/glew/auto/extensions/gl/GL_OES_texture_stencil8
new file mode 100644
index 0000000..70c4db1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_stencil8
@@ -0,0 +1,6 @@
+GL_OES_texture_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_stencil8.txt
+GL_OES_texture_stencil8
+
+ GL_STENCIL_INDEX 0x1901
+ GL_STENCIL_INDEX8 0x8D48
diff --git a/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array b/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array
new file mode 100644
index 0000000..8e6e121
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array
@@ -0,0 +1,10 @@
+GL_OES_texture_storage_multisample_2d_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_storage_multisample_2d_array.txt
+GL_OES_texture_storage_multisample_2d_array
+
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
+ void glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_view b/glew/auto/extensions/gl/GL_OES_texture_view
new file mode 100644
index 0000000..b6cb050
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_view
@@ -0,0 +1,10 @@
+GL_OES_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_view.txt
+GL_OES_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_array_object b/glew/auto/extensions/gl/GL_OES_vertex_array_object
new file mode 100644
index 0000000..670ab3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_array_object
@@ -0,0 +1,9 @@
+GL_OES_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_array_object.txt
+GL_OES_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING_OES 0x85B5
+ void glBindVertexArrayOES (GLuint array)
+ void glDeleteVertexArraysOES (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysOES (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArrayOES (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_half_float b/glew/auto/extensions/gl/GL_OES_vertex_half_float
new file mode 100644
index 0000000..45888ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_half_float
@@ -0,0 +1,5 @@
+GL_OES_vertex_half_float
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_half_float.txt
+GL_OES_vertex_half_float
+
+ GL_HALF_FLOAT_OES 0x8D61
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2 b/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2
new file mode 100644
index 0000000..9624b2b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2
@@ -0,0 +1,6 @@
+GL_OES_vertex_type_10_10_10_2
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_type_10_10_10_2.txt
+GL_OES_vertex_type_10_10_10_2
+
+ GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
+ GL_INT_10_10_10_2_OES 0x8DF7
diff --git a/glew/auto/extensions/gl/GL_OML_interlace b/glew/auto/extensions/gl/GL_OML_interlace
new file mode 100644
index 0000000..f79ad81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_interlace
@@ -0,0 +1,6 @@
+GL_OML_interlace
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_interlace.txt
+GL_OML_interlace
+
+ GL_INTERLACE_OML 0x8980
+ GL_INTERLACE_READ_OML 0x8981
diff --git a/glew/auto/extensions/gl/GL_OML_resample b/glew/auto/extensions/gl/GL_OML_resample
new file mode 100644
index 0000000..3f1428c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_resample
@@ -0,0 +1,10 @@
+GL_OML_resample
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_resample.txt
+GL_OML_resample
+
+ GL_PACK_RESAMPLE_OML 0x8984
+ GL_UNPACK_RESAMPLE_OML 0x8985
+ GL_RESAMPLE_REPLICATE_OML 0x8986
+ GL_RESAMPLE_ZERO_FILL_OML 0x8987
+ GL_RESAMPLE_AVERAGE_OML 0x8988
+ GL_RESAMPLE_DECIMATE_OML 0x8989
diff --git a/glew/auto/extensions/gl/GL_OML_subsample b/glew/auto/extensions/gl/GL_OML_subsample
new file mode 100644
index 0000000..f102246
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_subsample
@@ -0,0 +1,6 @@
+GL_OML_subsample
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_subsample.txt
+GL_OML_subsample
+
+ GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+ GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview b/glew/auto/extensions/gl/GL_OVR_multiview
new file mode 100644
index 0000000..e238930
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview
@@ -0,0 +1,10 @@
+GL_OVR_multiview
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt
+GL_OVR_multiview
+
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+ GL_MAX_VIEWS_OVR 0x9631
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+ GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+ void glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
+ void glNamedFramebufferTextureMultiviewOVR (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview2 b/glew/auto/extensions/gl/GL_OVR_multiview2
new file mode 100644
index 0000000..2cfd992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview2
@@ -0,0 +1,4 @@
+GL_OVR_multiview2
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt
+GL_OVR_multiview2
+
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture
new file mode 100644
index 0000000..65ac7e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture
@@ -0,0 +1,5 @@
+GL_OVR_multiview_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt
+GL_OVR_multiview_multisampled_render_to_texture
+
+ void glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews)
diff --git a/glew/auto/extensions/gl/GL_PGI_misc_hints b/glew/auto/extensions/gl/GL_PGI_misc_hints
new file mode 100644
index 0000000..42ba179
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_PGI_misc_hints
@@ -0,0 +1,24 @@
+GL_PGI_misc_hints
+https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_misc_hints.txt
+GL_PGI_misc_hints
+
+ GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000
+ GL_CONSERVE_MEMORY_HINT_PGI 107005
+ GL_RECLAIM_MEMORY_HINT_PGI 107006
+ GL_NATIVE_GRAPHICS_HANDLE_PGI 107010
+ GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011
+ GL_NATIVE_GRAPHICS_END_HINT_PGI 107012
+ GL_ALWAYS_FAST_HINT_PGI 107020
+ GL_ALWAYS_SOFT_HINT_PGI 107021
+ GL_ALLOW_DRAW_OBJ_HINT_PGI 107022
+ GL_ALLOW_DRAW_WIN_HINT_PGI 107023
+ GL_ALLOW_DRAW_FRG_HINT_PGI 107024
+ GL_ALLOW_DRAW_MEM_HINT_PGI 107025
+ GL_STRICT_DEPTHFUNC_HINT_PGI 107030
+ GL_STRICT_LIGHTING_HINT_PGI 107031
+ GL_STRICT_SCISSOR_HINT_PGI 107032
+ GL_FULL_STIPPLE_HINT_PGI 107033
+ GL_CLIP_NEAR_HINT_PGI 107040
+ GL_CLIP_FAR_HINT_PGI 107041
+ GL_WIDE_LINE_HINT_PGI 107042
+ GL_BACK_NORMALS_HINT_PGI 107043
diff --git a/glew/auto/extensions/gl/GL_PGI_vertex_hints b/glew/auto/extensions/gl/GL_PGI_vertex_hints
new file mode 100644
index 0000000..3942156
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_PGI_vertex_hints
@@ -0,0 +1,26 @@
+GL_PGI_vertex_hints
+https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_vertex_hints.txt
+GL_PGI_vertex_hints
+
+ GL_VERTEX23_BIT_PGI 0x00000004
+ GL_VERTEX4_BIT_PGI 0x00000008
+ GL_COLOR3_BIT_PGI 0x00010000
+ GL_COLOR4_BIT_PGI 0x00020000
+ GL_EDGEFLAG_BIT_PGI 0x00040000
+ GL_INDEX_BIT_PGI 0x00080000
+ GL_MAT_AMBIENT_BIT_PGI 0x00100000
+ GL_VERTEX_DATA_HINT_PGI 107050
+ GL_VERTEX_CONSISTENT_HINT_PGI 107051
+ GL_MATERIAL_SIDE_HINT_PGI 107052
+ GL_MAX_VERTEX_HINT_PGI 107053
+ GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+ GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+ GL_MAT_EMISSION_BIT_PGI 0x00800000
+ GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+ GL_MAT_SHININESS_BIT_PGI 0x02000000
+ GL_MAT_SPECULAR_BIT_PGI 0x04000000
+ GL_NORMAL_BIT_PGI 0x08000000
+ GL_TEXCOORD1_BIT_PGI 0x10000000
+ GL_TEXCOORD2_BIT_PGI 0x20000000
+ GL_TEXCOORD3_BIT_PGI 0x40000000
+ GL_TEXCOORD4_BIT_PGI 0x80000000
diff --git a/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather b/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather
new file mode 100644
index 0000000..bfa04de
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather
@@ -0,0 +1,4 @@
+GL_QCOM_YUV_texture_gather
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_YUV_texture_gather.txt
+GL_QCOM_YUV_texture_gather
+
diff --git a/glew/auto/extensions/gl/GL_QCOM_alpha_test b/glew/auto/extensions/gl/GL_QCOM_alpha_test
new file mode 100644
index 0000000..ac655e2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_alpha_test
@@ -0,0 +1,8 @@
+GL_QCOM_alpha_test
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_alpha_test.txt
+GL_QCOM_alpha_test
+
+ GL_ALPHA_TEST_QCOM 0x0BC0
+ GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
+ GL_ALPHA_TEST_REF_QCOM 0x0BC2
+ void glAlphaFuncQCOM (GLenum func, GLclampf ref)
diff --git a/glew/auto/extensions/gl/GL_QCOM_binning_control b/glew/auto/extensions/gl/GL_QCOM_binning_control
new file mode 100644
index 0000000..697e5fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_binning_control
@@ -0,0 +1,9 @@
+GL_QCOM_binning_control
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_binning_control.txt
+GL_QCOM_binning_control
+
+ GL_DONT_CARE 0x1100
+ GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
+ GL_CPU_OPTIMIZED_QCOM 0x8FB1
+ GL_GPU_OPTIMIZED_QCOM 0x8FB2
+ GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
diff --git a/glew/auto/extensions/gl/GL_QCOM_driver_control b/glew/auto/extensions/gl/GL_QCOM_driver_control
new file mode 100644
index 0000000..5d7c3eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_driver_control
@@ -0,0 +1,8 @@
+GL_QCOM_driver_control
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_driver_control.txt
+GL_QCOM_driver_control
+
+ void glDisableDriverControlQCOM (GLuint driverControl)
+ void glEnableDriverControlQCOM (GLuint driverControl)
+ void glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar *driverControlString)
+ void glGetDriverControlsQCOM (GLint* num, GLsizei size, GLuint *driverControls)
diff --git a/glew/auto/extensions/gl/GL_QCOM_extended_get b/glew/auto/extensions/gl/GL_QCOM_extended_get
new file mode 100644
index 0000000..af400f2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_extended_get
@@ -0,0 +1,23 @@
+GL_QCOM_extended_get
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get.txt
+GL_QCOM_extended_get
+
+ GL_TEXTURE_WIDTH_QCOM 0x8BD2
+ GL_TEXTURE_HEIGHT_QCOM 0x8BD3
+ GL_TEXTURE_DEPTH_QCOM 0x8BD4
+ GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
+ GL_TEXTURE_FORMAT_QCOM 0x8BD6
+ GL_TEXTURE_TYPE_QCOM 0x8BD7
+ GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
+ GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
+ GL_TEXTURE_TARGET_QCOM 0x8BDA
+ GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
+ GL_STATE_RESTORE 0x8BDC
+ void glExtGetBufferPointervQCOM (GLenum target, void** params)
+ void glExtGetBuffersQCOM (GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
+ void glExtGetFramebuffersQCOM (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
+ void glExtGetRenderbuffersQCOM (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
+ void glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
+ void glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels)
+ void glExtGetTexturesQCOM (GLuint* textures, GLint maxTextures, GLint* numTextures)
+ void glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_QCOM_extended_get2 b/glew/auto/extensions/gl/GL_QCOM_extended_get2
new file mode 100644
index 0000000..c50e984
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_extended_get2
@@ -0,0 +1,8 @@
+GL_QCOM_extended_get2
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get2.txt
+GL_QCOM_extended_get2
+
+ void glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar* source, GLint* length)
+ void glExtGetProgramsQCOM (GLuint* programs, GLint maxPrograms, GLint* numPrograms)
+ void glExtGetShadersQCOM (GLuint* shaders, GLint maxShaders, GLint* numShaders)
+ GLboolean glExtIsProgramBinaryQCOM (GLuint program)
diff --git a/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation b/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation
new file mode 100644
index 0000000..c6dbc4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation
@@ -0,0 +1,5 @@
+GL_QCOM_frame_extrapolation
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_frame_extrapolation.txt
+GL_QCOM_frame_extrapolation
+
+ void glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor)
diff --git a/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated b/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated
new file mode 100644
index 0000000..c3abd2c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated
@@ -0,0 +1,8 @@
+GL_QCOM_framebuffer_foveated
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_framebuffer_foveated.txt
+GL_QCOM_framebuffer_foveated
+
+ GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+ GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+ void glFramebufferFoveationConfigQCOM (GLuint fbo, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint* providedFeatures)
+ void glFramebufferFoveationParametersQCOM (GLuint fbo, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea)
diff --git a/glew/auto/extensions/gl/GL_QCOM_motion_estimation b/glew/auto/extensions/gl/GL_QCOM_motion_estimation
new file mode 100644
index 0000000..21aa343
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_motion_estimation
@@ -0,0 +1,8 @@
+GL_QCOM_motion_estimation
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_motion_estimation.txt
+GL_QCOM_motion_estimation
+
+ GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
+ GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
+ void glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output)
+ void glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode b/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode
new file mode 100644
index 0000000..5b81152
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode
@@ -0,0 +1,5 @@
+GL_QCOM_perfmon_global_mode
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_performance_monitor_global_mode.txt
+GL_QCOM_perfmon_global_mode
+
+ GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
diff --git a/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent b/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent
new file mode 100644
index 0000000..d97878e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent
@@ -0,0 +1,5 @@
+GL_QCOM_render_shared_exponent
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_render_shared_exponent.txt
+GL_QCOM_render_shared_exponent
+
+ GL_RGB9_E5 0x8C3D
diff --git a/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent
new file mode 100644
index 0000000..1638eac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent
@@ -0,0 +1,6 @@
+GL_QCOM_shader_framebuffer_fetch_noncoherent
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_noncoherent.txt
+GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+ GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
+ void glFramebufferFetchBarrierQCOM (void)
diff --git a/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate
new file mode 100644
index 0000000..80f24d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate
@@ -0,0 +1,4 @@
+GL_QCOM_shader_framebuffer_fetch_rate
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_rate.txt
+GL_QCOM_shader_framebuffer_fetch_rate
+
diff --git a/glew/auto/extensions/gl/GL_QCOM_shading_rate b/glew/auto/extensions/gl/GL_QCOM_shading_rate
new file mode 100644
index 0000000..902995e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shading_rate
@@ -0,0 +1,13 @@
+GL_QCOM_shading_rate
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shading_rate.txt
+GL_QCOM_shading_rate
+
+ GL_SHADING_RATE_QCOM 0x96A4
+ GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5
+ GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6
+ GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7
+ GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8
+ GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9
+ GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC
+ GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE
+ void glShadingRateQCOM (GLenum rate)
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated b/glew/auto/extensions/gl/GL_QCOM_texture_foveated
new file mode 100644
index 0000000..65a1714
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated
@@ -0,0 +1,12 @@
+GL_QCOM_texture_foveated
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated.txt
+GL_QCOM_texture_foveated
+
+ GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+ GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+ GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
+ GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
+ GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
+ GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
+ GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
+ void glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea)
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated2 b/glew/auto/extensions/gl/GL_QCOM_texture_foveated2
new file mode 100644
index 0000000..c37de07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated2
@@ -0,0 +1,5 @@
+GL_QCOM_texture_foveated2
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated2.txt
+GL_QCOM_texture_foveated2
+
+ GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout b/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout
new file mode 100644
index 0000000..7ba92bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout
@@ -0,0 +1,6 @@
+GL_QCOM_texture_foveated_subsampled_layout
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated_subsampled_layout.txt
+GL_QCOM_texture_foveated_subsampled_layout
+
+ GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x4
+ GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
diff --git a/glew/auto/extensions/gl/GL_QCOM_tiled_rendering b/glew/auto/extensions/gl/GL_QCOM_tiled_rendering
new file mode 100644
index 0000000..4ee7b42
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_tiled_rendering
@@ -0,0 +1,38 @@
+GL_QCOM_tiled_rendering
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_tiled_rendering.txt
+GL_QCOM_tiled_rendering
+
+ GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
+ GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
+ GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
+ GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
+ GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
+ GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
+ GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
+ GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
+ GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
+ GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
+ GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
+ GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
+ GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
+ GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
+ GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
+ GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
+ GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
+ GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
+ GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
+ GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
+ GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
+ GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
+ GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
+ GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
+ GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
+ GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
+ GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
+ GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
+ GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
+ GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
+ GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
+ GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
+ void glEndTilingQCOM (GLbitfield preserveMask)
+ void glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
diff --git a/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering b/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering
new file mode 100644
index 0000000..89de602
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering
@@ -0,0 +1,5 @@
+GL_QCOM_writeonly_rendering
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_writeonly_rendering.txt
+GL_QCOM_writeonly_rendering
+
+ GL_WRITEONLY_RENDERING_QCOM 0x8823
diff --git a/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility b/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility
new file mode 100644
index 0000000..6742fe0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility
@@ -0,0 +1,36 @@
+GL_REGAL_ES1_0_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_0_compatibility.txt
+GL_REGAL_ES1_0_compatibility
+
+ void glAlphaFuncx (GLenum func, GLclampx ref)
+ void glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+ void glClearDepthx (GLclampx depth)
+ void glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+ void glDepthRangex (GLclampx zNear, GLclampx zFar)
+ void glFogx (GLenum pname, GLfixed param)
+ void glFogxv (GLenum pname, const GLfixed* params)
+ void glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+ void glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+ void glLightModelx (GLenum pname, GLfixed param)
+ void glLightModelxv (GLenum pname, const GLfixed* params)
+ void glLightx (GLenum light, GLenum pname, GLfixed param)
+ void glLightxv (GLenum light, GLenum pname, const GLfixed* params)
+ void glLineWidthx (GLfixed width)
+ void glLoadMatrixx (const GLfixed* m)
+ void glMaterialx (GLenum face, GLenum pname, GLfixed param)
+ void glMaterialxv (GLenum face, GLenum pname, const GLfixed* params)
+ void glMultMatrixx (const GLfixed* m)
+ void glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+ void glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz)
+ void glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+ void glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+ void glPointSizex (GLfixed size)
+ void glPolygonOffsetx (GLfixed factor, GLfixed units)
+ void glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+ void glSampleCoveragex (GLclampx value, GLboolean invert)
+ void glScalex (GLfixed x, GLfixed y, GLfixed z)
+ void glTexEnvx (GLenum target, GLenum pname, GLfixed param)
+ void glTexEnvxv (GLenum target, GLenum pname, const GLfixed* params)
+ void glTexParameterx (GLenum target, GLenum pname, GLfixed param)
+ void glTranslatex (GLfixed x, GLfixed y, GLfixed z)
+ typedef int GLclampx
diff --git a/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility b/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility
new file mode 100644
index 0000000..c9e7215
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility
@@ -0,0 +1,17 @@
+GL_REGAL_ES1_1_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_1_compatibility.txt
+GL_REGAL_ES1_1_compatibility
+
+ void glClipPlanef (GLenum plane, const GLfloat* equation)
+ void glClipPlanex (GLenum plane, const GLfixed* equation)
+ void glGetClipPlanef (GLenum pname, GLfloat eqn[4])
+ void glGetClipPlanex (GLenum pname, GLfixed eqn[4])
+ void glGetFixedv (GLenum pname, GLfixed* params)
+ void glGetLightxv (GLenum light, GLenum pname, GLfixed* params)
+ void glGetMaterialxv (GLenum face, GLenum pname, GLfixed* params)
+ void glGetTexEnvxv (GLenum env, GLenum pname, GLfixed* params)
+ void glGetTexParameterxv (GLenum target, GLenum pname, GLfixed* params)
+ void glPointParameterx (GLenum pname, GLfixed param)
+ void glPointParameterxv (GLenum pname, const GLfixed* params)
+ void glPointSizePointerOES (GLenum type, GLsizei stride, const void *pointer)
+ void glTexParameterxv (GLenum target, GLenum pname, const GLfixed* params)
diff --git a/glew/auto/extensions/gl/GL_REGAL_enable b/glew/auto/extensions/gl/GL_REGAL_enable
new file mode 100644
index 0000000..20f4ad6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_enable
@@ -0,0 +1,14 @@
+GL_REGAL_enable
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/enable.txt
+GL_REGAL_enable
+
+ GL_ERROR_REGAL 0x9322
+ GL_DEBUG_REGAL 0x9323
+ GL_LOG_REGAL 0x9324
+ GL_EMULATION_REGAL 0x9325
+ GL_DRIVER_REGAL 0x9326
+ GL_MISSING_REGAL 0x9360
+ GL_TRACE_REGAL 0x9361
+ GL_CACHE_REGAL 0x9362
+ GL_CODE_REGAL 0x9363
+ GL_STATISTICS_REGAL 0x9364
diff --git a/glew/auto/extensions/gl/GL_REGAL_error_string b/glew/auto/extensions/gl/GL_REGAL_error_string
new file mode 100644
index 0000000..fea8476
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_error_string
@@ -0,0 +1,5 @@
+GL_REGAL_error_string
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/error_string.txt
+GL_REGAL_error_string
+
+ const GLchar* glErrorStringREGAL (GLenum error)
diff --git a/glew/auto/extensions/gl/GL_REGAL_extension_query b/glew/auto/extensions/gl/GL_REGAL_extension_query
new file mode 100644
index 0000000..8cbcd53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_extension_query
@@ -0,0 +1,6 @@
+GL_REGAL_extension_query
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/extension_query.txt
+GL_REGAL_extension_query
+
+ GLboolean glGetExtensionREGAL (const GLchar* ext)
+ GLboolean glIsSupportedREGAL (const GLchar* ext)
diff --git a/glew/auto/extensions/gl/GL_REGAL_log b/glew/auto/extensions/gl/GL_REGAL_log
new file mode 100644
index 0000000..f67a302
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_log
@@ -0,0 +1,15 @@
+GL_REGAL_log
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/log.txt
+GL_REGAL_log
+
+ GL_LOG_ERROR_REGAL 0x9319
+ GL_LOG_WARNING_REGAL 0x931A
+ GL_LOG_INFO_REGAL 0x931B
+ GL_LOG_APP_REGAL 0x931C
+ GL_LOG_DRIVER_REGAL 0x931D
+ GL_LOG_INTERNAL_REGAL 0x931E
+ GL_LOG_DEBUG_REGAL 0x931F
+ GL_LOG_STATUS_REGAL 0x9320
+ GL_LOG_HTTP_REGAL 0x9321
+ void glLogMessageCallbackREGAL (GLLOGPROCREGAL callback)
+ typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context)
diff --git a/glew/auto/extensions/gl/GL_REGAL_proc_address b/glew/auto/extensions/gl/GL_REGAL_proc_address
new file mode 100644
index 0000000..26271dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_proc_address
@@ -0,0 +1,5 @@
+GL_REGAL_proc_address
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/proc_address.txt
+GL_REGAL_proc_address
+
+ void * glGetProcAddressREGAL (const GLchar *name)
diff --git a/glew/auto/extensions/gl/GL_REND_screen_coordinates b/glew/auto/extensions/gl/GL_REND_screen_coordinates
new file mode 100644
index 0000000..a468fd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REND_screen_coordinates
@@ -0,0 +1,6 @@
+GL_REND_screen_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/REND/REND_screen_coordinates.txt
+GL_REND_screen_coordinates
+
+ GL_SCREEN_COORDINATES_REND 0x8490
+ GL_INVERTED_SCREEN_W_REND 0x8491
diff --git a/glew/auto/extensions/gl/GL_S3_s3tc b/glew/auto/extensions/gl/GL_S3_s3tc
new file mode 100644
index 0000000..4f7efea
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_S3_s3tc
@@ -0,0 +1,10 @@
+GL_S3_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/S3/S3_s3tc.txt
+GL_S3_s3tc
+
+ GL_RGB_S3TC 0x83A0
+ GL_RGB4_S3TC 0x83A1
+ GL_RGBA_S3TC 0x83A2
+ GL_RGBA4_S3TC 0x83A3
+ GL_RGBA_DXT5_S3TC 0x83A4
+ GL_RGBA4_DXT5_S3TC 0x83A5
diff --git a/glew/auto/extensions/gl/GL_SGIS_clip_band_hint b/glew/auto/extensions/gl/GL_SGIS_clip_band_hint
new file mode 100644
index 0000000..0a93182
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_clip_band_hint
@@ -0,0 +1,4 @@
+GL_SGIS_clip_band_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_clip_band_hint.txt
+GL_SGIS_clip_band_hint
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_color_range b/glew/auto/extensions/gl/GL_SGIS_color_range
new file mode 100644
index 0000000..d03efe0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_color_range
@@ -0,0 +1,13 @@
+GL_SGIS_color_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt
+GL_SGIS_color_range
+
+ GL_EXTENDED_RANGE_SGIS 0x85A5
+ GL_MIN_RED_SGIS 0x85A6
+ GL_MAX_RED_SGIS 0x85A7
+ GL_MIN_GREEN_SGIS 0x85A8
+ GL_MAX_GREEN_SGIS 0x85A9
+ GL_MIN_BLUE_SGIS 0x85AA
+ GL_MAX_BLUE_SGIS 0x85AB
+ GL_MIN_ALPHA_SGIS 0x85AC
+ GL_MAX_ALPHA_SGIS 0x85AD
diff --git a/glew/auto/extensions/gl/GL_SGIS_detail_texture b/glew/auto/extensions/gl/GL_SGIS_detail_texture
new file mode 100644
index 0000000..ae94123
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_detail_texture
@@ -0,0 +1,6 @@
+GL_SGIS_detail_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_detail_texture.txt
+GL_SGIS_detail_texture
+
+ void glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat* points)
+ void glGetDetailTexFuncSGIS (GLenum target, GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_fog_function b/glew/auto/extensions/gl/GL_SGIS_fog_function
new file mode 100644
index 0000000..89b21d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_fog_function
@@ -0,0 +1,6 @@
+GL_SGIS_fog_function
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_fog_function.txt
+GL_SGIS_fog_function
+
+ void glFogFuncSGIS (GLsizei n, const GLfloat* points)
+ void glGetFogFuncSGIS (GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_generate_mipmap b/glew/auto/extensions/gl/GL_SGIS_generate_mipmap
new file mode 100644
index 0000000..bb858c7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_generate_mipmap
@@ -0,0 +1,6 @@
+GL_SGIS_generate_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_generate_mipmap.txt
+GL_SGIS_generate_mipmap
+
+ GL_GENERATE_MIPMAP_SGIS 0x8191
+ GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
diff --git a/glew/auto/extensions/gl/GL_SGIS_line_texgen b/glew/auto/extensions/gl/GL_SGIS_line_texgen
new file mode 100644
index 0000000..ff308cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_line_texgen
@@ -0,0 +1,4 @@
+GL_SGIS_line_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_line_texgen.txt
+GL_SGIS_line_texgen
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_multisample b/glew/auto/extensions/gl/GL_SGIS_multisample
new file mode 100644
index 0000000..8f99be6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_multisample
@@ -0,0 +1,22 @@
+GL_SGIS_multisample
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multisample.txt
+GL_SGIS_multisample
+
+ GL_MULTISAMPLE_SGIS 0x809D
+ GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+ GL_SAMPLE_MASK_SGIS 0x80A0
+ GL_1PASS_SGIS 0x80A1
+ GL_2PASS_0_SGIS 0x80A2
+ GL_2PASS_1_SGIS 0x80A3
+ GL_4PASS_0_SGIS 0x80A4
+ GL_4PASS_1_SGIS 0x80A5
+ GL_4PASS_2_SGIS 0x80A6
+ GL_4PASS_3_SGIS 0x80A7
+ GL_SAMPLE_BUFFERS_SGIS 0x80A8
+ GL_SAMPLES_SGIS 0x80A9
+ GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+ GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+ GL_SAMPLE_PATTERN_SGIS 0x80AC
+ void glSampleMaskSGIS (GLclampf value, GLboolean invert)
+ void glSamplePatternSGIS (GLenum pattern)
diff --git a/glew/auto/extensions/gl/GL_SGIS_multitexture b/glew/auto/extensions/gl/GL_SGIS_multitexture
new file mode 100644
index 0000000..17153c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_multitexture
@@ -0,0 +1,19 @@
+GL_SGIS_multitexture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multitexture.txt
+GL_SGIS_multitexture
+
+ GL_SELECTED_TEXTURE_SGIS 0x83C0
+ GL_SELECTED_TEXTURE_COORD_SET_SGIS 0x83C1
+ GL_SELECTED_TEXTURE_TRANSFORM_SGIS 0x83C2
+ GL_MAX_TEXTURES_SGIS 0x83C3
+ GL_MAX_TEXTURE_COORD_SETS_SGIS 0x83C4
+ GL_TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS 0x83C5
+ GL_TEXTURE_ENV_COORD_SET_SGIS 0x83C6
+ GL_TEXTURE0_SGIS 0x83C7
+ GL_TEXTURE1_SGIS 0x83C8
+ GL_TEXTURE2_SGIS 0x83C9
+ GL_TEXTURE3_SGIS 0x83CA
+ void glInterleavedTextureCoordSetsSGIS (GLint factor)
+ void glSelectTextureCoordSetSGIS (GLenum target)
+ void glSelectTextureSGIS (GLenum target)
+ void glSelectTextureTransformSGIS (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_SGIS_pixel_texture b/glew/auto/extensions/gl/GL_SGIS_pixel_texture
new file mode 100644
index 0000000..f7d48bd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_pixel_texture
@@ -0,0 +1,4 @@
+GL_SGIS_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_pixel_texture.txt
+GL_SGIS_pixel_texture
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_point_line_texgen b/glew/auto/extensions/gl/GL_SGIS_point_line_texgen
new file mode 100644
index 0000000..194afc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_point_line_texgen
@@ -0,0 +1,12 @@
+GL_SGIS_point_line_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_point_line_texgen.txt
+GL_SGIS_point_line_texgen
+
+ GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+ GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+ GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+ GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+ GL_EYE_POINT_SGIS 0x81F4
+ GL_OBJECT_POINT_SGIS 0x81F5
+ GL_EYE_LINE_SGIS 0x81F6
+ GL_OBJECT_LINE_SGIS 0x81F7
diff --git a/glew/auto/extensions/gl/GL_SGIS_shared_multisample b/glew/auto/extensions/gl/GL_SGIS_shared_multisample
new file mode 100644
index 0000000..a56c17a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_shared_multisample
@@ -0,0 +1,5 @@
+GL_SGIS_shared_multisample
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_shared_multisample.txt
+GL_SGIS_shared_multisample
+
+ void glMultisampleSubRectPosSGIS (GLint x, GLint y)
diff --git a/glew/auto/extensions/gl/GL_SGIS_sharpen_texture b/glew/auto/extensions/gl/GL_SGIS_sharpen_texture
new file mode 100644
index 0000000..f6d9a5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_sharpen_texture
@@ -0,0 +1,6 @@
+GL_SGIS_sharpen_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_sharpen_texture.txt
+GL_SGIS_sharpen_texture
+
+ void glGetSharpenTexFuncSGIS (GLenum target, GLfloat* points)
+ void glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture4D b/glew/auto/extensions/gl/GL_SGIS_texture4D
new file mode 100644
index 0000000..908eed9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture4D
@@ -0,0 +1,6 @@
+GL_SGIS_texture4D
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture4D.txt
+GL_SGIS_texture4D
+
+ void glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp b/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp
new file mode 100644
index 0000000..34a3584
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp
@@ -0,0 +1,5 @@
+GL_SGIS_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_border_clamp.txt
+GL_SGIS_texture_border_clamp
+
+ GL_CLAMP_TO_BORDER_SGIS 0x812D
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp b/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp
new file mode 100644
index 0000000..db0e205
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp
@@ -0,0 +1,5 @@
+GL_SGIS_texture_edge_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_edge_clamp.txt
+GL_SGIS_texture_edge_clamp
+
+ GL_CLAMP_TO_EDGE_SGIS 0x812F
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_filter4 b/glew/auto/extensions/gl/GL_SGIS_texture_filter4
new file mode 100644
index 0000000..316e563
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_filter4
@@ -0,0 +1,6 @@
+GL_SGIS_texture_filter4
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_filter4.txt
+GL_SGIS_texture_filter4
+
+ void glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat* weights)
+ void glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_lod b/glew/auto/extensions/gl/GL_SGIS_texture_lod
new file mode 100644
index 0000000..71fe3dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_lod
@@ -0,0 +1,8 @@
+GL_SGIS_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_lod.txt
+GL_SGIS_texture_lod
+
+ GL_TEXTURE_MIN_LOD_SGIS 0x813A
+ GL_TEXTURE_MAX_LOD_SGIS 0x813B
+ GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+ GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_select b/glew/auto/extensions/gl/GL_SGIS_texture_select
new file mode 100644
index 0000000..74f6fa5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_select
@@ -0,0 +1,4 @@
+GL_SGIS_texture_select
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_select.txt
+GL_SGIS_texture_select
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_async b/glew/auto/extensions/gl/GL_SGIX_async
new file mode 100644
index 0000000..ba7ef69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async
@@ -0,0 +1,11 @@
+GL_SGIX_async
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async.txt
+GL_SGIX_async
+
+ GL_ASYNC_MARKER_SGIX 0x8329
+ void glAsyncMarkerSGIX (GLuint marker)
+ void glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range)
+ GLint glFinishAsyncSGIX (GLuint* markerp)
+ GLuint glGenAsyncMarkersSGIX (GLsizei range)
+ GLboolean glIsAsyncMarkerSGIX (GLuint marker)
+ GLint glPollAsyncSGIX (GLuint* markerp)
diff --git a/glew/auto/extensions/gl/GL_SGIX_async_histogram b/glew/auto/extensions/gl/GL_SGIX_async_histogram
new file mode 100644
index 0000000..32fe841
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async_histogram
@@ -0,0 +1,6 @@
+GL_SGIX_async_histogram
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_histogram.txt
+GL_SGIX_async_histogram
+
+ GL_ASYNC_HISTOGRAM_SGIX 0x832C
+ GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
diff --git a/glew/auto/extensions/gl/GL_SGIX_async_pixel b/glew/auto/extensions/gl/GL_SGIX_async_pixel
new file mode 100644
index 0000000..9296736
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async_pixel
@@ -0,0 +1,10 @@
+GL_SGIX_async_pixel
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_pixel.txt
+GL_SGIX_async_pixel
+
+ GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+ GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+ GL_ASYNC_READ_PIXELS_SGIX 0x835E
+ GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+ GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+ GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments
new file mode 100644
index 0000000..3547579
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments
@@ -0,0 +1,8 @@
+GL_SGIX_bali_g_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_g_instruments.txt
+GL_SGIX_bali_g_instruments
+
+ GL_BALI_NUM_TRIS_CULLED_INSTRUMENT 0x6080
+ GL_BALI_NUM_PRIMS_CLIPPED_INSTRUMENT 0x6081
+ GL_BALI_NUM_PRIMS_REJECT_INSTRUMENT 0x6082
+ GL_BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT 0x6083
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments
new file mode 100644
index 0000000..e490715
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments
@@ -0,0 +1,7 @@
+GL_SGIX_bali_r_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_r_instruments.txt
+GL_SGIX_bali_r_instruments
+
+ GL_BALI_FRAGMENTS_GENERATED_INSTRUMENT 0x6090
+ GL_BALI_DEPTH_PASS_INSTRUMENT 0x6091
+ GL_BALI_R_CHIP_COUNT 0x6092
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments
new file mode 100644
index 0000000..a80c9dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments
@@ -0,0 +1,4 @@
+GL_SGIX_bali_timer_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_timer_instruments.txt
+GL_SGIX_bali_timer_instruments
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax b/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax
new file mode 100644
index 0000000..c8820e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax
@@ -0,0 +1,6 @@
+GL_SGIX_blend_alpha_minmax
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_alpha_minmax.txt
+GL_SGIX_blend_alpha_minmax
+
+ GL_ALPHA_MIN_SGIX 0x8320
+ GL_ALPHA_MAX_SGIX 0x8321
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_cadd b/glew/auto/extensions/gl/GL_SGIX_blend_cadd
new file mode 100644
index 0000000..a0bcdd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_cadd
@@ -0,0 +1,5 @@
+GL_SGIX_blend_cadd
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cadd.txt
+GL_SGIX_blend_cadd
+
+ GL_FUNC_COMPLEX_ADD_EXT 0x601C
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply b/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply
new file mode 100644
index 0000000..35b5618
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply
@@ -0,0 +1,5 @@
+GL_SGIX_blend_cmultiply
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cmultiply.txt
+GL_SGIX_blend_cmultiply
+
+ GL_FUNC_COMPLEX_MULTIPLY_EXT 0x601B
diff --git a/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment b/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment
new file mode 100644
index 0000000..8761e58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment
@@ -0,0 +1,4 @@
+GL_SGIX_calligraphic_fragment
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_calligraphic_fragment.txt
+GL_SGIX_calligraphic_fragment
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_clipmap b/glew/auto/extensions/gl/GL_SGIX_clipmap
new file mode 100644
index 0000000..9d8604d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_clipmap
@@ -0,0 +1,4 @@
+GL_SGIX_clipmap
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_clipmap.txt
+GL_SGIX_clipmap
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy b/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy
new file mode 100644
index 0000000..33f9e01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy
@@ -0,0 +1,5 @@
+GL_SGIX_color_matrix_accuracy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_matrix_accuracy.txt
+GL_SGIX_color_matrix_accuracy
+
+ GL_COLOR_MATRIX_HINT 0x8317
diff --git a/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode b/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode
new file mode 100644
index 0000000..a09f7cc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode
@@ -0,0 +1,4 @@
+GL_SGIX_color_table_index_mode
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_table_index_mode.txt
+GL_SGIX_color_table_index_mode
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_complex_polar b/glew/auto/extensions/gl/GL_SGIX_complex_polar
new file mode 100644
index 0000000..04086ed
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_complex_polar
@@ -0,0 +1,4 @@
+GL_SGIX_complex_polar
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_complex_polar.txt
+GL_SGIX_complex_polar
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy b/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy
new file mode 100644
index 0000000..05b8f7e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy
@@ -0,0 +1,5 @@
+GL_SGIX_convolution_accuracy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_convolution_accuracy.txt
+GL_SGIX_convolution_accuracy
+
+ GL_CONVOLUTION_HINT_SGIX 0x8316
diff --git a/glew/auto/extensions/gl/GL_SGIX_cube_map b/glew/auto/extensions/gl/GL_SGIX_cube_map
new file mode 100644
index 0000000..950bd29
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_cube_map
@@ -0,0 +1,13 @@
+GL_SGIX_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cube_map.txt
+GL_SGIX_cube_map
+
+ GL_ENV_MAP_SGIX 0x8340
+ GL_CUBE_MAP_SGIX 0x8341
+ GL_CUBE_MAP_ZP_SGIX 0x8342
+ GL_CUBE_MAP_ZN_SGIX 0x8343
+ GL_CUBE_MAP_XN_SGIX 0x8344
+ GL_CUBE_MAP_XP_SGIX 0x8345
+ GL_CUBE_MAP_YN_SGIX 0x8346
+ GL_CUBE_MAP_YP_SGIX 0x8347
+ GL_CUBE_MAP_BINDING_SGIX 0x8348
diff --git a/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen b/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen
new file mode 100644
index 0000000..c318661
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen
@@ -0,0 +1,4 @@
+GL_SGIX_cylinder_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cylinder_texgen.txt
+GL_SGIX_cylinder_texgen
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_datapipe b/glew/auto/extensions/gl/GL_SGIX_datapipe
new file mode 100644
index 0000000..af72c25
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_datapipe
@@ -0,0 +1,8 @@
+GL_SGIX_datapipe
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_datapipe.txt
+GL_SGIX_datapipe
+
+ GL_GEOMETRY_BIT 0x1
+ GL_IMAGE_BIT 0x2
+ void glAddressSpace (GLenum space, GLbitfield mask)
+ GLint glDataPipe (GLenum space)
diff --git a/glew/auto/extensions/gl/GL_SGIX_decimation b/glew/auto/extensions/gl/GL_SGIX_decimation
new file mode 100644
index 0000000..e3af60a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_decimation
@@ -0,0 +1,4 @@
+GL_SGIX_decimation
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_decimation.txt
+GL_SGIX_decimation
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument b/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument
new file mode 100644
index 0000000..06f474b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument
@@ -0,0 +1,7 @@
+GL_SGIX_depth_pass_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_pass_instrument.txt
+GL_SGIX_depth_pass_instrument
+
+ GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+ GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+ GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
diff --git a/glew/auto/extensions/gl/GL_SGIX_depth_texture b/glew/auto/extensions/gl/GL_SGIX_depth_texture
new file mode 100644
index 0000000..355fe00
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_depth_texture
@@ -0,0 +1,7 @@
+GL_SGIX_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_texture.txt
+GL_SGIX_depth_texture
+
+ GL_DEPTH_COMPONENT16_SGIX 0x81A5
+ GL_DEPTH_COMPONENT24_SGIX 0x81A6
+ GL_DEPTH_COMPONENT32_SGIX 0x81A7
diff --git a/glew/auto/extensions/gl/GL_SGIX_dvc b/glew/auto/extensions/gl/GL_SGIX_dvc
new file mode 100644
index 0000000..f726e33
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_dvc
@@ -0,0 +1,4 @@
+GL_SGIX_dvc
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_dvc.txt
+GL_SGIX_dvc
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_flush_raster b/glew/auto/extensions/gl/GL_SGIX_flush_raster
new file mode 100644
index 0000000..7c0d4c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_flush_raster
@@ -0,0 +1,5 @@
+GL_SGIX_flush_raster
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_flush_raster.txt
+GL_SGIX_flush_raster
+
+ void glFlushRasterSGIX (void)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_blend b/glew/auto/extensions/gl/GL_SGIX_fog_blend
new file mode 100644
index 0000000..8db6f44
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_blend
@@ -0,0 +1,6 @@
+GL_SGIX_fog_blend
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_blend.txt
+GL_SGIX_fog_blend
+
+ GL_FOG_BLEND_ALPHA_SGIX 0x81FE
+ GL_FOG_BLEND_COLOR_SGIX 0x81FF
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha b/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha
new file mode 100644
index 0000000..8b5a9f7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha
@@ -0,0 +1,4 @@
+GL_SGIX_fog_factor_to_alpha
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_factor_to_alpha.txt
+GL_SGIX_fog_factor_to_alpha
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_layers b/glew/auto/extensions/gl/GL_SGIX_fog_layers
new file mode 100644
index 0000000..7fe0f8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_layers
@@ -0,0 +1,12 @@
+GL_SGIX_fog_layers
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_layers.txt
+GL_SGIX_fog_layers
+
+ GL_FOG_TYPE_SGIX 0x8323
+ GL_UNIFORM_SGIX 0x8324
+ GL_LAYERED_SGIX 0x8325
+ GL_FOG_GROUND_PLANE_SGIX 0x8326
+ GL_FOG_LAYERS_POINTS_SGIX 0x8327
+ GL_MAX_FOG_LAYERS_POINTS_SGIX 0x8328
+ void glFogLayersSGIX (GLsizei n, const GLfloat* points)
+ void glGetFogLayersSGIX (GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_offset b/glew/auto/extensions/gl/GL_SGIX_fog_offset
new file mode 100644
index 0000000..3aff66b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_offset
@@ -0,0 +1,6 @@
+GL_SGIX_fog_offset
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_offset.txt
+GL_SGIX_fog_offset
+
+ GL_FOG_OFFSET_SGIX 0x8198
+ GL_FOG_OFFSET_VALUE_SGIX 0x8199
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_patchy b/glew/auto/extensions/gl/GL_SGIX_fog_patchy
new file mode 100644
index 0000000..02c49b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_patchy
@@ -0,0 +1,4 @@
+GL_SGIX_fog_patchy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_patchy.txt
+GL_SGIX_fog_patchy
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_scale b/glew/auto/extensions/gl/GL_SGIX_fog_scale
new file mode 100644
index 0000000..67451c1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_scale
@@ -0,0 +1,6 @@
+GL_SGIX_fog_scale
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_scale.txt
+GL_SGIX_fog_scale
+
+ GL_FOG_SCALE_SGIX 0x81FC
+ GL_FOG_SCALE_VALUE_SGIX 0x81FD
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_texture b/glew/auto/extensions/gl/GL_SGIX_fog_texture
new file mode 100644
index 0000000..de8d9c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_texture
@@ -0,0 +1,5 @@
+GL_SGIX_fog_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_texture.txt
+GL_SGIX_fog_texture
+
+ void glTextureFogSGIX (GLenum pname)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space b/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space
new file mode 100644
index 0000000..94196c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space
@@ -0,0 +1,8 @@
+GL_SGIX_fragment_lighting_space
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_lighting_space.txt
+GL_SGIX_fragment_lighting_space
+
+ GL_EYE_SPACE_SGIX 0x8436
+ GL_TANGENT_SPACE_SGIX 0x8437
+ GL_OBJECT_SPACE_SGIX 0x8438
+ GL_FRAGMENT_LIGHT_SPACE_SGIX 0x843D
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting b/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting
new file mode 100644
index 0000000..f84ace8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting
@@ -0,0 +1,21 @@
+GL_SGIX_fragment_specular_lighting
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_specular_lighting.txt
+GL_SGIX_fragment_specular_lighting
+
+ void glFragmentColorMaterialSGIX (GLenum face, GLenum mode)
+ void glFragmentLightModelfSGIX (GLenum pname, GLfloat param)
+ void glFragmentLightModelfvSGIX (GLenum pname, GLfloat* params)
+ void glFragmentLightModeliSGIX (GLenum pname, GLint param)
+ void glFragmentLightModelivSGIX (GLenum pname, GLint* params)
+ void glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param)
+ void glFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat* params)
+ void glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param)
+ void glFragmentLightivSGIX (GLenum light, GLenum pname, GLint* params)
+ void glFragmentMaterialfSGIX (GLenum face, GLenum pname, const GLfloat param)
+ void glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat* params)
+ void glFragmentMaterialiSGIX (GLenum face, GLenum pname, const GLint param)
+ void glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint* params)
+ void glGetFragmentLightfvSGIX (GLenum light, GLenum value, GLfloat* data)
+ void glGetFragmentLightivSGIX (GLenum light, GLenum value, GLint* data)
+ void glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat* data)
+ void glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint* data)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragments_instrument b/glew/auto/extensions/gl/GL_SGIX_fragments_instrument
new file mode 100644
index 0000000..df581fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragments_instrument
@@ -0,0 +1,7 @@
+GL_SGIX_fragments_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragments_instrument.txt
+GL_SGIX_fragments_instrument
+
+ GL_FRAGMENTS_INSTRUMENT_SGIX 0x8313
+ GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX 0x8314
+ GL_FRAGMENTS_INSTRUMENT_MAX_SGIX 0x8315
diff --git a/glew/auto/extensions/gl/GL_SGIX_framezoom b/glew/auto/extensions/gl/GL_SGIX_framezoom
new file mode 100644
index 0000000..b1274a6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_framezoom
@@ -0,0 +1,5 @@
+GL_SGIX_framezoom
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_framezoom.txt
+GL_SGIX_framezoom
+
+ void glFrameZoomSGIX (GLint factor)
diff --git a/glew/auto/extensions/gl/GL_SGIX_icc_texture b/glew/auto/extensions/gl/GL_SGIX_icc_texture
new file mode 100644
index 0000000..d73d206
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_icc_texture
@@ -0,0 +1,16 @@
+GL_SGIX_icc_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_icc_texture.txt
+GL_SGIX_icc_texture
+
+ GL_RGB_ICC_SGIX 0x8460
+ GL_RGBA_ICC_SGIX 0x8461
+ GL_ALPHA_ICC_SGIX 0x8462
+ GL_LUMINANCE_ICC_SGIX 0x8463
+ GL_INTENSITY_ICC_SGIX 0x8464
+ GL_LUMINANCE_ALPHA_ICC_SGIX 0x8465
+ GL_R5_G6_B5_ICC_SGIX 0x8466
+ GL_R5_G6_B5_A8_ICC_SGIX 0x8467
+ GL_ALPHA16_ICC_SGIX 0x8468
+ GL_LUMINANCE16_ICC_SGIX 0x8469
+ GL_INTENSITY16_ICC_SGIX 0x846A
+ GL_LUMINANCE16_ALPHA8_ICC_SGIX 0x846B
diff --git a/glew/auto/extensions/gl/GL_SGIX_igloo_interface b/glew/auto/extensions/gl/GL_SGIX_igloo_interface
new file mode 100644
index 0000000..31c75e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_igloo_interface
@@ -0,0 +1,13 @@
+GL_SGIX_igloo_interface
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_igloo_interface.txt
+GL_SGIX_igloo_interface
+
+ GL_IGLOO_FULLSCREEN_SGIX 0x819E
+ GL_IGLOO_VIEWPORT_OFFSET_SGIX 0x819F
+ GL_IGLOO_SWAPTMESH_SGIX 0x81A0
+ GL_IGLOO_COLORNORMAL_SGIX 0x81A1
+ GL_IGLOO_IRISGL_MODE_SGIX 0x81A2
+ GL_IGLOO_LMC_COLOR_SGIX 0x81A3
+ GL_IGLOO_TMESHMODE_SGIX 0x81A4
+ GL_LIGHT31 0xBEAD
+ void glIglooInterfaceSGIX (GLenum pname, void *param)
diff --git a/glew/auto/extensions/gl/GL_SGIX_image_compression b/glew/auto/extensions/gl/GL_SGIX_image_compression
new file mode 100644
index 0000000..fce8e02
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_image_compression
@@ -0,0 +1,4 @@
+GL_SGIX_image_compression
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_image_compression.txt
+GL_SGIX_image_compression
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture b/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture
new file mode 100644
index 0000000..747a459
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture
@@ -0,0 +1,4 @@
+GL_SGIX_impact_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_impact_pixel_texture.txt
+GL_SGIX_impact_pixel_texture
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_instrument_error b/glew/auto/extensions/gl/GL_SGIX_instrument_error
new file mode 100644
index 0000000..dd269e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_instrument_error
@@ -0,0 +1,4 @@
+GL_SGIX_instrument_error
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_instrument_error.txt
+GL_SGIX_instrument_error
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_interlace b/glew/auto/extensions/gl/GL_SGIX_interlace
new file mode 100644
index 0000000..bf6bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_interlace
@@ -0,0 +1,5 @@
+GL_SGIX_interlace
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_interlace.txt
+GL_SGIX_interlace
+
+ GL_INTERLACE_SGIX 0x8094
diff --git a/glew/auto/extensions/gl/GL_SGIX_ir_instrument1 b/glew/auto/extensions/gl/GL_SGIX_ir_instrument1
new file mode 100644
index 0000000..7132fdb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ir_instrument1
@@ -0,0 +1,4 @@
+GL_SGIX_ir_instrument1
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ir_instrument1.txt
+GL_SGIX_ir_instrument1
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_line_quality_hint b/glew/auto/extensions/gl/GL_SGIX_line_quality_hint
new file mode 100644
index 0000000..11256dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_line_quality_hint
@@ -0,0 +1,5 @@
+GL_SGIX_line_quality_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_line_quality_hint.txt
+GL_SGIX_line_quality_hint
+
+ GL_LINE_QUALITY_HINT_SGIX 0x835B
diff --git a/glew/auto/extensions/gl/GL_SGIX_list_priority b/glew/auto/extensions/gl/GL_SGIX_list_priority
new file mode 100644
index 0000000..b1f6e84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_list_priority
@@ -0,0 +1,4 @@
+GL_SGIX_list_priority
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_list_priority.txt
+GL_SGIX_list_priority
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_mpeg1 b/glew/auto/extensions/gl/GL_SGIX_mpeg1
new file mode 100644
index 0000000..1025217
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_mpeg1
@@ -0,0 +1,15 @@
+GL_SGIX_mpeg1
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg1.txt
+GL_SGIX_mpeg1
+
+ void glAllocMPEGPredictorsSGIX (GLsizei width, GLsizei height, GLsizei n, GLuint* predictors)
+ void glDeleteMPEGPredictorsSGIX (GLsizei n, GLuint* predictors)
+ void glGenMPEGPredictorsSGIX (GLsizei n, GLuint* predictors)
+ void glGetMPEGParameterfvSGIX (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMPEGParameterivSGIX (GLenum target, GLenum pname, GLint* params)
+ void glGetMPEGPredictorSGIX (GLenum target, GLenum format, GLenum type, void *pixels)
+ void glGetMPEGQuantTableubv (GLenum target, GLubyte* values)
+ GLboolean glIsMPEGPredictorSGIX (GLuint predictor)
+ void glMPEGPredictorSGIX (GLenum target, GLenum format, GLenum type, void *pixels)
+ void glMPEGQuantTableubv (GLenum target, GLubyte* values)
+ void glSwapMPEGPredictorsSGIX (GLenum target0, GLenum target1)
diff --git a/glew/auto/extensions/gl/GL_SGIX_mpeg2 b/glew/auto/extensions/gl/GL_SGIX_mpeg2
new file mode 100644
index 0000000..879ad63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_mpeg2
@@ -0,0 +1,4 @@
+GL_SGIX_mpeg2
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg2.txt
+GL_SGIX_mpeg2
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex b/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex
new file mode 100644
index 0000000..c58f5df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex
@@ -0,0 +1,8 @@
+GL_SGIX_nonlinear_lighting_pervertex
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nonlinear_lighting_pervertex.txt
+GL_SGIX_nonlinear_lighting_pervertex
+
+ void glGetNonlinLightfvSGIX (GLenum light, GLenum pname, GLint* terms, GLfloat *data)
+ void glGetNonlinMaterialfvSGIX (GLenum face, GLenum pname, GLint* terms, const GLfloat *data)
+ void glNonlinLightfvSGIX (GLenum light, GLenum pname, GLint terms, GLfloat* params)
+ void glNonlinMaterialfvSGIX (GLenum face, GLenum pname, GLint terms, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_SGIX_nurbs_eval b/glew/auto/extensions/gl/GL_SGIX_nurbs_eval
new file mode 100644
index 0000000..ed18763
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_nurbs_eval
@@ -0,0 +1,24 @@
+GL_SGIX_nurbs_eval
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nurbs_eval.txt
+GL_SGIX_nurbs_eval
+
+ GL_MAP1_VERTEX_3_NURBS_SGIX 0x81CB
+ GL_MAP1_VERTEX_4_NURBS_SGIX 0x81CC
+ GL_MAP1_INDEX_NURBS_SGIX 0x81CD
+ GL_MAP1_COLOR_4_NURBS_SGIX 0x81CE
+ GL_MAP1_NORMAL_NURBS_SGIX 0x81CF
+ GL_MAP1_TEXTURE_COORD_1_NURBS_SGIX 0x81E0
+ GL_MAP1_TEXTURE_COORD_2_NURBS_SGIX 0x81E1
+ GL_MAP1_TEXTURE_COORD_3_NURBS_SGIX 0x81E2
+ GL_MAP1_TEXTURE_COORD_4_NURBS_SGIX 0x81E3
+ GL_MAP2_VERTEX_3_NURBS_SGIX 0x81E4
+ GL_MAP2_VERTEX_4_NURBS_SGIX 0x81E5
+ GL_MAP2_INDEX_NURBS_SGIX 0x81E6
+ GL_MAP2_COLOR_4_NURBS_SGIX 0x81E7
+ GL_MAP2_NORMAL_NURBS_SGIX 0x81E8
+ GL_MAP2_TEXTURE_COORD_1_NURBS_SGIX 0x81E9
+ GL_MAP2_TEXTURE_COORD_2_NURBS_SGIX 0x81EA
+ GL_MAP2_TEXTURE_COORD_3_NURBS_SGIX 0x81EB
+ GL_MAP2_TEXTURE_COORD_4_NURBS_SGIX 0x81EC
+ GL_NURBS_KNOT_COUNT_SGIX 0x81ED
+ GL_NURBS_KNOT_VECTOR_SGIX 0x81EE
diff --git a/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument b/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument
new file mode 100644
index 0000000..ddbfbcb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument
@@ -0,0 +1,5 @@
+GL_SGIX_occlusion_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_occlusion_instrument.txt
+GL_SGIX_occlusion_instrument
+
+ GL_OCCLUSION_INSTRUMENT_SGIX 0x6060
diff --git a/glew/auto/extensions/gl/GL_SGIX_packed_6bytes b/glew/auto/extensions/gl/GL_SGIX_packed_6bytes
new file mode 100644
index 0000000..d5f112d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_packed_6bytes
@@ -0,0 +1,4 @@
+GL_SGIX_packed_6bytes
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_packed_6bytes.txt
+GL_SGIX_packed_6bytes
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture b/glew/auto/extensions/gl/GL_SGIX_pixel_texture
new file mode 100644
index 0000000..eee7904
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture
@@ -0,0 +1,5 @@
+GL_SGIX_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture.txt
+GL_SGIX_pixel_texture
+
+ void glPixelTexGenSGIX (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits
new file mode 100644
index 0000000..76f4e86
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_texture_bits
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_bits.txt
+GL_SGIX_pixel_texture_bits
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod
new file mode 100644
index 0000000..98d1d21
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_lod.txt
+GL_SGIX_pixel_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_tiles b/glew/auto/extensions/gl/GL_SGIX_pixel_tiles
new file mode 100644
index 0000000..24125fe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_tiles
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_tiles
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_tiles.txt
+GL_SGIX_pixel_tiles
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd b/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd
new file mode 100644
index 0000000..69f6019
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd
@@ -0,0 +1,8 @@
+GL_SGIX_polynomial_ffd
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_polynomial_ffd.txt
+GL_SGIX_polynomial_ffd
+
+ GL_TEXTURE_DEFORMATION_BIT_SGIX 0x1
+ GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x2
+ void glDeformSGIX (GLbitfield mask)
+ void glLoadIdentityDeformationMapSGIX (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_SGIX_quad_mesh b/glew/auto/extensions/gl/GL_SGIX_quad_mesh
new file mode 100644
index 0000000..19b3393
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_quad_mesh
@@ -0,0 +1,6 @@
+GL_SGIX_quad_mesh
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_quad_mesh.txt
+GL_SGIX_quad_mesh
+
+ void glMeshBreadthSGIX (GLint breadth)
+ void glMeshStrideSGIX (GLint stride)
diff --git a/glew/auto/extensions/gl/GL_SGIX_reference_plane b/glew/auto/extensions/gl/GL_SGIX_reference_plane
new file mode 100644
index 0000000..ed55a0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_reference_plane
@@ -0,0 +1,5 @@
+GL_SGIX_reference_plane
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_reference_plane.txt
+GL_SGIX_reference_plane
+
+ void glReferencePlaneSGIX (const GLdouble* equation)
diff --git a/glew/auto/extensions/gl/GL_SGIX_resample b/glew/auto/extensions/gl/GL_SGIX_resample
new file mode 100644
index 0000000..c3a8a31
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_resample
@@ -0,0 +1,9 @@
+GL_SGIX_resample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_resample.txt
+GL_SGIX_resample
+
+ GL_PACK_RESAMPLE_SGIX 0x842E
+ GL_UNPACK_RESAMPLE_SGIX 0x842F
+ GL_RESAMPLE_DECIMATE_SGIX 0x8430
+ GL_RESAMPLE_REPLICATE_SGIX 0x8433
+ GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
diff --git a/glew/auto/extensions/gl/GL_SGIX_scalebias_hint b/glew/auto/extensions/gl/GL_SGIX_scalebias_hint
new file mode 100644
index 0000000..6eb5f19
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_scalebias_hint
@@ -0,0 +1,5 @@
+GL_SGIX_scalebias_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_scalebias_hint.txt
+GL_SGIX_scalebias_hint
+
+ GL_SCALEBIAS_HINT_SGIX 0x8322
diff --git a/glew/auto/extensions/gl/GL_SGIX_shadow b/glew/auto/extensions/gl/GL_SGIX_shadow
new file mode 100644
index 0000000..3580721
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_shadow
@@ -0,0 +1,8 @@
+GL_SGIX_shadow
+http://oss.sgi.com/projects/ogl-sample/registry/SGIX/shadow.txt
+GL_SGIX_shadow
+
+ GL_TEXTURE_COMPARE_SGIX 0x819A
+ GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+ GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+ GL_TEXTURE_GEQUAL_R_SGIX 0x819D
diff --git a/glew/auto/extensions/gl/GL_SGIX_shadow_ambient b/glew/auto/extensions/gl/GL_SGIX_shadow_ambient
new file mode 100644
index 0000000..94b4d30
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_shadow_ambient
@@ -0,0 +1,5 @@
+GL_SGIX_shadow_ambient
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_shadow_ambient.txt
+GL_SGIX_shadow_ambient
+
+ GL_SHADOW_AMBIENT_SGIX 0x80BF
diff --git a/glew/auto/extensions/gl/GL_SGIX_slim b/glew/auto/extensions/gl/GL_SGIX_slim
new file mode 100644
index 0000000..229af5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_slim
@@ -0,0 +1,8 @@
+GL_SGIX_slim
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_slim.txt
+GL_SGIX_slim
+
+ GL_PACK_MAX_COMPRESSED_SIZE_SGIX 0x831B
+ GL_SLIM8U_SGIX 0x831D
+ GL_SLIM10U_SGIX 0x831E
+ GL_SLIM12S_SGIX 0x831F
diff --git a/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff b/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff
new file mode 100644
index 0000000..2114034
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff
@@ -0,0 +1,5 @@
+GL_SGIX_spotlight_cutoff
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_spotlight_cutoff.txt
+GL_SGIX_spotlight_cutoff
+
+ GL_SPOT_CUTOFF_DELTA_SGIX 0x8193
diff --git a/glew/auto/extensions/gl/GL_SGIX_sprite b/glew/auto/extensions/gl/GL_SGIX_sprite
new file mode 100644
index 0000000..33aaf0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_sprite
@@ -0,0 +1,8 @@
+GL_SGIX_sprite
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_sprite.txt
+GL_SGIX_sprite
+
+ void glSpriteParameterfSGIX (GLenum pname, GLfloat param)
+ void glSpriteParameterfvSGIX (GLenum pname, GLfloat* params)
+ void glSpriteParameteriSGIX (GLenum pname, GLint param)
+ void glSpriteParameterivSGIX (GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_SGIX_subdiv_patch b/glew/auto/extensions/gl/GL_SGIX_subdiv_patch
new file mode 100644
index 0000000..46f20ab
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_subdiv_patch
@@ -0,0 +1,4 @@
+GL_SGIX_subdiv_patch
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subdiv_patch.txt
+GL_SGIX_subdiv_patch
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_subsample b/glew/auto/extensions/gl/GL_SGIX_subsample
new file mode 100644
index 0000000..43a7bd8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_subsample
@@ -0,0 +1,9 @@
+GL_SGIX_subsample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subsample.txt
+GL_SGIX_subsample
+
+ GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+ GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+ GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+ GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+ GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
diff --git a/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer b/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer
new file mode 100644
index 0000000..58dad01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer
@@ -0,0 +1,5 @@
+GL_SGIX_tag_sample_buffer
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_tag_sample_buffer.txt
+GL_SGIX_tag_sample_buffer
+
+ void glTagSampleBufferSGIX (void)
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_add_env b/glew/auto/extensions/gl/GL_SGIX_texture_add_env
new file mode 100644
index 0000000..93ab1b5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_add_env
@@ -0,0 +1,4 @@
+GL_SGIX_texture_add_env
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_add_env.txt
+GL_SGIX_texture_add_env
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp b/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp
new file mode 100644
index 0000000..144c5ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp
@@ -0,0 +1,7 @@
+GL_SGIX_texture_coordinate_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_coordinate_clamp.txt
+GL_SGIX_texture_coordinate_clamp
+
+ GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+ GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+ GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias b/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias
new file mode 100644
index 0000000..3013afd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias
@@ -0,0 +1,4 @@
+GL_SGIX_texture_lod_bias
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_lod_bias.txt
+GL_SGIX_texture_lod_bias
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic b/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic
new file mode 100644
index 0000000..912a31c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic
@@ -0,0 +1,6 @@
+GL_SGIX_texture_mipmap_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_mipmap_anisotropic.txt
+GL_SGIX_texture_mipmap_anisotropic
+
+ GL_TEXTURE_MIPMAP_ANISOTROPY_SGIX 0x832E
+ GL_MAX_MIPMAP_ANISOTROPY_SGIX 0x832F
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer b/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer
new file mode 100644
index 0000000..ce0e0cb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer
@@ -0,0 +1,5 @@
+GL_SGIX_texture_multi_buffer
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_multi_buffer.txt
+GL_SGIX_texture_multi_buffer
+
+ GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_phase b/glew/auto/extensions/gl/GL_SGIX_texture_phase
new file mode 100644
index 0000000..533f094
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_phase
@@ -0,0 +1,5 @@
+GL_SGIX_texture_phase
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_phase.txt
+GL_SGIX_texture_phase
+
+ GL_PHASE_SGIX 0x832A
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_range b/glew/auto/extensions/gl/GL_SGIX_texture_range
new file mode 100644
index 0000000..9d92645
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_range
@@ -0,0 +1,32 @@
+GL_SGIX_texture_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_range.txt
+GL_SGIX_texture_range
+
+ GL_RGB_SIGNED_SGIX 0x85E0
+ GL_RGBA_SIGNED_SGIX 0x85E1
+ GL_ALPHA_SIGNED_SGIX 0x85E2
+ GL_LUMINANCE_SIGNED_SGIX 0x85E3
+ GL_INTENSITY_SIGNED_SGIX 0x85E4
+ GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5
+ GL_RGB16_SIGNED_SGIX 0x85E6
+ GL_RGBA16_SIGNED_SGIX 0x85E7
+ GL_ALPHA16_SIGNED_SGIX 0x85E8
+ GL_LUMINANCE16_SIGNED_SGIX 0x85E9
+ GL_INTENSITY16_SIGNED_SGIX 0x85EA
+ GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB
+ GL_RGB_EXTENDED_RANGE_SGIX 0x85EC
+ GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED
+ GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE
+ GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF
+ GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0
+ GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1
+ GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2
+ GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3
+ GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4
+ GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5
+ GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6
+ GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7
+ GL_MIN_LUMINANCE_SGIS 0x85F8
+ GL_MAX_LUMINANCE_SGIS 0x85F9
+ GL_MIN_INTENSITY_SGIS 0x85FA
+ GL_MAX_INTENSITY_SGIS 0x85FB
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias b/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias
new file mode 100644
index 0000000..83abc43
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias
@@ -0,0 +1,8 @@
+GL_SGIX_texture_scale_bias
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_scale_bias.txt
+GL_SGIX_texture_scale_bias
+
+ GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+ GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+ GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+ GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_supersample b/glew/auto/extensions/gl/GL_SGIX_texture_supersample
new file mode 100644
index 0000000..4d508be
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_supersample
@@ -0,0 +1,4 @@
+GL_SGIX_texture_supersample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_supersample.txt
+GL_SGIX_texture_supersample
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_vector_ops b/glew/auto/extensions/gl/GL_SGIX_vector_ops
new file mode 100644
index 0000000..6fe7a1b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vector_ops
@@ -0,0 +1,6 @@
+GL_SGIX_vector_ops
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vector_ops.txt
+GL_SGIX_vector_ops
+
+ void glGetVectorOperationSGIX (GLenum operation)
+ void glVectorOperationSGIX (GLenum operation)
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_array_object b/glew/auto/extensions/gl/GL_SGIX_vertex_array_object
new file mode 100644
index 0000000..89d24a4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_array_object
@@ -0,0 +1,10 @@
+GL_SGIX_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_array_object.txt
+GL_SGIX_vertex_array_object
+
+ GLboolean glAreVertexArraysResidentSGIX (GLsizei n, const GLuint* arrays, GLboolean* residences)
+ void glBindVertexArraySGIX (GLuint array)
+ void glDeleteVertexArraysSGIX (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysSGIX (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArraySGIX (GLuint array)
+ void glPrioritizeVertexArraysSGIX (GLsizei n, const GLuint* arrays, const GLclampf* priorities)
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_preclip b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip
new file mode 100644
index 0000000..541b535
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip
@@ -0,0 +1,6 @@
+GL_SGIX_vertex_preclip
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt
+GL_SGIX_vertex_preclip
+
+ GL_VERTEX_PRECLIP_SGIX 0x83EE
+ GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint
new file mode 100644
index 0000000..151bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint
@@ -0,0 +1,6 @@
+GL_SGIX_vertex_preclip_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt
+GL_SGIX_vertex_preclip_hint
+
+ GL_VERTEX_PRECLIP_SGIX 0x83EE
+ GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcb b/glew/auto/extensions/gl/GL_SGIX_ycrcb
new file mode 100644
index 0000000..56a65d9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcb
@@ -0,0 +1,4 @@
+GL_SGIX_ycrcb
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb.txt
+GL_SGIX_ycrcb
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample b/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample
new file mode 100644
index 0000000..4b560c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample
@@ -0,0 +1,4 @@
+GL_SGIX_ycrcb_subsample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb_subsample.txt
+GL_SGIX_ycrcb_subsample
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcba b/glew/auto/extensions/gl/GL_SGIX_ycrcba
new file mode 100644
index 0000000..13bc3d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcba
@@ -0,0 +1,6 @@
+GL_SGIX_ycrcba
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcba.txt
+GL_SGIX_ycrcba
+
+ GL_YCRCB_SGIX 0x8318
+ GL_YCRCBA_SGIX 0x8319
diff --git a/glew/auto/extensions/gl/GL_SGI_color_matrix b/glew/auto/extensions/gl/GL_SGI_color_matrix
new file mode 100644
index 0000000..52ecd17
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_color_matrix
@@ -0,0 +1,15 @@
+GL_SGI_color_matrix
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_matrix.txt
+GL_SGI_color_matrix
+
+ GL_COLOR_MATRIX_SGI 0x80B1
+ GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+ GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+ GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+ GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+ GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+ GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+ GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
diff --git a/glew/auto/extensions/gl/GL_SGI_color_table b/glew/auto/extensions/gl/GL_SGI_color_table
new file mode 100644
index 0000000..fb7b974
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_color_table
@@ -0,0 +1,27 @@
+GL_SGI_color_table
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_table.txt
+GL_SGI_color_table
+
+ GL_COLOR_TABLE_SGI 0x80D0
+ GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+ GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+ GL_PROXY_COLOR_TABLE_SGI 0x80D3
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+ GL_COLOR_TABLE_SCALE_SGI 0x80D6
+ GL_COLOR_TABLE_BIAS_SGI 0x80D7
+ GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+ GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+ GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+ void glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat* params)
+ void glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint* params)
+ void glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)
+ void glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat* params)
+ void glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint* params)
+ void glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table)
diff --git a/glew/auto/extensions/gl/GL_SGI_complex b/glew/auto/extensions/gl/GL_SGI_complex
new file mode 100644
index 0000000..38462af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_complex
@@ -0,0 +1,4 @@
+GL_SGI_complex
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex.txt
+GL_SGI_complex
+
diff --git a/glew/auto/extensions/gl/GL_SGI_complex_type b/glew/auto/extensions/gl/GL_SGI_complex_type
new file mode 100644
index 0000000..b77ac54
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_complex_type
@@ -0,0 +1,11 @@
+GL_SGI_complex_type
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex_type.txt
+GL_SGI_complex_type
+
+ GL_COMPLEX_UNSIGNED_BYTE_SGI 0x81BD
+ GL_COMPLEX_BYTE_SGI 0x81BE
+ GL_COMPLEX_UNSIGNED_SHORT_SGI 0x81BF
+ GL_COMPLEX_SHORT_SGI 0x81C0
+ GL_COMPLEX_UNSIGNED_INT_SGI 0x81C1
+ GL_COMPLEX_INT_SGI 0x81C2
+ GL_COMPLEX_FLOAT_SGI 0x81C3
diff --git a/glew/auto/extensions/gl/GL_SGI_fft b/glew/auto/extensions/gl/GL_SGI_fft
new file mode 100644
index 0000000..cd53834
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_fft
@@ -0,0 +1,16 @@
+GL_SGI_fft
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_fft.txt
+GL_SGI_fft
+
+ GL_PIXEL_TRANSFORM_OPERATOR_SGI 0x81C4
+ GL_CONVOLUTION_SGI 0x81C5
+ GL_FFT_1D_SGI 0x81C6
+ GL_PIXEL_TRANSFORM_SGI 0x81C7
+ GL_MAX_FFT_WIDTH_SGI 0x81C8
+ void glGetPixelTransformParameterfvSGI (GLenum target, GLenum pname, GLfloat* params)
+ void glGetPixelTransformParameterivSGI (GLenum target, GLenum pname, GLint* params)
+ void glPixelTransformParameterfSGI (GLenum target, GLenum pname, GLfloat param)
+ void glPixelTransformParameterfvSGI (GLenum target, GLenum pname, const GLfloat* params)
+ void glPixelTransformParameteriSGI (GLenum target, GLenum pname, GLint param)
+ void glPixelTransformParameterivSGI (GLenum target, GLenum pname, const GLint* params)
+ void glPixelTransformSGI (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_SGI_texture_color_table b/glew/auto/extensions/gl/GL_SGI_texture_color_table
new file mode 100644
index 0000000..ee795dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_texture_color_table
@@ -0,0 +1,6 @@
+GL_SGI_texture_color_table
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_texture_color_table.txt
+GL_SGI_texture_color_table
+
+ GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+ GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
diff --git a/glew/auto/extensions/gl/GL_SUNX_constant_data b/glew/auto/extensions/gl/GL_SUNX_constant_data
new file mode 100644
index 0000000..e15b7e2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUNX_constant_data
@@ -0,0 +1,7 @@
+GL_SUNX_constant_data
+https://www.khronos.org/registry/OpenGL/extensions/SUNX/SUNX_constant_data.txt
+GL_SUNX_constant_data
+
+ GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+ GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+ void glFinishTextureSUNX (void)
diff --git a/glew/auto/extensions/gl/GL_SUN_convolution_border_modes b/glew/auto/extensions/gl/GL_SUN_convolution_border_modes
new file mode 100644
index 0000000..62524fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_convolution_border_modes
@@ -0,0 +1,5 @@
+GL_SUN_convolution_border_modes
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_convolution_border_modes.txt
+GL_SUN_convolution_border_modes
+
+ GL_WRAP_BORDER_SUN 0x81D4
diff --git a/glew/auto/extensions/gl/GL_SUN_global_alpha b/glew/auto/extensions/gl/GL_SUN_global_alpha
new file mode 100644
index 0000000..94e192b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_global_alpha
@@ -0,0 +1,14 @@
+GL_SUN_global_alpha
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_global_alpha.txt
+GL_SUN_global_alpha
+
+ GL_GLOBAL_ALPHA_SUN 0x81D9
+ GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+ void glGlobalAlphaFactorbSUN (GLbyte factor)
+ void glGlobalAlphaFactordSUN (GLdouble factor)
+ void glGlobalAlphaFactorfSUN (GLfloat factor)
+ void glGlobalAlphaFactoriSUN (GLint factor)
+ void glGlobalAlphaFactorsSUN (GLshort factor)
+ void glGlobalAlphaFactorubSUN (GLubyte factor)
+ void glGlobalAlphaFactoruiSUN (GLuint factor)
+ void glGlobalAlphaFactorusSUN (GLushort factor)
diff --git a/glew/auto/extensions/gl/GL_SUN_mesh_array b/glew/auto/extensions/gl/GL_SUN_mesh_array
new file mode 100644
index 0000000..06221ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_mesh_array
@@ -0,0 +1,6 @@
+GL_SUN_mesh_array
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_mesh_array.txt
+GL_SUN_mesh_array
+
+ GL_QUAD_MESH_SUN 0x8614
+ GL_TRIANGLE_MESH_SUN 0x8615
diff --git a/glew/auto/extensions/gl/GL_SUN_read_video_pixels b/glew/auto/extensions/gl/GL_SUN_read_video_pixels
new file mode 100644
index 0000000..871e6f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_read_video_pixels
@@ -0,0 +1,5 @@
+GL_SUN_read_video_pixels
+http://wwws.sun.com/software/graphics/opengl/extensions/gl_sun_read_video_pixels.txt
+GL_SUN_read_video_pixels
+
+ void glReadVideoPixelsSUN (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
diff --git a/glew/auto/extensions/gl/GL_SUN_slice_accum b/glew/auto/extensions/gl/GL_SUN_slice_accum
new file mode 100644
index 0000000..24cee68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_slice_accum
@@ -0,0 +1,5 @@
+GL_SUN_slice_accum
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_slice_accum.txt
+GL_SUN_slice_accum
+
+ GL_SLICE_ACCUM_SUN 0x85CC
diff --git a/glew/auto/extensions/gl/GL_SUN_triangle_list b/glew/auto/extensions/gl/GL_SUN_triangle_list
new file mode 100644
index 0000000..b517b89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_triangle_list
@@ -0,0 +1,28 @@
+GL_SUN_triangle_list
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_triangle_list.txt
+GL_SUN_triangle_list
+
+ GL_RESTART_SUN 0x01
+ GL_REPLACE_MIDDLE_SUN 0x02
+ GL_REPLACE_OLDEST_SUN 0x03
+ GL_TRIANGLE_LIST_SUN 0x81D7
+ GL_REPLACEMENT_CODE_SUN 0x81D8
+ GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+ GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+ GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+ GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+ GL_R1UI_V3F_SUN 0x85C4
+ GL_R1UI_C4UB_V3F_SUN 0x85C5
+ GL_R1UI_C3F_V3F_SUN 0x85C6
+ GL_R1UI_N3F_V3F_SUN 0x85C7
+ GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+ GL_R1UI_T2F_V3F_SUN 0x85C9
+ GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+ GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+ void glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void *pointer)
+ void glReplacementCodeubSUN (GLubyte code)
+ void glReplacementCodeubvSUN (const GLubyte* code)
+ void glReplacementCodeuiSUN (GLuint code)
+ void glReplacementCodeuivSUN (const GLuint* code)
+ void glReplacementCodeusSUN (GLushort code)
+ void glReplacementCodeusvSUN (const GLushort* code)
diff --git a/glew/auto/extensions/gl/GL_SUN_vertex b/glew/auto/extensions/gl/GL_SUN_vertex
new file mode 100644
index 0000000..b5fe438
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_vertex
@@ -0,0 +1,44 @@
+GL_SUN_vertex
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_vertex.txt
+GL_SUN_vertex
+
+ void glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glColor3fVertex3fvSUN (const GLfloat* c, const GLfloat *v)
+ void glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glColor4fNormal3fVertex3fvSUN (const GLfloat* c, const GLfloat *n, const GLfloat *v)
+ void glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y)
+ void glColor4ubVertex2fvSUN (const GLubyte* c, const GLfloat *v)
+ void glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glColor4ubVertex3fvSUN (const GLubyte* c, const GLfloat *v)
+ void glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glNormal3fVertex3fvSUN (const GLfloat* n, const GLfloat *v)
+ void glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor3fVertex3fvSUN (const GLuint* rc, const GLfloat *c, const GLfloat *v)
+ void glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint* rc, const GLubyte *c, const GLfloat *v)
+ void glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *v)
+ void glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiVertex3fvSUN (const GLuint* rc, const GLfloat *v)
+ void glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor3fVertex3fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *v)
+ void glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor4ubVertex3fvSUN (const GLfloat* tc, const GLubyte *c, const GLfloat *v)
+ void glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fNormal3fVertex3fvSUN (const GLfloat* tc, const GLfloat *n, const GLfloat *v)
+ void glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fVertex3fvSUN (const GLfloat* tc, const GLfloat *v)
+ void glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glTexCoord4fVertex4fvSUN (const GLfloat* tc, const GLfloat *v)
diff --git a/glew/auto/extensions/gl/GL_VIV_shader_binary b/glew/auto/extensions/gl/GL_VIV_shader_binary
new file mode 100644
index 0000000..7010bcf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_VIV_shader_binary
@@ -0,0 +1,5 @@
+GL_VIV_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/VIV/VIV_shader_binary.txt
+GL_VIV_shader_binary
+
+ GL_SHADER_BINARY_VIV 0x8FC4
diff --git a/glew/auto/extensions/gl/GL_WIN_phong_shading b/glew/auto/extensions/gl/GL_WIN_phong_shading
new file mode 100644
index 0000000..d2fb4e1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_phong_shading
@@ -0,0 +1,6 @@
+GL_WIN_phong_shading
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_phong_shading.txt
+GL_WIN_phong_shading
+
+ GL_PHONG_WIN 0x80EA
+ GL_PHONG_HINT_WIN 0x80EB
diff --git a/glew/auto/extensions/gl/GL_WIN_scene_markerXXX b/glew/auto/extensions/gl/GL_WIN_scene_markerXXX
new file mode 100644
index 0000000..88e2d01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_scene_markerXXX
@@ -0,0 +1,4 @@
+GL_WIN_scene_markerXXX
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_scene_markerXXX.txt
+GL_WIN_scene_markerXXX
+
diff --git a/glew/auto/extensions/gl/GL_WIN_specular_fog b/glew/auto/extensions/gl/GL_WIN_specular_fog
new file mode 100644
index 0000000..1fae8b8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_specular_fog
@@ -0,0 +1,5 @@
+GL_WIN_specular_fog
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_specular_fog.txt
+GL_WIN_specular_fog
+
+ GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
diff --git a/glew/auto/extensions/gl/GL_WIN_swap_hint b/glew/auto/extensions/gl/GL_WIN_swap_hint
new file mode 100644
index 0000000..9bb490b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_swap_hint
@@ -0,0 +1,5 @@
+GL_WIN_swap_hint
+http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_16zy.asp
+GL_WIN_swap_hint
+
+ void glAddSwapHintRectWIN (GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/WGL_3DFX_multisample b/glew/auto/extensions/gl/WGL_3DFX_multisample
new file mode 100644
index 0000000..23e158e
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_3DFX_multisample
@@ -0,0 +1,6 @@
+WGL_3DFX_multisample
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/WGL_3DFX_multisample.txt
+WGL_3DFX_multisample
+
+ WGL_SAMPLE_BUFFERS_3DFX 0x2060
+ WGL_SAMPLES_3DFX 0x2061
diff --git a/glew/auto/extensions/gl/WGL_3DL_stereo_control b/glew/auto/extensions/gl/WGL_3DL_stereo_control
new file mode 100644
index 0000000..e8c8908
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_3DL_stereo_control
@@ -0,0 +1,9 @@
+WGL_3DL_stereo_control
+https://www.khronos.org/registry/OpenGL/extensions/3DL/WGL_3DL_stereo_control.txt
+WGL_3DL_stereo_control
+
+ WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
+ WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
+ WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
+ WGL_STEREO_POLARITY_INVERT_3DL 0x2058
+ BOOL wglSetStereoEmitterState3DL (HDC hDC, UINT uState)
diff --git a/glew/auto/extensions/gl/WGL_AMD_gpu_association b/glew/auto/extensions/gl/WGL_AMD_gpu_association
new file mode 100644
index 0000000..b0ff891
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_AMD_gpu_association
@@ -0,0 +1,23 @@
+WGL_AMD_gpu_association
+https://www.khronos.org/registry/OpenGL/extensions/AMD/WGL_AMD_gpu_association.txt
+WGL_AMD_gpu_association
+
+ WGL_GPU_VENDOR_AMD 0x1F00
+ WGL_GPU_RENDERER_STRING_AMD 0x1F01
+ WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+ WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+ WGL_GPU_RAM_AMD 0x21A3
+ WGL_GPU_CLOCK_AMD 0x21A4
+ WGL_GPU_NUM_PIPES_AMD 0x21A5
+ WGL_GPU_NUM_SIMD_AMD 0x21A6
+ WGL_GPU_NUM_RB_AMD 0x21A7
+ WGL_GPU_NUM_SPI_AMD 0x21A8
+ VOID wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ HGLRC wglCreateAssociatedContextAMD (UINT id)
+ HGLRC wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int* attribList)
+ BOOL wglDeleteAssociatedContextAMD (HGLRC hglrc)
+ UINT wglGetContextGPUIDAMD (HGLRC hglrc)
+ HGLRC wglGetCurrentAssociatedContextAMD (void)
+ UINT wglGetGPUIDsAMD (UINT maxCount, UINT* ids)
+ INT wglGetGPUInfoAMD (UINT id, INT property, GLenum dataType, UINT size, void* data)
+ BOOL wglMakeAssociatedContextCurrentAMD (HGLRC hglrc)
diff --git a/glew/auto/extensions/gl/WGL_ARB_buffer_region b/glew/auto/extensions/gl/WGL_ARB_buffer_region
new file mode 100644
index 0000000..0bbee28
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_buffer_region
@@ -0,0 +1,12 @@
+WGL_ARB_buffer_region
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_buffer_region.txt
+WGL_ARB_buffer_region
+
+ WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
+ WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
+ WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
+ WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
+ HANDLE wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType)
+ VOID wglDeleteBufferRegionARB (HANDLE hRegion)
+ BOOL wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc)
+ BOOL wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height)
diff --git a/glew/auto/extensions/gl/WGL_ARB_context_flush_control b/glew/auto/extensions/gl/WGL_ARB_context_flush_control
new file mode 100644
index 0000000..aa7a837
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_context_flush_control
@@ -0,0 +1,7 @@
+WGL_ARB_context_flush_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_context_flush_control.txt
+WGL_ARB_context_flush_control
+
+ WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+ WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+ WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context b/glew/auto/extensions/gl/WGL_ARB_create_context
new file mode 100644
index 0000000..298c379
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context
@@ -0,0 +1,12 @@
+WGL_ARB_create_context
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context.txt
+WGL_ARB_create_context
+
+ WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+ WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+ WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
+ WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
+ WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
+ WGL_CONTEXT_FLAGS_ARB 0x2094
+ ERROR_INVALID_VERSION_ARB 0x2095
+ HGLRC wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int* attribList)
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_no_error b/glew/auto/extensions/gl/WGL_ARB_create_context_no_error
new file mode 100644
index 0000000..8e88b79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_no_error
@@ -0,0 +1,5 @@
+WGL_ARB_create_context_no_error
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_no_error.txt
+WGL_ARB_create_context_no_error
+
+ WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_profile b/glew/auto/extensions/gl/WGL_ARB_create_context_profile
new file mode 100644
index 0000000..28f2079
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_profile
@@ -0,0 +1,8 @@
+WGL_ARB_create_context_profile
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_profile.txt
+WGL_ARB_create_context_profile
+
+ WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+ WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+ ERROR_INVALID_PROFILE_ARB 0x2096
+ WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_robustness b/glew/auto/extensions/gl/WGL_ARB_create_context_robustness
new file mode 100644
index 0000000..1fbf6aa
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_robustness
@@ -0,0 +1,8 @@
+WGL_ARB_create_context_robustness
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_robustness.txt
+WGL_ARB_create_context_robustness
+
+ WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+ WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ WGL_NO_RESET_NOTIFICATION_ARB 0x8261
diff --git a/glew/auto/extensions/gl/WGL_ARB_extensions_string b/glew/auto/extensions/gl/WGL_ARB_extensions_string
new file mode 100644
index 0000000..5d3b6f0
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_extensions_string
@@ -0,0 +1,5 @@
+WGL_ARB_extensions_string
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_extensions_string.txt
+WGL_ARB_extensions_string
+
+ const char* wglGetExtensionsStringARB (HDC hdc)
diff --git a/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..2292233
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+WGL_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_framebuffer_sRGB.txt
+WGL_ARB_framebuffer_sRGB
+
+ WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
diff --git a/glew/auto/extensions/gl/WGL_ARB_make_current_read b/glew/auto/extensions/gl/WGL_ARB_make_current_read
new file mode 100644
index 0000000..7a147dc
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_make_current_read
@@ -0,0 +1,10 @@
+WGL_ARB_make_current_read
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_make_current_read.txt
+WGL_ARB_make_current_read
+
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+ HDC wglGetCurrentReadDCARB (void)
+ BOOL wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc)
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
diff --git a/glew/auto/extensions/gl/WGL_ARB_multisample b/glew/auto/extensions/gl/WGL_ARB_multisample
new file mode 100644
index 0000000..8ec8aee
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_multisample
@@ -0,0 +1,6 @@
+WGL_ARB_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_multisample.txt
+WGL_ARB_multisample
+
+ WGL_SAMPLE_BUFFERS_ARB 0x2041
+ WGL_SAMPLES_ARB 0x2042
diff --git a/glew/auto/extensions/gl/WGL_ARB_pbuffer b/glew/auto/extensions/gl/WGL_ARB_pbuffer
new file mode 100644
index 0000000..521f491
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pbuffer
@@ -0,0 +1,18 @@
+WGL_ARB_pbuffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pbuffer.txt
+WGL_ARB_pbuffer
+
+ WGL_DRAW_TO_PBUFFER_ARB 0x202D
+ WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
+ WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
+ WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
+ WGL_PBUFFER_LARGEST_ARB 0x2033
+ WGL_PBUFFER_WIDTH_ARB 0x2034
+ WGL_PBUFFER_HEIGHT_ARB 0x2035
+ WGL_PBUFFER_LOST_ARB 0x2036
+ HPBUFFERARB wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList)
+ BOOL wglDestroyPbufferARB (HPBUFFERARB hPbuffer)
+ HDC wglGetPbufferDCARB (HPBUFFERARB hPbuffer)
+ BOOL wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int* piValue)
+ int wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC)
+ DECLARE_HANDLE(HPBUFFERARB);
diff --git a/glew/auto/extensions/gl/WGL_ARB_pixel_format b/glew/auto/extensions/gl/WGL_ARB_pixel_format
new file mode 100644
index 0000000..dd2ca2b
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pixel_format
@@ -0,0 +1,56 @@
+WGL_ARB_pixel_format
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format.txt
+WGL_ARB_pixel_format
+
+ WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
+ WGL_DRAW_TO_WINDOW_ARB 0x2001
+ WGL_DRAW_TO_BITMAP_ARB 0x2002
+ WGL_ACCELERATION_ARB 0x2003
+ WGL_NEED_PALETTE_ARB 0x2004
+ WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
+ WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
+ WGL_SWAP_METHOD_ARB 0x2007
+ WGL_NUMBER_OVERLAYS_ARB 0x2008
+ WGL_NUMBER_UNDERLAYS_ARB 0x2009
+ WGL_TRANSPARENT_ARB 0x200A
+ WGL_SHARE_DEPTH_ARB 0x200C
+ WGL_SHARE_STENCIL_ARB 0x200D
+ WGL_SHARE_ACCUM_ARB 0x200E
+ WGL_SUPPORT_GDI_ARB 0x200F
+ WGL_SUPPORT_OPENGL_ARB 0x2010
+ WGL_DOUBLE_BUFFER_ARB 0x2011
+ WGL_STEREO_ARB 0x2012
+ WGL_PIXEL_TYPE_ARB 0x2013
+ WGL_COLOR_BITS_ARB 0x2014
+ WGL_RED_BITS_ARB 0x2015
+ WGL_RED_SHIFT_ARB 0x2016
+ WGL_GREEN_BITS_ARB 0x2017
+ WGL_GREEN_SHIFT_ARB 0x2018
+ WGL_BLUE_BITS_ARB 0x2019
+ WGL_BLUE_SHIFT_ARB 0x201A
+ WGL_ALPHA_BITS_ARB 0x201B
+ WGL_ALPHA_SHIFT_ARB 0x201C
+ WGL_ACCUM_BITS_ARB 0x201D
+ WGL_ACCUM_RED_BITS_ARB 0x201E
+ WGL_ACCUM_GREEN_BITS_ARB 0x201F
+ WGL_ACCUM_BLUE_BITS_ARB 0x2020
+ WGL_ACCUM_ALPHA_BITS_ARB 0x2021
+ WGL_DEPTH_BITS_ARB 0x2022
+ WGL_STENCIL_BITS_ARB 0x2023
+ WGL_AUX_BUFFERS_ARB 0x2024
+ WGL_NO_ACCELERATION_ARB 0x2025
+ WGL_GENERIC_ACCELERATION_ARB 0x2026
+ WGL_FULL_ACCELERATION_ARB 0x2027
+ WGL_SWAP_EXCHANGE_ARB 0x2028
+ WGL_SWAP_COPY_ARB 0x2029
+ WGL_SWAP_UNDEFINED_ARB 0x202A
+ WGL_TYPE_RGBA_ARB 0x202B
+ WGL_TYPE_COLORINDEX_ARB 0x202C
+ WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
+ WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+ WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+ WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+ WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+ BOOL wglChoosePixelFormatARB (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats)
+ BOOL wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT* pfValues)
+ BOOL wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues)
diff --git a/glew/auto/extensions/gl/WGL_ARB_pixel_format_float b/glew/auto/extensions/gl/WGL_ARB_pixel_format_float
new file mode 100644
index 0000000..e246746
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pixel_format_float
@@ -0,0 +1,5 @@
+WGL_ARB_pixel_format_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format_float.txt
+WGL_ARB_pixel_format_float
+
+ WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
diff --git a/glew/auto/extensions/gl/WGL_ARB_render_texture b/glew/auto/extensions/gl/WGL_ARB_render_texture
new file mode 100644
index 0000000..b6b9084
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_render_texture
@@ -0,0 +1,40 @@
+WGL_ARB_render_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_render_texture.txt
+WGL_ARB_render_texture
+
+ WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
+ WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
+ WGL_TEXTURE_FORMAT_ARB 0x2072
+ WGL_TEXTURE_TARGET_ARB 0x2073
+ WGL_MIPMAP_TEXTURE_ARB 0x2074
+ WGL_TEXTURE_RGB_ARB 0x2075
+ WGL_TEXTURE_RGBA_ARB 0x2076
+ WGL_NO_TEXTURE_ARB 0x2077
+ WGL_TEXTURE_CUBE_MAP_ARB 0x2078
+ WGL_TEXTURE_1D_ARB 0x2079
+ WGL_TEXTURE_2D_ARB 0x207A
+ WGL_MIPMAP_LEVEL_ARB 0x207B
+ WGL_CUBE_MAP_FACE_ARB 0x207C
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
+ WGL_FRONT_LEFT_ARB 0x2083
+ WGL_FRONT_RIGHT_ARB 0x2084
+ WGL_BACK_LEFT_ARB 0x2085
+ WGL_BACK_RIGHT_ARB 0x2086
+ WGL_AUX0_ARB 0x2087
+ WGL_AUX1_ARB 0x2088
+ WGL_AUX2_ARB 0x2089
+ WGL_AUX3_ARB 0x208A
+ WGL_AUX4_ARB 0x208B
+ WGL_AUX5_ARB 0x208C
+ WGL_AUX6_ARB 0x208D
+ WGL_AUX7_ARB 0x208E
+ WGL_AUX8_ARB 0x208F
+ WGL_AUX9_ARB 0x2090
+ BOOL wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
+ BOOL wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
+ BOOL wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int* piAttribList)
diff --git a/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation b/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation
new file mode 100644
index 0000000..fdeeede
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation
@@ -0,0 +1,5 @@
+WGL_ARB_robustness_application_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_application_isolation.txt
+WGL_ARB_robustness_application_isolation
+
+ WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..dd81503
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation
@@ -0,0 +1,5 @@
+WGL_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_share_group_isolation.txt
+WGL_ARB_robustness_share_group_isolation
+
+ WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/WGL_ATI_pixel_format_float b/glew/auto/extensions/gl/WGL_ATI_pixel_format_float
new file mode 100644
index 0000000..28a3b79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ATI_pixel_format_float
@@ -0,0 +1,7 @@
+WGL_ATI_pixel_format_float
+https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_pixel_format_float.txt
+WGL_ATI_pixel_format_float
+
+ WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
+ GL_RGBA_FLOAT_MODE_ATI 0x8820
+ GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
diff --git a/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle b/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle
new file mode 100644
index 0000000..c75ea3c
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle
@@ -0,0 +1,5 @@
+WGL_ATI_render_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_render_texture_rectangle.txt
+WGL_ATI_render_texture_rectangle
+
+ WGL_TEXTURE_RECTANGLE_ATI 0x21A5
diff --git a/glew/auto/extensions/gl/WGL_EXT_colorspace b/glew/auto/extensions/gl/WGL_EXT_colorspace
new file mode 100644
index 0000000..94d45fb
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_colorspace
@@ -0,0 +1,7 @@
+WGL_EXT_colorspace
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_colorspace.txt
+WGL_EXT_colorspace
+
+ WGL_COLORSPACE_SRGB_EXT 0x3089
+ WGL_COLORSPACE_LINEAR_EXT 0x308A
+ WGL_COLORSPACE_EXT 0x309D
diff --git a/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile b/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile
new file mode 100644
index 0000000..a4b060f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile
@@ -0,0 +1,5 @@
+WGL_EXT_create_context_es2_profile
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es2_profile.txt
+WGL_EXT_create_context_es2_profile
+
+ WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile b/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile
new file mode 100644
index 0000000..7e503c4
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile
@@ -0,0 +1,5 @@
+WGL_EXT_create_context_es_profile
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es_profile.txt
+WGL_EXT_create_context_es_profile
+
+ WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/WGL_EXT_depth_float b/glew/auto/extensions/gl/WGL_EXT_depth_float
new file mode 100644
index 0000000..a389b80
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_depth_float
@@ -0,0 +1,5 @@
+WGL_EXT_depth_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_depth_float.txt
+WGL_EXT_depth_float
+
+ WGL_DEPTH_FLOAT_EXT 0x2040
diff --git a/glew/auto/extensions/gl/WGL_EXT_display_color_table b/glew/auto/extensions/gl/WGL_EXT_display_color_table
new file mode 100644
index 0000000..77aee2d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_display_color_table
@@ -0,0 +1,8 @@
+WGL_EXT_display_color_table
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_display_color_table.txt
+WGL_EXT_display_color_table
+
+ GLboolean wglBindDisplayColorTableEXT (GLushort id)
+ GLboolean wglCreateDisplayColorTableEXT (GLushort id)
+ VOID wglDestroyDisplayColorTableEXT (GLushort id)
+ GLboolean wglLoadDisplayColorTableEXT (const GLushort* table, GLuint length)
diff --git a/glew/auto/extensions/gl/WGL_EXT_extensions_string b/glew/auto/extensions/gl/WGL_EXT_extensions_string
new file mode 100644
index 0000000..6ff92eb
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_extensions_string
@@ -0,0 +1,5 @@
+WGL_EXT_extensions_string
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_extensions_string.txt
+WGL_EXT_extensions_string
+
+ const char* wglGetExtensionsStringEXT (void)
diff --git a/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..f567bb7
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB
@@ -0,0 +1,5 @@
+WGL_EXT_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_framebuffer_sRGB.txt
+WGL_EXT_framebuffer_sRGB
+
+ WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
diff --git a/glew/auto/extensions/gl/WGL_EXT_make_current_read b/glew/auto/extensions/gl/WGL_EXT_make_current_read
new file mode 100644
index 0000000..a95be50
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_make_current_read
@@ -0,0 +1,8 @@
+WGL_EXT_make_current_read
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_make_current_read.txt
+WGL_EXT_make_current_read
+
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+ HDC wglGetCurrentReadDCEXT (void)
+ BOOL wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc)
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
diff --git a/glew/auto/extensions/gl/WGL_EXT_multisample b/glew/auto/extensions/gl/WGL_EXT_multisample
new file mode 100644
index 0000000..73c381e
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_multisample
@@ -0,0 +1,6 @@
+WGL_EXT_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt
+WGL_EXT_multisample
+
+ WGL_SAMPLE_BUFFERS_EXT 0x2041
+ WGL_SAMPLES_EXT 0x2042
diff --git a/glew/auto/extensions/gl/WGL_EXT_pbuffer b/glew/auto/extensions/gl/WGL_EXT_pbuffer
new file mode 100644
index 0000000..e9e6cec
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pbuffer
@@ -0,0 +1,19 @@
+WGL_EXT_pbuffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pbuffer.txt
+WGL_EXT_pbuffer
+
+ WGL_DRAW_TO_PBUFFER_EXT 0x202D
+ WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
+ WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
+ WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
+ WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
+ WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
+ WGL_PBUFFER_LARGEST_EXT 0x2033
+ WGL_PBUFFER_WIDTH_EXT 0x2034
+ WGL_PBUFFER_HEIGHT_EXT 0x2035
+ HPBUFFEREXT wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList)
+ BOOL wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer)
+ HDC wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer)
+ BOOL wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue)
+ int wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC)
+ DECLARE_HANDLE(HPBUFFEREXT);
diff --git a/glew/auto/extensions/gl/WGL_EXT_pixel_format b/glew/auto/extensions/gl/WGL_EXT_pixel_format
new file mode 100644
index 0000000..d846c4a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pixel_format
@@ -0,0 +1,52 @@
+WGL_EXT_pixel_format
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format.txt
+WGL_EXT_pixel_format
+
+ WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
+ WGL_DRAW_TO_WINDOW_EXT 0x2001
+ WGL_DRAW_TO_BITMAP_EXT 0x2002
+ WGL_ACCELERATION_EXT 0x2003
+ WGL_NEED_PALETTE_EXT 0x2004
+ WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
+ WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
+ WGL_SWAP_METHOD_EXT 0x2007
+ WGL_NUMBER_OVERLAYS_EXT 0x2008
+ WGL_NUMBER_UNDERLAYS_EXT 0x2009
+ WGL_TRANSPARENT_EXT 0x200A
+ WGL_TRANSPARENT_VALUE_EXT 0x200B
+ WGL_SHARE_DEPTH_EXT 0x200C
+ WGL_SHARE_STENCIL_EXT 0x200D
+ WGL_SHARE_ACCUM_EXT 0x200E
+ WGL_SUPPORT_GDI_EXT 0x200F
+ WGL_SUPPORT_OPENGL_EXT 0x2010
+ WGL_DOUBLE_BUFFER_EXT 0x2011
+ WGL_STEREO_EXT 0x2012
+ WGL_PIXEL_TYPE_EXT 0x2013
+ WGL_COLOR_BITS_EXT 0x2014
+ WGL_RED_BITS_EXT 0x2015
+ WGL_RED_SHIFT_EXT 0x2016
+ WGL_GREEN_BITS_EXT 0x2017
+ WGL_GREEN_SHIFT_EXT 0x2018
+ WGL_BLUE_BITS_EXT 0x2019
+ WGL_BLUE_SHIFT_EXT 0x201A
+ WGL_ALPHA_BITS_EXT 0x201B
+ WGL_ALPHA_SHIFT_EXT 0x201C
+ WGL_ACCUM_BITS_EXT 0x201D
+ WGL_ACCUM_RED_BITS_EXT 0x201E
+ WGL_ACCUM_GREEN_BITS_EXT 0x201F
+ WGL_ACCUM_BLUE_BITS_EXT 0x2020
+ WGL_ACCUM_ALPHA_BITS_EXT 0x2021
+ WGL_DEPTH_BITS_EXT 0x2022
+ WGL_STENCIL_BITS_EXT 0x2023
+ WGL_AUX_BUFFERS_EXT 0x2024
+ WGL_NO_ACCELERATION_EXT 0x2025
+ WGL_GENERIC_ACCELERATION_EXT 0x2026
+ WGL_FULL_ACCELERATION_EXT 0x2027
+ WGL_SWAP_EXCHANGE_EXT 0x2028
+ WGL_SWAP_COPY_EXT 0x2029
+ WGL_SWAP_UNDEFINED_EXT 0x202A
+ WGL_TYPE_RGBA_EXT 0x202B
+ WGL_TYPE_COLORINDEX_EXT 0x202C
+ BOOL wglChoosePixelFormatEXT (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats)
+ BOOL wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT* pfValues)
+ BOOL wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int* piValues)
diff --git a/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float b/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float
new file mode 100644
index 0000000..6ee8f9d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float
@@ -0,0 +1,5 @@
+WGL_EXT_pixel_format_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format_packed_float.txt
+WGL_EXT_pixel_format_packed_float
+
+ WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
diff --git a/glew/auto/extensions/gl/WGL_EXT_swap_control b/glew/auto/extensions/gl/WGL_EXT_swap_control
new file mode 100644
index 0000000..c346dd4
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_swap_control
@@ -0,0 +1,6 @@
+WGL_EXT_swap_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control.txt
+WGL_EXT_swap_control
+
+ int wglGetSwapIntervalEXT (void)
+ BOOL wglSwapIntervalEXT (int interval)
diff --git a/glew/auto/extensions/gl/WGL_EXT_swap_control_tear b/glew/auto/extensions/gl/WGL_EXT_swap_control_tear
new file mode 100644
index 0000000..fdcb55b
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_swap_control_tear
@@ -0,0 +1,4 @@
+WGL_EXT_swap_control_tear
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control_tear.txt
+WGL_EXT_swap_control_tear
+
diff --git a/glew/auto/extensions/gl/WGL_I3D_digital_video_control b/glew/auto/extensions/gl/WGL_I3D_digital_video_control
new file mode 100644
index 0000000..fd44df1
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_digital_video_control
@@ -0,0 +1,10 @@
+WGL_I3D_digital_video_control
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_digital_video_control.txt
+WGL_I3D_digital_video_control
+
+ WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
+ WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
+ WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
+ WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
+ BOOL wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int* piValue)
+ BOOL wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int* piValue)
diff --git a/glew/auto/extensions/gl/WGL_I3D_gamma b/glew/auto/extensions/gl/WGL_I3D_gamma
new file mode 100644
index 0000000..1cc8076
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_gamma
@@ -0,0 +1,10 @@
+WGL_I3D_gamma
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_gamma.txt
+WGL_I3D_gamma
+
+ WGL_GAMMA_TABLE_SIZE_I3D 0x204E
+ WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
+ BOOL wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT* puRed, USHORT* puGreen, USHORT* puBlue)
+ BOOL wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int* piValue)
+ BOOL wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT* puRed, const USHORT* puGreen, const USHORT* puBlue)
+ BOOL wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int* piValue)
diff --git a/glew/auto/extensions/gl/WGL_I3D_genlock b/glew/auto/extensions/gl/WGL_I3D_genlock
new file mode 100644
index 0000000..11efee9
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_genlock
@@ -0,0 +1,25 @@
+WGL_I3D_genlock
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_genlock.txt
+WGL_I3D_genlock
+
+ WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
+ WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
+ WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
+ WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
+ WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
+ WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
+ WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
+ WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
+ WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
+ BOOL wglDisableGenlockI3D (HDC hDC)
+ BOOL wglEnableGenlockI3D (HDC hDC)
+ BOOL wglGenlockSampleRateI3D (HDC hDC, UINT uRate)
+ BOOL wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay)
+ BOOL wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge)
+ BOOL wglGenlockSourceI3D (HDC hDC, UINT uSource)
+ BOOL wglGetGenlockSampleRateI3D (HDC hDC, UINT* uRate)
+ BOOL wglGetGenlockSourceDelayI3D (HDC hDC, UINT* uDelay)
+ BOOL wglGetGenlockSourceEdgeI3D (HDC hDC, UINT* uEdge)
+ BOOL wglGetGenlockSourceI3D (HDC hDC, UINT* uSource)
+ BOOL wglIsEnabledGenlockI3D (HDC hDC, BOOL* pFlag)
+ BOOL wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT* uMaxLineDelay, UINT* uMaxPixelDelay)
diff --git a/glew/auto/extensions/gl/WGL_I3D_image_buffer b/glew/auto/extensions/gl/WGL_I3D_image_buffer
new file mode 100644
index 0000000..09d7ca9
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_image_buffer
@@ -0,0 +1,10 @@
+WGL_I3D_image_buffer
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_image_buffer.txt
+WGL_I3D_image_buffer
+
+ WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
+ WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
+ BOOL wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE* pEvent, const LPVOID* pAddress, const DWORD* pSize, UINT count)
+ LPVOID wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags)
+ BOOL wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress)
+ BOOL wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID* pAddress, UINT count)
diff --git a/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock b/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock
new file mode 100644
index 0000000..43b578f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock
@@ -0,0 +1,8 @@
+WGL_I3D_swap_frame_lock
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_lock.txt
+WGL_I3D_swap_frame_lock
+
+ BOOL wglDisableFrameLockI3D (void)
+ BOOL wglEnableFrameLockI3D (void)
+ BOOL wglIsEnabledFrameLockI3D (BOOL* pFlag)
+ BOOL wglQueryFrameLockMasterI3D (BOOL* pFlag)
diff --git a/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage b/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage
new file mode 100644
index 0000000..291c54a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage
@@ -0,0 +1,8 @@
+WGL_I3D_swap_frame_usage
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_usage.txt
+WGL_I3D_swap_frame_usage
+
+ BOOL wglBeginFrameTrackingI3D (void)
+ BOOL wglEndFrameTrackingI3D (void)
+ BOOL wglGetFrameUsageI3D (float* pUsage)
+ BOOL wglQueryFrameTrackingI3D (DWORD* pFrameCount, DWORD* pMissedFrames, float* pLastMissedUsage)
diff --git a/glew/auto/extensions/gl/WGL_NV_DX_interop b/glew/auto/extensions/gl/WGL_NV_DX_interop
new file mode 100644
index 0000000..640e99f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_DX_interop
@@ -0,0 +1,15 @@
+WGL_NV_DX_interop
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop.txt
+WGL_NV_DX_interop
+
+ WGL_ACCESS_READ_ONLY_NV 0x00000000
+ WGL_ACCESS_READ_WRITE_NV 0x00000001
+ WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
+ BOOL wglDXCloseDeviceNV (HANDLE hDevice)
+ BOOL wglDXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects)
+ BOOL wglDXObjectAccessNV (HANDLE hObject, GLenum access)
+ HANDLE wglDXOpenDeviceNV (void* dxDevice)
+ HANDLE wglDXRegisterObjectNV (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access)
+ BOOL wglDXSetResourceShareHandleNV (void* dxObject, HANDLE shareHandle)
+ BOOL wglDXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects)
+ BOOL wglDXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject)
diff --git a/glew/auto/extensions/gl/WGL_NV_DX_interop2 b/glew/auto/extensions/gl/WGL_NV_DX_interop2
new file mode 100644
index 0000000..b900118
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_DX_interop2
@@ -0,0 +1,4 @@
+WGL_NV_DX_interop2
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop2.txt
+WGL_NV_DX_interop2
+
diff --git a/glew/auto/extensions/gl/WGL_NV_copy_image b/glew/auto/extensions/gl/WGL_NV_copy_image
new file mode 100644
index 0000000..2ca0ad8
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_copy_image
@@ -0,0 +1,6 @@
+WGL_NV_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_copy_image.txt
+WGL_NV_copy_image
+
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/WGL_NV_delay_before_swap b/glew/auto/extensions/gl/WGL_NV_delay_before_swap
new file mode 100644
index 0000000..9647e2a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_delay_before_swap
@@ -0,0 +1,5 @@
+WGL_NV_delay_before_swap
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_delay_before_swap.txt
+WGL_NV_delay_before_swap
+
+ BOOL wglDelayBeforeSwapNV (HDC hDC, GLfloat seconds)
diff --git a/glew/auto/extensions/gl/WGL_NV_float_buffer b/glew/auto/extensions/gl/WGL_NV_float_buffer
new file mode 100644
index 0000000..50a0d82
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_float_buffer
@@ -0,0 +1,13 @@
+WGL_NV_float_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_float_buffer.txt
+WGL_NV_float_buffer
+
+ WGL_FLOAT_COMPONENTS_NV 0x20B0
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+ WGL_TEXTURE_FLOAT_R_NV 0x20B5
+ WGL_TEXTURE_FLOAT_RG_NV 0x20B6
+ WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
+ WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
diff --git a/glew/auto/extensions/gl/WGL_NV_gpu_affinity b/glew/auto/extensions/gl/WGL_NV_gpu_affinity
new file mode 100644
index 0000000..61ed3f1
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_gpu_affinity
@@ -0,0 +1,13 @@
+WGL_NV_gpu_affinity
+http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt
+WGL_NV_gpu_affinity
+
+ WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
+ WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
+ BOOL wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu)
+ BOOL wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice)
+ HDC wglCreateAffinityDCNV (const HGPUNV *phGpuList)
+ BOOL wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu)
+ BOOL wglDeleteDCNV (HDC hdc)
+ DECLARE_HANDLE(HGPUNV);
+ typedef struct _GPU_DEVICE { DWORD cb; CHAR DeviceName[32]; CHAR DeviceString[128]; DWORD Flags; RECT rcVirtualScreen; } GPU_DEVICE, *PGPU_DEVICE;
diff --git a/glew/auto/extensions/gl/WGL_NV_multigpu_context b/glew/auto/extensions/gl/WGL_NV_multigpu_context
new file mode 100644
index 0000000..58bbb79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_multigpu_context
@@ -0,0 +1,9 @@
+WGL_NV_multigpu_context
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multigpu_context.txt
+WGL_NV_multigpu_context
+
+ WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+ WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+ WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+ WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+ WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
diff --git a/glew/auto/extensions/gl/WGL_NV_multisample_coverage b/glew/auto/extensions/gl/WGL_NV_multisample_coverage
new file mode 100644
index 0000000..89ffbc3
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_multisample_coverage
@@ -0,0 +1,6 @@
+WGL_NV_multisample_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multisample_coverage.txt
+WGL_NV_multisample_coverage
+
+ WGL_COVERAGE_SAMPLES_NV 0x2042
+ WGL_COLOR_SAMPLES_NV 0x20B9
diff --git a/glew/auto/extensions/gl/WGL_NV_present_video b/glew/auto/extensions/gl/WGL_NV_present_video
new file mode 100644
index 0000000..3bc4f02
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_present_video
@@ -0,0 +1,9 @@
+WGL_NV_present_video
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_present_video.txt
+WGL_NV_present_video
+
+ WGL_NUM_VIDEO_SLOTS_NV 0x20F0
+ BOOL wglBindVideoDeviceNV (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList)
+ int wglEnumerateVideoDevicesNV (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList)
+ BOOL wglQueryCurrentContextNV (int iAttribute, int* piValue)
+ DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
diff --git a/glew/auto/extensions/gl/WGL_NV_render_depth_texture b/glew/auto/extensions/gl/WGL_NV_render_depth_texture
new file mode 100644
index 0000000..3f2aad6
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_render_depth_texture
@@ -0,0 +1,9 @@
+WGL_NV_render_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_depth_texture.txt
+WGL_NV_render_depth_texture
+
+ WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
+ WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+ WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
+ WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+ WGL_DEPTH_COMPONENT_NV 0x20A7
diff --git a/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle b/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle
new file mode 100644
index 0000000..1aaba98
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle
@@ -0,0 +1,7 @@
+WGL_NV_render_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_texture_rectangle.txt
+WGL_NV_render_texture_rectangle
+
+ WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+ WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+ WGL_TEXTURE_RECTANGLE_NV 0x20A2
diff --git a/glew/auto/extensions/gl/WGL_NV_swap_group b/glew/auto/extensions/gl/WGL_NV_swap_group
new file mode 100644
index 0000000..af094b6
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_swap_group
@@ -0,0 +1,10 @@
+WGL_NV_swap_group
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_swap_group.txt
+WGL_NV_swap_group
+
+ BOOL wglBindSwapBarrierNV (GLuint group, GLuint barrier)
+ BOOL wglJoinSwapGroupNV (HDC hDC, GLuint group)
+ BOOL wglQueryFrameCountNV (HDC hDC, GLuint* count)
+ BOOL wglQueryMaxSwapGroupsNV (HDC hDC, GLuint* maxGroups, GLuint* maxBarriers)
+ BOOL wglQuerySwapGroupNV (HDC hDC, GLuint* group, GLuint* barrier)
+ BOOL wglResetFrameCountNV (HDC hDC)
diff --git a/glew/auto/extensions/gl/WGL_NV_vertex_array_range b/glew/auto/extensions/gl/WGL_NV_vertex_array_range
new file mode 100644
index 0000000..b51318d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_vertex_array_range
@@ -0,0 +1,6 @@
+WGL_NV_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_vertex_array_range.txt
+WGL_NV_vertex_array_range
+
+ void* wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority)
+ void wglFreeMemoryNV (void* pointer)
diff --git a/glew/auto/extensions/gl/WGL_NV_video_capture b/glew/auto/extensions/gl/WGL_NV_video_capture
new file mode 100644
index 0000000..5c33f9d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_video_capture
@@ -0,0 +1,12 @@
+WGL_NV_video_capture
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_capture.txt
+WGL_NV_video_capture
+
+ WGL_UNIQUE_ID_NV 0x20CE
+ WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+ BOOL wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice)
+ UINT wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList)
+ BOOL wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice)
+ BOOL wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue)
+ BOOL wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice)
+ DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
diff --git a/glew/auto/extensions/gl/WGL_NV_video_output b/glew/auto/extensions/gl/WGL_NV_video_output
new file mode 100644
index 0000000..f7cc817
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_video_output
@@ -0,0 +1,24 @@
+WGL_NV_video_output
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_output.txt
+WGL_NV_video_output
+
+ WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
+ WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
+ WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
+ WGL_VIDEO_OUT_COLOR_NV 0x20C3
+ WGL_VIDEO_OUT_ALPHA_NV 0x20C4
+ WGL_VIDEO_OUT_DEPTH_NV 0x20C5
+ WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+ WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+ WGL_VIDEO_OUT_FRAME 0x20C8
+ WGL_VIDEO_OUT_FIELD_1 0x20C9
+ WGL_VIDEO_OUT_FIELD_2 0x20CA
+ WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
+ WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
+ BOOL wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer)
+ BOOL wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice)
+ BOOL wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo)
+ BOOL wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice)
+ BOOL wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer)
+ BOOL wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock)
+ DECLARE_HANDLE(HPVIDEODEV);
diff --git a/glew/auto/extensions/gl/WGL_OML_sync_control b/glew/auto/extensions/gl/WGL_OML_sync_control
new file mode 100644
index 0000000..6129270
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_OML_sync_control
@@ -0,0 +1,10 @@
+WGL_OML_sync_control
+https://www.khronos.org/registry/OpenGL/extensions/OML/WGL_OML_sync_control.txt
+WGL_OML_sync_control
+
+ BOOL wglGetMscRateOML (HDC hdc, INT32* numerator, INT32* denominator)
+ BOOL wglGetSyncValuesOML (HDC hdc, INT64* ust, INT64* msc, INT64* sbc)
+ INT64 wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder)
+ INT64 wglSwapLayerBuffersMscOML (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder)
+ BOOL wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64* msc, INT64* sbc)
+ BOOL wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64* ust, INT64* msc, INT64* sbc)
diff --git a/glew/auto/src/eglew_head.h b/glew/auto/src/eglew_head.h
new file mode 100644
index 0000000..121efaf
--- /dev/null
+++ b/glew/auto/src/eglew_head.h
@@ -0,0 +1,98 @@
+#ifndef __eglew_h__
+#define __eglew_h__
+#define __EGLEW_H__
+
+#ifdef __eglext_h_
+#error eglext.h included before eglew.h
+#endif
+
+#if defined(__egl_h_)
+#error egl.h included before eglew.h
+#endif
+
+#define __eglext_h_
+
+#define __egl_h_
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+/* EGL Types */
+#include <sys/types.h>
+
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int32_t EGLint;
+
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+typedef void *EGLImageKHR;
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+typedef int EGLNativeFileDescriptorKHR;
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void *EGLDeviceEXT;
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+struct EGLClientPixmapHI;
+struct AHardwareBuffer;
+
+/* Wayland types for WL_bind_wayland_display purposes */
+struct wl_buffer;
+struct wl_display;
+struct wl_resource;
+
+#define EGL_DONT_CARE ((EGLint)-1)
+
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_IMAGE ((EGLImage)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+#define EGL_NO_SYNC ((EGLSync)0)
+
+#define EGL_UNKNOWN ((EGLint)-1)
+
+#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
+
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
diff --git a/glew/auto/src/eglew_mid.h b/glew/auto/src/eglew_mid.h
new file mode 100644
index 0000000..f94a149
--- /dev/null
+++ b/glew/auto/src/eglew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/eglew_tail.h b/glew/auto/src/eglew_tail.h
new file mode 100644
index 0000000..a91a76e
--- /dev/null
+++ b/glew/auto/src/eglew_tail.h
@@ -0,0 +1,15 @@
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY eglewInit (EGLDisplay display);
+GLEWAPI GLboolean GLEWAPIENTRY eglewIsSupported (const char *name);
+
+#define EGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#define EGLEW_GET_FUN(x) x
+
+GLEWAPI GLboolean GLEWAPIENTRY eglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __eglew_h__ */
diff --git a/glew/auto/src/footer.html b/glew/auto/src/footer.html
new file mode 100644
index 0000000..3adb9c1
--- /dev/null
+++ b/glew/auto/src/footer.html
@@ -0,0 +1,4 @@
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/auto/src/glew_head.c b/glew/auto/src/glew_head.c
new file mode 100644
index 0000000..592cd0f
--- /dev/null
+++ b/glew/auto/src/glew_head.c
@@ -0,0 +1,289 @@
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#if defined(GLEW_OSMESA)
+# define GLAPI extern
+# include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+# include <GL/eglew.h>
+#elif defined(_WIN32)
+/*
+ * If NOGDI is defined, wingdi.h won't be included by windows.h, and thus
+ * wglGetProcAddress won't be declared. It will instead be implicitly declared,
+ * potentially incorrectly, which we don't want.
+ */
+# if defined(NOGDI)
+# undef NOGDI
+# endif
+# include <GL/wglew.h>
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+# include <GL/glxew.h>
+#endif
+
+#include <stddef.h> /* For size_t */
+
+#if defined(GLEW_EGL)
+#elif defined(GLEW_REGAL)
+
+/* In GLEW_REGAL mode we call directly into the linked
+ libRegal.so glGetProcAddressREGAL for looking up
+ the GL function pointers. */
+
+# undef glGetProcAddressREGAL
+# ifdef WIN32
+extern void * __stdcall glGetProcAddressREGAL(const GLchar *name);
+static void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# else
+extern void * glGetProcAddressREGAL(const GLchar *name);
+static void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# endif
+# define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void* dlGetProcAddress (const GLubyte* name)
+{
+ static void* h = NULL;
+ static void* gpa;
+
+ if (h == NULL)
+ {
+ if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
+ gpa = dlsym(h, "glXGetProcAddress");
+ }
+
+ if (gpa != NULL)
+ return ((void*(*)(const GLubyte*))gpa)(name);
+ else
+ return dlsym(h, (const char*)name);
+}
+#endif /* __sgi || __sun || GLEW_APPLE_GLX */
+
+#if defined(__APPLE__)
+#include <stdlib.h>
+#include <string.h>
+#include <AvailabilityMacros.h>
+
+#ifdef MAC_OS_X_VERSION_10_3
+
+#include <dlfcn.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static void* image = NULL;
+ void* addr;
+ if (NULL == image)
+ {
+ image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
+ }
+ if( !image ) return NULL;
+ addr = dlsym(image, (const char*)name);
+ if( addr ) return addr;
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#else
+
+#include <mach-o/dyld.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static const struct mach_header* image = NULL;
+ NSSymbol symbol;
+ char* symbolName;
+ if (NULL == image)
+ {
+ image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
+ }
+ /* prepend a '_' for the Unix C symbol mangling convention */
+ symbolName = malloc(strlen((const char*)name) + 2);
+ strcpy(symbolName+1, (const char*)name);
+ symbolName[0] = '_';
+ symbol = NULL;
+ /* if (NSIsSymbolNameDefined(symbolName))
+ symbol = NSLookupAndBindSymbol(symbolName); */
+ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;
+ free(symbolName);
+ if( symbol ) return NSAddressOfSymbol(symbol);
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#endif /* MAC_OS_X_VERSION_10_3 */
+#endif /* __APPLE__ */
+
+/*
+ * Define glewGetProcAddress.
+ */
+#if defined(GLEW_REGAL)
+# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
+#elif defined(GLEW_OSMESA)
+# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
+#elif defined(GLEW_EGL)
+# define glewGetProcAddress(name) eglGetProcAddress((const char *)name)
+#elif defined(_WIN32)
+# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+# define glewGetProcAddress(name) NSGLGetProcAddress(name)
+#elif defined(__sgi) || defined(__sun) || defined(__HAIKU__)
+# define glewGetProcAddress(name) dlGetProcAddress(name)
+#elif defined(__ANDROID__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#elif defined(__native_client__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#else /* __linux */
+# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)
+#endif
+
+/*
+ * Redefine GLEW_GET_VAR etc without const cast
+ */
+
+#undef GLEW_GET_VAR
+# define GLEW_GET_VAR(x) (x)
+
+#ifdef WGLEW_GET_VAR
+# undef WGLEW_GET_VAR
+# define WGLEW_GET_VAR(x) (x)
+#endif /* WGLEW_GET_VAR */
+
+#ifdef GLXEW_GET_VAR
+# undef GLXEW_GET_VAR
+# define GLXEW_GET_VAR(x) (x)
+#endif /* GLXEW_GET_VAR */
+
+#ifdef EGLEW_GET_VAR
+# undef EGLEW_GET_VAR
+# define EGLEW_GET_VAR(x) (x)
+#endif /* EGLEW_GET_VAR */
+
+/*
+ * GLEW, just like OpenGL or GLU, does not rely on the standard C library.
+ * These functions implement the functionality required in this file.
+ */
+
+static GLuint _glewStrLen (const GLubyte* s)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0') i++;
+ return i;
+}
+
+static GLuint _glewStrCLen (const GLubyte* s, GLubyte c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) i++;
+ return i;
+}
+
+static GLuint _glewStrCopy(char *d, const char *s, char c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) { d[i] = s[i]; i++; }
+ d[i] = '\0';
+ return i;
+}
+
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n)
+{
+ GLuint i=0;
+ if(a == NULL || b == NULL)
+ return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE;
+ while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++;
+ return i == n ? GL_TRUE : GL_FALSE;
+}
+#endif
+#endif
+
+static GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t'))
+ {
+ (*a)++;
+ (*na)--;
+ }
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame2 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t'))
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+/*
+ * Search for name in the extensions string. Use of strstr()
+ * is not sufficient because extension names can be prefixes of
+ * other extension names. Could use strtok() but the constant
+ * string returned by glGetString might be in read-only memory.
+ */
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end)
+{
+ const GLubyte* p;
+ GLuint len = _glewStrLen((const GLubyte*)name);
+ p = start;
+ while (p < end)
+ {
+ GLuint n = _glewStrCLen(p, ' ');
+ if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
+ p += n+1;
+ }
+ return GL_FALSE;
+}
+#endif
+#endif
diff --git a/glew/auto/src/glew_head.h b/glew/auto/src/glew_head.h
new file mode 100644
index 0000000..9277d2a
--- /dev/null
+++ b/glew/auto/src/glew_head.h
@@ -0,0 +1,1139 @@
+#ifndef __glew_h__
+#define __glew_h__
+#define __GLEW_H__
+
+#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__gl_gl_h_) || defined(__X_GL_H)
+#error gl.h included before glew.h
+#endif
+#if defined(__gl2_h_)
+#error gl2.h included before glew.h
+#endif
+#if defined(__gltypes_h_)
+#error gltypes.h included before glew.h
+#endif
+#if defined(__REGAL_H__)
+#error Regal.h included before glew.h
+#endif
+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
+#error glext.h included before glew.h
+#endif
+#if defined(__gl_ATI_h_)
+#error glATI.h included before glew.h
+#endif
+
+#define __gl_h_
+#define __gl2_h_
+#define __GL_H__
+#define _GL_H
+#define __gl_gl_h_
+#define __gltypes_h_
+#define __REGAL_H__
+#define __X_GL_H
+#define __glext_h_
+#define __GLEXT_H_
+#define __gl_glext_h_
+#define __gl_ATI_h_
+
+#if defined(_WIN32)
+
+/*
+ * GLEW does not include <windows.h> to avoid name space pollution.
+ * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t
+ * defined properly.
+ */
+/* <windef.h> and <gl.h>*/
+#ifdef APIENTRY
+# ifndef GLAPIENTRY
+# define GLAPIENTRY APIENTRY
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY APIENTRY
+# endif
+#else
+#define GLEW_APIENTRY_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__)
+# define APIENTRY __stdcall
+# ifndef GLAPIENTRY
+# define GLAPIENTRY __stdcall
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY __stdcall
+# endif
+# else
+# define APIENTRY
+# endif
+#endif
+/* <winnt.h> */
+#ifndef CALLBACK
+#define GLEW_CALLBACK_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define CALLBACK __attribute__ ((__stdcall__))
+# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+#endif
+/* <wingdi.h> and <winnt.h> */
+#ifndef WINGDIAPI
+#define GLEW_WINGDIAPI_DEFINED
+#define WINGDIAPI __declspec(dllimport)
+#endif
+/* <ctype.h> */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED)
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+#endif
+/* <stddef.h> */
+#if !defined(_W64)
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300
+# define _W64 __w64
+# else
+# define _W64
+# endif
+#endif
+#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__)
+# ifdef _WIN64
+typedef __int64 ptrdiff_t;
+# else
+typedef _W64 int ptrdiff_t;
+# endif
+# define _PTRDIFF_T_DEFINED
+# define _PTRDIFF_T_
+#endif
+
+#ifndef GLAPI
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define GLAPI extern
+# else
+# define GLAPI WINGDIAPI
+# endif
+#endif
+
+/*
+ * GLEW_STATIC is defined for static library.
+ * GLEW_BUILD is defined for building the DLL library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#else /* _UNIX */
+
+/*
+ * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO
+ * C. On my system, this amounts to _3 lines_ of included code, all of
+ * them pretty much harmless. If you know of a way of detecting 32 vs
+ * 64 _targets_ at compile time you are free to replace this with
+ * something that's portable. For now, _this_ is the portable solution.
+ * (mem, 2004-01-04)
+ */
+
+#if defined(__APPLE__) || defined(__linux__)
+# if defined(__cplusplus)
+# include <cstddef>
+# include <cstdint>
+# else
+# include <stddef.h>
+# include <stdint.h>
+# endif
+#else
+
+# include <stddef.h>
+
+/* SGI MIPSPro doesn't like stdint.h in C++ mode */
+/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */
+
+# if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+# endif
+#endif
+
+#define GLEW_APIENTRY_DEFINED
+#define APIENTRY
+
+/*
+ * GLEW_STATIC is defined for static library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# if defined(__GNUC__) && __GNUC__>=4
+# define GLEWAPI extern __attribute__ ((visibility("default")))
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# define GLEWAPI extern __global
+# else
+# define GLEWAPI extern
+# endif
+#endif
+
+/* <glu.h> */
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#endif /* _WIN32 */
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef GLEWAPIENTRY
+#define GLEWAPIENTRY
+#endif
+
+#define GLEW_VAR_EXPORT GLEWAPI
+#define GLEW_FUN_EXPORT GLEWAPI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifndef GL_VERSION_1_1
+#define GL_VERSION_1_1 1
+
+typedef unsigned int GLenum;
+typedef unsigned int GLbitfield;
+typedef unsigned int GLuint;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned long GLulong;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+#if defined(_MSC_VER) && _MSC_VER < 1400
+typedef __int64 GLint64EXT;
+typedef unsigned __int64 GLuint64EXT;
+#elif defined(_MSC_VER) || defined(__BORLANDC__)
+typedef signed long long GLint64EXT;
+typedef unsigned long long GLuint64EXT;
+#else
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+#include <inttypes.h>
+# endif
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+typedef GLint64EXT GLint64;
+typedef GLuint64EXT GLuint64;
+typedef struct __GLsync *GLsync;
+
+typedef char GLchar;
+
+typedef void *GLeglImageOES; /* GL_EXT_EGL_image_storage */
+
+#define GL_ZERO 0
+#define GL_FALSE 0
+#define GL_LOGIC_OP 0x0BF1
+#define GL_NONE 0
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_NO_ERROR 0
+#define GL_POINTS 0x0000
+#define GL_CURRENT_BIT 0x00000001
+#define GL_TRUE 1
+#define GL_ONE 1
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_POINT_BIT 0x00000002
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_LINE_STRIP 0x0003
+#define GL_LINE_BIT 0x00000004
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON 0x0009
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM 0x0100
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+#define GL_NEVER 0x0200
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_EXP 0x0800
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_EXP2 0x0801
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_BITMAP 0x1A00
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_S 0x2000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_ENV 0x2300
+#define GL_EYE_LINEAR 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_SPHERE_MAP 0x2402
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_R3_G3_B2 0x2A10
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+#define GL_LIGHT0 0x4000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_HINT_BIT 0x00008000
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000fffff
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+
+GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value);
+GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void GLAPIENTRY glArrayElement (GLint i);
+GLAPI void GLAPIENTRY glBegin (GLenum mode);
+GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void GLAPIENTRY glCallList (GLuint list);
+GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists);
+GLAPI void GLAPIENTRY glClear (GLbitfield mask);
+GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void GLAPIENTRY glClearDepth (GLclampd depth);
+GLAPI void GLAPIENTRY glClearIndex (GLfloat c);
+GLAPI void GLAPIENTRY glClearStencil (GLint s);
+GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation);
+GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue);
+GLAPI void GLAPIENTRY glColor3iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void GLAPIENTRY glColor3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void GLAPIENTRY glColor3usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void GLAPIENTRY glColor4iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+GLAPI void GLAPIENTRY glColor4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+GLAPI void GLAPIENTRY glColor4usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glCullFace (GLenum mode);
+GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range);
+GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void GLAPIENTRY glDepthFunc (GLenum func);
+GLAPI void GLAPIENTRY glDepthMask (GLboolean flag);
+GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);
+GLAPI void GLAPIENTRY glDisable (GLenum cap);
+GLAPI void GLAPIENTRY glDisableClientState (GLenum array);
+GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
+GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag);
+GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag);
+GLAPI void GLAPIENTRY glEnable (GLenum cap);
+GLAPI void GLAPIENTRY glEnableClientState (GLenum array);
+GLAPI void GLAPIENTRY glEnd (void);
+GLAPI void GLAPIENTRY glEndList (void);
+GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u);
+GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u);
+GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v);
+GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v);
+GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
+GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+GLAPI void GLAPIENTRY glEvalPoint1 (GLint i);
+GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j);
+GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
+GLAPI void GLAPIENTRY glFinish (void);
+GLAPI void GLAPIENTRY glFlush (void);
+GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glFrontFace (GLenum mode);
+GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range);
+GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
+GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation);
+GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params);
+GLAPI GLenum GLAPIENTRY glGetError (void);
+GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v);
+GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v);
+GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v);
+GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);
+GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);
+GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values);
+GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, void* *params);
+GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask);
+GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name);
+GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void GLAPIENTRY glIndexMask (GLuint mask);
+GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glIndexd (GLdouble c);
+GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c);
+GLAPI void GLAPIENTRY glIndexf (GLfloat c);
+GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c);
+GLAPI void GLAPIENTRY glIndexi (GLint c);
+GLAPI void GLAPIENTRY glIndexiv (const GLint *c);
+GLAPI void GLAPIENTRY glIndexs (GLshort c);
+GLAPI void GLAPIENTRY glIndexsv (const GLshort *c);
+GLAPI void GLAPIENTRY glIndexub (GLubyte c);
+GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c);
+GLAPI void GLAPIENTRY glInitNames (void);
+GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer);
+GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap);
+GLAPI GLboolean GLAPIENTRY glIsList (GLuint list);
+GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture);
+GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern);
+GLAPI void GLAPIENTRY glLineWidth (GLfloat width);
+GLAPI void GLAPIENTRY glListBase (GLuint base);
+GLAPI void GLAPIENTRY glLoadIdentity (void);
+GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glLoadName (GLuint name);
+GLAPI void GLAPIENTRY glLogicOp (GLenum opcode);
+GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
+GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
+GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glMatrixMode (GLenum mode);
+GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode);
+GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz);
+GLAPI void GLAPIENTRY glNormal3iv (const GLint *v);
+GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz);
+GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY glPassThrough (GLfloat token);
+GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values);
+GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values);
+GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values);
+GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor);
+GLAPI void GLAPIENTRY glPointSize (GLfloat size);
+GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask);
+GLAPI void GLAPIENTRY glPopAttrib (void);
+GLAPI void GLAPIENTRY glPopClientAttrib (void);
+GLAPI void GLAPIENTRY glPopMatrix (void);
+GLAPI void GLAPIENTRY glPopName (void);
+GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushMatrix (void);
+GLAPI void GLAPIENTRY glPushName (GLuint name);
+GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glReadBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2);
+GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2);
+GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
+GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2);
+GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2);
+GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode);
+GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer);
+GLAPI void GLAPIENTRY glShadeModel (GLenum mode);
+GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void GLAPIENTRY glStencilMask (GLuint mask);
+GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s);
+GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s);
+GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord1i (GLint s);
+GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord1s (GLshort s);
+GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t);
+GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t);
+GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t);
+GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t);
+GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
+GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r);
+GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r);
+GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
+GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param);
+GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glVertex2iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glVertex3iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glVertex4iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1)
+
+#endif /* GL_VERSION_1_1 */
+
+/* ---------------------------------- GLU ---------------------------------- */
+
+#ifndef GLEW_NO_GLU
+# ifdef __APPLE__
+# include <Availability.h>
+# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
+# define GLEW_NO_GLU
+# endif
+# endif
+#endif
+
+#ifndef GLEW_NO_GLU
+/* this is where we can safely include GLU */
+# if defined(__APPLE__) && defined(__MACH__)
+# include <OpenGL/glu.h>
+# else
+# include <GL/glu.h>
+# endif
+#endif
+
diff --git a/glew/auto/src/glew_init_egl.c b/glew/auto/src/glew_init_egl.c
new file mode 100644
index 0000000..1502ef6
--- /dev/null
+++ b/glew/auto/src/glew_init_egl.c
@@ -0,0 +1,45 @@
+ /* ------------------------------------------------------------------------ */
+
+GLboolean eglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum eglewInit (EGLDisplay display)
+{
+ EGLint major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLQUERYSTRINGPROC queryString = NULL;
+
+ /* Load necessary entry points */
+ initialize = (PFNEGLINITIALIZEPROC) glewGetProcAddress("eglInitialize");
+ queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress("eglQueryString");
+ if (!initialize || !queryString)
+ return 1;
+
+ /* query EGL version */
+ if (initialize(display, &major, &minor) != EGL_TRUE)
+ return 1;
+
+ EGLEW_VERSION_1_5 = ( major > 1 ) || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_4 = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_3 = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_2 = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_1 = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_0 = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE;
+
+ /* query EGL extension string */
+ extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+
+ /* initialize extensions */
diff --git a/glew/auto/src/glew_init_gl.c b/glew/auto/src/glew_init_gl.c
new file mode 100644
index 0000000..53a5885
--- /dev/null
+++ b/glew/auto/src/glew_init_gl.c
@@ -0,0 +1,209 @@
+/* ------------------------------------------------------------------------- */
+
+static int _glewExtensionCompare(const char *s1, const char *s2)
+{
+ /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */
+ while (*s1 || *s2)
+ {
+ if (*s1 > *s2)
+ return 1;
+ if (*s1 < *s2)
+ return -1;
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+static ptrdiff_t _glewBsearchExtension(const char* name)
+{
+ ptrdiff_t lo = 0, hi = sizeof(_glewExtensionLookup) / sizeof(char*) - 2;
+
+ while (lo <= hi)
+ {
+ ptrdiff_t mid = (lo + hi) / 2;
+ const int cmp = _glewExtensionCompare(name, _glewExtensionLookup[mid]);
+ if (cmp < 0) hi = mid - 1;
+ else if (cmp > 0) lo = mid + 1;
+ else return mid;
+ }
+ return -1;
+}
+
+static GLboolean *_glewGetExtensionString(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return &_glewExtensionString[n];
+ return NULL;
+}
+
+static GLboolean *_glewGetExtensionEnable(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return _glewExtensionEnabled[n];
+ return NULL;
+}
+
+static const char *_glewNextSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j!=' ' && *j) ++j;
+ return j;
+}
+
+static const char *_glewNextNonSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j==' ') ++j;
+ return j;
+}
+
+GLboolean GLEWAPIENTRY glewGetExtension (const char* name)
+{
+ GLboolean *enable = _glewGetExtensionString(name);
+ if (enable)
+ return *enable;
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
+
+GLenum GLEWAPIENTRY glewContextInit (void)
+{
+ PFNGLGETSTRINGPROC getString;
+ const GLubyte* s;
+ GLuint dot;
+ GLint major, minor;
+
+ #ifdef _WIN32
+ getString = glGetString;
+ #else
+ getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)"glGetString");
+ if (!getString)
+ return GLEW_ERROR_NO_GL_VERSION;
+ #endif
+
+ /* query opengl version */
+ s = getString(GL_VERSION);
+ dot = _glewStrCLen(s, '.');
+ if (dot == 0)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ major = s[dot-1]-'0';
+ minor = s[dot+1]-'0';
+
+ if (minor < 0 || minor > 9)
+ minor = 0;
+ if (major<0 || major>9)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ if (major == 1 && minor == 0)
+ {
+ return GLEW_ERROR_GL_VERSION_10_ONLY;
+ }
+ else
+ {
+ GLEW_VERSION_4_6 = ( major > 4 ) || ( major == 4 && minor >= 6 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_5 = GLEW_VERSION_4_6 == GL_TRUE || ( major == 4 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_4 = GLEW_VERSION_4_5 == GL_TRUE || ( major == 4 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_3 = GLEW_VERSION_4_4 == GL_TRUE || ( major == 4 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_2 = GLEW_VERSION_4_3 == GL_TRUE || ( major == 4 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_1 = GLEW_VERSION_4_2 == GL_TRUE || ( major == 4 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_0 = GLEW_VERSION_4_1 == GL_TRUE || ( major == 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_3 = GLEW_VERSION_4_0 == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_2 = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_1 = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_0 = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_0 = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_5 = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_4 = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_3 = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2 = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ }
+
+ {
+ size_t i;
+ for (i = 0; i < sizeof(_glewExtensionString) / sizeof(_glewExtensionString[0]); ++i)
+ _glewExtensionString[i] = GL_FALSE;
+ }
+
+ if (GLEW_VERSION_3_0)
+ {
+ GLint n = 0;
+ GLint i;
+ PFNGLGETINTEGERVPROC getIntegerv;
+ PFNGLGETSTRINGIPROC getStringi;
+ const char *ext;
+ GLboolean *enable;
+
+ #ifdef _WIN32
+ getIntegerv = glGetIntegerv;
+ #else
+ getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)"glGetIntegerv");
+ #endif
+
+ if (getIntegerv)
+ getIntegerv(GL_NUM_EXTENSIONS, &n);
+
+ /* glGetStringi is OpenGL 3.0 */
+ getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
+ if (getStringi)
+ for (i = 0; i<n; ++i)
+ {
+ ext = (const char *) getStringi(GL_EXTENSIONS, i);
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ else
+ {
+ const char *extensions;
+ const char *end;
+ const char *i;
+ const char *j;
+ char ext[128];
+ GLboolean *enable;
+
+ extensions = (const char *) getString(GL_EXTENSIONS);
+
+ if (extensions)
+ {
+ end = extensions + _glewStrLen((const GLubyte *) extensions);
+ for (i=extensions; i<end; i = j + 1)
+ {
+ i = _glewNextNonSpace(i);
+ j = _glewNextSpace(i);
+
+ /* Copy extension into NUL terminated string */
+ if (j-i >= (ptrdiff_t) sizeof(ext))
+ continue;
+ _glewStrCopy(ext, i, ' ');
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ }
diff --git a/glew/auto/src/glew_init_glx.c b/glew/auto/src/glew_init_glx.c
new file mode 100644
index 0000000..8397827
--- /dev/null
+++ b/glew/auto/src/glew_init_glx.c
@@ -0,0 +1,57 @@
+/* ------------------------------------------------------------------------ */
+
+GLboolean glxewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ if (glXGetCurrentDisplay == NULL) return GL_FALSE;
+ start = (const GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum glxewInit ()
+{
+ Display* display;
+ int major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* initialize core GLX 1.2 */
+ if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ /* check for a display */
+ display = glXGetCurrentDisplay();
+ if (display == NULL) return GLEW_ERROR_NO_GLX_DISPLAY;
+ /* initialize flags */
+ GLXEW_VERSION_1_0 = GL_TRUE;
+ GLXEW_VERSION_1_1 = GL_TRUE;
+ GLXEW_VERSION_1_2 = GL_TRUE;
+ GLXEW_VERSION_1_3 = GL_TRUE;
+ GLXEW_VERSION_1_4 = GL_TRUE;
+ /* query GLX version */
+ glXQueryVersion(display, &major, &minor);
+ if (major == 1 && minor <= 3)
+ {
+ switch (minor)
+ {
+ case 3:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ break;
+ case 2:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ GLXEW_VERSION_1_3 = GL_FALSE;
+ break;
+ default:
+ return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ break;
+ }
+ }
+ /* query GLX extension string */
+ extStart = 0;
+ if (glXGetCurrentDisplay != NULL)
+ extStart = (const GLubyte*)glXGetClientString(display, GLX_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
diff --git a/glew/auto/src/glew_init_tail.c b/glew/auto/src/glew_init_tail.c
new file mode 100644
index 0000000..94af367
--- /dev/null
+++ b/glew/auto/src/glew_init_tail.c
@@ -0,0 +1,68 @@
+/* ------------------------------------------------------------------------ */
+
+const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error)
+{
+ static const GLubyte* _glewErrorString[] =
+ {
+ (const GLubyte*)"No error",
+ (const GLubyte*)"Missing GL version",
+ (const GLubyte*)"GL 1.1 and up are not supported",
+ (const GLubyte*)"GLX 1.2 and up are not supported",
+ (const GLubyte*)"No GLX display",
+ (const GLubyte*)"Unknown error"
+ };
+ const size_t max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1;
+ return _glewErrorString[(size_t)error > max_error ? max_error : (size_t)error];
+}
+
+const GLubyte * GLEWAPIENTRY glewGetString (GLenum name)
+{
+ static const GLubyte* _glewString[] =
+ {
+ (const GLubyte*)NULL,
+ (const GLubyte*)"GLEW_VERSION_STRING",
+ (const GLubyte*)"GLEW_VERSION_MAJOR_STRING",
+ (const GLubyte*)"GLEW_VERSION_MINOR_STRING",
+ (const GLubyte*)"GLEW_VERSION_MICRO_STRING"
+ };
+ const size_t max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;
+ return _glewString[(size_t)name > max_string ? 0 : (size_t)name];
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewExperimental = GL_FALSE;
+
+GLenum GLEWAPIENTRY glewInit (void)
+{
+ GLenum r;
+#if defined(GLEW_EGL)
+ PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;
+#endif
+ r = glewContextInit();
+ if ( r != 0 ) return r;
+#if defined(GLEW_EGL)
+ getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress("eglGetCurrentDisplay");
+ return eglewInit(getCurrentDisplay());
+#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__)
+ return r;
+#elif defined(_WIN32)
+ return wglewInit();
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */
+ return glxewInit();
+#else
+ return r;
+#endif /* _WIN32 */
+}
+
+#if defined(_WIN32) && defined(GLEW_BUILD) && defined(__GNUC__)
+/* GCC requires a DLL entry point even without any standard library included. */
+/* Types extracted from windows.h to avoid polluting the rest of the file. */
+int __stdcall DllMainCRTStartup(void* instance, unsigned reason, void* reserved)
+{
+ (void) instance;
+ (void) reason;
+ (void) reserved;
+ return 1;
+}
+#endif
diff --git a/glew/auto/src/glew_init_wgl.c b/glew/auto/src/glew_init_wgl.c
new file mode 100644
index 0000000..978cf3c
--- /dev/null
+++ b/glew/auto/src/glew_init_wgl.c
@@ -0,0 +1,41 @@
+/* ------------------------------------------------------------------------- */
+
+static PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL;
+static PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL;
+
+GLboolean GLEWAPIENTRY wglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ return GL_FALSE;
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ if (start == 0)
+ return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum GLEWAPIENTRY wglewInit ()
+{
+ GLboolean crippled;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* find wgl extension string query functions */
+ _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB");
+ _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");
+ /* query wgl extension string */
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ extStart = (const GLubyte*)"";
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+ crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL;
diff --git a/glew/auto/src/glew_license.h b/glew/auto/src/glew_license.h
new file mode 100644
index 0000000..353640e
--- /dev/null
+++ b/glew/auto/src/glew_license.h
@@ -0,0 +1,32 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
diff --git a/glew/auto/src/glew_str_egl.c b/glew/auto/src/glew_str_egl.c
new file mode 100644
index 0000000..f0c52f9
--- /dev/null
+++ b/glew/auto/src/glew_str_egl.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif defined(GLEW_EGL)
+
+GLboolean eglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"EGL_", 4))
+ {
diff --git a/glew/auto/src/glew_str_glx.c b/glew/auto/src/glew_str_glx.c
new file mode 100644
index 0000000..893d741
--- /dev/null
+++ b/glew/auto/src/glew_str_glx.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+
+GLboolean glxewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"GLX_", 4))
+ {
diff --git a/glew/auto/src/glew_str_head.c b/glew/auto/src/glew_str_head.c
new file mode 100644
index 0000000..fed3a0f
--- /dev/null
+++ b/glew/auto/src/glew_str_head.c
@@ -0,0 +1,9 @@
+GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"GL_", 3))
+ {
diff --git a/glew/auto/src/glew_str_tail.c b/glew/auto/src/glew_str_tail.c
new file mode 100644
index 0000000..caa9572
--- /dev/null
+++ b/glew/auto/src/glew_str_tail.c
@@ -0,0 +1,7 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#endif /* _WIN32 */
diff --git a/glew/auto/src/glew_str_wgl.c b/glew/auto/src/glew_str_wgl.c
new file mode 100644
index 0000000..db67b51
--- /dev/null
+++ b/glew/auto/src/glew_str_wgl.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"WGL_", 4))
+ {
diff --git a/glew/auto/src/glew_tail.h b/glew/auto/src/glew_tail.h
new file mode 100644
index 0000000..65c449a
--- /dev/null
+++ b/glew/auto/src/glew_tail.h
@@ -0,0 +1,69 @@
+/* ------------------------------------------------------------------------- */
+
+/* error codes */
+#define GLEW_OK 0
+#define GLEW_NO_ERROR 0
+#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */
+#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */
+#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */
+#define GLEW_ERROR_NO_GLX_DISPLAY 4 /* Need GLX display for GLX support */
+
+/* string codes */
+#define GLEW_VERSION 1
+#define GLEW_VERSION_MAJOR 2
+#define GLEW_VERSION_MINOR 3
+#define GLEW_VERSION_MICRO 4
+
+/* ------------------------------------------------------------------------- */
+
+/* GLEW version info */
+
+/*
+VERSION GLEW_VERSION_STRING
+VERSION_MAJOR GLEW_VERSION_MAJOR_STRING
+VERSION_MINOR GLEW_VERSION_MINOR_STRING
+VERSION_MICRO GLEW_VERSION_MICRO_STRING
+*/
+
+/* API */
+GLEWAPI GLenum GLEWAPIENTRY glewInit (void);
+GLEWAPI GLenum GLEWAPIENTRY glewContextInit (void);
+GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name);
+#define glewIsExtensionSupported(x) glewIsSupported(x)
+
+#ifndef GLEW_GET_VAR
+#define GLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLEW_GET_FUN
+#define GLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean glewExperimental;
+GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef GLEW_APIENTRY_DEFINED
+#undef GLEW_APIENTRY_DEFINED
+#undef APIENTRY
+#endif
+
+#ifdef GLEW_CALLBACK_DEFINED
+#undef GLEW_CALLBACK_DEFINED
+#undef CALLBACK
+#endif
+
+#ifdef GLEW_WINGDIAPI_DEFINED
+#undef GLEW_WINGDIAPI_DEFINED
+#undef WINGDIAPI
+#endif
+
+#undef GLAPI
+/* #undef GLEWAPI */
+
+#endif /* __glew_h__ */
diff --git a/glew/auto/src/glewinfo_egl.c b/glew/auto/src/glewinfo_egl.c
new file mode 100644
index 0000000..877e722
--- /dev/null
+++ b/glew/auto/src/glewinfo_egl.c
@@ -0,0 +1,6 @@
+}
+
+#elif defined(GLEW_EGL)
+
+static void eglewInfo ()
+{
diff --git a/glew/auto/src/glewinfo_gl.c b/glew/auto/src/glewinfo_gl.c
new file mode 100644
index 0000000..9d7835d
--- /dev/null
+++ b/glew/auto/src/glewinfo_gl.c
@@ -0,0 +1,7 @@
+/* ------------------------------------------------------------------------ */
+
+static void glewInfo (void)
+{
+#ifdef GL_VERSION_1_1
+ _glewInfo_GL_VERSION_1_1();
+#endif /* GL_VERSION_1_1 */
diff --git a/glew/auto/src/glewinfo_glx.c b/glew/auto/src/glewinfo_glx.c
new file mode 100644
index 0000000..e60b549
--- /dev/null
+++ b/glew/auto/src/glewinfo_glx.c
@@ -0,0 +1,6 @@
+}
+
+#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */
+
+static void glxewInfo ()
+{
diff --git a/glew/auto/src/glewinfo_head.c b/glew/auto/src/glewinfo_head.c
new file mode 100644
index 0000000..79ed785
--- /dev/null
+++ b/glew/auto/src/glewinfo_head.c
@@ -0,0 +1,96 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <GL/glxew.h>
+#endif
+
+#if defined(__APPLE__)
+#include <AvailabilityMacros.h>
+#endif
+
+#ifdef GLEW_REGAL
+#include <GL/Regal.h>
+#endif
+
+static FILE* f;
+
+/* Command-line parameters for GL context creation */
+
+struct createParams
+{
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ int pixelformat;
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+ const char* display;
+ int visual;
+#endif
+ int major, minor; /* GL context version number */
+
+ /* https://www.opengl.org/registry/specs/ARB/glx_create_context.txt */
+ int profile; /* core = 1, compatibility = 2 */
+ int flags; /* debug = 1, forward compatible = 2 */
+
+ /* GLEW experimental mode */
+ int experimental;
+};
+
+GLboolean glewCreateContext (struct createParams *params);
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *);
+
+void glewDestroyContext ();
+
+/* ------------------------------------------------------------------------- */
+
+static GLboolean glewPrintExt (const char* name, GLboolean def1, GLboolean def2, GLboolean def3)
+{
+ unsigned int i;
+ fprintf(f, "\n%s:", name);
+ for (i=0; i<62-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s ", def1 ? "OK" : "MISSING");
+ if (def1 != def2)
+ fprintf(f, "[%s] ", def2 ? "OK" : "MISSING");
+ if (def1 != def3)
+ fprintf(f, "[%s]\n", def3 ? "OK" : "MISSING");
+ else
+ fprintf(f, "\n");
+ for (i=0; i<strlen(name)+1; i++) fprintf(f, "-");
+ fprintf(f, "\n");
+ fflush(f);
+ return def1 || def2 || def3 || glewExperimental; /* Enable per-function info too? */
+}
+
+static void glewInfoFunc (GLboolean fi, const char* name, GLint undefined)
+{
+ unsigned int i;
+ if (fi)
+ {
+ fprintf(f, " %s:", name);
+ for (i=0; i<60-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s\n", undefined ? "MISSING" : "OK");
+ fflush(f);
+ }
+}
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifdef GL_VERSION_1_1
+
+static void _glewInfo_GL_VERSION_1_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_1", GLEW_VERSION_1_1, GLEW_VERSION_1_1, GLEW_VERSION_1_1);
+}
+
+#endif /* GL_VERSION_1_1 */
+
diff --git a/glew/auto/src/glewinfo_tail.c b/glew/auto/src/glewinfo_tail.c
new file mode 100644
index 0000000..fe51168
--- /dev/null
+++ b/glew/auto/src/glewinfo_tail.c
@@ -0,0 +1,609 @@
+}
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+int main (int argc, char** argv)
+{
+ GLuint err;
+ struct createParams params =
+ {
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ -1, /* pixelformat */
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "", /* display */
+ -1, /* visual */
+#endif
+ 0, /* major */
+ 0, /* minor */
+ 0, /* profile mask */
+ 0, /* flags */
+ 0 /* experimental */
+ };
+
+#if defined(GLEW_EGL)
+ typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+ PFNGLGETSTRINGPROC getString;
+#endif
+
+ if (glewParseArgs(argc-1, argv+1, &params))
+ {
+ fprintf(stderr, "Usage: glewinfo "
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ "[-pf <pixelformat>] "
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "[-display <display>] "
+ "[-visual <visual id>] "
+#endif
+ "[-version <OpenGL version>] "
+ "[-profile core|compatibility] "
+ "[-flag debug|forward] "
+ "[-experimental]"
+ "\n");
+ return 1;
+ }
+
+ if (GL_TRUE == glewCreateContext(&params))
+ {
+ fprintf(stderr, "Error: glewCreateContext failed\n");
+ glewDestroyContext();
+ return 1;
+ }
+ glewExperimental = params.experimental ? GL_TRUE : GL_FALSE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ glewDestroyContext();
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ getString = (PFNGLGETSTRINGPROC) eglGetProcAddress("glGetString");
+ if (!getString)
+ {
+ fprintf(stderr, "Error: eglGetProcAddress failed to fetch glGetString\n");
+ glewDestroyContext();
+ return 1;
+ }
+#endif
+
+#if defined(_WIN32)
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&f, "glewinfo.txt", "w") != 0)
+ f = stdout;
+#else
+ f = fopen("glewinfo.txt", "w");
+#endif
+ if (f == NULL) f = stdout;
+#else
+ f = stdout;
+#endif
+ fprintf(f, "---------------------------\n");
+ fprintf(f, " GLEW Extension Info\n");
+ fprintf(f, "---------------------------\n\n");
+ fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n",
+ params.display == NULL ? getenv("DISPLAY") : params.display, params.visual);
+#endif
+#if defined(GLEW_EGL)
+ fprintf(f, "Running on a %s from %s\n",
+ getString(GL_RENDERER), getString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", getString(GL_VERSION));
+#else
+ fprintf(f, "Running on a %s from %s\n",
+ glGetString(GL_RENDERER), glGetString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION));
+#endif
+ glewInfo();
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+ eglewInfo();
+#elif defined(_WIN32)
+ wglewInfo();
+#else
+ glxewInfo();
+#endif
+ if (f != stdout) fclose(f);
+ glewDestroyContext();
+ return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *params)
+{
+ int p = 0;
+ while (p < argc)
+ {
+ if (!strcmp(argv[p], "-version"))
+ {
+ if (++p >= argc) return GL_TRUE;
+#if defined(__STDC_LIB_EXT1__) || (defined(_MSC_VER) && (_MSC_VER >= 1400))
+ if (sscanf_s(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#else
+ if (sscanf(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#endif
+ }
+ else if (!strcmp(argv[p], "-profile"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("core", argv[p]) == 0) params->profile |= 1;
+ else if (strcmp("compatibility",argv[p]) == 0) params->profile |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+ else if (!strcmp(argv[p], "-flag"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("debug", argv[p]) == 0) params->flags |= 1;
+ else if (strcmp("forward",argv[p]) == 0) params->flags |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->pixelformat = strtol(argv[p++], NULL, 0);
+ }
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ else if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->display = argv[p++];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->visual = (int)strtol(argv[p++], NULL, 0);
+ }
+#endif
+ else if (!strcmp(argv[p], "-experimental"))
+ {
+ params->experimental = 1;
+ ++p;
+ }
+ else
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_EGL)
+EGLDisplay display;
+EGLContext ctx;
+
+/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ EGLDeviceEXT devices[1];
+ EGLint numDevices;
+ EGLSurface surface;
+ EGLint majorVersion, minorVersion;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
+ EGL_NONE
+ };
+ static const EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ static const EGLint pBufferAttribs[] = {
+ EGL_WIDTH, 128,
+ EGL_HEIGHT, 128,
+ EGL_NONE
+ };
+ EGLConfig config;
+ EGLint numConfig;
+ EGLBoolean pBuffer;
+
+ PFNEGLQUERYDEVICESEXTPROC queryDevices = NULL;
+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL;
+ PFNEGLGETERRORPROC getError = NULL;
+ PFNEGLGETDISPLAYPROC getDisplay = NULL;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLBINDAPIPROC bindAPI = NULL;
+ PFNEGLCHOOSECONFIGPROC chooseConfig = NULL;
+ PFNEGLCREATEWINDOWSURFACEPROC createWindowSurface = NULL;
+ PFNEGLCREATECONTEXTPROC createContext = NULL;
+ PFNEGLMAKECURRENTPROC makeCurrent = NULL;
+ PFNEGLCREATEPBUFFERSURFACEPROC createPbufferSurface = NULL;
+
+ /* Load necessary entry points */
+ queryDevices = (PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT");
+ getPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress("eglGetPlatformDisplayEXT");
+ getError = (PFNEGLGETERRORPROC) eglGetProcAddress("eglGetError");
+ getDisplay = (PFNEGLGETDISPLAYPROC) eglGetProcAddress("eglGetDisplay");
+ initialize = (PFNEGLINITIALIZEPROC) eglGetProcAddress("eglInitialize");
+ bindAPI = (PFNEGLBINDAPIPROC) eglGetProcAddress("eglBindAPI");
+ chooseConfig = (PFNEGLCHOOSECONFIGPROC) eglGetProcAddress("eglChooseConfig");
+ createWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) eglGetProcAddress("eglCreateWindowSurface");
+ createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) eglGetProcAddress("eglCreatePbufferSurface");
+ createContext = (PFNEGLCREATECONTEXTPROC) eglGetProcAddress("eglCreateContext");
+ makeCurrent = (PFNEGLMAKECURRENTPROC) eglGetProcAddress("eglMakeCurrent");
+ if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent)
+ return GL_TRUE;
+
+ pBuffer = 0;
+ display = EGL_NO_DISPLAY;
+ if (queryDevices && getPlatformDisplay)
+ {
+ queryDevices(1, devices, &numDevices);
+ if (numDevices==1)
+ {
+ /* Nvidia EGL doesn't need X11 for p-buffer surface */
+ display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0);
+ configAttribs[1] = EGL_PBUFFER_BIT;
+ pBuffer = 1;
+ }
+ }
+ if (display==EGL_NO_DISPLAY)
+ {
+ /* Fall-back to X11 surface, works on Mesa */
+ display = getDisplay(EGL_DEFAULT_DISPLAY);
+ }
+ if (display == EGL_NO_DISPLAY)
+ return GL_TRUE;
+
+ eglewInit(display);
+
+ if (bindAPI(EGL_OPENGL_API) != EGL_TRUE)
+ return GL_TRUE;
+
+ if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1))
+ return GL_TRUE;
+
+ ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL);
+ if (NULL == ctx)
+ return GL_TRUE;
+
+ surface = EGL_NO_SURFACE;
+ /* Create a p-buffer surface if possible */
+ if (pBuffer && createPbufferSurface)
+ {
+ surface = createPbufferSurface(display, config, pBufferAttribs);
+ }
+ /* Create a generic surface without a native window, if necessary */
+ if (surface==EGL_NO_SURFACE)
+ {
+ surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL);
+ }
+#if 0
+ if (surface == EGL_NO_SURFACE)
+ return GL_TRUE;
+#endif
+
+ if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE)
+ return GL_TRUE;
+
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) eglDestroyContext(display, ctx);
+}
+
+#elif defined(GLEW_OSMESA)
+OSMesaContext ctx;
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) OSMesaDestroyContext(ctx);
+}
+
+#elif defined(_WIN32)
+
+HWND wnd = NULL;
+HDC dc = NULL;
+HGLRC rc = NULL;
+
+GLboolean glewCreateContext (struct createParams* params)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL);
+ if (NULL == wnd) return GL_TRUE;
+ /* get the device context */
+ dc = GetDC(wnd);
+ if (NULL == dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (params->pixelformat == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ params->pixelformat = ChoosePixelFormat(dc, &pfd);
+ if (params->pixelformat == 0) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(dc, params->pixelformat, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ rc = wglCreateContext(dc);
+ if (NULL == rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(dc, rc)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ HGLRC oldRC = rc;
+ int contextAttrs[20];
+ int i;
+
+ wglewInit();
+
+ /* Intel HD 3000 has WGL_ARB_create_context, but not WGL_ARB_create_context_profile */
+ if (!wglewGetExtension("WGL_ARB_create_context"))
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = WGL_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = 0;
+ rc = wglCreateContextAttribsARB(dc, 0, contextAttrs);
+
+ if (NULL == rc) return GL_TRUE;
+ if (!wglMakeCurrent(dc, rc)) return GL_TRUE;
+
+ wglDeleteContext(oldRC);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != rc) wglDeleteContext(rc);
+ if (NULL != wnd && NULL != dc) ReleaseDC(wnd, dc);
+ if (NULL != wnd) DestroyWindow(wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+
+CGLContextObj ctx, octx;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ CGLPixelFormatAttribute contextAttrs[20];
+ int i;
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+
+ i = 0;
+ contextAttrs[i++] = kCGLPFAAccelerated; /* No software rendering */
+
+ /* MAC_OS_X_VERSION_10_7 == 1070 */
+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ if (params->profile & GL_CONTEXT_CORE_PROFILE_BIT)
+ {
+ if ((params->major==3 && params->minor>=2) || params->major>3)
+ {
+ contextAttrs[i++] = kCGLPFAOpenGLProfile; /* OSX 10.7 Lion onwards */
+ contextAttrs[i++] = (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core; /* 3.2 Core Context */
+ }
+ }
+ #endif
+
+ contextAttrs[i++] = 0;
+
+ error = CGLChoosePixelFormat(contextAttrs, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx);
+ if (error) return GL_TRUE;
+ /* Needed for Regal on the Mac */
+ #if defined(GLEW_REGAL) && defined(__APPLE__)
+ RegalMakeCurrent(ctx);
+ #endif
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ CGLSetCurrentContext(octx);
+ CGLReleaseContext(ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ /* TODO: Haiku: We need to call C++ code here */
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ /* TODO: Haiku: We need to call C++ code here */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+Display* dpy = NULL;
+XVisualInfo* vi = NULL;
+XVisualInfo* vis = NULL;
+GLXContext ctx = NULL;
+Window wnd = 0;
+Colormap cmap = 0;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* open display */
+ dpy = XOpenDisplay(params->display);
+ if (NULL == dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ if (params->visual == -1)
+ {
+ vi = glXChooseVisual(dpy, DefaultScreen(dpy), attrib);
+ if (NULL == vi) return GL_TRUE;
+ params->visual = (int)XVisualIDFromVisual(vi->visual);
+ }
+ else
+ {
+ int n_vis, i;
+ vis = XGetVisualInfo(dpy, 0, NULL, &n_vis);
+ for (i=0; i<n_vis; i++)
+ {
+ if ((int)XVisualIDFromVisual(vis[i].visual) == params->visual)
+ vi = &vis[i];
+ }
+ if (vi == NULL) return GL_TRUE;
+ }
+ /* create context */
+ ctx = glXCreateContext(dpy, vi, None, True);
+ if (NULL == ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = cmap;
+ wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen),
+ 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ GLXContext oldCtx = ctx;
+ GLXFBConfig *FBConfigs;
+ int FBConfigAttrs[] = { GLX_FBCONFIG_ID, 0, None };
+ int contextAttrs[20];
+ int nelems, i;
+
+ glxewInit();
+
+ if (!glxewGetExtension("GLX_ARB_create_context"))
+ return GL_TRUE;
+
+ if (glXQueryContext(dpy, oldCtx, GLX_FBCONFIG_ID, &FBConfigAttrs[1]))
+ return GL_TRUE;
+ FBConfigs = glXChooseFBConfig(dpy, vi->screen, FBConfigAttrs, &nelems);
+
+ if (nelems < 1)
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = GLX_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = None;
+ ctx = glXCreateContextAttribsARB(dpy, *FBConfigs, NULL, True, contextAttrs);
+
+ if (NULL == ctx) return GL_TRUE;
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+
+ glXDestroyContext(dpy, oldCtx);
+
+ XFree(FBConfigs);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != dpy && NULL != ctx) glXDestroyContext(dpy, ctx);
+ if (NULL != dpy && 0 != wnd) XDestroyWindow(dpy, wnd);
+ if (NULL != dpy && 0 != cmap) XFreeColormap(dpy, cmap);
+ if (NULL != vis)
+ XFree(vis);
+ else if (NULL != vi)
+ XFree(vi);
+ if (NULL != dpy) XCloseDisplay(dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
diff --git a/glew/auto/src/glewinfo_wgl.c b/glew/auto/src/glewinfo_wgl.c
new file mode 100644
index 0000000..9405667
--- /dev/null
+++ b/glew/auto/src/glewinfo_wgl.c
@@ -0,0 +1,8 @@
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+static void wglewInfo ()
+{
diff --git a/glew/auto/src/glxew_head.h b/glew/auto/src/glxew_head.h
new file mode 100644
index 0000000..414dc1b
--- /dev/null
+++ b/glew/auto/src/glxew_head.h
@@ -0,0 +1,111 @@
+#ifndef __glxew_h__
+#define __glxew_h__
+#define __GLXEW_H__
+
+#ifdef __glxext_h_
+#error glxext.h included before glxew.h
+#endif
+
+#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__)
+#error glx.h included before glxew.h
+#endif
+
+#define __glxext_h_
+
+#define GLX_H
+#define __GLX_glx_h__
+#define __glx_h__
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmd.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ---------------------------- GLX_VERSION_1_0 --------------------------- */
+
+#ifndef GLX_VERSION_1_0
+#define GLX_VERSION_1_0 1
+
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+#define GLX_BAD_SCREEN 1
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_BAD_VALUE 6
+#define GLX_BAD_ENUM 7
+
+typedef XID GLXDrawable;
+typedef XID GLXPixmap;
+#ifdef __sun
+typedef struct __glXContextRec *GLXContext;
+#else
+typedef struct __GLXcontextRec *GLXContext;
+#endif
+
+typedef unsigned int GLXVideoDeviceNV;
+
+extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase);
+extern Bool glXQueryVersion (Display *dpy, int *major, int *minor);
+extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value);
+extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList);
+extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap);
+extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix);
+extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
+extern void glXDestroyContext (Display *dpy, GLXContext ctx);
+extern Bool glXIsDirect (Display *dpy, GLXContext ctx);
+extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask);
+extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx);
+extern GLXContext glXGetCurrentContext (void);
+extern GLXDrawable glXGetCurrentDrawable (void);
+extern void glXWaitGL (void);
+extern void glXWaitX (void);
+extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable);
+extern void glXUseXFont (Font font, int first, int count, int listBase);
+
+#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0)
+
+#endif /* GLX_VERSION_1_0 */
+
+/* ---------------------------- GLX_VERSION_1_1 --------------------------- */
+
+#ifndef GLX_VERSION_1_1
+#define GLX_VERSION_1_1
+
+#define GLX_VENDOR 0x1
+#define GLX_VERSION 0x2
+#define GLX_EXTENSIONS 0x3
+
+extern const char* glXQueryExtensionsString (Display *dpy, int screen);
+extern const char* glXGetClientString (Display *dpy, int name);
+extern const char* glXQueryServerString (Display *dpy, int screen, int name);
+
+#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1)
+
+#endif /* GLX_VERSION_1_1 */
+
diff --git a/glew/auto/src/glxew_mid.h b/glew/auto/src/glxew_mid.h
new file mode 100644
index 0000000..7fcf5d6
--- /dev/null
+++ b/glew/auto/src/glxew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/glxew_tail.h b/glew/auto/src/glxew_tail.h
new file mode 100644
index 0000000..05ff1b1
--- /dev/null
+++ b/glew/auto/src/glxew_tail.h
@@ -0,0 +1,20 @@
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY glxewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name);
+
+#ifndef GLXEW_GET_VAR
+#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLXEW_GET_FUN
+#define GLXEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glxew_h__ */
diff --git a/glew/auto/src/header.html b/glew/auto/src/header.html
new file mode 100644
index 0000000..3af7255
--- /dev/null
+++ b/glew/auto/src/header.html
@@ -0,0 +1,96 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
diff --git a/glew/auto/src/khronos_license.h b/glew/auto/src/khronos_license.h
new file mode 100644
index 0000000..420cd72
--- /dev/null
+++ b/glew/auto/src/khronos_license.h
@@ -0,0 +1,23 @@
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
diff --git a/glew/auto/src/mesa_license.h b/glew/auto/src/mesa_license.h
new file mode 100644
index 0000000..3350cca
--- /dev/null
+++ b/glew/auto/src/mesa_license.h
@@ -0,0 +1,24 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
diff --git a/glew/auto/src/wglew_head.h b/glew/auto/src/wglew_head.h
new file mode 100644
index 0000000..df88503
--- /dev/null
+++ b/glew/auto/src/wglew_head.h
@@ -0,0 +1,36 @@
+#ifndef __wglew_h__
+#define __wglew_h__
+#define __WGLEW_H__
+
+#ifdef __wglext_h_
+#error wglext.h included before wglew.h
+#endif
+
+#define __wglext_h_
+
+#if !defined(WINAPI)
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+#include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+#endif
+
+/*
+ * GLEW_STATIC needs to be set when using the static version.
+ * GLEW_BUILD is set when building the DLL version.
+ */
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
diff --git a/glew/auto/src/wglew_mid.h b/glew/auto/src/wglew_mid.h
new file mode 100644
index 0000000..25b1037
--- /dev/null
+++ b/glew/auto/src/wglew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/wglew_tail.h b/glew/auto/src/wglew_tail.h
new file mode 100644
index 0000000..8971158
--- /dev/null
+++ b/glew/auto/src/wglew_tail.h
@@ -0,0 +1,22 @@
+/* ------------------------------------------------------------------------- */
+
+GLEWAPI GLenum GLEWAPIENTRY wglewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name);
+
+#ifndef WGLEW_GET_VAR
+#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef WGLEW_GET_FUN
+#define WGLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef GLEWAPI
+
+#endif /* __wglew_h__ */
diff --git a/glew/build/cmake/CMakeLists.txt b/glew/build/cmake/CMakeLists.txt
new file mode 100644
index 0000000..281eed8
--- /dev/null
+++ b/glew/build/cmake/CMakeLists.txt
@@ -0,0 +1,287 @@
+if ( NOT DEFINED CMAKE_BUILD_TYPE )
+ set( CMAKE_BUILD_TYPE Release CACHE STRING "Build type" )
+endif ()
+
+project (glew C)
+
+cmake_minimum_required (VERSION 2.8.12)
+
+include(GNUInstallDirs)
+
+if(POLICY CMP0003)
+ cmake_policy (SET CMP0003 NEW)
+endif()
+
+if(POLICY CMP0042)
+ cmake_policy (SET CMP0042 NEW)
+endif()
+
+if (POLICY CMP0072)
+ cmake_policy (SET CMP0072 NEW)
+endif(POLICY CMP0072)
+
+set(CMAKE_DEBUG_POSTFIX d)
+
+option (BUILD_UTILS "utilities" ON)
+option (GLEW_REGAL "Regal mode" OFF)
+option (GLEW_OSMESA "OSMesa mode" OFF)
+if (APPLE)
+ option (BUILD_FRAMEWORK "Build Framework bundle for OSX" OFF)
+endif ()
+option (GLEW_X11 "X11 mode" ON)
+option (GLEW_EGL "EGL mode" OFF)
+option (BUILD_SHARED_LIBS "install/link shared instead of static libs" ON)
+
+set (GLEW_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../..)
+
+# get version from config/version
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_MAJOR_STRING REGEX "GLEW_MAJOR[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MAJOR[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${_VERSION_MAJOR_STRING})
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_MINOR_STRING REGEX "GLEW_MINOR[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MINOR[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MINOR ${_VERSION_MINOR_STRING})
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_PATCH_STRING REGEX "GLEW_MICRO[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MICRO[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_PATCH ${_VERSION_PATCH_STRING})
+set (GLEW_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
+
+if (NOT GLEW_CUSTOM_OUTPUT_DIRS)
+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+endif()
+
+find_package (OpenGL REQUIRED)
+
+# cmake<3.10 doesn't detect EGL/GLX
+if (CMAKE_VERSION VERSION_LESS 3.10)
+ find_library(OPENGL_egl_LIBRARY NAMES EGL)
+ if (OPENGL_egl_LIBRARY)
+ set (OpenGL_EGL_FOUND TRUE)
+ endif ()
+endif ()
+
+# prefer GLVND
+if (OPENGL_opengl_LIBRARY)
+ set (GLEW_LIBRARIES ${OPENGL_opengl_LIBRARY})
+else ()
+ set (GLEW_LIBRARIES ${OPENGL_gl_LIBRARY})
+endif ()
+
+# X11 required except for Windows and Apple OSX platforms
+if (GLEW_X11 AND NOT WIN32 AND NOT APPLE)
+ find_package (X11)
+ list (APPEND GLEW_LIBRARIES ${OPENGL_glx_LIBRARY} ${X11_LIBRARIES})
+endif()
+
+if (WIN32)
+ set (GLEW_LIB_NAME glew32)
+else ()
+ set (GLEW_LIB_NAME GLEW)
+ set (DLL_PREFIX lib)
+endif ()
+
+add_definitions (-DGLEW_NO_GLU)
+
+#### Regal mode ####
+
+if (GLEW_REGAL)
+ if (WIN32)
+ set (REGAL_LIB_NAME regal32)
+ else ()
+ set (REGAL_LIB_NAME Regal)
+ endif ()
+ add_definitions (-DGLEW_REGAL)
+ set (GLEW_LIBRARIES ${REGAL_LIB_NAME})
+endif ()
+
+#### OSMesa mode ####
+
+if (GLEW_OSMESA)
+ if (WIN32)
+ set (OSMESA_LIB_NAME osmesa)
+ else ()
+ set (OSMESA_LIB_NAME OSMesa)
+ endif ()
+ add_definitions (-DGLEW_OSMESA)
+ list (APPEND GLEW_LIBRARIES ${OSMESA_LIB_NAME})
+ set (X11_LIBRARIES)
+endif ()
+
+#### EGL ####
+
+if (GLEW_EGL AND UNIX)
+ add_definitions (-DGLEW_EGL)
+ if (NOT OpenGL_EGL_FOUND)
+ message (FATAL_ERROR "EGL library set but not found.")
+ endif ()
+ list (APPEND GLEW_LIBRARIES ${OPENGL_egl_LIBRARY})
+endif ()
+
+#### GLEW ####
+
+include_directories (${GLEW_DIR}/include ${X11_INCLUDE_DIR})
+
+set (GLEW_PUBLIC_HEADERS_FILES
+ ${GLEW_DIR}/include/GL/wglew.h
+ ${GLEW_DIR}/include/GL/glew.h
+ ${GLEW_DIR}/include/GL/glxew.h
+ ${GLEW_DIR}/include/GL/eglew.h
+)
+set (GLEW_SRC_FILES ${GLEW_DIR}/src/glew.c)
+
+if (WIN32)
+ list (APPEND GLEW_SRC_FILES ${GLEW_DIR}/build/glew.rc)
+endif ()
+
+add_library (glew SHARED ${GLEW_PUBLIC_HEADERS_FILES} ${GLEW_SRC_FILES})
+set_target_properties (glew PROPERTIES COMPILE_DEFINITIONS "GLEW_BUILD" OUTPUT_NAME "${GLEW_LIB_NAME}" PREFIX "${DLL_PREFIX}"
+ VERSION ${GLEW_VERSION}
+ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR})
+add_library (glew_s STATIC ${GLEW_PUBLIC_HEADERS_FILES} ${GLEW_SRC_FILES})
+set_target_properties (glew_s PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC" OUTPUT_NAME "${GLEW_LIB_NAME}" PREFIX lib)
+
+if (MSVC)
+ # add options from visual studio project
+ target_compile_definitions (glew PRIVATE "GLEW_BUILD;VC_EXTRALEAN")
+ target_compile_definitions (glew_s PRIVATE "GLEW_STATIC;VC_EXTRALEAN")
+ target_link_libraries (glew LINK_PRIVATE -BASE:0x62AA0000)
+ # kill security checks which are dependent on stdlib
+ target_compile_options (glew PRIVATE -GS-)
+ target_compile_options (glew_s PRIVATE -GS-)
+ # remove stdlib dependency
+ target_link_libraries (glew LINK_PRIVATE -nodefaultlib -noentry)
+ target_link_libraries (glew LINK_PRIVATE libvcruntime.lib)
+ target_link_libraries (glew LINK_PRIVATE msvcrt.lib )
+ string(REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
+elseif (WIN32 AND ((CMAKE_C_COMPILER_ID MATCHES "GNU") OR (CMAKE_C_COMPILER_ID MATCHES "Clang")))
+ # remove stdlib dependency on windows with GCC and Clang (for similar reasons
+ # as to MSVC - to allow it to be used with any Windows compiler)
+ target_compile_options (glew PRIVATE -fno-builtin -fno-stack-protector)
+ target_compile_options (glew_s PRIVATE -fno-builtin -fno-stack-protector)
+ target_link_libraries (glew LINK_PRIVATE -nostdlib)
+endif ()
+
+if (BUILD_FRAMEWORK)
+ set_target_properties(glew PROPERTIES
+ FRAMEWORK TRUE
+ FRAMEWORK_VERSION ${GLEW_VERSION}
+ MACOSX_FRAMEWORK_IDENTIFIER net.sourceforge.glew
+ MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${GLEW_VERSION}
+ MACOSX_FRAMEWORK_BUNDLE_VERSION ${GLEW_VERSION}
+ XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
+ PUBLIC_HEADER "${GLEW_PUBLIC_HEADERS_FILES}"
+ OUTPUT_NAME GLEW
+ )
+endif()
+
+target_link_libraries (glew LINK_PUBLIC ${GLEW_LIBRARIES})
+target_link_libraries (glew_s ${GLEW_LIBRARIES})
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ set(MAYBE_EXPORT "")
+else()
+ target_compile_definitions(glew_s INTERFACE "GLEW_STATIC")
+ foreach(t glew glew_s)
+ target_include_directories(${t} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ endforeach()
+ set(MAYBE_EXPORT EXPORT glew-targets)
+endif()
+
+set(targets_to_install "")
+if(BUILD_SHARED_LIBS)
+ list(APPEND targets_to_install glew)
+else ()
+ list(APPEND targets_to_install glew_s)
+endif()
+
+install ( TARGETS ${targets_to_install}
+ ${MAYBE_EXPORT}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX}
+)
+
+if (BUILD_UTILS)
+ set (GLEWINFO_SRC_FILES ${GLEW_DIR}/src/glewinfo.c)
+ if (WIN32)
+ list (APPEND GLEWINFO_SRC_FILES ${GLEW_DIR}/build/glewinfo.rc)
+ endif ()
+ add_executable (glewinfo ${GLEWINFO_SRC_FILES})
+ if(BUILD_SHARED_LIBS)
+ target_link_libraries (glewinfo glew)
+ else()
+ target_link_libraries (glewinfo glew_s)
+ endif()
+ if (NOT WIN32)
+ target_link_libraries(glewinfo ${X11_LIBRARIES})
+ endif ()
+
+ set (VISUALINFO_SRC_FILES ${GLEW_DIR}/src/visualinfo.c)
+ if (WIN32)
+ list (APPEND VISUALINFO_SRC_FILES ${GLEW_DIR}/build/visualinfo.rc)
+ endif ()
+ add_executable (visualinfo ${VISUALINFO_SRC_FILES})
+ if(BUILD_SHARED_LIBS)
+ target_link_libraries (visualinfo glew)
+ else()
+ target_link_libraries (visualinfo glew_s)
+ endif()
+ if (NOT WIN32)
+ target_link_libraries(visualinfo ${X11_LIBRARIES})
+ endif ()
+
+ install ( TARGETS glewinfo visualinfo
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif ()
+
+set (prefix ${CMAKE_INSTALL_PREFIX})
+set (exec_prefix ${CMAKE_INSTALL_PREFIX})
+set (libdir ${CMAKE_INSTALL_FULL_LIBDIR})
+set (includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+set (version ${GLEW_VERSION})
+set (libname ${GLEW_LIB_NAME})
+set (cflags)
+set (requireslib glu)
+
+# Mac OSX has no glu.pc unless optional X11/GLX is installed
+if (APPLE)
+ set (requireslib)
+endif ()
+
+configure_file (${GLEW_DIR}/glew.pc.in ${CMAKE_CURRENT_BINARY_DIR}/glew.pc @ONLY)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glew.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+)
+
+if(WIN32 AND MSVC AND (NOT MSVC_VERSION LESS 1600) AND (NOT CMAKE_VERSION VERSION_LESS "3.1"))
+ install(
+ FILES $<TARGET_PDB_FILE:glew>
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ CONFIGURATIONS Debug RelWithDebInfo
+ )
+endif()
+
+install (
+ FILES ${GLEW_PUBLIC_HEADERS_FILES}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GL)
+
+if(MAYBE_EXPORT)
+ install(EXPORT glew-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glew
+ NAMESPACE GLEW::)
+ install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/glew-config.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CopyImportedTargetProperties.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glew)
+endif()
+
+if(NOT TARGET uninstall)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
+ IMMEDIATE @ONLY)
+
+ add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+endif()
diff --git a/glew/build/cmake/CopyImportedTargetProperties.cmake b/glew/build/cmake/CopyImportedTargetProperties.cmake
new file mode 100644
index 0000000..a7ade98
--- /dev/null
+++ b/glew/build/cmake/CopyImportedTargetProperties.cmake
@@ -0,0 +1,88 @@
+#.rst:
+# CopyImportedTargetProperties
+# --------------------------
+#
+# Copies the `INTERFACE*` and `IMPORTED*` properties from a target
+# to another one.
+# This function can be used to duplicate an `IMPORTED` or an `ALIAS` library
+# with a different name since ``add_library(... ALIAS ...)`` does not work
+# for those targets.
+#
+# ::
+#
+# copy_imported_target_properties(<source-target> <destination-target>)
+#
+# The function copies all the `INTERFACE*` and `IMPORTED*` target
+# properties from `<source-target>` to `<destination-target>`.
+#
+# The function uses the `IMPORTED_CONFIGURATIONS` property to determine
+# which configuration-dependent properties should be copied
+# (`IMPORTED_LOCATION_<CONFIG>`, etc...)
+#
+# Example:
+#
+# Internally the CMake project of ZLIB builds the ``zlib`` and
+# ``zlibstatic`` targets which can be exported in the ``ZLIB::`` namespace
+# with the ``install(EXPORT ...)`` command.
+#
+# The config-module will then create the import libraries ``ZLIB::zlib`` and
+# ``ZLIB::zlibstatic``. To use ``ZLIB::zlibstatic`` under the standard
+# ``ZLIB::ZLIB`` name we need to create the ``ZLIB::ZLIB`` imported library
+# and copy the appropriate properties:
+#
+# add_library(ZLIB::ZLIB STATIC IMPORTED)
+# copy_imported_target_properties(ZLIB::zlibstatic ZLIB::ZLIB)
+#
+
+function(copy_imported_target_properties src_target dest_target)
+
+ set(config_dependent_props
+ IMPORTED_IMPLIB
+ IMPORTED_LINK_DEPENDENT_LIBRARIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES
+ IMPORTED_LINK_INTERFACE_LIBRARIES
+ IMPORTED_LINK_INTERFACE_MULTIPLICITY
+ IMPORTED_LOCATION
+ IMPORTED_NO_SONAME
+ IMPORTED_SONAME
+ )
+
+ # copy configuration-independent properties
+ foreach(prop
+ ${config_dependent_props}
+ IMPORTED_CONFIGURATIONS
+ INTERFACE_AUTOUIC_OPTIONS
+ INTERFACE_COMPILE_DEFINITIONS
+ INTERFACE_COMPILE_FEATURES
+ INTERFACE_COMPILE_OPTIONS
+ INTERFACE_INCLUDE_DIRECTORIES
+ INTERFACE_LINK_LIBRARIES
+ INTERFACE_POSITION_INDEPENDENT_CODE
+ INTERFACE_SOURCES
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
+ )
+ get_property(is_set TARGET ${src_target} PROPERTY ${prop} SET)
+ if(is_set)
+ get_target_property(v ${src_target} ${prop})
+ set_target_properties(${dest_target} PROPERTIES ${prop} "${v}")
+ # message(STATUS "set_target_properties(${dest_target} PROPERTIES ${prop} ${v})")
+ endif()
+ endforeach()
+
+ # copy configuration-dependent properties
+ get_target_property(imported_configs ${src_target}
+ IMPORTED_CONFIGURATIONS)
+
+ foreach(config ${imported_configs})
+ foreach(prop_prefix ${config_dependent_props})
+ set(prop ${prop_prefix}_${config})
+ get_property(is_set TARGET ${src_target} PROPERTY ${prop} SET)
+ if(is_set)
+ get_target_property(v ${src_target} ${prop})
+ set_target_properties(${dest_target}
+ PROPERTIES ${prop} "${v}")
+ # message(STATUS "set_target_properties(${dest_target} PROPERTIES ${prop} ${v})")
+ endif()
+ endforeach()
+ endforeach()
+endfunction()
diff --git a/glew/build/cmake/cmake_uninstall.cmake.in b/glew/build/cmake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..2517e99
--- /dev/null
+++ b/glew/build/cmake/cmake_uninstall.cmake.in
@@ -0,0 +1,26 @@
+if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
+
+if (NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
+endif ()
+ message(${CMAKE_INSTALL_PREFIX})
+
+file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ exec_program(
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+ endif(NOT "${rm_retval}" STREQUAL 0)
+ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)
diff --git a/glew/build/cmake/glew-config.cmake b/glew/build/cmake/glew-config.cmake
new file mode 100644
index 0000000..0b79c0b
--- /dev/null
+++ b/glew/build/cmake/glew-config.cmake
@@ -0,0 +1,60 @@
+# This config-module creates the following import libraries:
+#
+# - GLEW::glew shared lib
+# - GLEW::glew_s static lib
+#
+# Additionally GLEW::GLEW will be created as an
+# copy of either the shared (default) or the static libs.
+#
+# Dependending on the setting of BUILD_SHARED_LIBS at GLEW build time
+# either the static or shared versions may not be available.
+#
+# Set GLEW_USE_STATIC_LIBS to OFF or ON to force using the shared
+# or static lib for GLEW::GLEW
+#
+
+include(${CMAKE_CURRENT_LIST_DIR}/glew-targets.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/CopyImportedTargetProperties.cmake)
+
+# decide which import library (glew/glew_s)
+# needs to be copied to GLEW::GLEW
+set(_glew_target_postfix "")
+set(_glew_target_type SHARED)
+if(DEFINED GLEW_USE_STATIC_LIBS)
+ # if defined, use only static or shared
+ if(GLEW_USE_STATIC_LIBS)
+ set(_glew_target_postfix "_s")
+ endif()
+ # else use static only if no shared
+elseif(NOT TARGET GLEW::glew AND TARGET GLEW::glew_s)
+ set(_glew_target_postfix "_s")
+endif()
+if(_glew_target_postfix STREQUAL "")
+ set(_glew_target_type SHARED)
+else()
+ set(_glew_target_type STATIC)
+endif()
+
+# CMake doesn't allow creating ALIAS lib for an IMPORTED lib
+# so create imported ones and copy the properties
+foreach(_glew_target glew)
+ set(_glew_src_target "GLEW::${_glew_target}${_glew_target_postfix}")
+ string(TOUPPER "GLEW::${_glew_target}" _glew_dest_target)
+ if(TARGET ${_glew_dest_target})
+ get_target_property(_glew_previous_src_target ${_glew_dest_target}
+ _GLEW_SRC_TARGET)
+ if(NOT _glew_previous_src_target STREQUAL _glew_src_target)
+ message(FATAL_ERROR "find_package(GLEW) was called the second time with "
+ "different GLEW_USE_STATIC_LIBS setting. Previously, "
+ "`glew-config.cmake` created ${_glew_dest_target} as a copy of "
+ "${_glew_previous_src_target}. Now it attempted to copy it from "
+ "${_glew_src_target}. ")
+ endif()
+ else()
+ add_library(${_glew_dest_target} ${_glew_target_type} IMPORTED)
+ # message(STATUS "add_library(${_glew_dest_target} ${_glew_target_type} IMPORTED)")
+ copy_imported_target_properties(${_glew_src_target} ${_glew_dest_target})
+ set_target_properties(${_glew_dest_target} PROPERTIES
+ _GLEW_SRC_TARGET ${_glew_src_target})
+ endif()
+endforeach()
diff --git a/glew/build/cmake/testbuild/CMakeLists.txt b/glew/build/cmake/testbuild/CMakeLists.txt
new file mode 100644
index 0000000..27bcf2d
--- /dev/null
+++ b/glew/build/cmake/testbuild/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 2.8.12)
+project(glew-cmake-test)
+
+find_package(GLEW REQUIRED CONFIG)
+find_package(GLEW REQUIRED CONFIG) # call twice to test multiple call
+find_package(OpenGL REQUIRED)
+
+add_executable(cmake-test main.c)
+set_target_properties(cmake-test PROPERTIES DEBUG_POSTFIX _d)
+target_link_libraries(cmake-test PRIVATE GLEW::GLEW ${OPENGL_LIBRARIES})
+target_include_directories(cmake-test PRIVATE ${OPENGL_INCLUDE_DIR})
+
+if(CMAKE_VERSION VERSION_LESS 3.0)
+ set(cgex $<CONFIGURATION>)
+else()
+ set(cgex $<CONFIG>)
+endif()
+
+target_compile_definitions(cmake-test PRIVATE
+ -DGLEW_CMAKE_TEST_CONFIG=${cgex}
+ -DGLEW_CMAKE_TEST_TARGET_FILE_NAME=$<TARGET_FILE_NAME:GLEW::GLEW>
+ -DGLEW_CMAKE_TEST_TARGET_TYPE=$<TARGET_PROPERTY:GLEW::GLEW,TYPE>
+ )
+
+install(TARGETS cmake-test DESTINATION bin)
diff --git a/glew/build/cmake/testbuild/main.c b/glew/build/cmake/testbuild/main.c
new file mode 100644
index 0000000..5975817
--- /dev/null
+++ b/glew/build/cmake/testbuild/main.c
@@ -0,0 +1,23 @@
+#include <GL/glew.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define S(x) SS(x)
+#define SS(x) #x
+
+int main(int argc, char* argv[]) {
+ printf("GLEW CMake test, %s build\n",
+ S(GLEW_CMAKE_TEST_CONFIG));
+ printf("-- linked to %s which is %s\n",
+ S(GLEW_CMAKE_TEST_TARGET_FILE_NAME),
+ S(GLEW_CMAKE_TEST_TARGET_TYPE));
+ const GLubyte* v = glewGetString(GLEW_VERSION);
+ if(v) {
+ printf("-- glewGetString(GLEW_VERSION) returns %s\n-- test passed.\n", v);
+ return EXIT_SUCCESS;
+ } else {
+ printf("-- glewGetString(GLEW_VERSION) returns NULL\n-- test failed.\n");
+ return EXIT_FAILURE;
+ }
+}
diff --git a/glew/build/vc10/common.props b/glew/build/vc10/common.props
new file mode 100644
index 0000000..83ef102
--- /dev/null
+++ b/glew/build/vc10/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>../../include</INCLUDE_DIR>
+ <LIB_DIR>../../lib</LIB_DIR>
+ <BIN_DIR>../../bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc12/common.props b/glew/build/vc12/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc12/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc14/common.props b/glew/build/vc14/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc14/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc15/common.props b/glew/build/vc15/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc15/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc6/glew.dsw b/glew/build/vc6/glew.dsw
new file mode 100644
index 0000000..c201779
--- /dev/null
+++ b/glew/build/vc6/glew.dsw
@@ -0,0 +1,71 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "glew_shared"=.\glew_shared.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "glew_static"=.\glew_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "glewinfo"=.\glewinfo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name glew_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "visualinfo"=.\visualinfo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name glew_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/glew/build/vc6/glew_shared.dsp b/glew/build/vc6/glew_shared.dsp
new file mode 100644
index 0000000..8b576b8
--- /dev/null
+++ b/glew/build/vc6/glew_shared.dsp
@@ -0,0 +1,122 @@
+# Microsoft Developer Studio Project File - Name="glew_shared" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=glew_shared - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glew_shared.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glew_shared.mak" CFG="glew_shared - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glew_shared - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "glew_shared - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glew_shared - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "shared/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLEW_EXPORTS" /YX /FD /c /GS-
+# ADD CPP /nologo /W3 /O2 /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_BUILD" /YX /FD /c /GS-
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 opengl32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../bin/glew32.dll" /ignore:4089
+# ADD LINK32 /base:0x62AA0000 /nodefaultlib /noentry
+
+!ELSEIF "$(CFG)" == "glew_shared - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "shared/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLEW_EXPORTS" /YX /FD /GZ /c /GS-
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_BUILD" /YX /FD /GZ /c /GS-
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 opengl32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"../../bin/glew32d.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+# ADD LINK32 /base:0x62AA0000
+
+!ENDIF
+
+# Begin Target
+
+# Name "glew_shared - Win32 Release"
+# Name "glew_shared - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glew.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\GL\glew.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\GL\wglew.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glew.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/glew_static.dsp b/glew/build/vc6/glew_static.dsp
new file mode 100644
index 0000000..d6bd3d6
--- /dev/null
+++ b/glew/build/vc6/glew_static.dsp
@@ -0,0 +1,112 @@
+# Microsoft Developer Studio Project File - Name="glew_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=glew_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glew_static.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glew_static.mak" CFG="glew_static - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glew_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "glew_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glew_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "static/release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c /GS-
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /YX /FD /c /GS-
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "GLEW_STATIC"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../lib/glew32s.lib"
+
+!ELSEIF "$(CFG)" == "glew_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "static/debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "GLEW_STATIC"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../lib/glew32sd.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "glew_static - Win32 Release"
+# Name "glew_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glew.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\GL\glew.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\GL\wglew.h
+# End Source File
+# End Group
+# Begin Group "Resources"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glew.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/glewinfo.dsp b/glew/build/vc6/glewinfo.dsp
new file mode 100644
index 0000000..95a599d
--- /dev/null
+++ b/glew/build/vc6/glewinfo.dsp
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="glewinfo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=glewinfo - Win32 Debug MX
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glewinfo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glewinfo.mak" CFG="glewinfo - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glewinfo - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "glewinfo - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glewinfo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ../../lib/glew32s.lib opengl32.lib gdi32.lib user32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "glewinfo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../lib/glew32sd.lib opengl32.lib gdi32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"static/debug/glewinfod.pdb" /debug /machine:I386 /out:"../../bin/glewinfod.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "glewinfo - Win32 Release"
+# Name "glewinfo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glewinfo.c
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glewinfo.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/visualinfo.dsp b/glew/build/vc6/visualinfo.dsp
new file mode 100644
index 0000000..adcc814
--- /dev/null
+++ b/glew/build/vc6/visualinfo.dsp
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="visualinfo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=visualinfo - Win32 Debug MX
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "visualinfo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "visualinfo.mak" CFG="visualinfo - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "visualinfo - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "visualinfo - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "visualinfo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ../../lib/glew32s.lib glu32.lib opengl32.lib gdi32.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "visualinfo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../lib/glew32sd.lib glu32.lib opengl32.lib gdi32.lib user32.lib kernel32.lib /nologo /subsystem:console /incremental:no /pdb:"static/debug/visualinfod.pdb" /debug /machine:I386 /out:"../../bin/visualinfod.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "visualinfo - Win32 Release"
+# Name "visualinfo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\visualinfo.c
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\visualinfo.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/cmake-testbuild.sh b/glew/cmake-testbuild.sh
new file mode 100644
index 0000000..0dbbfd2
--- /dev/null
+++ b/glew/cmake-testbuild.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# This script tests the CMake build:
+#
+# - builds the main CMakeLists.txt
+# - builds and runs a small test app in a separate build tree so
+# the config-module is tested, too
+#
+# Options (environment variables):
+#
+# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project
+# that builds and installs the GLEW libraries. Set BUILD_SHARED_LIBS to
+# ON or OFF to install only static or shared libs. Leave it unset to
+# install both.
+#
+# Note: BUILD_SHARED_LIBS controls only what to install not what to build.
+#
+# - GLEW_USE_STATIC_LIBS will be forwarded to the test project that calls
+# `find_package` to find GLEW. Set GLEW_USE_STATIC LIBS to ON or OFF force
+# finding the shared or static versions of GLEW. Leave it unset to find
+# the shared or what is available.
+#
+# Examples:
+#
+# Build & install shared + static, find default (shared)
+#
+# ./cmake-testbuild.shh
+#
+# Build & install shared + static, find static
+#
+# GLEW_USE_STATIC_LIBS=ON ./cmake-testbuild.sh
+#
+# Install static only (still build both)
+#
+# BUILD_SHARED_LIBS=OFF ./cmake-testbuild.sh
+#
+
+set -ex
+
+rm -rf out/include
+rm -rf out/lib*
+rm -rf out/bin
+
+if [ -n "$BUILD_SHARED_LIBS" ]; then
+ bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS
+else
+ bsl=-UBUILD_SHARED_LIBS
+fi
+
+if [ -n "$GLEW_USE_STATIC_LIBS" ]; then
+ gusl=-DGLEW_USE_STATIC_LIBS=$GLEW_USE_STATIC_LIBS
+else
+ gusl=-UGLEW_USE_STATIC_LIBS
+fi
+
+cmake -Hbuild/cmake -Bout/build/glew -DCMAKE_INSTALL_PREFIX=${PWD}/out -DCMAKE_BUILD_TYPE=Debug $bsl
+cmake --build out/build/glew --target install --config Debug
+cmake out/build/glew -DCMAKE_BUILD_TYPE=Release
+cmake --build out/build/glew --target install --config Release --clean-first
+
+cmake -Hbuild/cmake/testbuild -Bout/build/cmake-testbuild -DCMAKE_INSTALL_PREFIX=${PWD}/out -DCMAKE_PREFIX_PATH=${PWD}/out -DCMAKE_BUILD_TYPE=Debug $gusl
+cmake --build out/build/cmake-testbuild --target install --config Debug
+
+cmake out/build/cmake-testbuild -DCMAKE_BUILD_TYPE=Release
+cmake --build out/build/cmake-testbuild --target install --config Release --clean-first
+
+export LD_LIBRARY_PATH=${PWD}/out/lib:$LD_LIBRARY_PATH
+export DYLD_LIBRARY_PATH=${PWD}/out/lib:$DYLD_LIBRARY_PATH
+
+out/bin/cmake-test_d
+out/bin/cmake-test
diff --git a/glew/config/config.guess b/glew/config/config.guess
new file mode 100644
index 0000000..1972fda
--- /dev/null
+++ b/glew/config/config.guess
@@ -0,0 +1,1700 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2021 Free Software Foundation, Inc.
+
+timestamp='2021-01-25'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+me=$(echo "$0" | sed -e 's,.*/,,')
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2021 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if test -f /.attbin/uname ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
+
+case "$UNAME_SYSTEM" in
+Linux|GNU|GNU/*)
+ LIBC=unknown
+
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
+ #endif
+ EOF
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown))
+ case "$UNAME_MACHINE_ARCH" in
+ aarch64eb) machine=aarch64_be-unknown ;;
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
+ endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "$UNAME_VERSION" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "$machine-${os}${release}${abi-}"
+ exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
+ exit ;;
+ *:SolidBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
+ exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:MirBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:Sortix:*:*)
+ echo "$UNAME_MACHINE"-unknown-sortix
+ exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
+ exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
+ ;;
+ *5.*)
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1)
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE=alpha ;;
+ "EV5 (21164)")
+ UNAME_MACHINE=alphaev5 ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE=alphaev56 ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE=alphapca56 ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE=alphapca57 ;;
+ "EV6 (21264)")
+ UNAME_MACHINE=alphaev6 ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE=alphaev67 ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE=alphaev69 ;;
+ "EV7 (21364)")
+ UNAME_MACHINE=alphaev7 ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE=alphaev79 ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo "$UNAME_MACHINE"-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo "$UNAME_MACHINE"-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix"$UNAME_RELEASE"
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "$( (/bin/universe) 2>/dev/null)" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case $(/usr/bin/uname -p) in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux"$UNAME_RELEASE"
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "$(/usr/bin/arch -k)" in
+ Series*|S4*)
+ UNAME_RELEASE=$(uname -v)
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos"$UNAME_RELEASE"
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+ case "$(/bin/arch)" in
+ sun3)
+ echo m68k-sun-sunos"$UNAME_RELEASE"
+ ;;
+ sun4)
+ echo sparc-sun-sunos"$UNAME_RELEASE"
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint"$UNAME_RELEASE"
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint"$UNAME_RELEASE"
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint"$UNAME_RELEASE"
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten"$UNAME_RELEASE"
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten"$UNAME_RELEASE"
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix"$UNAME_RELEASE"
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix"$UNAME_RELEASE"
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+ SYSTEM_NAME=$("$dummy" "$dummyarg") &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos"$UNAME_RELEASE"
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
+ then
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
+ then
+ echo m88k-dg-dgux"$UNAME_RELEASE"
+ else
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ fi
+ else
+ echo i586-dg-dgux"$UNAME_RELEASE"
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=$(/usr/bin/oslevel)
+ else
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ fi
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
+ else
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ fi
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+ sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
+ case "$sc_cpu_version" in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "$sc_kernel_bits" in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if test "$HP_ARCH" = hppa2.0w
+ then
+ set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH=hppa2.0w
+ else
+ HP_ARCH=hppa64
+ fi
+ fi
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
+ echo ia64-hp-hpux"$HPUX_REV"
+ exit ;;
+ 3050*:HI-UX:*:*)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if test -x /usr/sbin/sysversion ; then
+ echo "$UNAME_MACHINE"-unknown-osf1mk
+ else
+ echo "$UNAME_MACHINE"-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ *:BSD/OS:*:*)
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
+ fi
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ case "$UNAME_PROCESSOR" in
+ amd64)
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
+ esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
+ exit ;;
+ i*:CYGWIN*:*)
+ echo "$UNAME_MACHINE"-pc-cygwin
+ exit ;;
+ *:MINGW64*:*)
+ echo "$UNAME_MACHINE"-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
+ echo "$UNAME_MACHINE"-pc-mingw32
+ exit ;;
+ *:MSYS*:*)
+ echo "$UNAME_MACHINE"-pc-msys
+ exit ;;
+ i*:PW*:*)
+ echo "$UNAME_MACHINE"-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case "$UNAME_MACHINE" in
+ x86)
+ echo i586-pc-interix"$UNAME_RELEASE"
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix"$UNAME_RELEASE"
+ exit ;;
+ esac ;;
+ i*:UWIN*:*)
+ echo "$UNAME_MACHINE"-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-pc-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
+ exit ;;
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ alpha:Linux:*:*)
+ case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ arm*:Linux:*:*)
+ set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ else
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ cris:Linux:*:*)
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ crisv32:Linux:*:*)
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ e2k:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ frv:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ hexagon:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ i*86:Linux:*:*)
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ exit ;;
+ ia64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ k1om:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ m32r*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ m68*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ MIPS_ENDIAN=el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ MIPS_ENDIAN=
+ #else
+ MIPS_ENDIAN=
+ #endif
+ #endif
+EOF
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+ ;;
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-"$LIBC"
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-"$LIBC"
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-"$LIBC"
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-"$LIBC"
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-"$LIBC"
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-"$LIBC"
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
+ exit ;;
+ sh64*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ sh*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ tile*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ vax:Linux:*:*)
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
+ exit ;;
+ x86_64:Linux:*:*)
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI="$LIBC"x32
+ fi
+ fi
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo "$UNAME_MACHINE"-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo "$UNAME_MACHINE"-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo "$UNAME_MACHINE"-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo "$UNAME_MACHINE"-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ i*86:*DOS:*:*)
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:*)
+ UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ else
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case $(/bin/uname -X | grep "^Machine") in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ else
+ echo "$UNAME_MACHINE"-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configure will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv"$UNAME_RELEASE"
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ echo "$UNAME_MACHINE"-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo "$UNAME_MACHINE"-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux"$UNAME_RELEASE"
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if test -d /usr/nec; then
+ echo mips-nec-sysv"$UNAME_RELEASE"
+ else
+ echo mips-unknown-sysv"$UNAME_RELEASE"
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
+ exit ;;
+ *:Rhapsody:*:*)
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
+ exit ;;
+ arm64:Darwin:*:*)
+ echo aarch64-apple-darwin"$UNAME_RELEASE"
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
+ fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
+ fi
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ if test "$UNAME_PROCESSOR" = x86; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ # shellcheck disable=SC2154
+ if test "$cputype" = 386; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo "$UNAME_MACHINE"-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux"$UNAME_RELEASE"
+ exit ;;
+ *:DragonFly:*:*)
+ echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ case "$UNAME_MACHINE" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
+ exit ;;
+ i*86:rdos:*:*)
+ echo "$UNAME_MACHINE"-pc-rdos
+ exit ;;
+ *:AROS:*:*)
+ echo "$UNAME_MACHINE"-unknown-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo "$UNAME_MACHINE"-unknown-esx
+ exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
+ exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+ exit ;;
+esac
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+ ;;
+esac
+
+cat >&2 <<EOF
+
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
+
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+and
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+ cat >&2 <<EOF
+
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
+
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X = $( (/bin/uname -X) 2>/dev/null)
+
+hostinfo = $( (hostinfo) 2>/dev/null)
+/bin/universe = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
+
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
+EOF
+fi
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/glew/config/version b/glew/config/version
new file mode 100644
index 0000000..10f22c3
--- /dev/null
+++ b/glew/config/version
@@ -0,0 +1,7 @@
+GLEW_MAJOR = 2
+GLEW_MINOR = 2
+GLEW_MICRO = 0
+GLEW_VERSION = $(GLEW_MAJOR).$(GLEW_MINOR).$(GLEW_MICRO)
+GLEW_NAME = GLEW
+SO_MAJOR = $(GLEW_MAJOR).$(GLEW_MINOR)
+SO_VERSION = $(GLEW_VERSION)
diff --git a/glew/doc/advanced.html b/glew/doc/advanced.html
new file mode 100644
index 0000000..4c219fc
--- /dev/null
+++ b/glew/doc/advanced.html
@@ -0,0 +1,230 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center">Source Generation</td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Automatic Code Generation</h2>
+
+<p>
+Starting from release 1.1.0, the source code and parts of the
+documentation are automatically generated from the extension
+specifications in a two-step process. In the first step,
+specification files from the OpenGL registry are downloaded and
+parsed. Skeleton descriptors are created for each extension. These
+descriptors contain all necessary information for creating the source
+code and documentation in a simple and compact format, including the
+name of the extension, url link to the specification, tokens, function
+declarations, typedefs and struct definitions. In the second step,
+the header files as well as the library and glewinfo source are
+generated from the descriptor files. The code generation scripts are
+located in the <tt>auto</tt> subdirectory.
+</p>
+
+<p>
+The code generation scripts require GNU make, wget, and perl. On
+Windows, the simplest way to get access to these tools is to install
+<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the
+root directory is mounted in binary mode. The makefile in the
+<tt>auto</tt> directory provides the following build targets:
+</p>
+
+<table border=0 cellpadding=0 cellspacing=5>
+<tr><td align="left" valign="top"><tt>make</tt></td>
+<td align=left>Create the source files from the descriptors.<br/> If the
+descriptors do not exist, create them from the spec files.<br/> If the spec
+files do not exist, download them from the OpenGL repository.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clean</tt></td>
+<td align=left>Delete the source files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clobber</tt></td>
+<td align=left>Delete the source files and the descriptors.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;destroy</tt></td>
+<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;custom</tt></td>
+<td align=left>Create the source files for the extensions
+listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code
+Generation" below for more details.</td></tr>
+</table>
+
+<h3>Adding a New Extension</h3>
+
+<p>
+To add a new extension, create a descriptor file for the extension in
+<tt>auto/core</tt> and rerun the code generation scripts by typing
+<tt>make clean; make</tt> in the <tt>auto</tt> directory.
+</p>
+
+<p>
+The format of the descriptor file is given below. Items in
+brackets are optional.
+</p>
+
+<p class="pre">
+&lt;Extension Name&gt;<br>
+[&lt;URL of Specification File&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+<!-- &nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br> -->
+</p>
+
+<!--
+<p>
+Note that <tt>Function Definitions</tt> are copied to the header files
+without changes and have to be terminated with a semicolon. In
+contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and
+<tt>Typedefs</tt> should not be terminated with a semicolon.
+</p>
+-->
+
+<p>
+Take a look at one of the files in <tt>auto/core</tt> for an
+example. Note that typedefs and function signatures should not be
+terminated with a semicolon.
+</p>
+
+<h3>Custom Code Generation</h3>
+<p>
+Starting from GLEW 1.3.0, it is possible to control which extensions
+to include in the library by specifying a list in
+<tt>auto/custom.txt</tt>. This is useful when you do not need all the
+extensions and would like to reduce the size of the source files.
+Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory
+to rerun the scripts with the custom list of extensions.
+</p>
+
+<p>
+For example, the following is the list of extensions needed to get GLEW and the
+utilities to compile.
+</p>
+
+<p class="pre">
+WGL_ARB_extensions_string<br>
+WGL_ARB_multisample<br>
+WGL_ARB_pixel_format<br>
+WGL_ARB_pbuffer<br>
+WGL_EXT_extensions_string<br>
+WGL_ATI_pixel_format_float<br>
+WGL_NV_float_buffer<br>
+</p>
+
+<h2>Separate Namespace</h2>
+
+<p>
+To avoid name clashes when linking with libraries that include the
+same symbols, extension entry points are declared in a separate
+namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL
+function names to their GLEW equivalents. For instance,
+<tt>glFancyFunction</tt> is simply an alias to
+<tt>glewFancyFunction</tt>. The separate namespace does not effect
+token and function pointer definitions.
+</p>
+
+<h2>Known Issues</h2>
+
+<p>
+GLEW requires GLX 1.2 for compatibility with GLUT.
+</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/basic.html b/glew/doc/basic.html
new file mode 100644
index 0000000..2372118
--- /dev/null
+++ b/glew/doc/basic.html
@@ -0,0 +1,280 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center">Usage</td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Initializing GLEW</h2>
+<p>
+First you need to create a valid OpenGL rendering context and call
+<tt>glewInit()</tt> to initialize the extension entry points. If
+<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
+succeeded and you can use the available extensions as well as core
+OpenGL functionality. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+...<br>
+glutInit(&amp;argc, argv);<br>
+glutCreateWindow("GLEW Test");<br>
+GLenum err = glewInit();<br>
+if (GLEW_OK != err)<br>
+{<br>
+&nbsp;&nbsp;/* Problem: glewInit failed, something is seriously wrong. */<br>
+&nbsp;&nbsp;fprintf(stderr, "Error: %s\n", glewGetErrorString(err));<br>
+&nbsp;&nbsp;...<br>
+}<br>
+fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));<br>
+</p>
+
+<h2>Checking for Extensions</h2>
+
+<p>
+Starting from GLEW 1.1.0, you can find out if a particular extension
+is available on your platform by querying globally defined variables
+of the form <tt>GLEW_{extension_name}</tt>:
+</p>
+
+<p class="pre">
+if (GLEW_ARB_vertex_program)<br>
+{<br>
+&nbsp;&nbsp;/* It is safe to use the ARB_vertex_program extension here. */<br>
+&nbsp;&nbsp;glGenProgramsARB(...);<br>
+}<br>
+</p>
+
+<p>
+<b>In GLEW 1.0.x, a global structure was used for this task. To ensure
+binary compatibility between releases, the struct was replaced with a
+set of variables.</b>
+</p>
+
+<p>
+You can also check for core OpenGL functionality. For example, to
+see if OpenGL 1.3 is supported, do the following:
+</p>
+
+<p class="pre">
+if (GLEW_VERSION_1_3)<br>
+{<br>
+&nbsp;&nbsp;/* Yay! OpenGL 1.3 is supported! */<br>
+}<br>
+</p>
+
+<p>
+In general, you can check if <tt>GLEW_{extension_name}</tt> or
+<tt>GLEW_VERSION_{version}</tt> is true or false.
+</p>
+
+<p>
+It is also possible to perform extension checks from string
+input. Starting from the 1.3.0 release, use <tt>glewIsSupported</tt>
+to check if the required core or extension functionality is
+available:
+</p>
+
+<p class="pre">
+if (glewIsSupported("GL_VERSION_1_4&nbsp;&nbsp;GL_ARB_point_sprite"))<br>
+{<br>
+&nbsp;&nbsp;/* Great, we have OpenGL 1.4 + point sprites. */<br>
+}<br>
+</p>
+
+<p>
+For extensions only, <tt>glewGetExtension</tt> provides a slower alternative
+(GLEW 1.0.x-1.2.x). <b>Note that in the 1.3.0 release </b>
+<tt>glewGetExtension</tt> <b>was replaced with </b>
+<tt>glewIsSupported</tt>.
+</p>
+
+<p class="pre">
+if (glewGetExtension("GL_ARB_fragment_program"))<br>
+{<br>
+&nbsp;&nbsp;/* Looks like ARB_fragment_program is supported. */<br>
+}<br>
+</p>
+
+<h2>Experimental Drivers</h2>
+
+<p>
+GLEW obtains information on the supported extensions from the graphics
+driver. Experimental or pre-release drivers, however, might not
+report every available extension through the standard mechanism, in
+which case GLEW will report it unsupported. To circumvent this
+situation, the <tt>glewExperimental</tt> global switch can be turned
+on by setting it to <tt>GL_TRUE</tt> before calling
+<tt>glewInit()</tt>, which ensures that all extensions with valid
+entry points will be exposed.
+</p>
+
+<h2>Platform Specific Extensions</h2>
+
+<p>
+Platform specific extensions are separated into two header files:
+<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
+<tt>WGL</tt> and <tt>GLX</tt> extensions. To determine if a certain
+extension is supported, query <tt>WGLEW_{extension name}</tt> or
+<tt>GLXEW_{extension_name}</tt>. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/wglew.h&gt;<br>
+<br>
+if (WGLEW_ARB_pbuffer)<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+else<br>
+{<br>
+&nbsp;&nbsp;/* Sorry, pbuffers will not work on this platform. */<br>
+}<br>
+</p>
+
+<p>
+Alternatively, use <tt>wglewIsSupported</tt> or
+<tt>glxewIsSupported</tt> to check for extensions from a string:
+</p>
+
+<p class="pre">
+if (wglewIsSupported("WGL_ARB_pbuffer"))<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+</p>
+
+<h2>Utilities</h2>
+
+<p>
+GLEW provides two command-line utilities: one for creating a list of
+available extensions and visuals; and another for verifying extension
+entry points.
+</p>
+
+<h3>visualinfo: extensions and visuals</h3>
+
+<p>
+<tt>visualinfo</tt> is an extended version of <tt>glxinfo</tt>. The
+Windows version creates a file called <tt>visualinfo.txt</tt>, which
+contains a list of available OpenGL, WGL, and GLU extensions as well
+as a table of visuals aka. pixel formats. Pbuffer and MRT capable
+visuals are also included. For additional usage information, type
+<tt>visualinfo -h</tt>.
+</p>
+
+<h3>glewinfo: extension verification utility</h3>
+
+<p>
+<tt>glewinfo</tt> allows you to verify the entry points for the
+extensions supported on your platform. The Windows version
+reports the results to a text file called <tt>glewinfo.txt</tt>. The
+Unix version prints the results to <tt>stdout</tt>.
+</p>
+
+<p>Windows usage:</p>
+ <blockquote><pre>glewinfo [-pf &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;id&gt;</tt> is the pixel format id for which the
+capabilities are displayed.</p>
+
+<p>Unix usage:</p>
+<blockquote><pre>glewinfo [-display &lt;dpy&gt;] [-visual &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;dpy&gt;</tt> is the X11 display and <tt>&lt;id&gt;</tt> is
+the visual id for which the capabilities are displayed.</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/build.html b/glew/doc/build.html
new file mode 100644
index 0000000..491c521
--- /dev/null
+++ b/glew/doc/build.html
@@ -0,0 +1,149 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center">Building</td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Building GLEW</h2>
+
+<h3>Windows</h3>
+
+<p>A MS Visual Studio project is provided in the <tt>build/vc6</tt> directory.</p>
+<p>Pre-built shared and static libraries are also available for <a href="index.html">download</a>.</p>
+
+<h3>Makefile</h3>
+
+<p>For platforms other than MS Windows, the provided <tt>Makefile</tt> is used.</p>
+
+<h4>Command-line variables</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>SYSTEM</tt></td><td valign=top>auto</td>
+<td align=left>Target system to build: darwin, linux, solaris, etc.<br/>For a full list of supported targets: <tt>ls config/Makefile.*</tt><br/>
+<a href="http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree">config.guess</a> is used to auto detect, as necessary.</td></tr>
+<tr><td valign=top><tt>GLEW_DEST</tt></td><td valign=top><tt>/usr</tt></td>
+<td align=left>Base directory for installation.</td></tr>
+</table>
+
+<h4>Make targets</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>all</tt></td><td>Build everything.</td><tr>
+<tr><td valign=top><tt>glew.lib</tt></td><td>Build static and dynamic GLEW libraries.</td><tr>
+<tr><td valign=top><tt>glew.lib.mx</tt></td><td>Build static and dynamic GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>glew.bin</tt></td><td>Build <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>clean</tt></td><td>Delete temporary and built files.</td><tr>
+<tr><td valign=top><tt>install.all</tt></td><td>Install everything.</td><tr>
+<tr><td valign=top><tt>install</tt></td><td>Install GLEW libraries.</td><tr>
+<tr><td valign=top><tt>install.mx</tt></td><td>Install GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>install.bin</tt></td><td>Install <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>uninstall</tt></td><td>Delete installed files.</td><tr>
+</table>
+
+<h4>Requirements</h4>
+
+<ul>
+<li>GNU make</li>
+<li>perl</li>
+<li>wget</li>
+<li>GNU sed</li>
+<li>gcc compiler</li>
+<li>git</li>
+</ul>
+
+Ubuntu: <pre>sudo apt-get install libXmu-dev libXi-dev libgl-dev dos2unix git wget</pre>
+Fedora: <pre>sudo yum install libXmu-devel libXi-devel libGL-devel dos2unix git wget</pre>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/credits.html b/glew/doc/credits.html
new file mode 100644
index 0000000..0f5c18e
--- /dev/null
+++ b/glew/doc/credits.html
@@ -0,0 +1,102 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<p><a href="https://github.com/nigels-com/glew#copyright-and-licensing">
+Author, copyright and licensing information</a> on github.</p>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/github.png b/glew/doc/github.png
new file mode 100644
index 0000000..540f7c0
--- /dev/null
+++ b/glew/doc/github.png
Binary files differ
diff --git a/glew/doc/glew.css b/glew/doc/glew.css
new file mode 100644
index 0000000..1bb7dd1
--- /dev/null
+++ b/glew/doc/glew.css
@@ -0,0 +1,187 @@
+h1
+{
+ color: black;
+ font: 23px "Verdana", "Arial", "Helvetica", sans-serif;
+ font-weight: bold;
+ text-align: center;
+ margin-top: 12px;
+ margin-bottom: 18px;
+}
+
+h2
+{
+ color: black;
+ font: 18px "Verdana", "Arial", "Helvetica", sans-serif;
+ font-weight: bold;
+ text-align: left;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ margin-top: 18px;
+ margin-bottom: 12px;
+}
+
+h3
+{
+ color: black;
+ font: 17px "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+
+small
+{
+ font: 8pt "Verdana", "Arial", "Helvetica", sans-serif;
+}
+
+body
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+}
+
+td
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+}
+
+tt
+{
+ color: rgb(0,120,0);
+}
+/* color: maroon; */
+
+td.num
+{
+ color: lightgrey;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: right;
+}
+
+blockquote
+{
+ color: rgb(0,120,0);
+ background: #f0f0f0;
+ text-align: left;
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-bottom: 6px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+pre
+{
+ color: rgb(0,120,0);
+ background: #f0f0f0;
+ text-align: left;
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-bottom: 6px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+p
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+ margin-bottom: 0px;
+ padding-bottom: 6px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+
+p.right
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: right;
+ margin-bottom: 0px;
+ padding-bottom: 6px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+
+p.pre
+{
+ color: rgb(0,120,0);
+ font: 10pt "Courier New", "Courier", monospace;
+ background: #f0f0f0;
+ text-align: left;
+ margin-top: 0px;
+ margin-bottom: 6px;
+ margin-left: 40px;
+ margin-right: 40px;
+ padding-top: 0px;
+ padding-bottom: 6px;
+ padding-left: 6px;
+ padding-right: 6px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+a:link
+{
+ color: rgb(0,0,139);
+ text-decoration: none;
+}
+
+a:visited
+{
+ color: rgb(220,20,60);
+ text-decoration: none;
+}
+
+a:hover
+{
+ color: rgb(220,20,60);
+ text-decoration: underline;
+ background: "#e8e8e8";
+}
+
+ul
+{
+ list-style-type: disc;
+ text-align: left;
+ margin-left: 40px;
+ margin-top: 0px;
+ padding-top: 0px;
+ margin-bottom: 0px;
+ padding-bottom: 3px;
+}
+
+ul.none
+{
+ list-style-type: none;
+}
+
+ol
+{
+ text-align: left;
+ margin-left: 40px;
+ margin-top: 0px;
+ padding-top: 0px;
+ margin-bottom: 0px;
+ padding-bottom: 12px;
+}
+
+hr
+{
+ color: maroon;
+ background-color: maroon;
+ height: 1px;
+ border: 0px;
+ width: 80%;
+}
diff --git a/glew/doc/glew.html b/glew/doc/glew.html
new file mode 100644
index 0000000..8f2c900
--- /dev/null
+++ b/glew/doc/glew.html
@@ -0,0 +1,1071 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported OpenGL Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_multisample.txt">3DFX_multisample</a></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_tbuffer.txt">3DFX_tbuffer</a></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_texture_compression_FXT1.txt">3DFX_texture_compression_FXT1</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_blend_minmax_factor.txt">AMD_blend_minmax_factor</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_3DC_texture.txt">AMD_compressed_3DC_texture</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt">AMD_compressed_ATC_texture</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_conservative_depth.txt">AMD_conservative_depth</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_debug_output.txt">AMD_debug_output</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_depth_clamp_separate.txt">AMD_depth_clamp_separate</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_draw_buffers_blend.txt">AMD_draw_buffers_blend</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_multisample_advanced.txt">AMD_framebuffer_multisample_advanced</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt">AMD_framebuffer_sample_positions</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gcn_shader.txt">AMD_gcn_shader</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float.txt">AMD_gpu_shader_half_float</a></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float_fetch.txt">AMD_gpu_shader_half_float_fetch</a></td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int16.txt">AMD_gpu_shader_int16</a></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int64.txt">AMD_gpu_shader_int64</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_interleaved_elements.txt">AMD_interleaved_elements</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_multi_draw_indirect.txt">AMD_multi_draw_indirect</a></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_name_gen_delete.txt">AMD_name_gen_delete</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_occlusion_query_event.txt">AMD_occlusion_query_event</a></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_performance_monitor.txt">AMD_performance_monitor</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_pinned_memory.txt">AMD_pinned_memory</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_program_binary_Z400.txt">AMD_program_binary_Z400</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_query_buffer_object.txt">AMD_query_buffer_object</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sample_positions.txt">AMD_sample_positions</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_seamless_cubemap_per_texture.txt">AMD_seamless_cubemap_per_texture</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_atomic_counter_ops.txt">AMD_shader_atomic_counter_ops</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_ballot.txt">AMD_shader_ballot</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_explicit_vertex_parameter.txt">AMD_shader_explicit_vertex_parameter</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt">AMD_shader_image_load_store_lod</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_export.txt">AMD_shader_stencil_export</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_value_export.txt">AMD_shader_stencil_value_export</a></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_trinary_minmax.txt">AMD_shader_trinary_minmax</a></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sparse_texture.txt">AMD_sparse_texture</a></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_stencil_operation_extended.txt">AMD_stencil_operation_extended</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_gather_bias_lod.txt">AMD_texture_gather_bias_lod</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_texture4.txt">AMD_texture_texture4</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback3_lines_triangles.txt">AMD_transform_feedback3_lines_triangles</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback4.txt">AMD_transform_feedback4</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt">AMD_vertex_shader_layer</a></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt">AMD_vertex_shader_tessellator</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt">AMD_vertex_shader_viewport_index</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">ANDROID_extension_pack_es31a</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/depth_texture.txt">ANGLE_depth_texture</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_blit.txt">ANGLE_framebuffer_blit</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_multisample.txt">ANGLE_framebuffer_multisample</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/instanced_arrays.txt">ANGLE_instanced_arrays</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/pack_reverse_row_order.txt">ANGLE_pack_reverse_row_order</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/program_binary.txt">ANGLE_program_binary</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt1</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt3</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt5</a></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_usage.txt">ANGLE_texture_usage</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/timer_query.txt">ANGLE_timer_query</a></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/translated_shader_source.txt">ANGLE_translated_shader_source</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_aux_depth_stencil.txt">APPLE_aux_depth_stencil</a></td></tr>
+<tr><td class="num">58</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_client_storage.txt">APPLE_client_storage</a></td></tr>
+<tr><td class="num">59</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_clip_distance.txt">APPLE_clip_distance</a></td></tr>
+<tr><td class="num">60</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_color_buffer_packed_float.txt">APPLE_color_buffer_packed_float</a></td></tr>
+<tr><td class="num">61</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_copy_texture_levels.txt">APPLE_copy_texture_levels</a></td></tr>
+<tr><td class="num">62</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_element_array.txt">APPLE_element_array</a></td></tr>
+<tr><td class="num">63</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_fence.txt">APPLE_fence</a></td></tr>
+<tr><td class="num">64</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/float_pixels.txt">APPLE_float_pixels</a></td></tr>
+<tr><td class="num">65</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_flush_buffer_range.txt">APPLE_flush_buffer_range</a></td></tr>
+<tr><td class="num">66</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_framebuffer_multisample.txt">APPLE_framebuffer_multisample</a></td></tr>
+<tr><td class="num">67</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_object_purgeable.txt">APPLE_object_purgeable</a></td></tr>
+<tr><td class="num">68</td><td>&nbsp;</td><td>APPLE_pixel_buffer</td></tr>
+<tr><td class="num">69</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_rgb_422.txt">APPLE_rgb_422</a></td></tr>
+<tr><td class="num">70</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_row_bytes.txt">APPLE_row_bytes</a></td></tr>
+<tr><td class="num">71</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_specular_vector.txt">APPLE_specular_vector</a></td></tr>
+<tr><td class="num">72</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_sync.txt">APPLE_sync</a></td></tr>
+<tr><td class="num">73</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_2D_limited_npot.txt">APPLE_texture_2D_limited_npot</a></td></tr>
+<tr><td class="num">74</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_format_BGRA8888.txt">APPLE_texture_format_BGRA8888</a></td></tr>
+<tr><td class="num">75</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_max_level.txt">APPLE_texture_max_level</a></td></tr>
+<tr><td class="num">76</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_packed_float.txt">APPLE_texture_packed_float</a></td></tr>
+<tr><td class="num">77</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/texture_range.txt">APPLE_texture_range</a></td></tr>
+<tr><td class="num">78</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_transform_hint.txt">APPLE_transform_hint</a></td></tr>
+<tr><td class="num">79</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_object.txt">APPLE_vertex_array_object</a></td></tr>
+<tr><td class="num">80</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_range.txt">APPLE_vertex_array_range</a></td></tr>
+<tr><td class="num">81</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_program_evaluators.txt">APPLE_vertex_program_evaluators</a></td></tr>
+<tr><td class="num">82</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_ycbcr_422.txt">APPLE_ycbcr_422</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">83</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES2_compatibility.txt">ARB_ES2_compatibility</a></td></tr>
+<tr><td class="num">84</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_1_compatibility.txt">ARB_ES3_1_compatibility</a></td></tr>
+<tr><td class="num">85</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_2_compatibility.txt">ARB_ES3_2_compatibility</a></td></tr>
+<tr><td class="num">86</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_compatibility.txt">ARB_ES3_compatibility</a></td></tr>
+<tr><td class="num">87</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_arrays_of_arrays.txt">ARB_arrays_of_arrays</a></td></tr>
+<tr><td class="num">88</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_base_instance.txt">ARB_base_instance</a></td></tr>
+<tr><td class="num">89</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt">ARB_bindless_texture</a></td></tr>
+<tr><td class="num">90</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_blend_func_extended.txt">ARB_blend_func_extended</a></td></tr>
+<tr><td class="num">91</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_buffer_storage.txt">ARB_buffer_storage</a></td></tr>
+<tr><td class="num">92</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cl_event.txt">ARB_cl_event</a></td></tr>
+<tr><td class="num">93</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_buffer_object.txt">ARB_clear_buffer_object</a></td></tr>
+<tr><td class="num">94</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_texture.txt">ARB_clear_texture</a></td></tr>
+<tr><td class="num">95</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clip_control.txt">ARB_clip_control</a></td></tr>
+<tr><td class="num">96</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_color_buffer_float.txt">ARB_color_buffer_float</a></td></tr>
+<tr><td class="num">97</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compatibility.txt">ARB_compatibility</a></td></tr>
+<tr><td class="num">98</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compressed_texture_pixel_storage.txt">ARB_compressed_texture_pixel_storage</a></td></tr>
+<tr><td class="num">99</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt">ARB_compute_shader</a></td></tr>
+<tr><td class="num">100</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_variable_group_size.txt">ARB_compute_variable_group_size</a></td></tr>
+<tr><td class="num">101</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conditional_render_inverted.txt">ARB_conditional_render_inverted</a></td></tr>
+<tr><td class="num">102</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt">ARB_conservative_depth</a></td></tr>
+<tr><td class="num">103</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_buffer.txt">ARB_copy_buffer</a></td></tr>
+<tr><td class="num">104</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_image.txt">ARB_copy_image</a></td></tr>
+<tr><td class="num">105</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cull_distance.txt">ARB_cull_distance</a></td></tr>
+<tr><td class="num">106</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_debug_output.txt">ARB_debug_output</a></td></tr>
+<tr><td class="num">107</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_buffer_float.txt">ARB_depth_buffer_float</a></td></tr>
+<tr><td class="num">108</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt">ARB_depth_clamp</a></td></tr>
+<tr><td class="num">109</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_texture.txt">ARB_depth_texture</a></td></tr>
+<tr><td class="num">110</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_derivative_control.txt">ARB_derivative_control</a></td></tr>
+<tr><td class="num">111</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt">ARB_direct_state_access</a></td></tr>
+<tr><td class="num">112</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers.txt">ARB_draw_buffers</a></td></tr>
+<tr><td class="num">113</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers_blend.txt">ARB_draw_buffers_blend</a></td></tr>
+<tr><td class="num">114</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_elements_base_vertex.txt">ARB_draw_elements_base_vertex</a></td></tr>
+<tr><td class="num">115</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_indirect.txt">ARB_draw_indirect</a></td></tr>
+<tr><td class="num">116</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_instanced.txt">ARB_draw_instanced</a></td></tr>
+<tr><td class="num">117</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_enhanced_layouts.txt">ARB_enhanced_layouts</a></td></tr>
+<tr><td class="num">118</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_attrib_location.txt">ARB_explicit_attrib_location</a></td></tr>
+<tr><td class="num">119</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_uniform_location.txt">ARB_explicit_uniform_location</a></td></tr>
+<tr><td class="num">120</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_coord_conventions.txt">ARB_fragment_coord_conventions</a></td></tr>
+<tr><td class="num">121</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_layer_viewport.txt">ARB_fragment_layer_viewport</a></td></tr>
+<tr><td class="num">122</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program.txt">ARB_fragment_program</a></td></tr>
+<tr><td class="num">123</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program_shadow.txt">ARB_fragment_program_shadow</a></td></tr>
+<tr><td class="num">124</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader.txt">ARB_fragment_shader</a></td></tr>
+<tr><td class="num">125</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt">ARB_fragment_shader_interlock</a></td></tr>
+<tr><td class="num">126</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_no_attachments.txt">ARB_framebuffer_no_attachments</a></td></tr>
+<tr><td class="num">127</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt">ARB_framebuffer_object</a></td></tr>
+<tr><td class="num">128</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">129</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_geometry_shader4.txt">ARB_geometry_shader4</a></td></tr>
+<tr><td class="num">130</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_program_binary.txt">ARB_get_program_binary</a></td></tr>
+<tr><td class="num">131</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_texture_sub_image.txt">ARB_get_texture_sub_image</a></td></tr>
+<tr><td class="num">132</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt">ARB_gl_spirv</a></td></tr>
+<tr><td class="num">133</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt">ARB_gpu_shader5</a></td></tr>
+<tr><td class="num">134</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_fp64.txt">ARB_gpu_shader_fp64</a></td></tr>
+<tr><td class="num">135</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_int64.txt">ARB_gpu_shader_int64</a></td></tr>
+<tr><td class="num">136</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_pixel.txt">ARB_half_float_pixel</a></td></tr>
+<tr><td class="num">137</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_vertex.txt">ARB_half_float_vertex</a></td></tr>
+<tr><td class="num">138</td><td>&nbsp;</td><td>ARB_imaging</td></tr>
+<tr><td class="num">139</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_indirect_parameters.txt">ARB_indirect_parameters</a></td></tr>
+<tr><td class="num">140</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt">ARB_instanced_arrays</a></td></tr>
+<tr><td class="num">141</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query.txt">ARB_internalformat_query</a></td></tr>
+<tr><td class="num">142</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt">ARB_internalformat_query2</a></td></tr>
+<tr><td class="num">143</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_invalidate_subdata.txt">ARB_invalidate_subdata</a></td></tr>
+<tr><td class="num">144</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_alignment.txt">ARB_map_buffer_alignment</a></td></tr>
+<tr><td class="num">145</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_range.txt">ARB_map_buffer_range</a></td></tr>
+<tr><td class="num">146</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt">ARB_matrix_palette</a></td></tr>
+<tr><td class="num">147</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_bind.txt">ARB_multi_bind</a></td></tr>
+<tr><td class="num">148</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_draw_indirect.txt">ARB_multi_draw_indirect</a></td></tr>
+<tr><td class="num">149</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multisample.txt">ARB_multisample</a></td></tr>
+<tr><td class="num">150</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/multitexture.txt">ARB_multitexture</a></td></tr>
+<tr><td class="num">151</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt">ARB_occlusion_query</a></td></tr>
+<tr><td class="num">152</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query2.txt">ARB_occlusion_query2</a></td></tr>
+<tr><td class="num">153</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_parallel_shader_compile.txt">ARB_parallel_shader_compile</a></td></tr>
+<tr><td class="num">154</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pipeline_statistics_query.txt">ARB_pipeline_statistics_query</a></td></tr>
+<tr><td class="num">155</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pixel_buffer_object.txt">ARB_pixel_buffer_object</a></td></tr>
+<tr><td class="num">156</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_parameters.txt">ARB_point_parameters</a></td></tr>
+<tr><td class="num">157</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_sprite.txt">ARB_point_sprite</a></td></tr>
+<tr><td class="num">158</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_polygon_offset_clamp.txt">ARB_polygon_offset_clamp</a></td></tr>
+<tr><td class="num">159</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt">ARB_post_depth_coverage</a></td></tr>
+<tr><td class="num">160</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_program_interface_query.txt">ARB_program_interface_query</a></td></tr>
+<tr><td class="num">161</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_provoking_vertex.txt">ARB_provoking_vertex</a></td></tr>
+<tr><td class="num">162</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_query_buffer_object.txt">ARB_query_buffer_object</a></td></tr>
+<tr><td class="num">163</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robust_buffer_access_behavior.txt">ARB_robust_buffer_access_behavior</a></td></tr>
+<tr><td class="num">164</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robustness.txt">ARB_robustness</a></td></tr>
+<tr><td class="num">165</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">166</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td class="num">167</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_locations.txt">ARB_sample_locations</a></td></tr>
+<tr><td class="num">168</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_shading.txt">ARB_sample_shading</a></td></tr>
+<tr><td class="num">169</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sampler_objects.txt">ARB_sampler_objects</a></td></tr>
+<tr><td class="num">170</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cube_map.txt">ARB_seamless_cube_map</a></td></tr>
+<tr><td class="num">171</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cubemap_per_texture.txt">ARB_seamless_cubemap_per_texture</a></td></tr>
+<tr><td class="num">172</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt">ARB_separate_shader_objects</a></td></tr>
+<tr><td class="num">173</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counter_ops.txt">ARB_shader_atomic_counter_ops</a></td></tr>
+<tr><td class="num">174</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counters.txt">ARB_shader_atomic_counters</a></td></tr>
+<tr><td class="num">175</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt">ARB_shader_ballot</a></td></tr>
+<tr><td class="num">176</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_bit_encoding.txt">ARB_shader_bit_encoding</a></td></tr>
+<tr><td class="num">177</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt">ARB_shader_clock</a></td></tr>
+<tr><td class="num">178</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt">ARB_shader_draw_parameters</a></td></tr>
+<tr><td class="num">179</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt">ARB_shader_group_vote</a></td></tr>
+<tr><td class="num">180</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_load_store.txt">ARB_shader_image_load_store</a></td></tr>
+<tr><td class="num">181</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_size.txt">ARB_shader_image_size</a></td></tr>
+<tr><td class="num">182</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_objects.txt">ARB_shader_objects</a></td></tr>
+<tr><td class="num">183</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_precision.txt">ARB_shader_precision</a></td></tr>
+<tr><td class="num">184</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_stencil_export.txt">ARB_shader_stencil_export</a></td></tr>
+<tr><td class="num">185</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_storage_buffer_object.txt">ARB_shader_storage_buffer_object</a></td></tr>
+<tr><td class="num">186</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_subroutine.txt">ARB_shader_subroutine</a></td></tr>
+<tr><td class="num">187</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt">ARB_shader_texture_image_samples</a></td></tr>
+<tr><td class="num">188</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_lod.txt">ARB_shader_texture_lod</a></td></tr>
+<tr><td class="num">189</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt">ARB_shader_viewport_layer_array</a></td></tr>
+<tr><td class="num">190</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_100.txt">ARB_shading_language_100</a></td></tr>
+<tr><td class="num">191</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_420pack.txt">ARB_shading_language_420pack</a></td></tr>
+<tr><td class="num">192</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_include.txt">ARB_shading_language_include</a></td></tr>
+<tr><td class="num">193</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_packing.txt">ARB_shading_language_packing</a></td></tr>
+<tr><td class="num">194</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow.txt">ARB_shadow</a></td></tr>
+<tr><td class="num">195</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow_ambient.txt">ARB_shadow_ambient</a></td></tr>
+<tr><td class="num">196</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_buffer.txt">ARB_sparse_buffer</a></td></tr>
+<tr><td class="num">197</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture.txt">ARB_sparse_texture</a></td></tr>
+<tr><td class="num">198</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture2.txt">ARB_sparse_texture2</a></td></tr>
+<tr><td class="num">199</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture_clamp.txt">ARB_sparse_texture_clamp</a></td></tr>
+<tr><td class="num">200</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_spirv_extensions.txt">ARB_spirv_extensions</a></td></tr>
+<tr><td class="num">201</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_stencil_texturing.txt">ARB_stencil_texturing</a></td></tr>
+<tr><td class="num">202</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sync.txt">ARB_sync</a></td></tr>
+<tr><td class="num">203</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_tessellation_shader.txt">ARB_tessellation_shader</a></td></tr>
+<tr><td class="num">204</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt">ARB_texture_barrier</a></td></tr>
+<tr><td class="num">205</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_border_clamp.txt">ARB_texture_border_clamp</a></td></tr>
+<tr><td class="num">206</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object.txt">ARB_texture_buffer_object</a></td></tr>
+<tr><td class="num">207</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object_rgb32.txt">ARB_texture_buffer_object_rgb32</a></td></tr>
+<tr><td class="num">208</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_range.txt">ARB_texture_buffer_range</a></td></tr>
+<tr><td class="num">209</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression.txt">ARB_texture_compression</a></td></tr>
+<tr><td class="num">210</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_bptc.txt">ARB_texture_compression_bptc</a></td></tr>
+<tr><td class="num">211</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_rgtc.txt">ARB_texture_compression_rgtc</a></td></tr>
+<tr><td class="num">212</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map.txt">ARB_texture_cube_map</a></td></tr>
+<tr><td class="num">213</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map_array.txt">ARB_texture_cube_map_array</a></td></tr>
+<tr><td class="num">214</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_add.txt">ARB_texture_env_add</a></td></tr>
+<tr><td class="num">215</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_combine.txt">ARB_texture_env_combine</a></td></tr>
+<tr><td class="num">216</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_crossbar.txt">ARB_texture_env_crossbar</a></td></tr>
+<tr><td class="num">217</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_dot3.txt">ARB_texture_env_dot3</a></td></tr>
+<tr><td class="num">218</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_anisotropic.txt">ARB_texture_filter_anisotropic</a></td></tr>
+<tr><td class="num">219</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_minmax.txt">ARB_texture_filter_minmax</a></td></tr>
+<tr><td class="num">220</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt">ARB_texture_float</a></td></tr>
+<tr><td class="num">221</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_gather.txt">ARB_texture_gather</a></td></tr>
+<tr><td class="num">222</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirror_clamp_to_edge.txt">ARB_texture_mirror_clamp_to_edge</a></td></tr>
+<tr><td class="num">223</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirrored_repeat.txt">ARB_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">224</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_multisample.txt">ARB_texture_multisample</a></td></tr>
+<tr><td class="num">225</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_non_power_of_two.txt">ARB_texture_non_power_of_two</a></td></tr>
+<tr><td class="num">226</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_levels.txt">ARB_texture_query_levels</a></td></tr>
+<tr><td class="num">227</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_lod.txt">ARB_texture_query_lod</a></td></tr>
+<tr><td class="num">228</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rectangle.txt">ARB_texture_rectangle</a></td></tr>
+<tr><td class="num">229</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rg.txt">ARB_texture_rg</a></td></tr>
+<tr><td class="num">230</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rgb10_a2ui.txt">ARB_texture_rgb10_a2ui</a></td></tr>
+<tr><td class="num">231</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_stencil8.txt">ARB_texture_stencil8</a></td></tr>
+<tr><td class="num">232</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage.txt">ARB_texture_storage</a></td></tr>
+<tr><td class="num">233</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage_multisample.txt">ARB_texture_storage_multisample</a></td></tr>
+<tr><td class="num">234</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_swizzle.txt">ARB_texture_swizzle</a></td></tr>
+<tr><td class="num">235</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_view.txt">ARB_texture_view</a></td></tr>
+<tr><td class="num">236</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_timer_query.txt">ARB_timer_query</a></td></tr>
+<tr><td class="num">237</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback2.txt">ARB_transform_feedback2</a></td></tr>
+<tr><td class="num">238</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback3.txt">ARB_transform_feedback3</a></td></tr>
+<tr><td class="num">239</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_instanced.txt">ARB_transform_feedback_instanced</a></td></tr>
+<tr><td class="num">240</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_overflow_query.txt">ARB_transform_feedback_overflow_query</a></td></tr>
+<tr><td class="num">241</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transpose_matrix.txt">ARB_transpose_matrix</a></td></tr>
+<tr><td class="num">242</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt">ARB_uniform_buffer_object</a></td></tr>
+<tr><td class="num">243</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_bgra.txt">ARB_vertex_array_bgra</a></td></tr>
+<tr><td class="num">244</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_object.txt">ARB_vertex_array_object</a></td></tr>
+<tr><td class="num">245</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt">ARB_vertex_attrib_64bit</a></td></tr>
+<tr><td class="num">246</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_binding.txt">ARB_vertex_attrib_binding</a></td></tr>
+<tr><td class="num">247</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt">ARB_vertex_blend</a></td></tr>
+<tr><td class="num">248</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_buffer_object.txt">ARB_vertex_buffer_object</a></td></tr>
+<tr><td class="num">249</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_program.txt">ARB_vertex_program</a></td></tr>
+<tr><td class="num">250</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_shader.txt">ARB_vertex_shader</a></td></tr>
+<tr><td class="num">251</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_10f_11f_11f_rev.txt">ARB_vertex_type_10f_11f_11f_rev</a></td></tr>
+<tr><td class="num">252</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_2_10_10_10_rev.txt">ARB_vertex_type_2_10_10_10_rev</a></td></tr>
+<tr><td class="num">253</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_viewport_array.txt">ARB_viewport_array</a></td></tr>
+<tr><td class="num">254</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_window_pos.txt">ARB_window_pos</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">255</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_program_binary.txt">ARM_mali_program_binary</a></td></tr>
+<tr><td class="num">256</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_shader_binary.txt">ARM_mali_shader_binary</a></td></tr>
+<tr><td class="num">257</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_rgba8.txt">ARM_rgba8</a></td></tr>
+<tr><td class="num">258</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch.txt">ARM_shader_framebuffer_fetch</a></td></tr>
+<tr><td class="num">259</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt">ARM_shader_framebuffer_fetch_depth_stencil</a></td></tr>
+<tr><td class="num">260</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_texture_unnormalized_coordinates.txt">ARM_texture_unnormalized_coordinates</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">261</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_point_sprites</a></td></tr>
+<tr><td class="num">262</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_texture_env_combine3</a></td></tr>
+<tr><td class="num">263</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATIX_texture_env_route.txt">ATIX_texture_env_route</a></td></tr>
+<tr><td class="num">264</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_vertex_shader_output_point_size</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">265</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_draw_buffers.txt">ATI_draw_buffers</a></td></tr>
+<tr><td class="num">266</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_element_array.txt">ATI_element_array</a></td></tr>
+<tr><td class="num">267</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ATI/envmap_bumpmap.txt">ATI_envmap_bumpmap</a></td></tr>
+<tr><td class="num">268</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_fragment_shader.txt">ATI_fragment_shader</a></td></tr>
+<tr><td class="num">269</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt">ATI_map_object_buffer</a></td></tr>
+<tr><td class="num">270</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_meminfo.txt">ATI_meminfo</a></td></tr>
+<tr><td class="num">271</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/pn_triangles.txt">ATI_pn_triangles</a></td></tr>
+<tr><td class="num">272</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/separate_stencil.txt">ATI_separate_stencil</a></td></tr>
+<tr><td class="num">273</td><td>&nbsp;</td><td>ATI_shader_texture_lod</td></tr>
+<tr><td class="num">274</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_text_fragment_shader.txt">ATI_text_fragment_shader</a></td></tr>
+<tr><td class="num">275</td><td>&nbsp;</td><td>ATI_texture_compression_3dc</td></tr>
+<tr><td class="num">276</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_env_combine3.txt">ATI_texture_env_combine3</a></td></tr>
+<tr><td class="num">277</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_float.txt">ATI_texture_float</a></td></tr>
+<tr><td class="num">278</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_mirror_once.txt">ATI_texture_mirror_once</a></td></tr>
+<tr><td class="num">279</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_array_object.txt">ATI_vertex_array_object</a></td></tr>
+<tr><td class="num">280</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_attrib_array_object.txt">ATI_vertex_attrib_array_object</a></td></tr>
+<tr><td class="num">281</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/vertex_streams.txt">ATI_vertex_streams</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">282</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_program_binary.txt">DMP_program_binary</a></td></tr>
+<tr><td class="num">283</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_shader_binary.txt">DMP_shader_binary</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">284</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_422_pixels.txt">EXT_422_pixels</a></td></tr>
+<tr><td class="num">285</td><td>&nbsp;</td><td><a href="http://download.nvidia.com/developer/GLSL/GLSL%20Release%20Notes%20for%20Release%2060.pdf">EXT_Cg_shader</a></td></tr>
+<tr><td class="num">286</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt">EXT_EGL_image_array</a></td></tr>
+<tr><td class="num">287</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_external_wrap_modes.txt">EXT_EGL_image_external_wrap_modes</a></td></tr>
+<tr><td class="num">288</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage.txt">EXT_EGL_image_storage</a></td></tr>
+<tr><td class="num">289</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage_compression.txt">EXT_EGL_image_storage_compression</a></td></tr>
+<tr><td class="num">290</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_sync.txt">EXT_EGL_sync</a></td></tr>
+<tr><td class="num">291</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_YUV_target.txt">EXT_YUV_target</a></td></tr>
+<tr><td class="num">292</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_abgr.txt">EXT_abgr</a></td></tr>
+<tr><td class="num">293</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_base_instance.txt">EXT_base_instance</a></td></tr>
+<tr><td class="num">294</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_bgra.txt">EXT_bgra</a></td></tr>
+<tr><td class="num">295</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_bindable_uniform.txt">EXT_bindable_uniform</a></td></tr>
+<tr><td class="num">296</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_color.txt">EXT_blend_color</a></td></tr>
+<tr><td class="num">297</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_equation_separate.txt">EXT_blend_equation_separate</a></td></tr>
+<tr><td class="num">298</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_extended.txt">EXT_blend_func_extended</a></td></tr>
+<tr><td class="num">299</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_separate.txt">EXT_blend_func_separate</a></td></tr>
+<tr><td class="num">300</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_logic_op.txt">EXT_blend_logic_op</a></td></tr>
+<tr><td class="num">301</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_minmax.txt">EXT_blend_minmax</a></td></tr>
+<tr><td class="num">302</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_subtract.txt">EXT_blend_subtract</a></td></tr>
+<tr><td class="num">303</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_buffer_storage.txt">EXT_buffer_storage</a></td></tr>
+<tr><td class="num">304</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt">EXT_clear_texture</a></td></tr>
+<tr><td class="num">305</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_control.txt">EXT_clip_control</a></td></tr>
+<tr><td class="num">306</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt">EXT_clip_cull_distance</a></td></tr>
+<tr><td class="num">307</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_volume_hint.txt">EXT_clip_volume_hint</a></td></tr>
+<tr><td class="num">308</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cmyka.txt">EXT_cmyka</a></td></tr>
+<tr><td class="num">309</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_float.txt">EXT_color_buffer_float</a></td></tr>
+<tr><td class="num">310</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_half_float.txt">EXT_color_buffer_half_float</a></td></tr>
+<tr><td class="num">311</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_subtable.txt">EXT_color_subtable</a></td></tr>
+<tr><td class="num">312</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compiled_vertex_array.txt">EXT_compiled_vertex_array</a></td></tr>
+<tr><td class="num">313</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compressed_ETC1_RGB8_sub_texture.txt">EXT_compressed_ETC1_RGB8_sub_texture</a></td></tr>
+<tr><td class="num">314</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt">EXT_conservative_depth</a></td></tr>
+<tr><td class="num">315</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_convolution.txt">EXT_convolution</a></td></tr>
+<tr><td class="num">316</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_coordinate_frame.txt">EXT_coordinate_frame</a></td></tr>
+<tr><td class="num">317</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_image.txt">EXT_copy_image</a></td></tr>
+<tr><td class="num">318</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_texture.txt">EXT_copy_texture</a></td></tr>
+<tr><td class="num">319</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cull_vertex.txt">EXT_cull_vertex</a></td></tr>
+<tr><td class="num">320</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_debug_label.txt">EXT_debug_label</a></td></tr>
+<tr><td class="num">321</td><td>&nbsp;</td><td><a href="http://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt">EXT_debug_marker</a></td></tr>
+<tr><td class="num">322</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_depth_bounds_test.txt">EXT_depth_bounds_test</a></td></tr>
+<tr><td class="num">323</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_depth_clamp.txt">EXT_depth_clamp</a></td></tr>
+<tr><td class="num">324</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_direct_state_access.txt">EXT_direct_state_access</a></td></tr>
+<tr><td class="num">325</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_discard_framebuffer.txt">EXT_discard_framebuffer</a></td></tr>
+<tr><td class="num">326</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_disjoint_timer_query.txt">EXT_disjoint_timer_query</a></td></tr>
+<tr><td class="num">327</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers.txt">EXT_draw_buffers</a></td></tr>
+<tr><td class="num">328</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers2.txt">EXT_draw_buffers2</a></td></tr>
+<tr><td class="num">329</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers_indexed.txt">EXT_draw_buffers_indexed</a></td></tr>
+<tr><td class="num">330</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_elements_base_vertex.txt">EXT_draw_elements_base_vertex</a></td></tr>
+<tr><td class="num">331</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_draw_instanced.txt">EXT_draw_instanced</a></td></tr>
+<tr><td class="num">332</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/draw_range_elements.txt">EXT_draw_range_elements</a></td></tr>
+<tr><td class="num">333</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt">EXT_draw_transform_feedback</a></td></tr>
+<tr><td class="num">334</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_buffer.txt">EXT_external_buffer</a></td></tr>
+<tr><td class="num">335</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt">EXT_float_blend</a></td></tr>
+<tr><td class="num">336</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/fog_coord.txt">EXT_fog_coord</a></td></tr>
+<tr><td class="num">337</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_frag_depth.txt">EXT_frag_depth</a></td></tr>
+<tr><td class="num">338</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_fragment_lighting.txt">EXT_fragment_lighting</a></td></tr>
+<tr><td class="num">339</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_blit.txt">EXT_framebuffer_blit</a></td></tr>
+<tr><td class="num">340</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample.txt">EXT_framebuffer_multisample</a></td></tr>
+<tr><td class="num">341</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample_blit_scaled.txt">EXT_framebuffer_multisample_blit_scaled</a></td></tr>
+<tr><td class="num">342</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_object.txt">EXT_framebuffer_object</a></td></tr>
+<tr><td class="num">343</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">344</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt">EXT_geometry_point_size</a></td></tr>
+<tr><td class="num">345</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt">EXT_geometry_shader</a></td></tr>
+<tr><td class="num">346</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt">EXT_geometry_shader4</a></td></tr>
+<tr><td class="num">347</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_program_parameters.txt">EXT_gpu_program_parameters</a></td></tr>
+<tr><td class="num">348</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_shader4.txt">EXT_gpu_shader4</a></td></tr>
+<tr><td class="num">349</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_gpu_shader5.txt">EXT_gpu_shader5</a></td></tr>
+<tr><td class="num">350</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_histogram.txt">EXT_histogram</a></td></tr>
+<tr><td class="num">351</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_array_formats.txt">EXT_index_array_formats</a></td></tr>
+<tr><td class="num">352</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_func.txt">EXT_index_func</a></td></tr>
+<tr><td class="num">353</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_material.txt">EXT_index_material</a></td></tr>
+<tr><td class="num">354</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_texture.txt">EXT_index_texture</a></td></tr>
+<tr><td class="num">355</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_instanced_arrays.txt">EXT_instanced_arrays</a></td></tr>
+<tr><td class="num">356</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_light_texture.txt">EXT_light_texture</a></td></tr>
+<tr><td class="num">357</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_map_buffer_range.txt">EXT_map_buffer_range</a></td></tr>
+<tr><td class="num">358</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects.txt">EXT_memory_object</a></td></tr>
+<tr><td class="num">359</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt">EXT_memory_object_fd</a></td></tr>
+<tr><td class="num">360</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt">EXT_memory_object_win32</a></td></tr>
+<tr><td class="num">361</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_misc_attribute.txt">EXT_misc_attribute</a></td></tr>
+<tr><td class="num">362</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_arrays.txt">EXT_multi_draw_arrays</a></td></tr>
+<tr><td class="num">363</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_indirect.txt">EXT_multi_draw_indirect</a></td></tr>
+<tr><td class="num">364</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiple_textures.txt">EXT_multiple_textures</a></td></tr>
+<tr><td class="num">365</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt">EXT_multisample</a></td></tr>
+<tr><td class="num">366</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt">EXT_multisample_compatibility</a></td></tr>
+<tr><td class="num">367</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt">EXT_multisampled_render_to_texture</a></td></tr>
+<tr><td class="num">368</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture2.txt">EXT_multisampled_render_to_texture2</a></td></tr>
+<tr><td class="num">369</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_draw_buffers.txt">EXT_multiview_draw_buffers</a></td></tr>
+<tr><td class="num">370</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_tessellation_geometry_shader.txt">EXT_multiview_tessellation_geometry_shader</a></td></tr>
+<tr><td class="num">371</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_texture_multisample.txt">EXT_multiview_texture_multisample</a></td></tr>
+<tr><td class="num">372</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_timer_query.txt">EXT_multiview_timer_query</a></td></tr>
+<tr><td class="num">373</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_occlusion_query_boolean.txt">EXT_occlusion_query_boolean</a></td></tr>
+<tr><td class="num">374</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_depth_stencil.txt">EXT_packed_depth_stencil</a></td></tr>
+<tr><td class="num">375</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt">EXT_packed_float</a></td></tr>
+<tr><td class="num">376</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_pixels.txt">EXT_packed_pixels</a></td></tr>
+<tr><td class="num">377</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_paletted_texture.txt">EXT_paletted_texture</a></td></tr>
+<tr><td class="num">378</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_pixel_buffer_object.txt">EXT_pixel_buffer_object</a></td></tr>
+<tr><td class="num">379</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform.txt">EXT_pixel_transform</a></td></tr>
+<tr><td class="num">380</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform_color_table.txt">EXT_pixel_transform_color_table</a></td></tr>
+<tr><td class="num">381</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_point_parameters.txt">EXT_point_parameters</a></td></tr>
+<tr><td class="num">382</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset.txt">EXT_polygon_offset</a></td></tr>
+<tr><td class="num">383</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset_clamp.txt">EXT_polygon_offset_clamp</a></td></tr>
+<tr><td class="num">384</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt">EXT_post_depth_coverage</a></td></tr>
+<tr><td class="num">385</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_primitive_bounding_box.txt">EXT_primitive_bounding_box</a></td></tr>
+<tr><td class="num">386</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt">EXT_protected_textures</a></td></tr>
+<tr><td class="num">387</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_provoking_vertex.txt">EXT_provoking_vertex</a></td></tr>
+<tr><td class="num">388</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pvrtc_sRGB.txt">EXT_pvrtc_sRGB</a></td></tr>
+<tr><td class="num">389</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt">EXT_raster_multisample</a></td></tr>
+<tr><td class="num">390</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_read_format_bgra.txt">EXT_read_format_bgra</a></td></tr>
+<tr><td class="num">391</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_render_snorm.txt">EXT_render_snorm</a></td></tr>
+<tr><td class="num">392</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_rescale_normal.txt">EXT_rescale_normal</a></td></tr>
+<tr><td class="num">393</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_robustness.txt">EXT_robustness</a></td></tr>
+<tr><td class="num">394</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB.txt">EXT_sRGB</a></td></tr>
+<tr><td class="num">395</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt">EXT_sRGB_write_control</a></td></tr>
+<tr><td class="num">396</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt">EXT_scene_marker</a></td></tr>
+<tr><td class="num">397</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/secondary_color.txt">EXT_secondary_color</a></td></tr>
+<tr><td class="num">398</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects.txt">EXT_semaphore</a></td></tr>
+<tr><td class="num">399</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt">EXT_semaphore_fd</a></td></tr>
+<tr><td class="num">400</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt">EXT_semaphore_win32</a></td></tr>
+<tr><td class="num">401</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_depth_stencil.txt">EXT_separate_depth_stencil</a></td></tr>
+<tr><td class="num">402</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_shader_objects.gl.txt">EXT_separate_shader_objects</a></td></tr>
+<tr><td class="num">403</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_specular_color.txt">EXT_separate_specular_color</a></td></tr>
+<tr><td class="num">404</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt">EXT_shader_framebuffer_fetch</a></td></tr>
+<tr><td class="num">405</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt">EXT_shader_framebuffer_fetch_non_coherent</a></td></tr>
+<tr><td class="num">406</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt">EXT_shader_group_vote</a></td></tr>
+<tr><td class="num">407</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_formatted.txt">EXT_shader_image_load_formatted</a></td></tr>
+<tr><td class="num">408</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_store.txt">EXT_shader_image_load_store</a></td></tr>
+<tr><td class="num">409</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_implicit_conversions.txt">EXT_shader_implicit_conversions</a></td></tr>
+<tr><td class="num">410</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_integer_mix.txt">EXT_shader_integer_mix</a></td></tr>
+<tr><td class="num">411</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_io_blocks.txt">EXT_shader_io_blocks</a></td></tr>
+<tr><td class="num">412</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt">EXT_shader_non_constant_global_initializers</a></td></tr>
+<tr><td class="num">413</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage.txt">EXT_shader_pixel_local_storage</a></td></tr>
+<tr><td class="num">414</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt">EXT_shader_pixel_local_storage2</a></td></tr>
+<tr><td class="num">415</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_samples_identical.txt">EXT_shader_samples_identical</a></td></tr>
+<tr><td class="num">416</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_texture_lod.txt">EXT_shader_texture_lod</a></td></tr>
+<tr><td class="num">417</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_funcs.txt">EXT_shadow_funcs</a></td></tr>
+<tr><td class="num">418</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_samplers.txt">EXT_shadow_samplers</a></td></tr>
+<tr><td class="num">419</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shared_texture_palette.txt">EXT_shared_texture_palette</a></td></tr>
+<tr><td class="num">420</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture.txt">EXT_sparse_texture</a></td></tr>
+<tr><td class="num">421</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture2.txt">EXT_sparse_texture2</a></td></tr>
+<tr><td class="num">422</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_static_vertex_array.txt">EXT_static_vertex_array</a></td></tr>
+<tr><td class="num">423</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_clear_tag.txt">EXT_stencil_clear_tag</a></td></tr>
+<tr><td class="num">424</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_two_side.txt">EXT_stencil_two_side</a></td></tr>
+<tr><td class="num">425</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_wrap.txt">EXT_stencil_wrap</a></td></tr>
+<tr><td class="num">426</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_subtexture.txt">EXT_subtexture</a></td></tr>
+<tr><td class="num">427</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt">EXT_tessellation_point_size</a></td></tr>
+<tr><td class="num">428</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt">EXT_tessellation_shader</a></td></tr>
+<tr><td class="num">429</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture.txt">EXT_texture</a></td></tr>
+<tr><td class="num">430</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture3D.txt">EXT_texture3D</a></td></tr>
+<tr><td class="num">431</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_array.txt">EXT_texture_array</a></td></tr>
+<tr><td class="num">432</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_border_clamp.txt">EXT_texture_border_clamp</a></td></tr>
+<tr><td class="num">433</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_buffer.txt">EXT_texture_buffer</a></td></tr>
+<tr><td class="num">434</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_buffer_object.txt">EXT_texture_buffer_object</a></td></tr>
+<tr><td class="num">435</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt">EXT_texture_compression_astc_decode_mode</a></td></tr>
+<tr><td class="num">436</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt">EXT_texture_compression_astc_decode_mode_rgb9e5</a></td></tr>
+<tr><td class="num">437</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_bptc.txt">EXT_texture_compression_bptc</a></td></tr>
+<tr><td class="num">438</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_dxt1.txt">EXT_texture_compression_dxt1</a></td></tr>
+<tr><td class="num">439</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_latc.txt">EXT_texture_compression_latc</a></td></tr>
+<tr><td class="num">440</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_rgtc.txt">EXT_texture_compression_rgtc</a></td></tr>
+<tr><td class="num">441</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc.txt">EXT_texture_compression_s3tc</a></td></tr>
+<tr><td class="num">442</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc_srgb.txt">EXT_texture_compression_s3tc_srgb</a></td></tr>
+<tr><td class="num">443</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_texture_cube_map.txt">EXT_texture_cube_map</a></td></tr>
+<tr><td class="num">444</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_cube_map_array.txt">EXT_texture_cube_map_array</a></td></tr>
+<tr><td class="num">445</td><td>&nbsp;</td><td><a href="http://www.opengl.org/developers/documentation/Version1.2/1.2specs/texture_edge_clamp.txt">EXT_texture_edge_clamp</a></td></tr>
+<tr><td class="num">446</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env.txt">EXT_texture_env</a></td></tr>
+<tr><td class="num">447</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_add.txt">EXT_texture_env_add</a></td></tr>
+<tr><td class="num">448</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_combine.txt">EXT_texture_env_combine</a></td></tr>
+<tr><td class="num">449</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_dot3.txt">EXT_texture_env_dot3</a></td></tr>
+<tr><td class="num">450</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_anisotropic.txt">EXT_texture_filter_anisotropic</a></td></tr>
+<tr><td class="num">451</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_minmax.txt">EXT_texture_filter_minmax</a></td></tr>
+<tr><td class="num">452</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_BGRA8888.txt">EXT_texture_format_BGRA8888</a></td></tr>
+<tr><td class="num">453</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_sRGB_override.txt">EXT_texture_format_sRGB_override</a></td></tr>
+<tr><td class="num">454</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_integer.txt">EXT_texture_integer</a></td></tr>
+<tr><td class="num">455</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_lod_bias.txt">EXT_texture_lod_bias</a></td></tr>
+<tr><td class="num">456</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp.txt">EXT_texture_mirror_clamp</a></td></tr>
+<tr><td class="num">457</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp_to_edge.txt">EXT_texture_mirror_clamp_to_edge</a></td></tr>
+<tr><td class="num">458</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_norm16.txt">EXT_texture_norm16</a></td></tr>
+<tr><td class="num">459</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_object.txt">EXT_texture_object</a></td></tr>
+<tr><td class="num">460</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_perturb_normal.txt">EXT_texture_perturb_normal</a></td></tr>
+<tr><td class="num">461</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_query_lod.txt">EXT_texture_query_lod</a></td></tr>
+<tr><td class="num">462</td><td>&nbsp;</td><td><a href="http://developer.apple.com/opengl/extensions/ext_texture_rectangle.html">EXT_texture_rectangle</a></td></tr>
+<tr><td class="num">463</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_rg.txt">EXT_texture_rg</a></td></tr>
+<tr><td class="num">464</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt">EXT_texture_sRGB</a></td></tr>
+<tr><td class="num">465</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_R8.txt">EXT_texture_sRGB_R8</a></td></tr>
+<tr><td class="num">466</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_RG8.txt">EXT_texture_sRGB_RG8</a></td></tr>
+<tr><td class="num">467</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt">EXT_texture_sRGB_decode</a></td></tr>
+<tr><td class="num">468</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_shadow_lod.txt">EXT_texture_shadow_lod</a></td></tr>
+<tr><td class="num">469</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_shared_exponent.txt">EXT_texture_shared_exponent</a></td></tr>
+<tr><td class="num">470</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_snorm.txt">EXT_texture_snorm</a></td></tr>
+<tr><td class="num">471</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage.txt">EXT_texture_storage</a></td></tr>
+<tr><td class="num">472</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage_compression.txt">EXT_texture_storage_compression</a></td></tr>
+<tr><td class="num">473</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_swizzle.txt">EXT_texture_swizzle</a></td></tr>
+<tr><td class="num">474</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_type_2_10_10_10_REV.txt">EXT_texture_type_2_10_10_10_REV</a></td></tr>
+<tr><td class="num">475</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_view.txt">EXT_texture_view</a></td></tr>
+<tr><td class="num">476</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_timer_query.txt">EXT_timer_query</a></td></tr>
+<tr><td class="num">477</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_transform_feedback.txt">EXT_transform_feedback</a></td></tr>
+<tr><td class="num">478</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_unpack_subimage.txt">EXT_unpack_subimage</a></td></tr>
+<tr><td class="num">479</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array.txt">EXT_vertex_array</a></td></tr>
+<tr><td class="num">480</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_bgra.txt">EXT_vertex_array_bgra</a></td></tr>
+<tr><td class="num">481</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_setXXX.txt">EXT_vertex_array_setXXX</a></td></tr>
+<tr><td class="num">482</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_attrib_64bit.txt">EXT_vertex_attrib_64bit</a></td></tr>
+<tr><td class="num">483</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_shader.txt">EXT_vertex_shader</a></td></tr>
+<tr><td class="num">484</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_weighting.txt">EXT_vertex_weighting</a></td></tr>
+<tr><td class="num">485</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_win32_keyed_mutex.txt">EXT_win32_keyed_mutex</a></td></tr>
+<tr><td class="num">486</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_window_rectangles.txt">EXT_window_rectangles</a></td></tr>
+<tr><td class="num">487</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_x11_sync_object.txt">EXT_x11_sync_object</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">488</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/FJ/FJ_shader_binary_GCCSO.txt">FJ_shader_binary_GCCSO</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">489</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_frame_terminator.txt">GREMEDY_frame_terminator</a></td></tr>
+<tr><td class="num">490</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_string_marker.txt">GREMEDY_string_marker</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">491</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_convolution_border_modes.txt">HP_convolution_border_modes</a></td></tr>
+<tr><td class="num">492</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_image_transform.txt">HP_image_transform</a></td></tr>
+<tr><td class="num">493</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_occlusion_test.txt">HP_occlusion_test</a></td></tr>
+<tr><td class="num">494</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_texture_lighting.txt">HP_texture_lighting</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">495</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_cull_vertex.txt">IBM_cull_vertex</a></td></tr>
+<tr><td class="num">496</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_multimode_draw_arrays.txt">IBM_multimode_draw_arrays</a></td></tr>
+<tr><td class="num">497</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_rasterpos_clip.txt">IBM_rasterpos_clip</a></td></tr>
+<tr><td class="num">498</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_static_data.txt">IBM_static_data</a></td></tr>
+<tr><td class="num">499</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_texture_mirrored_repeat.txt">IBM_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">500</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_vertex_array_lists.txt">IBM_vertex_array_lists</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">501</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt">IMG_bindless_texture</a></td></tr>
+<tr><td class="num">502</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt">IMG_framebuffer_downsample</a></td></tr>
+<tr><td class="num">503</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_multisampled_render_to_texture.txt">IMG_multisampled_render_to_texture</a></td></tr>
+<tr><td class="num">504</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_program_binary.txt">IMG_program_binary</a></td></tr>
+<tr><td class="num">505</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_read_format.txt">IMG_read_format</a></td></tr>
+<tr><td class="num">506</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_shader_binary.txt">IMG_shader_binary</a></td></tr>
+<tr><td class="num">507</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt">IMG_texture_compression_pvrtc</a></td></tr>
+<tr><td class="num">508</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc2.txt">IMG_texture_compression_pvrtc2</a></td></tr>
+<tr><td class="num">509</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_env_enhanced_fixed_function.txt">IMG_texture_env_enhanced_fixed_function</a></td></tr>
+<tr><td class="num">510</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt">IMG_texture_filter_cubic</a></td></tr>
+<tr><td class="num">511</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_tile_region_protection.txt">IMG_tile_region_protection</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">512</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_color_clamp.txt">INGR_color_clamp</a></td></tr>
+<tr><td class="num">513</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_interlace_read.txt">INGR_interlace_read</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">514</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_blackhole_render.txt">INTEL_blackhole_render</a></td></tr>
+<tr><td class="num">515</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_conservative_rasterization.txt">INTEL_conservative_rasterization</a></td></tr>
+<tr><td class="num">516</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_fragment_shader_ordering.txt">INTEL_fragment_shader_ordering</a></td></tr>
+<tr><td class="num">517</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_framebuffer_CMAA.txt">INTEL_framebuffer_CMAA</a></td></tr>
+<tr><td class="num">518</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt">INTEL_map_texture</a></td></tr>
+<tr><td class="num">519</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_parallel_arrays.txt">INTEL_parallel_arrays</a></td></tr>
+<tr><td class="num">520</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_performance_query.txt">INTEL_performance_query</a></td></tr>
+<tr><td class="num">521</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_shader_integer_functions2.txt">INTEL_shader_integer_functions2</a></td></tr>
+<tr><td class="num">522</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_texture_scissor.txt">INTEL_texture_scissor</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">523</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt">KHR_blend_equation_advanced</a></td></tr>
+<tr><td class="num">524</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt">KHR_blend_equation_advanced_coherent</a></td></tr>
+<tr><td class="num">525</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt">KHR_context_flush_control</a></td></tr>
+<tr><td class="num">526</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt">KHR_debug</a></td></tr>
+<tr><td class="num">527</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_no_error.txt">KHR_no_error</a></td></tr>
+<tr><td class="num">528</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_parallel_shader_compile.txt">KHR_parallel_shader_compile</a></td></tr>
+<tr><td class="num">529</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robust_buffer_access_behavior.txt">KHR_robust_buffer_access_behavior</a></td></tr>
+<tr><td class="num">530</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robustness.txt">KHR_robustness</a></td></tr>
+<tr><td class="num">531</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_shader_subgroup.txt">KHR_shader_subgroup</a></td></tr>
+<tr><td class="num">532</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">KHR_texture_compression_astc_hdr</a></td></tr>
+<tr><td class="num">533</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">KHR_texture_compression_astc_ldr</a></td></tr>
+<tr><td class="num">534</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_sliced_3d.txt">KHR_texture_compression_astc_sliced_3d</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">535</td><td>&nbsp;</td><td>KTX_buffer_region</td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">536</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESAX/MESAX_texture_stack.txt">MESAX_texture_stack</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">537</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_bgra.txt">MESA_bgra</a></td></tr>
+<tr><td class="num">538</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_x.txt">MESA_framebuffer_flip_x</a></td></tr>
+<tr><td class="num">539</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt">MESA_framebuffer_flip_y</a></td></tr>
+<tr><td class="num">540</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_swap_xy.txt">MESA_framebuffer_swap_xy</a></td></tr>
+<tr><td class="num">541</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_pack_invert.txt">MESA_pack_invert</a></td></tr>
+<tr><td class="num">542</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_program_binary_formats.txt">MESA_program_binary_formats</a></td></tr>
+<tr><td class="num">543</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_resize_buffers.txt">MESA_resize_buffers</a></td></tr>
+<tr><td class="num">544</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_shader_integer_functions.txt">MESA_shader_integer_functions</a></td></tr>
+<tr><td class="num">545</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_tile_raster_order.txt">MESA_tile_raster_order</a></td></tr>
+<tr><td class="num">546</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_window_pos.txt">MESA_window_pos</a></td></tr>
+<tr><td class="num">547</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_ycbcr_texture.txt">MESA_ycbcr_texture</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">548</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_blend_equation_advanced_multi_draw_buffers.txt">NVX_blend_equation_advanced_multi_draw_buffers</a></td></tr>
+<tr><td class="num">549</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_conditional_render.txt">NVX_conditional_render</a></td></tr>
+<tr><td class="num">550</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NVX_gpu_memory_info.txt">NVX_gpu_memory_info</a></td></tr>
+<tr><td class="num">551</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_gpu_multicast2.txt">NVX_gpu_multicast2</a></td></tr>
+<tr><td class="num">552</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_linked_gpu_multicast.txt">NVX_linked_gpu_multicast</a></td></tr>
+<tr><td class="num">553</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_progress_fence.txt">NVX_progress_fence</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">554</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_3dvision_settings.txt">NV_3dvision_settings</a></td></tr>
+<tr><td class="num">555</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_EGL_stream_consumer_external.txt">NV_EGL_stream_consumer_external</a></td></tr>
+<tr><td class="num">556</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_alpha_to_coverage_dither_control.txt">NV_alpha_to_coverage_dither_control</a></td></tr>
+<tr><td class="num">557</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bgr.txt">NV_bgr</a></td></tr>
+<tr><td class="num">558</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect.txt">NV_bindless_multi_draw_indirect</a></td></tr>
+<tr><td class="num">559</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect_count.txt">NV_bindless_multi_draw_indirect_count</a></td></tr>
+<tr><td class="num">560</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_texture.txt">NV_bindless_texture</a></td></tr>
+<tr><td class="num">561</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt">NV_blend_equation_advanced</a></td></tr>
+<tr><td class="num">562</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt">NV_blend_equation_advanced_coherent</a></td></tr>
+<tr><td class="num">563</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_minmax_factor.txt">NV_blend_minmax_factor</a></td></tr>
+<tr><td class="num">564</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_square.txt">NV_blend_square</a></td></tr>
+<tr><td class="num">565</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_clip_space_w_scaling.txt">NV_clip_space_w_scaling</a></td></tr>
+<tr><td class="num">566</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_command_list.txt">NV_command_list</a></td></tr>
+<tr><td class="num">567</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_program5.txt">NV_compute_program5</a></td></tr>
+<tr><td class="num">568</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_shader_derivatives.txt">NV_compute_shader_derivatives</a></td></tr>
+<tr><td class="num">569</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conditional_render.txt">NV_conditional_render</a></td></tr>
+<tr><td class="num">570</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster.txt">NV_conservative_raster</a></td></tr>
+<tr><td class="num">571</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_dilate.txt">NV_conservative_raster_dilate</a></td></tr>
+<tr><td class="num">572</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap.txt">NV_conservative_raster_pre_snap</a></td></tr>
+<tr><td class="num">573</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap_triangles.txt">NV_conservative_raster_pre_snap_triangles</a></td></tr>
+<tr><td class="num">574</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt">NV_conservative_raster_underestimation</a></td></tr>
+<tr><td class="num">575</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_buffer.txt">NV_copy_buffer</a></td></tr>
+<tr><td class="num">576</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_depth_to_color.txt">NV_copy_depth_to_color</a></td></tr>
+<tr><td class="num">577</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_image.txt">NV_copy_image</a></td></tr>
+<tr><td class="num">578</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_deep_texture3D.txt">NV_deep_texture3D</a></td></tr>
+<tr><td class="num">579</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_depth_buffer_float.txt">NV_depth_buffer_float</a></td></tr>
+<tr><td class="num">580</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_depth_clamp.txt">NV_depth_clamp</a></td></tr>
+<tr><td class="num">581</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/EGL_NV_depth_nonlinear.txt">NV_depth_nonlinear</a></td></tr>
+<tr><td class="num">582</td><td>&nbsp;</td><td>NV_depth_range_unclamped</td></tr>
+<tr><td class="num">583</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_buffers.txt">NV_draw_buffers</a></td></tr>
+<tr><td class="num">584</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_instanced.txt">NV_draw_instanced</a></td></tr>
+<tr><td class="num">585</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_texture.txt">NV_draw_texture</a></td></tr>
+<tr><td class="num">586</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_vulkan_image.txt">NV_draw_vulkan_image</a></td></tr>
+<tr><td class="num">587</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_evaluators.txt">NV_evaluators</a></td></tr>
+<tr><td class="num">588</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_attrib_location.txt">NV_explicit_attrib_location</a></td></tr>
+<tr><td class="num">589</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_multisample.txt">NV_explicit_multisample</a></td></tr>
+<tr><td class="num">590</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fbo_color_attachments.txt">NV_fbo_color_attachments</a></td></tr>
+<tr><td class="num">591</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fence.txt">NV_fence</a></td></tr>
+<tr><td class="num">592</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fill_rectangle.txt">NV_fill_rectangle</a></td></tr>
+<tr><td class="num">593</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_float_buffer.txt">NV_float_buffer</a></td></tr>
+<tr><td class="num">594</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fog_distance.txt">NV_fog_distance</a></td></tr>
+<tr><td class="num">595</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_coverage_to_color.txt">NV_fragment_coverage_to_color</a></td></tr>
+<tr><td class="num">596</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_program.txt">NV_fragment_program</a></td></tr>
+<tr><td class="num">597</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program2.txt">NV_fragment_program2</a></td></tr>
+<tr><td class="num">598</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_fragment_program4.txt">NV_fragment_program4</a></td></tr>
+<tr><td class="num">599</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program_option.txt">NV_fragment_program_option</a></td></tr>
+<tr><td class="num">600</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_barycentric.txt">NV_fragment_shader_barycentric</a></td></tr>
+<tr><td class="num">601</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_interlock.txt">NV_fragment_shader_interlock</a></td></tr>
+<tr><td class="num">602</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_blit.txt">NV_framebuffer_blit</a></td></tr>
+<tr><td class="num">603</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt">NV_framebuffer_mixed_samples</a></td></tr>
+<tr><td class="num">604</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_multisample.txt">NV_framebuffer_multisample</a></td></tr>
+<tr><td class="num">605</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_framebuffer_multisample_coverage.txt">NV_framebuffer_multisample_coverage</a></td></tr>
+<tr><td class="num">606</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_generate_mipmap_sRGB.txt">NV_generate_mipmap_sRGB</a></td></tr>
+<tr><td class="num">607</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_program4.txt">NV_geometry_program4</a></td></tr>
+<tr><td class="num">608</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_shader4.txt">NV_geometry_shader4</a></td></tr>
+<tr><td class="num">609</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt">NV_geometry_shader_passthrough</a></td></tr>
+<tr><td class="num">610</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_multicast.txt">NV_gpu_multicast</a></td></tr>
+<tr><td class="num">611</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_gpu_program4.txt">NV_gpu_program4</a></td></tr>
+<tr><td class="num">612</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_program5.txt">NV_gpu_program5</a></td></tr>
+<tr><td class="num">613</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5_mem_extended.txt">NV_gpu_program5_mem_extended</a></td></tr>
+<tr><td class="num">614</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5.txt">NV_gpu_program_fp64</a></td></tr>
+<tr><td class="num">615</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_shader5.txt">NV_gpu_shader5</a></td></tr>
+<tr><td class="num">616</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_half_float.txt">NV_half_float</a></td></tr>
+<tr><td class="num">617</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_image_formats.txt">NV_image_formats</a></td></tr>
+<tr><td class="num">618</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_instanced_arrays.txt">NV_instanced_arrays</a></td></tr>
+<tr><td class="num">619</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_internalformat_sample_query.txt">NV_internalformat_sample_query</a></td></tr>
+<tr><td class="num">620</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_light_max_exponent.txt">NV_light_max_exponent</a></td></tr>
+<tr><td class="num">621</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_attachment.txt">NV_memory_attachment</a></td></tr>
+<tr><td class="num">622</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_object_sparse.txt">NV_memory_object_sparse</a></td></tr>
+<tr><td class="num">623</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_mesh_shader.txt">NV_mesh_shader</a></td></tr>
+<tr><td class="num">624</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">625</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_filter_hint.txt">NV_multisample_filter_hint</a></td></tr>
+<tr><td class="num">626</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_non_square_matrices.txt">NV_non_square_matrices</a></td></tr>
+<tr><td class="num">627</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_occlusion_query.txt">NV_occlusion_query</a></td></tr>
+<tr><td class="num">628</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pack_subimage.txt">NV_pack_subimage</a></td></tr>
+<tr><td class="num">629</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_depth_stencil.txt">NV_packed_depth_stencil</a></td></tr>
+<tr><td class="num">630</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt">NV_packed_float</a></td></tr>
+<tr><td class="num">631</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt">NV_packed_float_linear</a></td></tr>
+<tr><td class="num">632</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_parameter_buffer_object.txt">NV_parameter_buffer_object</a></td></tr>
+<tr><td class="num">633</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_parameter_buffer_object2.txt">NV_parameter_buffer_object2</a></td></tr>
+<tr><td class="num">634</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering.txt">NV_path_rendering</a></td></tr>
+<tr><td class="num">635</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering_shared_edge.txt">NV_path_rendering_shared_edge</a></td></tr>
+<tr><td class="num">636</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_buffer_object.txt">NV_pixel_buffer_object</a></td></tr>
+<tr><td class="num">637</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_data_range.txt">NV_pixel_data_range</a></td></tr>
+<tr><td class="num">638</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_platform_binary.txt">NV_platform_binary</a></td></tr>
+<tr><td class="num">639</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_point_sprite.txt">NV_point_sprite</a></td></tr>
+<tr><td class="num">640</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_polygon_mode.txt">NV_polygon_mode</a></td></tr>
+<tr><td class="num">641</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/present_video.txt">NV_present_video</a></td></tr>
+<tr><td class="num">642</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_restart.txt">NV_primitive_restart</a></td></tr>
+<tr><td class="num">643</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_shading_rate.txt">NV_primitive_shading_rate</a></td></tr>
+<tr><td class="num">644</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_query_resource_tag.txt">NV_query_resource_tag</a></td></tr>
+<tr><td class="num">645</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt">NV_read_buffer</a></td></tr>
+<tr><td class="num">646</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt">NV_read_buffer_front</a></td></tr>
+<tr><td class="num">647</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_depth</a></td></tr>
+<tr><td class="num">648</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_depth_stencil</a></td></tr>
+<tr><td class="num">649</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_stencil</a></td></tr>
+<tr><td class="num">650</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners.txt">NV_register_combiners</a></td></tr>
+<tr><td class="num">651</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners2.txt">NV_register_combiners2</a></td></tr>
+<tr><td class="num">652</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_representative_fragment_test.txt">NV_representative_fragment_test</a></td></tr>
+<tr><td class="num">653</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_robustness_video_memory_purge.txt">NV_robustness_video_memory_purge</a></td></tr>
+<tr><td class="num">654</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sRGB_formats.txt">NV_sRGB_formats</a></td></tr>
+<tr><td class="num">655</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_locations.txt">NV_sample_locations</a></td></tr>
+<tr><td class="num">656</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt">NV_sample_mask_override_coverage</a></td></tr>
+<tr><td class="num">657</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_scissor_exclusive.txt">NV_scissor_exclusive</a></td></tr>
+<tr><td class="num">658</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_counters.txt">NV_shader_atomic_counters</a></td></tr>
+<tr><td class="num">659</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float.txt">NV_shader_atomic_float</a></td></tr>
+<tr><td class="num">660</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float64.txt">NV_shader_atomic_float64</a></td></tr>
+<tr><td class="num">661</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_fp16_vector.txt">NV_shader_atomic_fp16_vector</a></td></tr>
+<tr><td class="num">662</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_int64.txt">NV_shader_atomic_int64</a></td></tr>
+<tr><td class="num">663</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_buffer_load.txt">NV_shader_buffer_load</a></td></tr>
+<tr><td class="num">664</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_noperspective_interpolation.txt">NV_shader_noperspective_interpolation</a></td></tr>
+<tr><td class="num">665</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_storage_buffer_object.txt">NV_shader_storage_buffer_object</a></td></tr>
+<tr><td class="num">666</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_subgroup_partitioned.txt">NV_shader_subgroup_partitioned</a></td></tr>
+<tr><td class="num">667</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_texture_footprint.txt">NV_shader_texture_footprint</a></td></tr>
+<tr><td class="num">668</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt">NV_shader_thread_group</a></td></tr>
+<tr><td class="num">669</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_shuffle.txt">NV_shader_thread_shuffle</a></td></tr>
+<tr><td class="num">670</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shading_rate_image.txt">NV_shading_rate_image</a></td></tr>
+<tr><td class="num">671</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_array.txt">NV_shadow_samplers_array</a></td></tr>
+<tr><td class="num">672</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_cube.txt">NV_shadow_samplers_cube</a></td></tr>
+<tr><td class="num">673</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_stereo_view_rendering.txt">NV_stereo_view_rendering</a></td></tr>
+<tr><td class="num">674</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/tessellation_program5.txt">NV_tessellation_program5</a></td></tr>
+<tr><td class="num">675</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_emboss.txt">NV_texgen_emboss</a></td></tr>
+<tr><td class="num">676</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_reflection.txt">NV_texgen_reflection</a></td></tr>
+<tr><td class="num">677</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_array.txt">NV_texture_array</a></td></tr>
+<tr><td class="num">678</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt">NV_texture_barrier</a></td></tr>
+<tr><td class="num">679</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_border_clamp.txt">NV_texture_border_clamp</a></td></tr>
+<tr><td class="num">680</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_latc.txt">NV_texture_compression_latc</a></td></tr>
+<tr><td class="num">681</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc.txt">NV_texture_compression_s3tc</a></td></tr>
+<tr><td class="num">682</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc_update.txt">NV_texture_compression_s3tc_update</a></td></tr>
+<tr><td class="num">683</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_vtc.txt">NV_texture_compression_vtc</a></td></tr>
+<tr><td class="num">684</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_env_combine4.txt">NV_texture_env_combine4</a></td></tr>
+<tr><td class="num">685</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_expand_normal.txt">NV_texture_expand_normal</a></td></tr>
+<tr><td class="num">686</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_multisample.txt">NV_texture_multisample</a></td></tr>
+<tr><td class="num">687</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_npot_2D_mipmap.txt">NV_texture_npot_2D_mipmap</a></td></tr>
+<tr><td class="num">688</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle.txt">NV_texture_rectangle</a></td></tr>
+<tr><td class="num">689</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle_compressed.txt">NV_texture_rectangle_compressed</a></td></tr>
+<tr><td class="num">690</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader.txt">NV_texture_shader</a></td></tr>
+<tr><td class="num">691</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader2.txt">NV_texture_shader2</a></td></tr>
+<tr><td class="num">692</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader3.txt">NV_texture_shader3</a></td></tr>
+<tr><td class="num">693</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_timeline_semaphore.txt">NV_timeline_semaphore</a></td></tr>
+<tr><td class="num">694</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_transform_feedback.txt">NV_transform_feedback</a></td></tr>
+<tr><td class="num">695</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_transform_feedback2.txt">NV_transform_feedback2</a></td></tr>
+<tr><td class="num">696</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_uniform_buffer_unified_memory.txt">NV_uniform_buffer_unified_memory</a></td></tr>
+<tr><td class="num">697</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vdpau_interop.txt">NV_vdpau_interop</a></td></tr>
+<tr><td class="num">698</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vdpau_interop2.txt">NV_vdpau_interop2</a></td></tr>
+<tr><td class="num">699</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">700</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range2.txt">NV_vertex_array_range2</a></td></tr>
+<tr><td class="num">701</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_attrib_integer_64bit.txt">NV_vertex_attrib_integer_64bit</a></td></tr>
+<tr><td class="num">702</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_buffer_unified_memory.txt">NV_vertex_buffer_unified_memory</a></td></tr>
+<tr><td class="num">703</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt">NV_vertex_program</a></td></tr>
+<tr><td class="num">704</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program1_1.txt">NV_vertex_program1_1</a></td></tr>
+<tr><td class="num">705</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program2.txt">NV_vertex_program2</a></td></tr>
+<tr><td class="num">706</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program2_option.txt">NV_vertex_program2_option</a></td></tr>
+<tr><td class="num">707</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program3.txt">NV_vertex_program3</a></td></tr>
+<tr><td class="num">708</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_vertex_program4.txt">NV_vertex_program4</a></td></tr>
+<tr><td class="num">709</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_video_capture.txt">NV_video_capture</a></td></tr>
+<tr><td class="num">710</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array.txt">NV_viewport_array</a></td></tr>
+<tr><td class="num">711</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt">NV_viewport_array2</a></td></tr>
+<tr><td class="num">712</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_swizzle.txt">NV_viewport_swizzle</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">713</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image.txt">OES_EGL_image</a></td></tr>
+<tr><td class="num">714</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt">OES_EGL_image_external</a></td></tr>
+<tr><td class="num">715</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external_essl3.txt">OES_EGL_image_external_essl3</a></td></tr>
+<tr><td class="num">716</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_equation_separate.txt">OES_blend_equation_separate</a></td></tr>
+<tr><td class="num">717</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_func_separate.txt">OES_blend_func_separate</a></td></tr>
+<tr><td class="num">718</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_subtract.txt">OES_blend_subtract</a></td></tr>
+<tr><td class="num">719</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_byte_coordinates.txt">OES_byte_coordinates</a></td></tr>
+<tr><td class="num">720</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt">OES_compressed_ETC1_RGB8_texture</a></td></tr>
+<tr><td class="num">721</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_paletted_texture.txt">OES_compressed_paletted_texture</a></td></tr>
+<tr><td class="num">722</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_copy_image.txt">OES_copy_image</a></td></tr>
+<tr><td class="num">723</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth24.txt">OES_depth24</a></td></tr>
+<tr><td class="num">724</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth32.txt">OES_depth32</a></td></tr>
+<tr><td class="num">725</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt">OES_depth_texture</a></td></tr>
+<tr><td class="num">726</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture_cube_map.txt">OES_depth_texture_cube_map</a></td></tr>
+<tr><td class="num">727</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_buffers_indexed.txt">OES_draw_buffers_indexed</a></td></tr>
+<tr><td class="num">728</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_texture.txt">OES_draw_texture</a></td></tr>
+<tr><td class="num">729</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_element_index_uint.txt">OES_element_index_uint</a></td></tr>
+<tr><td class="num">730</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_extended_matrix_palette.txt">OES_extended_matrix_palette</a></td></tr>
+<tr><td class="num">731</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fbo_render_mipmap.txt">OES_fbo_render_mipmap</a></td></tr>
+<tr><td class="num">732</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fragment_precision_high.txt">OES_fragment_precision_high</a></td></tr>
+<tr><td class="num">733</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_framebuffer_object.txt">OES_framebuffer_object</a></td></tr>
+<tr><td class="num">734</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt">OES_geometry_point_size</a></td></tr>
+<tr><td class="num">735</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt">OES_geometry_shader</a></td></tr>
+<tr><td class="num">736</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_get_program_binary.txt">OES_get_program_binary</a></td></tr>
+<tr><td class="num">737</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_gpu_shader5.txt">OES_gpu_shader5</a></td></tr>
+<tr><td class="num">738</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_mapbuffer.txt">OES_mapbuffer</a></td></tr>
+<tr><td class="num">739</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_get.txt">OES_matrix_get</a></td></tr>
+<tr><td class="num">740</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_palette.txt">OES_matrix_palette</a></td></tr>
+<tr><td class="num">741</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_packed_depth_stencil.txt">OES_packed_depth_stencil</a></td></tr>
+<tr><td class="num">742</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_size_array.txt">OES_point_size_array</a></td></tr>
+<tr><td class="num">743</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_sprite.txt">OES_point_sprite</a></td></tr>
+<tr><td class="num">744</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_read_format.txt">OES_read_format</a></td></tr>
+<tr><td class="num">745</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_required_internalformat.txt">OES_required_internalformat</a></td></tr>
+<tr><td class="num">746</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_rgb8_rgba8.txt">OES_rgb8_rgba8</a></td></tr>
+<tr><td class="num">747</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_shading.txt">OES_sample_shading</a></td></tr>
+<tr><td class="num">748</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_variables.txt">OES_sample_variables</a></td></tr>
+<tr><td class="num">749</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_image_atomic.txt">OES_shader_image_atomic</a></td></tr>
+<tr><td class="num">750</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_io_blocks.txt">OES_shader_io_blocks</a></td></tr>
+<tr><td class="num">751</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_multisample_interpolation.txt">OES_shader_multisample_interpolation</a></td></tr>
+<tr><td class="num">752</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_single_precision.txt">OES_single_precision</a></td></tr>
+<tr><td class="num">753</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_standard_derivatives.txt">OES_standard_derivatives</a></td></tr>
+<tr><td class="num">754</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil1.txt">OES_stencil1</a></td></tr>
+<tr><td class="num">755</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil4.txt">OES_stencil4</a></td></tr>
+<tr><td class="num">756</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil8.txt">OES_stencil8</a></td></tr>
+<tr><td class="num">757</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_surfaceless_context.txt">OES_surfaceless_context</a></td></tr>
+<tr><td class="num">758</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt">OES_tessellation_point_size</a></td></tr>
+<tr><td class="num">759</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt">OES_tessellation_shader</a></td></tr>
+<tr><td class="num">760</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_3D.txt">OES_texture_3D</a></td></tr>
+<tr><td class="num">761</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_border_clamp.txt">OES_texture_border_clamp</a></td></tr>
+<tr><td class="num">762</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_buffer.txt">OES_texture_buffer</a></td></tr>
+<tr><td class="num">763</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">OES_texture_compression_astc</a></td></tr>
+<tr><td class="num">764</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map.txt">OES_texture_cube_map</a></td></tr>
+<tr><td class="num">765</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map_array.txt">OES_texture_cube_map_array</a></td></tr>
+<tr><td class="num">766</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_env_crossbar.txt">OES_texture_env_crossbar</a></td></tr>
+<tr><td class="num">767</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_mirrored_repeat.txt">OES_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">768</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_npot.txt">OES_texture_npot</a></td></tr>
+<tr><td class="num">769</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_stencil8.txt">OES_texture_stencil8</a></td></tr>
+<tr><td class="num">770</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_storage_multisample_2d_array.txt">OES_texture_storage_multisample_2d_array</a></td></tr>
+<tr><td class="num">771</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_view.txt">OES_texture_view</a></td></tr>
+<tr><td class="num">772</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_array_object.txt">OES_vertex_array_object</a></td></tr>
+<tr><td class="num">773</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_half_float.txt">OES_vertex_half_float</a></td></tr>
+<tr><td class="num">774</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_type_10_10_10_2.txt">OES_vertex_type_10_10_10_2</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">775</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_interlace.txt">OML_interlace</a></td></tr>
+<tr><td class="num">776</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_resample.txt">OML_resample</a></td></tr>
+<tr><td class="num">777</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_subsample.txt">OML_subsample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">778</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt">OVR_multiview</a></td></tr>
+<tr><td class="num">779</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt">OVR_multiview2</a></td></tr>
+<tr><td class="num">780</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt">OVR_multiview_multisampled_render_to_texture</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">781</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_misc_hints.txt">PGI_misc_hints</a></td></tr>
+<tr><td class="num">782</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_vertex_hints.txt">PGI_vertex_hints</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">783</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_YUV_texture_gather.txt">QCOM_YUV_texture_gather</a></td></tr>
+<tr><td class="num">784</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_alpha_test.txt">QCOM_alpha_test</a></td></tr>
+<tr><td class="num">785</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_binning_control.txt">QCOM_binning_control</a></td></tr>
+<tr><td class="num">786</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_driver_control.txt">QCOM_driver_control</a></td></tr>
+<tr><td class="num">787</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get.txt">QCOM_extended_get</a></td></tr>
+<tr><td class="num">788</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get2.txt">QCOM_extended_get2</a></td></tr>
+<tr><td class="num">789</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_frame_extrapolation.txt">QCOM_frame_extrapolation</a></td></tr>
+<tr><td class="num">790</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_framebuffer_foveated.txt">QCOM_framebuffer_foveated</a></td></tr>
+<tr><td class="num">791</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_motion_estimation.txt">QCOM_motion_estimation</a></td></tr>
+<tr><td class="num">792</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_performance_monitor_global_mode.txt">QCOM_perfmon_global_mode</a></td></tr>
+<tr><td class="num">793</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_render_shared_exponent.txt">QCOM_render_shared_exponent</a></td></tr>
+<tr><td class="num">794</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_noncoherent.txt">QCOM_shader_framebuffer_fetch_noncoherent</a></td></tr>
+<tr><td class="num">795</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_rate.txt">QCOM_shader_framebuffer_fetch_rate</a></td></tr>
+<tr><td class="num">796</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shading_rate.txt">QCOM_shading_rate</a></td></tr>
+<tr><td class="num">797</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated.txt">QCOM_texture_foveated</a></td></tr>
+<tr><td class="num">798</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated2.txt">QCOM_texture_foveated2</a></td></tr>
+<tr><td class="num">799</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated_subsampled_layout.txt">QCOM_texture_foveated_subsampled_layout</a></td></tr>
+<tr><td class="num">800</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_tiled_rendering.txt">QCOM_tiled_rendering</a></td></tr>
+<tr><td class="num">801</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_writeonly_rendering.txt">QCOM_writeonly_rendering</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">802</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_0_compatibility.txt">REGAL_ES1_0_compatibility</a></td></tr>
+<tr><td class="num">803</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_1_compatibility.txt">REGAL_ES1_1_compatibility</a></td></tr>
+<tr><td class="num">804</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/enable.txt">REGAL_enable</a></td></tr>
+<tr><td class="num">805</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/error_string.txt">REGAL_error_string</a></td></tr>
+<tr><td class="num">806</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/extension_query.txt">REGAL_extension_query</a></td></tr>
+<tr><td class="num">807</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/log.txt">REGAL_log</a></td></tr>
+<tr><td class="num">808</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/proc_address.txt">REGAL_proc_address</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">809</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REND/REND_screen_coordinates.txt">REND_screen_coordinates</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">810</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/S3/S3_s3tc.txt">S3_s3tc</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">811</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_clip_band_hint.txt">SGIS_clip_band_hint</a></td></tr>
+<tr><td class="num">812</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt">SGIS_color_range</a></td></tr>
+<tr><td class="num">813</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_detail_texture.txt">SGIS_detail_texture</a></td></tr>
+<tr><td class="num">814</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_fog_function.txt">SGIS_fog_function</a></td></tr>
+<tr><td class="num">815</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_generate_mipmap.txt">SGIS_generate_mipmap</a></td></tr>
+<tr><td class="num">816</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_line_texgen.txt">SGIS_line_texgen</a></td></tr>
+<tr><td class="num">817</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multisample.txt">SGIS_multisample</a></td></tr>
+<tr><td class="num">818</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multitexture.txt">SGIS_multitexture</a></td></tr>
+<tr><td class="num">819</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_pixel_texture.txt">SGIS_pixel_texture</a></td></tr>
+<tr><td class="num">820</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_point_line_texgen.txt">SGIS_point_line_texgen</a></td></tr>
+<tr><td class="num">821</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_shared_multisample.txt">SGIS_shared_multisample</a></td></tr>
+<tr><td class="num">822</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_sharpen_texture.txt">SGIS_sharpen_texture</a></td></tr>
+<tr><td class="num">823</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture4D.txt">SGIS_texture4D</a></td></tr>
+<tr><td class="num">824</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_border_clamp.txt">SGIS_texture_border_clamp</a></td></tr>
+<tr><td class="num">825</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_edge_clamp.txt">SGIS_texture_edge_clamp</a></td></tr>
+<tr><td class="num">826</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_filter4.txt">SGIS_texture_filter4</a></td></tr>
+<tr><td class="num">827</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_lod.txt">SGIS_texture_lod</a></td></tr>
+<tr><td class="num">828</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_select.txt">SGIS_texture_select</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">829</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async.txt">SGIX_async</a></td></tr>
+<tr><td class="num">830</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_histogram.txt">SGIX_async_histogram</a></td></tr>
+<tr><td class="num">831</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_pixel.txt">SGIX_async_pixel</a></td></tr>
+<tr><td class="num">832</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_g_instruments.txt">SGIX_bali_g_instruments</a></td></tr>
+<tr><td class="num">833</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_r_instruments.txt">SGIX_bali_r_instruments</a></td></tr>
+<tr><td class="num">834</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_timer_instruments.txt">SGIX_bali_timer_instruments</a></td></tr>
+<tr><td class="num">835</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_alpha_minmax.txt">SGIX_blend_alpha_minmax</a></td></tr>
+<tr><td class="num">836</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cadd.txt">SGIX_blend_cadd</a></td></tr>
+<tr><td class="num">837</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cmultiply.txt">SGIX_blend_cmultiply</a></td></tr>
+<tr><td class="num">838</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_calligraphic_fragment.txt">SGIX_calligraphic_fragment</a></td></tr>
+<tr><td class="num">839</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_clipmap.txt">SGIX_clipmap</a></td></tr>
+<tr><td class="num">840</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_matrix_accuracy.txt">SGIX_color_matrix_accuracy</a></td></tr>
+<tr><td class="num">841</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_table_index_mode.txt">SGIX_color_table_index_mode</a></td></tr>
+<tr><td class="num">842</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_complex_polar.txt">SGIX_complex_polar</a></td></tr>
+<tr><td class="num">843</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_convolution_accuracy.txt">SGIX_convolution_accuracy</a></td></tr>
+<tr><td class="num">844</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cube_map.txt">SGIX_cube_map</a></td></tr>
+<tr><td class="num">845</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cylinder_texgen.txt">SGIX_cylinder_texgen</a></td></tr>
+<tr><td class="num">846</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_datapipe.txt">SGIX_datapipe</a></td></tr>
+<tr><td class="num">847</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_decimation.txt">SGIX_decimation</a></td></tr>
+<tr><td class="num">848</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_pass_instrument.txt">SGIX_depth_pass_instrument</a></td></tr>
+<tr><td class="num">849</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_texture.txt">SGIX_depth_texture</a></td></tr>
+<tr><td class="num">850</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_dvc.txt">SGIX_dvc</a></td></tr>
+<tr><td class="num">851</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_flush_raster.txt">SGIX_flush_raster</a></td></tr>
+<tr><td class="num">852</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_blend.txt">SGIX_fog_blend</a></td></tr>
+<tr><td class="num">853</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_factor_to_alpha.txt">SGIX_fog_factor_to_alpha</a></td></tr>
+<tr><td class="num">854</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_layers.txt">SGIX_fog_layers</a></td></tr>
+<tr><td class="num">855</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_offset.txt">SGIX_fog_offset</a></td></tr>
+<tr><td class="num">856</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_patchy.txt">SGIX_fog_patchy</a></td></tr>
+<tr><td class="num">857</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_scale.txt">SGIX_fog_scale</a></td></tr>
+<tr><td class="num">858</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_texture.txt">SGIX_fog_texture</a></td></tr>
+<tr><td class="num">859</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_lighting_space.txt">SGIX_fragment_lighting_space</a></td></tr>
+<tr><td class="num">860</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_specular_lighting.txt">SGIX_fragment_specular_lighting</a></td></tr>
+<tr><td class="num">861</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragments_instrument.txt">SGIX_fragments_instrument</a></td></tr>
+<tr><td class="num">862</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_framezoom.txt">SGIX_framezoom</a></td></tr>
+<tr><td class="num">863</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_icc_texture.txt">SGIX_icc_texture</a></td></tr>
+<tr><td class="num">864</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_igloo_interface.txt">SGIX_igloo_interface</a></td></tr>
+<tr><td class="num">865</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_image_compression.txt">SGIX_image_compression</a></td></tr>
+<tr><td class="num">866</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_impact_pixel_texture.txt">SGIX_impact_pixel_texture</a></td></tr>
+<tr><td class="num">867</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_instrument_error.txt">SGIX_instrument_error</a></td></tr>
+<tr><td class="num">868</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_interlace.txt">SGIX_interlace</a></td></tr>
+<tr><td class="num">869</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ir_instrument1.txt">SGIX_ir_instrument1</a></td></tr>
+<tr><td class="num">870</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_line_quality_hint.txt">SGIX_line_quality_hint</a></td></tr>
+<tr><td class="num">871</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_list_priority.txt">SGIX_list_priority</a></td></tr>
+<tr><td class="num">872</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg1.txt">SGIX_mpeg1</a></td></tr>
+<tr><td class="num">873</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg2.txt">SGIX_mpeg2</a></td></tr>
+<tr><td class="num">874</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nonlinear_lighting_pervertex.txt">SGIX_nonlinear_lighting_pervertex</a></td></tr>
+<tr><td class="num">875</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nurbs_eval.txt">SGIX_nurbs_eval</a></td></tr>
+<tr><td class="num">876</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_occlusion_instrument.txt">SGIX_occlusion_instrument</a></td></tr>
+<tr><td class="num">877</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_packed_6bytes.txt">SGIX_packed_6bytes</a></td></tr>
+<tr><td class="num">878</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture.txt">SGIX_pixel_texture</a></td></tr>
+<tr><td class="num">879</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_bits.txt">SGIX_pixel_texture_bits</a></td></tr>
+<tr><td class="num">880</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_lod.txt">SGIX_pixel_texture_lod</a></td></tr>
+<tr><td class="num">881</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_tiles.txt">SGIX_pixel_tiles</a></td></tr>
+<tr><td class="num">882</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_polynomial_ffd.txt">SGIX_polynomial_ffd</a></td></tr>
+<tr><td class="num">883</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_quad_mesh.txt">SGIX_quad_mesh</a></td></tr>
+<tr><td class="num">884</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_reference_plane.txt">SGIX_reference_plane</a></td></tr>
+<tr><td class="num">885</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_resample.txt">SGIX_resample</a></td></tr>
+<tr><td class="num">886</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_scalebias_hint.txt">SGIX_scalebias_hint</a></td></tr>
+<tr><td class="num">887</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/shadow.txt">SGIX_shadow</a></td></tr>
+<tr><td class="num">888</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_shadow_ambient.txt">SGIX_shadow_ambient</a></td></tr>
+<tr><td class="num">889</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_slim.txt">SGIX_slim</a></td></tr>
+<tr><td class="num">890</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_spotlight_cutoff.txt">SGIX_spotlight_cutoff</a></td></tr>
+<tr><td class="num">891</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_sprite.txt">SGIX_sprite</a></td></tr>
+<tr><td class="num">892</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subdiv_patch.txt">SGIX_subdiv_patch</a></td></tr>
+<tr><td class="num">893</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subsample.txt">SGIX_subsample</a></td></tr>
+<tr><td class="num">894</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_tag_sample_buffer.txt">SGIX_tag_sample_buffer</a></td></tr>
+<tr><td class="num">895</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_add_env.txt">SGIX_texture_add_env</a></td></tr>
+<tr><td class="num">896</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_coordinate_clamp.txt">SGIX_texture_coordinate_clamp</a></td></tr>
+<tr><td class="num">897</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_lod_bias.txt">SGIX_texture_lod_bias</a></td></tr>
+<tr><td class="num">898</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_mipmap_anisotropic.txt">SGIX_texture_mipmap_anisotropic</a></td></tr>
+<tr><td class="num">899</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_multi_buffer.txt">SGIX_texture_multi_buffer</a></td></tr>
+<tr><td class="num">900</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_phase.txt">SGIX_texture_phase</a></td></tr>
+<tr><td class="num">901</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_range.txt">SGIX_texture_range</a></td></tr>
+<tr><td class="num">902</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_scale_bias.txt">SGIX_texture_scale_bias</a></td></tr>
+<tr><td class="num">903</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_supersample.txt">SGIX_texture_supersample</a></td></tr>
+<tr><td class="num">904</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vector_ops.txt">SGIX_vector_ops</a></td></tr>
+<tr><td class="num">905</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_array_object.txt">SGIX_vertex_array_object</a></td></tr>
+<tr><td class="num">906</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt">SGIX_vertex_preclip</a></td></tr>
+<tr><td class="num">907</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt">SGIX_vertex_preclip_hint</a></td></tr>
+<tr><td class="num">908</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb.txt">SGIX_ycrcb</a></td></tr>
+<tr><td class="num">909</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb_subsample.txt">SGIX_ycrcb_subsample</a></td></tr>
+<tr><td class="num">910</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcba.txt">SGIX_ycrcba</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">911</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_matrix.txt">SGI_color_matrix</a></td></tr>
+<tr><td class="num">912</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_table.txt">SGI_color_table</a></td></tr>
+<tr><td class="num">913</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex.txt">SGI_complex</a></td></tr>
+<tr><td class="num">914</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex_type.txt">SGI_complex_type</a></td></tr>
+<tr><td class="num">915</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_fft.txt">SGI_fft</a></td></tr>
+<tr><td class="num">916</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_texture_color_table.txt">SGI_texture_color_table</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">917</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUNX/SUNX_constant_data.txt">SUNX_constant_data</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">918</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_convolution_border_modes.txt">SUN_convolution_border_modes</a></td></tr>
+<tr><td class="num">919</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_global_alpha.txt">SUN_global_alpha</a></td></tr>
+<tr><td class="num">920</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_mesh_array.txt">SUN_mesh_array</a></td></tr>
+<tr><td class="num">921</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/gl_sun_read_video_pixels.txt">SUN_read_video_pixels</a></td></tr>
+<tr><td class="num">922</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_slice_accum.txt">SUN_slice_accum</a></td></tr>
+<tr><td class="num">923</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_triangle_list.txt">SUN_triangle_list</a></td></tr>
+<tr><td class="num">924</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_vertex.txt">SUN_vertex</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">925</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/VIV/VIV_shader_binary.txt">VIV_shader_binary</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">926</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_phong_shading.txt">WIN_phong_shading</a></td></tr>
+<tr><td class="num">927</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_scene_markerXXX.txt">WIN_scene_markerXXX</a></td></tr>
+<tr><td class="num">928</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_specular_fog.txt">WIN_specular_fog</a></td></tr>
+<tr><td class="num">929</td><td>&nbsp;</td><td><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_16zy.asp">WIN_swap_hint</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/glew.png b/glew/doc/glew.png
new file mode 100644
index 0000000..d46550f
--- /dev/null
+++ b/glew/doc/glew.png
Binary files differ
diff --git a/glew/doc/glew.txt b/glew/doc/glew.txt
new file mode 100644
index 0000000..67b4aff
--- /dev/null
+++ b/glew/doc/glew.txt
@@ -0,0 +1,29 @@
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2016, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/glew/doc/glxew.html b/glew/doc/glxew.html
new file mode 100644
index 0000000..6054051
--- /dev/null
+++ b/glew/doc/glxew.html
@@ -0,0 +1,188 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported GLX Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">3DFX_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">AMD_gpu_association</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_context_flush_control</a></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_no_error</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_profile</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_robustness</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_fbconfig_float</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.txt">ARB_get_proc_address</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_multisample</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_vertex_buffer_object</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td>ATI_pixel_format_float</td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td>ATI_render_texture</td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_buffer_age</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_context_priority</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_create_context_es2_profile</a></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_create_context_es_profile</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_fbconfig_packed_float</a></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_get_drawable_type</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_import_context</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_libglvnd</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_no_config_context</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt">EXT_scene_marker</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_stereo_tree</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_swap_control</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_swap_control_tear</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_texture_from_pixmap</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_visual_info</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_visual_rating</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">INTEL_swap_event</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_agp_offset</a></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_copy_sub_buffer</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_pixmap_colormap</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_query_renderer</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_release_buffers</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_set_3dfx_mode</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_swap_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_copy_buffer</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_copy_image</a></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_delay_before_swap</a></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_float_buffer</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_multigpu_context</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_present_video</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_robustness_video_memory_purge</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_swap_group</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_video_capture</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_video_out</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">OML_swap_method</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">OML_sync_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_blended_overlay</a></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt">SGIS_color_range</a></td></tr>
+<tr><td class="num">58</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_multisample</a></td></tr>
+<tr><td class="num">59</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_shared_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">60</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_fbconfig</a></td></tr>
+<tr><td class="num">61</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/hyperpipe_group.txt">SGIX_hyperpipe</a></td></tr>
+<tr><td class="num">62</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_pbuffer</a></td></tr>
+<tr><td class="num">63</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_swap_barrier</a></td></tr>
+<tr><td class="num">64</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_swap_group</a></td></tr>
+<tr><td class="num">65</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_video_resize</a></td></tr>
+<tr><td class="num">66</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_visual_select_group</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">67</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_cushion</a></td></tr>
+<tr><td class="num">68</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_make_current_read</a></td></tr>
+<tr><td class="num">69</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_swap_control</a></td></tr>
+<tr><td class="num">70</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_video_sync</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">71</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SUN_get_transparent_index</a></td></tr>
+<tr><td class="num">72</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/glx_sun_video_resize.txt">SUN_video_resize</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/gpl.txt b/glew/doc/gpl.txt
new file mode 100644
index 0000000..b7b5f53
--- /dev/null
+++ b/glew/doc/gpl.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/glew/doc/index.html b/glew/doc/index.html
new file mode 100644
index 0000000..78ce7a1
--- /dev/null
+++ b/glew/doc/index.html
@@ -0,0 +1,213 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center">Download</td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<p>
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform
+open-source C/C++ extension loading library. GLEW provides efficient
+run-time mechanisms for determining which OpenGL extensions are
+supported on the target platform. OpenGL core and extension
+functionality is exposed in a single header file. GLEW has been
+tested on a variety of operating systems, including Windows, Linux,
+Mac OS X, FreeBSD, Irix, and Solaris.
+</p>
+
+<h2>Downloads</h2>
+<p>
+<a href="http://sourceforge.net/projects/glew/">GLEW</a> is distributed
+as source and precompiled binaries.<br/>
+The latest release is
+<a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a>[03-15-20]:
+</p>
+<p>
+</p>
+<p>
+<table border="1" cellpadding="5" cellspacing="0" bgcolor="#f0f0f0" align="center">
+<tr>
+<td>
+<table border="0" cellpadding="3" cellspacing="0">
+<tr>
+<td></td>
+<td align="right"><b>Source</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip">ZIP</a>&nbsp;|&nbsp;
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz">TGZ</a></td>
+<td></td>
+</tr>
+<tr>
+<td></td>
+<td align="right"><b>Binaries</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip">Windows 32-bit and 64-bit</a>
+</td>
+<td></td>
+</tr>
+</table>
+</tr>
+</table>
+
+<p></p>
+<p>
+An up-to-date copy is also available using <a href="http://git-scm.com/">git</a>:
+</p>
+<ul>
+<li><a href="https://github.com/nigels-com/glew">github</a><br/>
+<tt>git clone https://github.com/nigels-com/glew.git glew</tt><br/>&nbsp;</li>
+</ul>
+
+<h2>Supported Extensions</h2>
+<p>
+The latest release contains support for OpenGL 4.6, compatibility and forward-compatible contexts and the following extensions:
+</p>
+<ul>
+<li><a href="glew.html">OpenGL extensions</a>
+<li><a href="wglew.html">WGL extensions</a>
+<li><a href="glxew.html">GLX extensions</a>
+</ul>
+
+<h2>News</h2>
+<ul>
+<li>[03-15-20] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">GLEW 2.2.0</a> new extensions and minor bug fixes</li>
+<li>[07-31-17] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.1.0">GLEW 2.1.0</a> adds support for OpenGL 4.6, new extensions and minor bug fixes</li>
+<li>[07-24-16] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.0.0">GLEW 2.0.0</a> adds support for forward-compatible contexts, adds new extensions, OSMesa and EGL support, MX discontinued and minor bug fixes</li>
+<li>[08-10-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.13.0/">GLEW 1.13.0</a> adds support for new extensions, fixes minor bugs</li>
+<li>[26-01-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.12.0/">GLEW 1.12.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-11-14] <a href="https://sourceforge.net/projects/glew/files/glew/1.11.0/">GLEW 1.11.0</a> adds support for OpenGL 4.5, new extensions</li>
+<li>[07-22-13] <a href="https://sourceforge.net/projects/glew/files/glew/1.10.0/">GLEW 1.10.0</a> adds support for OpenGL 4.4, new extensions</li>
+<li>[08-06-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.9.0/">GLEW 1.9.0</a> adds support for OpenGL 4.3, new extensions</li>
+<li>[07-17-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.8.0/">GLEW 1.8.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-26-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.7.0/">GLEW 1.7.0</a> adds support for OpenGL 4.2, new extensions, fixes bugs</li>
+<li>[04-27-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.6.0/">GLEW 1.6.0</a> fixes minor bugs and adds eight new extensions</li>
+<li>[01-31-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.8/">GLEW 1.5.8</a> fixes minor bugs and adds two new extensions</li>
+<li>[11-03-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.7/">GLEW 1.5.7</a> fixes minor bugs and adds one new extension</li>
+<li>[09-07-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.6/">GLEW 1.5.6</a> adds support for OpenGL 4.1, fixes bugs</li>
+<li>[07-13-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.5/">GLEW 1.5.5</a> fixes minor bugs and adds new extensions</li>
+<li>[04-21-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.4/">GLEW 1.5.4</a> adds support for OpenGL 3.3, OpenGL 4.0 and new extensions, fixes bugs</li>
+<li>[02-28-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.3/">GLEW 1.5.3</a> fixes minor bugs and adds three new extensions</li>
+<li>[12-31-09] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.2/">GLEW 1.5.2</a> adds support for OpenGL 3.1, OpenGL 3.2 and new extensions</li>
+<li>[11-03-08] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=637800">GLEW 1.5.1</a> adds support for OpenGL 3.0 and 31 new extensions</li>
+<li>[12-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=564464">GLEW 1.5.0</a> is released under less restrictive licenses</li>
+<li>[04-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=504079">GLEW 1.4.0</a> is released</li>
+<li>[03-08-07] GLEW is included in the <a href="http://developer.nvidia.com/object/sdk_home.html">NVIDIA OpenGL SDK</a></li>
+<li>[03-04-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=491113">GLEW 1.3.6</a> is released</li>
+<li>[02-28-07] <a href="http://glew.svn.sourceforge.net/svnroot/glew/trunk/glew/">Repository</a> is migrated to SVN</li>
+<li>[02-25-07] GLEW is included in the <a href="http://www.opengl.org/sdk/">OpenGL SDK</a></li>
+<li>[11-21-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=465334">GLEW 1.3.5</a> adds OpenGL 2.1 and NVIDIA G80 extensions</li>
+<li>[03-04-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=398455">GLEW 1.3.4</a> adds support for five new extensions</li>
+<li>[05-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=327647">GLEW 1.3.3</a> is released</li>
+<li>[03-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=313345">GLEW 1.3.2</a> adds support for GL_APPLE_pixel_buffer</li>
+<li>[02-11-05] <a href="http://gljava.sourceforge.net/">gljava</a> and <a href="http://sdljava.sourceforge.net/">sdljava</a> provide a Java binding to OpenGL via GLEW</li>
+<li>[02-02-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=302049">GLEW 1.3.1</a> adds support for <a href="http://www.opengl.org/documentation/extensions/EXT_framebuffer_object.txt">GL_EXT_framebuffer_object</a></li>
+<li>[01-04-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=294527">GLEW 1.3.0</a> adds core OpenGL 2.0 support plus many enhancements</li>
+<li>[12-22-04] <a href="http://glewpy.sf.net/">GLEWpy</a> Python wrapper announced</li>
+<li>[12-12-04] <a href="https://sourceforge.net/mail/?group_id=67586">Mailing lists</a> created on sourceforge</li>
+<li>[12-06-04] <a href="http://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=287948">GLEW 1.2.5</a> adds new extensions and support for FreeBSD</li>
+</ul>
+
+<h2>Links</h2>
+<ul>
+<li><a href="http://www.opengl.org/sdk/">OpenGL Software Development Kit</a></li>
+<li><a href="http://www.opengl.org/registry/">OpenGL Extension Registry</a></li>
+<li><a href="https://www.opengl.org/wiki/OpenGL_Extension">OpenGL Wiki: Extensions</a></li>
+<li><a href="http://developer.nvidia.com/nvidia-opengl-specs">NVIDIA OpenGL Extension Specifications</a></li>
+<li><a href="http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGLExtensionsGuide/Reference/reference.html">Apple OpenGL Extensions Guide</a></li>
+</ul>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/install.html b/glew/doc/install.html
new file mode 100644
index 0000000..0fe901a
--- /dev/null
+++ b/glew/doc/install.html
@@ -0,0 +1,226 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center">Installation</td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Installation</h2>
+
+<p>
+To use the shared library version of GLEW, you need to copy the
+headers and libraries into their destination directories. On Windows
+this typically boils down to copying:
+</p>
+
+<table border="0" cellpadding="0" cellspacing="0" align="center"> <!-- bgcolor="#f0f0f0" -->
+<tr><td align="left"><tt>bin/glew32.dll</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>%SystemRoot%/system32</tt></td></tr>
+<tr><td align="left"><tt>lib/glew32.lib</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Lib</tt></td></tr>
+<tr><td align="left"><tt>include/GL/glew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+<tr><td align="left"><tt>include/GL/wglew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+</table>
+<p>
+</p>
+
+<p>
+where <tt>{VC Root}</tt> is the Visual C++ root directory, typically
+<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
+Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
+Studio .NET 2003/Vc7/PlatformSDK</tt> for Visual Studio .NET.
+</p>
+
+<p>
+On Unix, typing <tt>make install</tt> will attempt to install GLEW
+into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>. You can
+customize the installation target via the <tt>GLEW_DEST</tt>
+environment variable if you do not have write access to these
+directories.
+</p>
+
+<h2>Building Your Project with GLEW</h2>
+<p>
+There are two ways to build your project with GLEW.
+</p>
+<h3>Including the source files / project file</h3>
+<p>
+The simpler but less flexible way is to include <tt>glew.h</tt> and
+<tt>glew.c</tt> into your project. On Windows, you also need to
+define the <tt>GLEW_STATIC</tt> preprocessor token when building a
+static library or executable, and the <tt>GLEW_BUILD</tt> preprocessor
+token when building a dll. You also need to replace
+<tt>&lt;GL/gl.h&gt;</tt> and <tt>&lt;GL/glu.h&gt;</tt> with
+<tt>&lt;glew.h&gt;</tt> in your code and set the appropriate include
+flag (<tt>-I</tt>) to tell the compiler where to look for it. For
+example:
+</p>
+<p class="pre">
+#include &lt;glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+<p>
+Depending on where you put <tt>glew.h</tt> you may also need to change
+the include directives in <tt>glew.c</tt>. Note that if you are using
+GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
+In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you do not
+need to include it separately.
+</p>
+<p>
+On Windows, you also have the option of adding the supplied project
+file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
+it together with your other projects. In this case you also need to
+change the <tt>GLEW_BUILD</tt> preprocessor constant to
+<tt>GLEW_STATIC</tt> when building a static library or executable,
+otherwise you get build errors.
+</p>
+<p>
+<b>Note that GLEW does not use the C
+runtime library, so it does not matter which version (single-threaded,
+multi-threaded or multi-threaded DLL) it is linked with (without
+debugging information). It is, however, always a good idea to compile all
+your projects including GLEW with the same C runtime settings.</b>
+</p>
+
+<h3>Using GLEW as a shared library</h3>
+
+<p>
+Alternatively, you can use the provided project files / makefile to
+build a separate shared library you can link your projects with later.
+In this case the best practice is to install <tt>glew.h</tt>,
+<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
+where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
+<tt>opengl32.dll</tt> / <tt>libGL.so</tt> are located. Note that you
+need administrative privileges to do this. If you do not have
+administrator access and your system administrator will not do it for
+you, you can install GLEW into your own lib and include subdirectories
+and tell the compiler where to find it. Then you can just replace
+<tt>&lt;GL/gl.h&gt;</tt> with <tt>&lt;GL/glew.h&gt;</tt> in your
+program:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+
+<p>
+or:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+&lt;gl and glu functionality is available here&gt;<br>
+</p>
+
+<p>
+Remember to link your project with <tt>glew32.lib</tt>,
+<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
+<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
+Unix (<tt>-lGLEW -lGLU -lGL</tt>).
+</p>
+
+<p>
+It is important to keep in mind that <tt>glew.h</tt> includes neither
+<tt>windows.h</tt> nor <tt>gl.h</tt>. Also, GLEW will warn you by
+issuing a preprocessor error in case you have included <tt>gl.h</tt>,
+<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
+</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/khronos.txt b/glew/doc/khronos.txt
new file mode 100644
index 0000000..ffc271c
--- /dev/null
+++ b/glew/doc/khronos.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2007 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
diff --git a/glew/doc/log.html b/glew/doc/log.html
new file mode 100644
index 0000000..939469b
--- /dev/null
+++ b/glew/doc/log.html
@@ -0,0 +1,1419 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center">Change Log</td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Change Log</h2>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.2.0</b> [03-15-20]
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> GL_EXT_semaphore constants
+<li> Some const pointer fixups in OpenGL API
+<li> Correction for GLEW_VERSION_4_5
+<li> Windows build updates and fixes
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_framebuffer_multisample_advanced
+<li> GL_AMD_gpu_shader_half_float_fetch
+<li> GL_AMD_shader_image_load_store_lod
+<li> GL_ARM_texture_unnormalized_coordinates
+<li> GL_DMP_program_binary
+<li> GL_DMP_shader_binary
+<li> GL_EXT_EGL_image_external_wrap_modes
+<li> GL_EXT_EGL_image_storage
+<li> GL_EXT_EGL_sync
+<li> GL_EXT_clip_control
+<li> GL_EXT_depth_clamp
+<li> GL_EXT_disjoint_timer_query
+<li> GL_EXT_draw_transform_feedback
+<li> GL_EXT_multiview_tessellation_geometry_shader
+<li> GL_EXT_multiview_texture_multisample
+<li> GL_EXT_multiview_timer_query
+<li> GL_EXT_occlusion_query_boolean
+<li> GL_EXT_primitive_bounding_box
+<li> GL_EXT_protected_textures
+<li> GL_EXT_robustness
+<li> GL_EXT_shader_framebuffer_fetch_non_coherent
+<li> GL_EXT_static_vertex_array
+<li> GL_EXT_tessellation_point_size
+<li> GL_EXT_tessellation_shader
+<li> GL_EXT_texture_border_clamp
+<li> GL_EXT_texture_buffer
+<li> GL_EXT_texture_compression_s3tc_srgb
+<li> GL_EXT_texture_format_sRGB_override
+<li> GL_EXT_texture_mirror_clamp_to_edge
+<li> GL_EXT_texture_query_lod
+<li> GL_EXT_texture_shadow_lod
+<li> GL_FJ_shader_binary_GCCSO
+<li> GL_IMG_bindless_texture
+<li> GL_IMG_framebuffer_downsample
+<li> GL_IMG_multisampled_render_to_texture
+<li> GL_IMG_program_binary
+<li> GL_IMG_read_format
+<li> GL_IMG_shader_binary
+<li> GL_IMG_texture_compression_pvrtc
+<li> GL_IMG_texture_compression_pvrtc2
+<li> GL_IMG_texture_env_enhanced_fixed_function
+<li> GL_IMG_texture_filter_cubic
+<li> GL_INTEL_blackhole_render
+<li> GL_INTEL_shader_integer_functions2
+<li> GL_KHR_shader_subgroup
+<li> GL_MESA_framebuffer_flip_y
+<li> GL_MESA_program_binary_formats
+<li> GL_MESA_tile_raster_order
+<li> GL_NVX_gpu_multicast2
+<li> GL_NVX_progress_fence
+<li> GL_NV_compute_shader_derivatives
+<li> GL_NV_conservative_raster_pre_snap
+<li> GL_NV_conservative_raster_underestimation
+<li> GL_NV_depth_nonlinear
+<li> GL_NV_fragment_shader_barycentric
+<li> GL_NV_memory_attachment
+<li> GL_NV_mesh_shader
+<li> GL_NV_query_resource_tag
+<li> GL_NV_read_buffer
+<li> GL_NV_read_buffer_front
+<li> GL_NV_representative_fragment_test
+<li> GL_NV_scissor_exclusive
+<li> GL_NV_shader_subgroup_partitioned
+<li> GL_NV_shader_texture_footprint
+<li> GL_NV_shading_rate_image
+<li> GL_NV_vdpau_interop2
+<li> GL_OES_EGL_image
+<li> GL_OES_EGL_image_external
+<li> GL_OES_EGL_image_external_essl3
+<li> GL_OES_blend_equation_separate
+<li> GL_OES_blend_func_separate
+<li> GL_OES_blend_subtract
+<li> GL_OES_compressed_ETC1_RGB8_texture
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_copy_image
+<li> GL_OES_depth24
+<li> GL_OES_depth32
+<li> GL_OES_depth_texture
+<li> GL_OES_depth_texture_cube_map
+<li> GL_OES_draw_buffers_indexed
+<li> GL_OES_draw_texture
+<li> GL_OES_element_index_uint
+<li> GL_OES_extended_matrix_palette
+<li> GL_OES_fbo_render_mipmap
+<li> GL_OES_fragment_precision_high
+<li> GL_OES_framebuffer_object
+<li> GL_OES_geometry_point_size
+<li> GL_OES_geometry_shader
+<li> GL_OES_get_program_binary
+<li> GL_OES_gpu_shader5
+<li> GL_OES_mapbuffer
+<li> GL_OES_matrix_get
+<li> GL_OES_matrix_palette
+<li> GL_OES_packed_depth_stencil
+<li> GL_OES_point_size_array
+<li> GL_OES_point_sprite
+<li> GL_OES_read_format
+<li> GL_OES_required_internalformat
+<li> GL_OES_rgb8_rgba8
+<li> GL_OES_sample_shading
+<li> GL_OES_sample_variables
+<li> GL_OES_shader_image_atomic
+<li> GL_OES_shader_io_blocks
+<li> GL_OES_shader_multisample_interpolation
+<li> GL_OES_single_precision
+<li> GL_OES_standard_derivatives
+<li> GL_OES_stencil1
+<li> GL_OES_stencil4
+<li> GL_OES_stencil8
+<li> GL_OES_surfaceless_context
+<li> GL_OES_tessellation_point_size
+<li> GL_OES_tessellation_shader
+<li> GL_OES_texture_3D
+<li> GL_OES_texture_border_clamp
+<li> GL_OES_texture_buffer
+<li> GL_OES_texture_compression_astc
+<li> GL_OES_texture_cube_map
+<li> GL_OES_texture_cube_map_array
+<li> GL_OES_texture_env_crossbar
+<li> GL_OES_texture_mirrored_repeat
+<li> GL_OES_texture_npot
+<li> GL_OES_texture_stencil8
+<li> GL_OES_texture_storage_multisample_2d_array
+<li> GL_OES_texture_view
+<li> GL_OES_vertex_array_object
+<li> GL_OES_vertex_half_float
+<li> GL_OES_vertex_type_10_10_10_2
+<li> GL_QCOM_YUV_texture_gather
+<li> GL_QCOM_shader_framebuffer_fetch_rate
+<li> GL_QCOM_texture_foveated
+<li> GL_QCOM_texture_foveated_subsampled_layout
+<li> GL_VIV_shader_binary
+<li> EGL_ANDROID_GLES_layers
+<li> EGL_ANDROID_get_frame_timestamps
+<li> EGL_ANDROID_get_native_client_buffer
+<li> EGL_ARM_image_format
+<li> EGL_EXT_bind_to_front
+<li> EGL_EXT_client_sync
+<li> EGL_EXT_compositor
+<li> EGL_EXT_gl_colorspace_display_p3
+<li> EGL_EXT_gl_colorspace_display_p3_linear
+<li> EGL_EXT_gl_colorspace_display_p3_passthrough
+<li> EGL_EXT_gl_colorspace_scrgb
+<li> EGL_EXT_image_gl_colorspace
+<li> EGL_EXT_image_implicit_sync_control
+<li> EGL_EXT_surface_CTA861_3_metadata
+<li> EGL_EXT_sync_reuse
+<li> EGL_KHR_display_reference
+<li> EGL_MESA_query_driver
+<li> EGL_NV_context_priority_realtime
+<li> EGL_NV_quadruple_buffer
+<li> EGL_NV_stream_dma
+<li> EGL_NV_stream_flush
+<li> EGL_NV_stream_origin
+<li> EGL_NV_triple_buffer
+<li> EGL_WL_bind_wayland_display
+<li> EGL_WL_create_wayland_buffer_from_image
+<li> GLX_EXT_context_priority
+<li> GLX_EXT_no_config_context
+<li> GLX_NV_multigpu_context
+<li> WGL_NV_multigpu_context
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.1.0</b> [07-31-17]
+<ul>
+<li> Enhancements:
+<ul>
+<li> OpenGL 4.6 support added
+<li> Improved Mac OSX build support
+<li> Improved cmake build support
+</ul>
+</ul>
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> Resolved crash when glXGetCurrentDisplay() is NULL
+<li> CMake: only install PDB files with MSVC
+<li> wglGetProcAddress crash with NOGDI defined
+<li> Mac: using -Os rather than -O2
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gpu_shader_half_float
+<li> GL_AMD_shader_ballot
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_KHR_context_flush_control
+<li> GL_INTEL_conservative_rasterization
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NV_gpu_multicast
+<li> EGL_ARM_implicit_external_sync
+<li> EGL_EXT_gl_colorspace_bt2020_linear
+<li> EGL_EXT_gl_colorspace_bt2020_pq
+<li> EGL_EXT_gl_colorspace_scrgb_linear
+<li> EGL_EXT_image_dma_buf_import_modifiers
+<li> EGL_EXT_pixel_format_float
+<li> EGL_EXT_surface_SMPTE2086_metadata
+<li> EGL_KHR_context_flush_control
+<li> EGL_KHR_no_config_context
+<li> EGL_KHR_stream_attrib
+<li> EGL_MESA_platform_surfaceless
+<li> EGL_NV_stream_cross_display
+<li> EGL_NV_stream_cross_object
+<li> EGL_NV_stream_cross_partition
+<li> EGL_NV_stream_cross_process
+<li> EGL_NV_stream_cross_system
+<li> EGL_NV_stream_fifo_next
+<li> EGL_NV_stream_fifo_synchronous
+<li> EGL_NV_stream_frame_limits
+<li> EGL_NV_stream_remote
+<li> EGL_NV_stream_reset
+<li> EGL_NV_stream_socket
+<li> EGL_NV_stream_socket_inet
+<li> EGL_NV_stream_socket_unix
+<li> WGL_EXT_colorspace
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.0.0</b> [07-24-16]
+<ul>
+<li> Enhancements:
+<ul>
+<li> Forward context support added
+<li> OSMesa support added
+<li> EGL support added
+<li> MX support discontinued
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_shader_explicit_vertex_parameter
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_NV_robustness_video_memory_purge
+<li> GL_EXT_window_rectangles
+<li> GL_INTEL_conservative_rasterization
+<li> GL_KHR_texture_compression_astc_sliced_3d
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NVX_linked_gpu_multicast
+<li> GL_NV_clip_space_w_scaling
+<li> GL_NV_command_list
+<li> GL_NV_conservative_raster_pre_snap_triangles
+<li> GL_NV_draw_vulkan_image
+<li> GL_NV_gpu_multicast
+<li> GL_NV_robustness_video_memory_purge
+<li> GL_NV_shader_atomic_float64
+<li> GL_NV_stereo_view_rendering
+<li> GL_NV_viewport_swizzle
+<li> GLX_EXT_libglvnd
+<li> GLX_NV_robustness_video_memory_purge
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.13.0</b> [08-10-15]
+<ul>
+<li> Enhancements:
+<ul>
+<li> glxewInit, wglewInit
+<li> glewinfo adds support for -version, -profile core|compatibility and -flag debug|forward parameters
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_2_compatibility
+<li> GL_ARB_fragment_shader_interlock
+<li> GL_ARB_gpu_shader_int64
+<li> GL_ARB_parallel_shader_compile
+<li> GL_ARB_post_depth_coverage
+<li> GL_ARB_sample_locations
+<li> GL_ARB_shader_atomic_counter_ops
+<li> GL_ARB_shader_ballot
+<li> GL_ARB_shader_clock
+<li> GL_ARB_shader_viewport_layer_array
+<li> GL_ARB_sparse_texture2
+<li> GL_ARB_sparse_texture_clamp
+<li> GL_ARB_texture_filter_minmax
+<li> GL_INTEL_framebuffer_CMAA
+<li> GL_KHR_no_error
+<li> GL_NV_conservative_raster_dilate
+<li> GL_OVR_multiview
+<li> GL_OVR_multiview2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.13.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.12.0</b> [01-26-15]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_polygon_offset_clamp
+<li> GL_EXT_post_depth_coverage
+<li> GL_EXT_raster_multisample
+<li> GL_EXT_sparse_texture2
+<li> GL_EXT_texture_filter_minmax
+<li> GL_NV_conservative_raster
+<li> GL_NV_fill_rectangle
+<li> GL_NV_fragment_coverage_to_color
+<li> GL_NV_fragment_shader_interlock
+<li> GL_NV_framebuffer_mixed_samples
+<li> GL_NV_geometry_shader_passthrough
+<li> GL_NV_internalformat_sample_query
+<li> GL_NV_sample_locations
+<li> GL_NV_sample_mask_override_coverage
+<li> GL_NV_shader_atomic_fp16_vector
+<li> GL_NV_uniform_buffer_unified_memory
+<li> GL_NV_viewport_array2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.12.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.11.0</b> [08-11-14]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.5
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gcn_shader
+<li> GL_AMD_gpu_shader_int64
+<li> GL_AMD_occlusion_query_event
+<li> GL_AMD_shader_atomic_counter_ops
+<li> GL_AMD_shader_stencil_value_export
+<li> GL_AMD_transform_feedback4
+<li> GL_ARB_ES3_1_compatibility
+<li> GL_ARB_clip_control
+<li> GL_ARB_conditional_render_inverted
+<li> GL_ARB_cull_distance
+<li> GL_ARB_derivative_control
+<li> GL_ARB_direct_state_access
+<li> GL_ARB_get_texture_sub_image
+<li> GL_ARB_pipeline_statistics_query
+<li> GL_ARB_shader_texture_image_samples
+<li> GL_ARB_sparse_buffer
+<li> GL_ARB_texture_barrier
+<li> GL_ARB_transform_feedback_overflow_query
+<li> GL_EXT_debug_label
+<li> GL_EXT_shader_image_load_formatted
+<li> GL_EXT_shader_integer_mix
+<li> GL_INTEL_fragment_shader_ordering
+<li> GL_INTEL_performance_query
+<li> GL_KHR_blend_equation_advanced
+<li> GL_KHR_blend_equation_advanced_coherent
+<li> GL_KHR_context_flush_control
+<li> GL_KHR_robust_buffer_access_behavior
+<li> GL_KHR_robustness
+<li> GL_KHR_texture_compression_astc_hdr
+<li> GL_NV_bindless_multi_draw_indirect_count
+<li> GL_NV_shader_atomic_int64
+<li> GL_NV_shader_thread_group
+<li> GL_NV_shader_thread_shuffle
+<li> GL_REGAL_proc_address
+<li> GLX_ARB_context_flush_control
+<li> GLX_EXT_stereo_tree
+<li> GLX_MESA_query_renderer
+<li> GLX_NV_copy_buffer
+<li> GLX_NV_delay_before_swap
+<li> WGL_ARB_context_flush_control
+<li> WGL_NV_delay_before_swap
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.11.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.10.0</b> [07-22-13]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.4
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_interleaved_elements
+<li> GL_AMD_shader_trinary_minmax
+<li> GL_AMD_sparse_texture
+<li> GL_ANGLE_depth_texture
+<li> GL_ANGLE_framebuffer_blit
+<li> GL_ANGLE_framebuffer_multisample
+<li> GL_ANGLE_instanced_arrays
+<li> GL_ANGLE_pack_reverse_row_order
+<li> GL_ANGLE_program_binary
+<li> GL_ANGLE_texture_compression_dxt1
+<li> GL_ANGLE_texture_compression_dxt3
+<li> GL_ANGLE_texture_compression_dxt5
+<li> GL_ANGLE_texture_usage
+<li> GL_ANGLE_timer_query
+<li> GL_ANGLE_translated_shader_source
+<li> GL_ARB_bindless_texture
+<li> GL_ARB_buffer_storage
+<li> GL_ARB_clear_texture
+<li> GL_ARB_compute_variable_group_size
+<li> GL_ARB_enhanced_layouts
+<li> GL_ARB_indirect_parameters
+<li> GL_ARB_multi_bind
+<li> GL_ARB_query_buffer_object
+<li> GL_ARB_seamless_cubemap_per_texture
+<li> GL_ARB_shader_draw_parameters
+<li> GL_ARB_shader_group_vote
+<li> GL_ARB_sparse_texture
+<li> GL_ARB_texture_mirror_clamp_to_edge
+<li> GL_ARB_texture_stencil8
+<li> GL_ARB_vertex_type_10f_11f_11f_rev
+<li> GL_INTEL_map_texture
+<li> GL_NVX_conditional_render
+<li> GL_NV_bindless_multi_draw_indirect
+<li> GL_NV_blend_equation_advanced
+<li> GL_NV_compute_program5
+<li> GL_NV_deep_texture3D
+<li> GL_NV_draw_texture
+<li> GL_NV_shader_atomic_counters
+<li> GL_NV_shader_storage_buffer_object
+<li> GL_REGAL_ES1_0_compatibility
+<li> GL_REGAL_ES1_1_compatibility
+<li> GL_REGAL_enable
+<li> GLX_EXT_buffer_age
+<li> WGL_ARB_robustness_application_isolation
+<li> WGL_ARB_robustness_share_group_isolation
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.10.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.9.0</b> [08-06-12]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.3 -
+ <a href="http://www.opengl.org/registry/doc/glspec43.compatibility.20120806.pdf">specification</a>,
+ <a href="http://www.khronos.org/assets/uploads/developers/library/overview/opengl_overview.pdf">overview</a>.
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_compatibility
+<li> GL_ARB_clear_buffer_object
+<li> GL_ARB_compute_shader
+<li> GL_ARB_copy_image
+<li> GL_ARB_explicit_uniform_location
+<li> GL_ARB_fragment_layer_viewport
+<li> GL_ARB_framebuffer_no_attachments
+<li> GL_ARB_internalformat_query2
+<li> GL_ARB_multi_draw_indirect
+<li> GL_ARB_program_interface_query
+<li> GL_ARB_robust_buffer_access_behavior
+<li> GL_ARB_robustness_application_isolation
+<li> GL_ARB_robustness_share_group_isolation
+<li> GL_ARB_shader_image_size
+<li> GL_ARB_shader_storage_buffer_object
+<li> GL_ARB_stencil_texturing
+<li> GL_ARB_texture_buffer_range
+<li> GL_ARB_texture_query_levels
+<li> GL_ARB_texture_storage_multisample
+<li> GL_ARB_texture_view
+<li> GL_ARB_vertex_attrib_binding
+<li> GL_EXT_debug_marker
+<li> GL_KHR_debug
+<li> GL_REGAL_error_string
+<li> GL_REGAL_extension_query
+<li> GL_REGAL_log
+<li> GLX_ARB_robustness_application_isolation
+<li> GLX_ARB_robustness_share_group_isolation
+<li> GLX_EXT_create_context_es_profile
+<li> WGL_EXT_create_context_es_profile
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Not using GLU library for Makefile builds.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.8.0</b> [07-17-12]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_pinned_memory
+<li> GL_AMD_query_buffer_object
+<li> GL_AMD_stencil_operation_extended
+<li> GL_AMD_vertex_shader_layer
+<li> GL_AMD_vertex_shader_viewport_index
+<li> GL_NV_bindless_texture
+<li> GL_NV_shader_atomic_float
+<li> GLX_EXT_swap_control_tear
+<li> WGL_EXT_swap_control_tear
+<li> WGL_NV_DX_interop2
+</ul>
+<li> Bug fixes:
+<ul>
+<li> MS Visual Studio 2010 projects added
+<li> GLX_NV_video_out replaces GLX_NV_video_output
+<li> ANSI C prototype for glewInit
+<li> Improved CentOS build support
+<li> Improved GL_ARB_gpu_shader_fp64 support
+<li> ARB_texture_compression_bptc and ARB_copy_buffer constants
+<li> Linux needs to define GLEW_STATIC for static library builds
+<li> Custom code generation problem resolved
+<li> GLEWAPIENTRY added to glew.h for calling convention customization
+<li> Correction for glPathStencilDepthOffsetNV
+<li> Resolve OSX gcc warnings
+<li> Added build support for NetBSD
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.7.0</b> [08-26-11]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_multi_draw_indirect
+<li> GL_ARB_base_instance
+<li> GL_ARB_compressed_texture_pixel_storage
+<li> GL_ARB_conservative_depth
+<li> GL_ARB_internalformat_query
+<li> GL_ARB_map_buffer_alignment
+<li> GL_ARB_shader_atomic_counters
+<li> GL_ARB_shader_image_load_store
+<li> GL_ARB_shading_language_420pack
+<li> GL_ARB_shading_language_packing
+<li> GL_ARB_texture_storage
+<li> GL_ARB_transform_feedback_instanced
+<li> GL_EXT_framebuffer_multisample_blit_scaled
+<li> GL_NV_path_rendering
+<li> GL_NV_path_rendering
+<li> GLX_MESA_swap_control
+</ul>
+<li> Bug fixes:
+<ul>
+<li> const qualifiers for GL 1.4 MultiDrawArrays, MultiDrawElements
+<li> Add glGetGraphicsResetStatusARB to GL_ARB_robustness
+<li> Remove EXT suffix from GL_KTX_buffer_region entry points
+<li> Solaris needs inttypes.h
+<li> Add ERROR_INVALID_VERSION_ARB and ERROR_INVALID_PROFILE_ARB to WGL_ARB_create_context
+<li> Add GLX_MESA_swap_control
+<li> Set -install_name for OSX
+<li> Add 64-bit darwin build option (SYSTEM=darwin_x86-64)
+<li> Add GL_NV_path_rendering
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.6.0</b> [04-27-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_blend_minmax_factor
+<li> GL_AMD_sample_positions
+<li> GL_EXT_x11_sync_object
+<li> GL_NV_texture_multisample
+<li> GL_NV_video_capture
+<li> GLX_NV_video_capture
+<li> WGL_NV_DX_interop
+<li> WGL_NV_video_capture
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Define GLEW_NO_GLU for no glu dependency.
+<li> mx suffix for GLEW MX libraries, build both libraries by default.
+<li> Cygwin build improvements
+<li> Soname of GLEWmx shared libraries
+<li> Query GL extension string only once
+<li> GLX_OML_sync_control no longer requires C99
+<li> glDraw*InstancedARB moved from GL_ARB_draw_instanced to GL_ARB_instanced_arrays
+<li> glFramebufferTextureLayerEXT moved from GL_EXT_geometry_shader4 to GL_EXT_texture_array
+<li> Fixes for BSD build
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.8</b> [01-31-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_depth_clamp_separate
+<li> GL_EXT_texture_sRGB_decode
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Borland C++ fix for __int64
+<li> GL_DOUBLE_MATNxM enumerants for OpenGL 4.0
+<li> Correction to glGetTransformFeedbackVarying
+<li> Correction to glSecondaryColorPointer
+<li> Corrections to glGetVertexAttribPointerv and glGetShaderSource
+<li> Switched code repository from svn to git
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.7</b> [11-03-10]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_NVX_gpu_memory_info
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Improved mingw32 build support
+<li> Improved cygwin build support
+<li> glGetPointervEXT fix
+<li> Add GLEW_VERSION_1_2_1
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.6</b> [09-07-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.1
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES2_compatibility
+<li> GL_ARB_cl_event
+<li> GL_ARB_debug_output
+<li> GL_ARB_get_program_binary
+<li> GL_ARB_robustness
+<li> GL_ARB_separate_shader_objects
+<li> GL_ARB_shader_precision
+<li> GL_ARB_shader_stencil_export
+<li> GL_ARB_vertex_attrib_64bit
+<li> GL_ARB_viewport_array
+<li> GLX_ARB_create_context_robustness
+<li> GLX_EXT_create_context_es2_profile
+<li> WGL_ARB_create_context_robustness
+<li> WGL_EXT_create_context_es2_profile
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.5</b> [07-13-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_debug_output
+<li> GL_AMD_name_gen_delete
+<li> GL_AMD_transform_feedback3_lines_triangles
+<li> GL_NV_multisample_coverage
+<li> GL_NV_vdpau_interop
+<li> GLX_AMD_gpu_association
+<li> GLX_NV_multisample_coverage
+<li> WGL_NV_multisample_coverage
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Compilation issue with GLX_SGI_video_sync
+<li> OpenGL 4.0 double-precision uniform functions added
+<li> Constness of glPointParameterfvARB and glPointParameterfvEXT
+<li> Added glVertexAttribDivisor
+<li> Compilation issue with Nvidia GLX headers
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.4</b> [04-21-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.3
+<li> Support for OpenGL 4.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_conservative_depth
+<li> GL_ARB_blend_func_extended
+<li> GL_ARB_draw_indirect
+<li> GL_ARB_explicit_attrib_location
+<li> GL_ARB_gpu_shader5
+<li> GL_ARB_gpu_shader_fp64
+<li> GL_ARB_occlusion_query2
+<li> GL_ARB_sampler_objects
+<li> GL_ARB_shader_bit_encoding
+<li> GL_ARB_shader_subroutine
+<li> GL_ARB_shading_language_include
+<li> GL_ARB_tessellation_shader
+<li> GL_ARB_texture_buffer_object_rgb32
+<li> GL_ARB_texture_compression_bptc
+<li> GL_ARB_texture_rgb10_a2ui
+<li> GL_ARB_texture_swizzle
+<li> GL_ARB_timer_query
+<li> GL_ARB_transform_feedback2
+<li> GL_ARB_transform_feedback3
+<li> GL_ARB_vertex_type_2_10_10_10_rev
+<li> GL_EXT_shader_image_load_store
+<li> GL_EXT_vertex_attrib_64bit
+<li> GL_NV_gpu_program5
+<li> GL_NV_gpu_program_fp64
+<li> GL_NV_gpu_shader5
+<li> GL_NV_tessellation_program5
+<li> GL_NV_vertex_attrib_integer_64bit
+<li> GLX_ARB_vertex_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Parameter constness fix for glPointParameteriv and glPointParameterfv
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.3</b> [02-28-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GLX_INTEL_swap_event
+<li> GL_AMD_seamless_cubemap_per_texture
+<li> GL_AMD_shader_stencil_export
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Correct version detection for GL 3.1 and 3.2
+<li> Missing 3.1 enumerants
+<li> Add glew.pc
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.2</b> [12-31-09]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.1
+<li> Support for OpenGL 3.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_draw_buffers_blend
+<li> GL_AMD_performance_monitor
+<li> GL_AMD_texture_texture4
+<li> GL_AMD_vertex_shader_tessellator
+<li> GL_APPLE_aux_depth_stencil
+<li> GL_APPLE_object_purgeable
+<li> GL_APPLE_rgb_422
+<li> GL_APPLE_row_bytes
+<li> GL_APPLE_vertex_program_evaluators
+<li> GL_ARB_compatibility
+<li> GL_ARB_copy_buffer
+<li> GL_ARB_depth_clamp
+<li> GL_ARB_draw_buffers_blend
+<li> GL_ARB_draw_elements_base_vertex
+<li> GL_ARB_fragment_coord_conventions
+<li> GL_ARB_provoking_vertex
+<li> GL_ARB_sample_shading
+<li> GL_ARB_seamless_cube_map
+<li> GL_ARB_shader_texture_lod
+<li> GL_ARB_sync
+<li> GL_ARB_texture_cube_map_array
+<li> GL_ARB_texture_gather
+<li> GL_ARB_texture_multisample
+<li> GL_ARB_texture_query_lod
+<li> GL_ARB_uniform_buffer_object
+<li> GL_ARB_vertex_array_bgra
+<li> GL_ATI_meminfo
+<li> GL_EXT_provoking_vertex
+<li> GL_EXT_separate_shader_objects
+<li> GL_EXT_texture_snorm
+<li> GL_NV_copy_image
+<li> GL_NV_parameter_buffer_object2
+<li> GL_NV_shader_buffer_load
+<li> GL_NV_texture_barrier
+<li> GL_NV_transform_feedback2
+<li> GL_NV_vertex_buffer_unified_memory
+<li> WGL_AMD_gpu_association
+<li> WGL_ARB_create_context_profile
+<li> WGL_NV_copy_image
+<li> GLX_ARB_create_context_profile
+<li> GLX_EXT_swap_control
+<li> GLX_NV_copy_image
+</ul>
+<li> Bug fixes:
+<ul>
+<li> DOS line endings for windows .zip archives only.
+<li> glTransformFeedbackVaryings arguments.
+<li> Resource leak in glewinfo and visualinfo tools.
+<li> WIN32_LEAN_AND_MEAN preprocessor pollution.
+<li> Fixed version detection for GLEW_VERSION_2_1 and GLEW_VERSION_3_0.
+<li> MesaGLUT glut.h GLAPIENTRY dependency.
+<li> glFramebufferTextureLayer correction.
+<li> OSX compiler warnings resolved.
+<li> Cygwin linking to opengl32 by default, rather than X11 OpenGL.
+<li> SnowLeopard (OSX 10.6) gl.h detection.
+<li> Use $(STRIP) consistently.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.1</b> [11-03-08]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_depth_buffer_float
+<li> GL_ARB_draw_instance,
+<li> GL_ARB_framebuffer_object
+<li> GL_ARB_framebuffer_sRGB
+<li> GL_ARB_geometry_shader4
+<li> GL_ARB_half_float_pixel
+<li> GL_ARB_half_float_vertex
+<li> GL_ARB_instanced_arrays
+<li> GL_ARB_map_buffer_range
+<li> GL_ARB_texture_buffer_object
+<li> GL_ARB_texture_compression_rgtc
+<li> GL_ARB_vertex_array_object
+<li> GL_EXT_direct_state_access
+<li> GL_EXT_texture_swizzle
+<li> GL_EXT_transform_feedback
+<li> GL_EXT_vertex_array_bgra
+<li> GL_NV_conditional_render
+<li> GL_NV_explicit_multisample
+<li> GL_NV_present_video
+<li> GL_SGIS_point_line_texgen
+<li> GL_SGIX_convolution_accuracy
+<li> WGL_ARB_create_context
+<li> WGL_ARB_framebuffer_sRGB
+<li> WGL_NV_present_video
+<li> WGL_NV_swap_group
+<li> WGL_NV_video_output
+<li> GLX_ARB_create_context
+<li> GLX_ARB_framebuffer_sRGB
+<li> GLX_NV_present_video
+<li> GLX_NV_swap_group
+<li> GLX_NV_video_output
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Licensing issues with documentation
+<li> Problems with long long and _MSC_VER on MINGW
+<li> Incorrect parameter for glGetUniformLocation
+<li> glewGetExtension fails on last entry
+<li> Incomplete GL_NV_texture_shader tokens
+<li> Scripting problems on Cygwin
+<li> Incorrect definition for GLint on OS X
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.0</b> [12-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Licensing change (BSD, Mesa 3-D, Khronos)
+<li> Switch to using registry on <a href="http://www.opengl.org/registry/">www.opengl.org</a>
+<li> Support for major and minor version strings
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_APPLE_flush_buffer_range
+<li> GL_GREMEDY_frame_terminator
+<li> GLX_EXT_texture_from_pixmap
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect 64-bit type definitions
+<li> Do not strip static library on install
+<li> Missing tokens in GL_ATI_fragment_shader and WGL_{ARB,EXT}_make_current_read
+<li> Missing tokens in GL_VERSION_2_1
+<li> Missing functions in GL_VERSION_1_4
+<li> Incorrect parameter type for glXCopyContext
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.4.0</b> [04-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Extension variables are declared const to avoid possible
+corruption of their values
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_NV_depth_range_unclamped
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect tokens in GL_NV_transform_feedback and GL_NV_framebuffer_multisample_coverage
+<li> Incorrect function names in GL_EXT_gpu_program_parameters
+<li> Missing tokens in GL_EXT_framebuffer_multisample
+<li> GLEW_MX initialization problem for WGL_{ARB,EXT}_extensions_string
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.6</b> [03-04-07]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ATI_shader_texture_lod
+<li> GL_EXT_gpu_program_parameters
+<li> GL_NV_geometry_shader4
+<li> WGL_NV_gpu_affinity
+<li> GLX_SGIX_hyperpipe
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing include guards in glxew.h
+<li> Makefile and install problems for Cygwin builds
+<li> Install problem for Linux AMD64 builds
+<li> Incorrect token in GL_ATI_texture_compression_3dc
+<li> Missing tokens from GL_ATIX_point_sprites
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.5</b> [11-21-06]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.1
+<li> Debug support for glewIsSupported
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_bindable_uniform
+<li> GL_EXT_draw_buffers2
+<li> GL_EXT_draw_instanced
+<li> GL_EXT_framebuffer_sRGB
+<li> GL_EXT_geometry_shader4
+<li> GL_EXT_gpu_shader4
+<li> GL_EXT_packed_float
+<li> GL_EXT_texture_array
+<li> GL_EXT_texture_buffer_object
+<li> GL_EXT_texture_compression_latc
+<li> GL_EXT_texture_compression_rgtc
+<li> GL_EXT_texture_integer
+<li> GL_EXT_texture_shared_exponent
+<li> GL_EXT_timer_query
+<li> GL_NV_depth_buffer_float
+<li> GL_NV_fragment_program4
+<li> GL_NV_framebuffer_multisample_coverage
+<li> GL_NV_geometry_program4
+<li> GL_NV_gpu_program4
+<li> GL_NV_parameter_buffer_object
+<li> GL_NV_transform_feedback
+<li> GL_NV_vertex_program4
+<li> GL_OES_byte_coordinates
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_read_format
+<li> GL_OES_single_precision
+<li> WGL_EXT_pixel_format_packed_float
+<li> WGL_EXT_framebuffer_sRGB
+<li> GLX_EXT_fbconfig_packed_float
+<li> GLX_EXT_framebuffer_sRGB
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Wrong GLXContext definition on Solaris
+<li> Makefile problem for parallel builds
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.4</b> [03-04-06]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_blit
+<li> GL_EXT_framebuffer_multisample
+<li> GL_EXT_packed_depth_stencil
+<li> GL_MESAX_texture_stack
+<li> WGL_3DL_stereo_control
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> glBlendEquation missing from GL_ARB_imaging
+<li> Wrong APIENTRY definition for Cygwin
+<li> Incorrect OS X OpenGL types
+<li> Unix 64-bit installation patch
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.3</b> [05-16-05]
+<ul>
+<li> New feature:
+<ul>
+<li> Code generation option to split source into multiple files
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL 2.0 core initialization problems
+<li> Wrong value for token GL_SHADER_TYPE
+<li> Missing tokens in GL_ATI_fragment_shader
+<li> Missing entry points in GL_ARB_transpose_matrix
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.2</b> [03-16-05]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_APPLE_pixel_buffer
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 entry points
+<li> Missing tokens in GL_SGIX_shadow
+<li> MinGW makefile problem
+<li> Check for incorrect OpenGL version string on SiS hardware
+<li> Documentation update to meet the HTML 4.01 Transitional specification
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.1</b> [02-02-05]
+<ul>
+<li> New features:
+<ul>
+<li> Consistent Unix and Windows versioning
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_object
+<li> GL_ARB_pixel_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 tokens
+<li> Incorrect typedefs (GLhandleARB and GLhalf)
+<li> Borland compiler problems
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.0</b> [01-04-05]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.0
+<li> <tt>glewIsSupported</tt> provides efficient string-based extension checks
+<li> Custom code generation from a list of extensions
+<li> Makefile changes
+</ul>
+<li> New extensions:
+<ul>
+<li> WGL_ATI_render_texture_rectangle
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect function signature in OpenGL 1.5 core
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.5</b> [12-06-04]
+<ul>
+<li> New extensions:
+<ul>
+<li>GL_ATI_texture_compression_3dc
+<li>GL_EXT_Cg_shader
+<li>GL_EXT_draw_range_elements
+<li>GL_KTX_buffer_region
+</ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL version detection bug
+<li> Problems with wxWindows and MinGW compilation
+<li> <tt>visualinfo</tt> compilation problem with GLEW_MX specified
+<li> Wrong token name in OpenGL 1.5 core
+</ul>
+<li> Support for FreeBSD
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.4</b> [09-06-04]
+<ul>
+<li> Added ARB_draw_buffers and ARB_texture_rectangle
+<li> Fixed bug in ARB_shader_objects
+<li> Replaced <tt>wglinfo</tt> with <tt>visualinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.3</b> [06-10-04]
+<ul>
+<li> Added GL_NV_fragment_program2, GL_NV_fragment_program_option, GL_NV_vertex_program2_option, GL_NV_vertex_program3
+<li> Bug fix in GL_ARB_vertex_blend
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.2</b> [05-08-04]
+<ul>
+<li> Added GL_EXT_pixel_buffer_object, removed GL_NV_element_array
+<li> Fixed GLEW_MX problems
+<li> Bug fix in GL_EXT_texture_rectangle and <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.1</b> [03-18-04]
+<ul>
+<li> Bug fix in OpenGL version query (early release of 1.2.0 contained this bug)
+<li> Bug fix in GL_ARB_shader_objects and temporary bug fix in GL_ARB_vertex_shader
+<li> Added flags on GDI support and multisampling to <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.0</b> [02-19-04]
+<ul>
+<li> Added full OpenGL 1.5 support
+<li> Added support for multiple rendering contexts with different capabilities
+<li> Added command line flags to <tt>glewinfo</tt> for selecting displays and visuals
+<li> Added GLX_SGIS_multisample, GLX_SUN_video_resize, and GL_SUN_read_video_pixels
+<li> Added MinGW/MSYS support
+<li> Bug fixes in GL_ARB_shader_objects and the OS X build
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.4</b> [12-15-03]
+<ul>
+<li> Added GL_APPLE_float_pixels, GL_APPLE_texture_range,
+GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
+GLX_ATI_pixel_format_float, and GLX_ATI_render_texture
+<li> Bug fixes in GL_ATI_map_object_buffer and GL_ATI_fragment_shader
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.3</b> [10-28-03]
+<ul>
+<li> Added Solaris and Darwin support
+<li> Added GL_ARB_fragment_shader, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+<li> Fixed bug in GL_WIN_swap_hint
+<li> Removed <tt>glewinfo</tt>'s dependency on <tt>GLUT</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.2</b> [09-15-03]
+<ul>
+<li> Removed dependency on WGL_{ARB,EXT}_extensions_string to make GLEW run on Matrox cards
+<li> Added glewGetString for querying the GLEW version string
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.1</b> [08-11-03]
+<ul>
+<li> Added GLX_NV_float_buffer, GL_ARB_shading_language_100, and GL_ARB_texture_non_power_of_two
+<li> Fixed bug in GL_ARB_vertex_buffer_object
+<li> Minor updates in documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.0</b> [07-08-03]
+<ul>
+<li> Added automatic code generation
+<li> Added almost every extension in the registry
+<li> Added separate namespace
+<li> Added Irix support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.7</b> [06-29-03]
+<ul>
+<li> Added GL_EXT_depth_bounds_test
+<li> Fixed typos
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.6</b> [05-05-03]
+<ul>
+<li> Added ARB_vertex_buffer_object and NV_half_float
+<li> Updated <tt>wglinfo</tt>
+<li> Temporary Linux bug fixes (problems with SDL and MESA)
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.5</b> [02-17-03]
+<ul>
+<li> Bug fixes
+<li> Added <tt>wglinfo</tt>
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.4</b> [02-02-03]
+<ul>
+<li> Added NV_texture_expand_normal
+<li> Added mingw support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.3</b> [01-09-03]
+<ul>
+<li> Cleaned up ATI extensions
+<li> Changed function prototypes to match glext.h
+<li> Added EXT_texture3D
+<li> Fixed typos in ATI_vertex_attrib_array_object and ATI_draw_buffers
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.2</b> [12-21-02]
+<ul>
+<li> Added list of supported extensions to documentation
+<li> Added NV_half_float and NV_texgen_emboss
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.1</b> [12-17-02]
+<ul>
+<li> Bug fixes
+<li> Added glewGetExtension
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.0</b> [12-12-02]
+<ul>
+<li> Initial release
+</ul>
+</ul>
+<hr align="center">
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/mesa.txt b/glew/doc/mesa.txt
new file mode 100644
index 0000000..a82dd4b
--- /dev/null
+++ b/glew/doc/mesa.txt
@@ -0,0 +1,21 @@
+Mesa 3-D graphics library
+Version: 7.0
+
+Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/glew/doc/new.png b/glew/doc/new.png
new file mode 100644
index 0000000..7ce2b47
--- /dev/null
+++ b/glew/doc/new.png
Binary files differ
diff --git a/glew/doc/ogl_sm.jpg b/glew/doc/ogl_sm.jpg
new file mode 100644
index 0000000..f318d76
--- /dev/null
+++ b/glew/doc/ogl_sm.jpg
Binary files differ
diff --git a/glew/doc/travis.png b/glew/doc/travis.png
new file mode 100644
index 0000000..caf2607
--- /dev/null
+++ b/glew/doc/travis.png
Binary files differ
diff --git a/glew/doc/wglew.html b/glew/doc/wglew.html
new file mode 100644
index 0000000..1826b01
--- /dev/null
+++ b/glew/doc/wglew.html
@@ -0,0 +1,169 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported WGL Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/WGL_3DFX_multisample.txt">3DFX_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DL/WGL_3DL_stereo_control.txt">3DL_stereo_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/WGL_AMD_gpu_association.txt">AMD_gpu_association</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_buffer_region.txt">ARB_buffer_region</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_context_flush_control.txt">ARB_context_flush_control</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context.txt">ARB_create_context</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_no_error.txt">ARB_create_context_no_error</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_profile.txt">ARB_create_context_profile</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_robustness.txt">ARB_create_context_robustness</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_extensions_string.txt">ARB_extensions_string</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_make_current_read.txt">ARB_make_current_read</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_multisample.txt">ARB_multisample</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pbuffer.txt">ARB_pbuffer</a></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format.txt">ARB_pixel_format</a></td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format_float.txt">ARB_pixel_format_float</a></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_render_texture.txt">ARB_render_texture</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_application_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_share_group_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_pixel_format_float.txt">ATI_pixel_format_float</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_render_texture_rectangle.txt">ATI_render_texture_rectangle</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_colorspace.txt">EXT_colorspace</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es2_profile.txt">EXT_create_context_es2_profile</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es_profile.txt">EXT_create_context_es_profile</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_depth_float.txt">EXT_depth_float</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_display_color_table.txt">EXT_display_color_table</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_extensions_string.txt">EXT_extensions_string</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_make_current_read.txt">EXT_make_current_read</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt">EXT_multisample</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pbuffer.txt">EXT_pbuffer</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format.txt">EXT_pixel_format</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format_packed_float.txt">EXT_pixel_format_packed_float</a></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control.txt">EXT_swap_control</a></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control_tear.txt">EXT_swap_control_tear</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_digital_video_control.txt">I3D_digital_video_control</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_gamma.txt">I3D_gamma</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_genlock.txt">I3D_genlock</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_image_buffer.txt">I3D_image_buffer</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_lock.txt">I3D_swap_frame_lock</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_usage.txt">I3D_swap_frame_usage</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop.txt">NV_DX_interop</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop2.txt">NV_DX_interop2</a></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_copy_image.txt">NV_copy_image</a></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_delay_before_swap.txt">NV_delay_before_swap</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_float_buffer.txt">NV_float_buffer</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt">NV_gpu_affinity</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multigpu_context.txt">NV_multigpu_context</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_present_video.txt">NV_present_video</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_depth_texture.txt">NV_render_depth_texture</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_texture_rectangle.txt">NV_render_texture_rectangle</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_swap_group.txt">NV_swap_group</a></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_capture.txt">NV_video_capture</a></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_output.txt">NV_video_output</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/WGL_OML_sync_control.txt">OML_sync_control</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/glew.pc.in b/glew/glew.pc.in
new file mode 100644
index 0000000..a892540
--- /dev/null
+++ b/glew/glew.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=@libdir@
+includedir=${prefix}/include
+
+Name: glew
+Description: The OpenGL Extension Wrangler library
+Version: @version@
+Cflags: -I${includedir} @cflags@
+Libs: -L${libdir} -l@libname@ @libgl@
+Requires: @requireslib@
diff --git a/glew/include/GL/eglew.h b/glew/include/GL/eglew.h
new file mode 100644
index 0000000..fdb90d9
--- /dev/null
+++ b/glew/include/GL/eglew.h
@@ -0,0 +1,3230 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __eglew_h__
+#define __eglew_h__
+#define __EGLEW_H__
+
+#ifdef __eglext_h_
+#error eglext.h included before eglew.h
+#endif
+
+#if defined(__egl_h_)
+#error egl.h included before eglew.h
+#endif
+
+#define __eglext_h_
+
+#define __egl_h_
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+/* EGL Types */
+#include <sys/types.h>
+
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int32_t EGLint;
+
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+typedef void *EGLImageKHR;
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+typedef int EGLNativeFileDescriptorKHR;
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void *EGLDeviceEXT;
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+struct EGLClientPixmapHI;
+struct AHardwareBuffer;
+
+/* Wayland types for WL_bind_wayland_display purposes */
+struct wl_buffer;
+struct wl_display;
+struct wl_resource;
+
+#define EGL_DONT_CARE ((EGLint)-1)
+
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_IMAGE ((EGLImage)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+#define EGL_NO_SYNC ((EGLSync)0)
+
+#define EGL_UNKNOWN ((EGLint)-1)
+
+#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
+
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
+/* ---------------------------- EGL_VERSION_1_0 ---------------------------- */
+
+#ifndef EGL_VERSION_1_0
+#define EGL_VERSION_1_0 1
+
+#define EGL_FALSE 0
+#define EGL_PBUFFER_BIT 0x0001
+#define EGL_TRUE 1
+#define EGL_PIXMAP_BIT 0x0002
+#define EGL_WINDOW_BIT 0x0004
+#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_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_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
+
+typedef EGLBoolean ( * PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLBoolean ( * PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+typedef EGLContext ( * PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
+typedef EGLBoolean ( * PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean ( * PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value);
+typedef EGLBoolean ( * PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLDisplay ( * PFNEGLGETCURRENTDISPLAYPROC) ( void );
+typedef EGLSurface ( * PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
+typedef EGLDisplay ( * PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
+typedef EGLint ( * PFNEGLGETERRORPROC) ( void );
+typedef EGLBoolean ( * PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint * major, EGLint * minor);
+typedef EGLBoolean ( * PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+typedef EGLBoolean ( * PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint * value);
+typedef const char * ( * PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value);
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean ( * PFNEGLTERMINATEPROC) (EGLDisplay dpy);
+typedef EGLBoolean ( * PFNEGLWAITGLPROC) ( void );
+typedef EGLBoolean ( * PFNEGLWAITNATIVEPROC) (EGLint engine);
+
+#define eglChooseConfig EGLEW_GET_FUN(__eglewChooseConfig)
+#define eglCopyBuffers EGLEW_GET_FUN(__eglewCopyBuffers)
+#define eglCreateContext EGLEW_GET_FUN(__eglewCreateContext)
+#define eglCreatePbufferSurface EGLEW_GET_FUN(__eglewCreatePbufferSurface)
+#define eglCreatePixmapSurface EGLEW_GET_FUN(__eglewCreatePixmapSurface)
+#define eglCreateWindowSurface EGLEW_GET_FUN(__eglewCreateWindowSurface)
+#define eglDestroyContext EGLEW_GET_FUN(__eglewDestroyContext)
+#define eglDestroySurface EGLEW_GET_FUN(__eglewDestroySurface)
+#define eglGetConfigAttrib EGLEW_GET_FUN(__eglewGetConfigAttrib)
+#define eglGetConfigs EGLEW_GET_FUN(__eglewGetConfigs)
+#define eglGetCurrentDisplay EGLEW_GET_FUN(__eglewGetCurrentDisplay)
+#define eglGetCurrentSurface EGLEW_GET_FUN(__eglewGetCurrentSurface)
+#define eglGetDisplay EGLEW_GET_FUN(__eglewGetDisplay)
+#define eglGetError EGLEW_GET_FUN(__eglewGetError)
+#define eglInitialize EGLEW_GET_FUN(__eglewInitialize)
+#define eglMakeCurrent EGLEW_GET_FUN(__eglewMakeCurrent)
+#define eglQueryContext EGLEW_GET_FUN(__eglewQueryContext)
+#define eglQueryString EGLEW_GET_FUN(__eglewQueryString)
+#define eglQuerySurface EGLEW_GET_FUN(__eglewQuerySurface)
+#define eglSwapBuffers EGLEW_GET_FUN(__eglewSwapBuffers)
+#define eglTerminate EGLEW_GET_FUN(__eglewTerminate)
+#define eglWaitGL EGLEW_GET_FUN(__eglewWaitGL)
+#define eglWaitNative EGLEW_GET_FUN(__eglewWaitNative)
+
+#define EGLEW_VERSION_1_0 EGLEW_GET_VAR(__EGLEW_VERSION_1_0)
+
+#endif /* EGL_VERSION_1_0 */
+
+/* ---------------------------- EGL_VERSION_1_1 ---------------------------- */
+
+#ifndef EGL_VERSION_1_1
+#define EGL_VERSION_1_1 1
+
+#define EGL_CONTEXT_LOST 0x300E
+#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_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
+
+typedef EGLBoolean ( * PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean ( * PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean ( * PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+typedef EGLBoolean ( * PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
+
+#define eglBindTexImage EGLEW_GET_FUN(__eglewBindTexImage)
+#define eglReleaseTexImage EGLEW_GET_FUN(__eglewReleaseTexImage)
+#define eglSurfaceAttrib EGLEW_GET_FUN(__eglewSurfaceAttrib)
+#define eglSwapInterval EGLEW_GET_FUN(__eglewSwapInterval)
+
+#define EGLEW_VERSION_1_1 EGLEW_GET_VAR(__EGLEW_VERSION_1_1)
+
+#endif /* EGL_VERSION_1_1 */
+
+/* ---------------------------- EGL_VERSION_1_2 ---------------------------- */
+
+#ifndef EGL_VERSION_1_2
+#define EGL_VERSION_1_2 1
+
+#define EGL_OPENGL_ES_BIT 0x0001
+#define EGL_OPENVG_BIT 0x0002
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_SINGLE_BUFFER 0x3085
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_COLORSPACE_LINEAR 0x308A
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B
+#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_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+#define EGL_DISPLAY_SCALING 10000
+
+typedef EGLBoolean ( * PFNEGLBINDAPIPROC) (EGLenum api);
+typedef EGLSurface ( * PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint * attrib_list);
+typedef EGLenum ( * PFNEGLQUERYAPIPROC) ( void );
+typedef EGLBoolean ( * PFNEGLRELEASETHREADPROC) ( void );
+typedef EGLBoolean ( * PFNEGLWAITCLIENTPROC) ( void );
+
+#define eglBindAPI EGLEW_GET_FUN(__eglewBindAPI)
+#define eglCreatePbufferFromClientBuffer EGLEW_GET_FUN(__eglewCreatePbufferFromClientBuffer)
+#define eglQueryAPI EGLEW_GET_FUN(__eglewQueryAPI)
+#define eglReleaseThread EGLEW_GET_FUN(__eglewReleaseThread)
+#define eglWaitClient EGLEW_GET_FUN(__eglewWaitClient)
+
+#define EGLEW_VERSION_1_2 EGLEW_GET_VAR(__EGLEW_VERSION_1_2)
+
+#endif /* EGL_VERSION_1_2 */
+
+/* ---------------------------- EGL_VERSION_1_3 ---------------------------- */
+
+#ifndef EGL_VERSION_1_3
+#define EGL_VERSION_1_3 1
+
+#define EGL_OPENGL_ES2_BIT 0x0004
+#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041
+#define EGL_CONFORMANT 0x3042
+#define EGL_VG_COLORSPACE 0x3087
+#define EGL_VG_ALPHA_FORMAT 0x3088
+#define EGL_VG_COLORSPACE_LINEAR 0x308A
+#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+#define EGLEW_VERSION_1_3 EGLEW_GET_VAR(__EGLEW_VERSION_1_3)
+
+#endif /* EGL_VERSION_1_3 */
+
+/* ---------------------------- EGL_VERSION_1_4 ---------------------------- */
+
+#ifndef EGL_VERSION_1_4
+#define EGL_VERSION_1_4 1
+
+#define EGL_OPENGL_BIT 0x0008
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
+#define EGL_MULTISAMPLE_RESOLVE 0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
+#define EGL_OPENGL_API 0x30A2
+
+typedef EGLContext ( * PFNEGLGETCURRENTCONTEXTPROC) ( void );
+
+#define eglGetCurrentContext EGLEW_GET_FUN(__eglewGetCurrentContext)
+
+#define EGLEW_VERSION_1_4 EGLEW_GET_VAR(__EGLEW_VERSION_1_4)
+
+#endif /* EGL_VERSION_1_4 */
+
+/* ---------------------------- EGL_VERSION_1_5 ---------------------------- */
+
+#ifndef EGL_VERSION_1_5
+#define EGL_VERSION_1_5 1
+
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_GL_COLORSPACE_SRGB 0x3089
+#define EGL_GL_COLORSPACE_LINEAR 0x308A
+#define EGL_CONTEXT_MAJOR_VERSION 0x3098
+#define EGL_CL_EVENT_HANDLE 0x309C
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_TEXTURE_2D 0x30B1
+#define EGL_GL_TEXTURE_3D 0x30B2
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
+#define EGL_GL_RENDERBUFFER 0x30B9
+#define EGL_GL_TEXTURE_LEVEL 0x30BC
+#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
+#define EGL_IMAGE_PRESERVED 0x30D2
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
+#define EGL_SYNC_STATUS 0x30F1
+#define EGL_SIGNALED 0x30F2
+#define EGL_UNSIGNALED 0x30F3
+#define EGL_TIMEOUT_EXPIRED 0x30F5
+#define EGL_CONDITION_SATISFIED 0x30F6
+#define EGL_SYNC_TYPE 0x30F7
+#define EGL_SYNC_CONDITION 0x30F8
+#define EGL_SYNC_FENCE 0x30F9
+#define EGL_CONTEXT_MINOR_VERSION 0x30FB
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
+#define EGL_SYNC_CL_EVENT 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
+#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 0x31BD
+#define EGL_NO_RESET_NOTIFICATION 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
+#define EGL_FOREVER 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+typedef EGLImage ( * PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list);
+typedef EGLSync ( * PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
+typedef EGLDisplay ( * PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void * native_display, const EGLAttrib * attrib_list);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean ( * PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
+
+#define eglClientWaitSync EGLEW_GET_FUN(__eglewClientWaitSync)
+#define eglCreateImage EGLEW_GET_FUN(__eglewCreateImage)
+#define eglCreatePlatformPixmapSurface EGLEW_GET_FUN(__eglewCreatePlatformPixmapSurface)
+#define eglCreatePlatformWindowSurface EGLEW_GET_FUN(__eglewCreatePlatformWindowSurface)
+#define eglCreateSync EGLEW_GET_FUN(__eglewCreateSync)
+#define eglDestroyImage EGLEW_GET_FUN(__eglewDestroyImage)
+#define eglDestroySync EGLEW_GET_FUN(__eglewDestroySync)
+#define eglGetPlatformDisplay EGLEW_GET_FUN(__eglewGetPlatformDisplay)
+#define eglGetSyncAttrib EGLEW_GET_FUN(__eglewGetSyncAttrib)
+#define eglWaitSync EGLEW_GET_FUN(__eglewWaitSync)
+
+#define EGLEW_VERSION_1_5 EGLEW_GET_VAR(__EGLEW_VERSION_1_5)
+
+#endif /* EGL_VERSION_1_5 */
+
+/* ------------------------ EGL_ANDROID_GLES_layers ------------------------ */
+
+#ifndef EGL_ANDROID_GLES_layers
+#define EGL_ANDROID_GLES_layers 1
+
+#define EGLEW_ANDROID_GLES_layers EGLEW_GET_VAR(__EGLEW_ANDROID_GLES_layers)
+
+#endif /* EGL_ANDROID_GLES_layers */
+
+/* ------------------------- EGL_ANDROID_blob_cache ------------------------ */
+
+#ifndef EGL_ANDROID_blob_cache
+#define EGL_ANDROID_blob_cache 1
+
+typedef void ( * PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+
+#define eglSetBlobCacheFuncsANDROID EGLEW_GET_FUN(__eglewSetBlobCacheFuncsANDROID)
+
+#define EGLEW_ANDROID_blob_cache EGLEW_GET_VAR(__EGLEW_ANDROID_blob_cache)
+
+#endif /* EGL_ANDROID_blob_cache */
+
+/* ---------------- EGL_ANDROID_create_native_client_buffer ---------------- */
+
+#ifndef EGL_ANDROID_create_native_client_buffer
+#define EGL_ANDROID_create_native_client_buffer 1
+
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+
+typedef EGLClientBuffer ( * PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint* attrib_list);
+
+#define eglCreateNativeClientBufferANDROID EGLEW_GET_FUN(__eglewCreateNativeClientBufferANDROID)
+
+#define EGLEW_ANDROID_create_native_client_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_create_native_client_buffer)
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+/* --------------------- EGL_ANDROID_framebuffer_target -------------------- */
+
+#ifndef EGL_ANDROID_framebuffer_target
+#define EGL_ANDROID_framebuffer_target 1
+
+#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+
+#define EGLEW_ANDROID_framebuffer_target EGLEW_GET_VAR(__EGLEW_ANDROID_framebuffer_target)
+
+#endif /* EGL_ANDROID_framebuffer_target */
+
+/* ----------------- EGL_ANDROID_front_buffer_auto_refresh ----------------- */
+
+#ifndef EGL_ANDROID_front_buffer_auto_refresh
+#define EGL_ANDROID_front_buffer_auto_refresh 1
+
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+
+#define EGLEW_ANDROID_front_buffer_auto_refresh EGLEW_GET_VAR(__EGLEW_ANDROID_front_buffer_auto_refresh)
+
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+/* -------------------- EGL_ANDROID_get_frame_timestamps ------------------- */
+
+#ifndef EGL_ANDROID_get_frame_timestamps
+#define EGL_ANDROID_get_frame_timestamps 1
+
+#define EGL_TIMESTAMPS_ANDROID 0x3430
+#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+#define EGL_READS_DONE_TIME_ANDROID 0x343C
+
+typedef EGLBoolean ( * PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint* names, EGLnsecsANDROID* values);
+typedef EGLBoolean ( * PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
+typedef EGLBoolean ( * PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+typedef EGLBoolean ( * PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint* timestamps, EGLnsecsANDROID* values);
+typedef EGLBoolean ( * PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId);
+
+#define eglGetCompositorTimingANDROID EGLEW_GET_FUN(__eglewGetCompositorTimingANDROID)
+#define eglGetCompositorTimingSupportedANDROID EGLEW_GET_FUN(__eglewGetCompositorTimingSupportedANDROID)
+#define eglGetFrameTimestampSupportedANDROID EGLEW_GET_FUN(__eglewGetFrameTimestampSupportedANDROID)
+#define eglGetFrameTimestampsANDROID EGLEW_GET_FUN(__eglewGetFrameTimestampsANDROID)
+#define eglGetNextFrameIdANDROID EGLEW_GET_FUN(__eglewGetNextFrameIdANDROID)
+
+#define EGLEW_ANDROID_get_frame_timestamps EGLEW_GET_VAR(__EGLEW_ANDROID_get_frame_timestamps)
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+/* ------------------ EGL_ANDROID_get_native_client_buffer ----------------- */
+
+#ifndef EGL_ANDROID_get_native_client_buffer
+#define EGL_ANDROID_get_native_client_buffer 1
+
+typedef EGLClientBuffer ( * PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer* buffer);
+
+#define eglGetNativeClientBufferANDROID EGLEW_GET_FUN(__eglewGetNativeClientBufferANDROID)
+
+#define EGLEW_ANDROID_get_native_client_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_get_native_client_buffer)
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+/* -------------------- EGL_ANDROID_image_native_buffer -------------------- */
+
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140
+
+#define EGLEW_ANDROID_image_native_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_image_native_buffer)
+
+#endif /* EGL_ANDROID_image_native_buffer */
+
+/* --------------------- EGL_ANDROID_native_fence_sync --------------------- */
+
+#ifndef EGL_ANDROID_native_fence_sync
+#define EGL_ANDROID_native_fence_sync 1
+
+#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+
+typedef EGLint ( * PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+
+#define eglDupNativeFenceFDANDROID EGLEW_GET_FUN(__eglewDupNativeFenceFDANDROID)
+
+#define EGLEW_ANDROID_native_fence_sync EGLEW_GET_VAR(__EGLEW_ANDROID_native_fence_sync)
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+/* --------------------- EGL_ANDROID_presentation_time --------------------- */
+
+#ifndef EGL_ANDROID_presentation_time
+#define EGL_ANDROID_presentation_time 1
+
+typedef EGLBoolean ( * PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+
+#define eglPresentationTimeANDROID EGLEW_GET_FUN(__eglewPresentationTimeANDROID)
+
+#define EGLEW_ANDROID_presentation_time EGLEW_GET_VAR(__EGLEW_ANDROID_presentation_time)
+
+#endif /* EGL_ANDROID_presentation_time */
+
+/* ------------------------- EGL_ANDROID_recordable ------------------------ */
+
+#ifndef EGL_ANDROID_recordable
+#define EGL_ANDROID_recordable 1
+
+#define EGL_RECORDABLE_ANDROID 0x3142
+
+#define EGLEW_ANDROID_recordable EGLEW_GET_VAR(__EGLEW_ANDROID_recordable)
+
+#endif /* EGL_ANDROID_recordable */
+
+/* ---------------- EGL_ANGLE_d3d_share_handle_client_buffer --------------- */
+
+#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
+#define EGL_ANGLE_d3d_share_handle_client_buffer 1
+
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+#define EGLEW_ANGLE_d3d_share_handle_client_buffer EGLEW_GET_VAR(__EGLEW_ANGLE_d3d_share_handle_client_buffer)
+
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+/* -------------------------- EGL_ANGLE_device_d3d ------------------------- */
+
+#ifndef EGL_ANGLE_device_d3d
+#define EGL_ANGLE_device_d3d 1
+
+#define EGL_D3D9_DEVICE_ANGLE 0x33A0
+#define EGL_D3D11_DEVICE_ANGLE 0x33A1
+
+#define EGLEW_ANGLE_device_d3d EGLEW_GET_VAR(__EGLEW_ANGLE_device_d3d)
+
+#endif /* EGL_ANGLE_device_d3d */
+
+/* -------------------- EGL_ANGLE_query_surface_pointer -------------------- */
+
+#ifndef EGL_ANGLE_query_surface_pointer
+#define EGL_ANGLE_query_surface_pointer 1
+
+typedef EGLBoolean ( * PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void** value);
+
+#define eglQuerySurfacePointerANGLE EGLEW_GET_FUN(__eglewQuerySurfacePointerANGLE)
+
+#define EGLEW_ANGLE_query_surface_pointer EGLEW_GET_VAR(__EGLEW_ANGLE_query_surface_pointer)
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+/* ------------- EGL_ANGLE_surface_d3d_texture_2d_share_handle ------------- */
+
+#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
+
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+#define EGLEW_ANGLE_surface_d3d_texture_2d_share_handle EGLEW_GET_VAR(__EGLEW_ANGLE_surface_d3d_texture_2d_share_handle)
+
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+/* ---------------------- EGL_ANGLE_sync_control_rate ---------------------- */
+
+#ifndef EGL_ANGLE_sync_control_rate
+#define EGL_ANGLE_sync_control_rate 1
+
+typedef EGLBoolean ( * PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint* numerator, EGLint* denominator);
+
+#define eglGetMscRateANGLE EGLEW_GET_FUN(__eglewGetMscRateANGLE)
+
+#define EGLEW_ANGLE_sync_control_rate EGLEW_GET_VAR(__EGLEW_ANGLE_sync_control_rate)
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+/* ---------------------- EGL_ANGLE_window_fixed_size ---------------------- */
+
+#ifndef EGL_ANGLE_window_fixed_size
+#define EGL_ANGLE_window_fixed_size 1
+
+#define EGL_FIXED_SIZE_ANGLE 0x3201
+
+#define EGLEW_ANGLE_window_fixed_size EGLEW_GET_VAR(__EGLEW_ANGLE_window_fixed_size)
+
+#endif /* EGL_ANGLE_window_fixed_size */
+
+/* -------------------------- EGL_ARM_image_format ------------------------- */
+
+#ifndef EGL_ARM_image_format
+#define EGL_ARM_image_format 1
+
+#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+
+#define EGLEW_ARM_image_format EGLEW_GET_VAR(__EGLEW_ARM_image_format)
+
+#endif /* EGL_ARM_image_format */
+
+/* --------------------- EGL_ARM_implicit_external_sync -------------------- */
+
+#ifndef EGL_ARM_implicit_external_sync
+#define EGL_ARM_implicit_external_sync 1
+
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+
+#define EGLEW_ARM_implicit_external_sync EGLEW_GET_VAR(__EGLEW_ARM_implicit_external_sync)
+
+#endif /* EGL_ARM_implicit_external_sync */
+
+/* ------------------- EGL_ARM_pixmap_multisample_discard ------------------ */
+
+#ifndef EGL_ARM_pixmap_multisample_discard
+#define EGL_ARM_pixmap_multisample_discard 1
+
+#define EGL_DISCARD_SAMPLES_ARM 0x3286
+
+#define EGLEW_ARM_pixmap_multisample_discard EGLEW_GET_VAR(__EGLEW_ARM_pixmap_multisample_discard)
+
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+/* ------------------------- EGL_EXT_bind_to_front ------------------------- */
+
+#ifndef EGL_EXT_bind_to_front
+#define EGL_EXT_bind_to_front 1
+
+#define EGL_FRONT_BUFFER_EXT 0x3464
+
+#define EGLEW_EXT_bind_to_front EGLEW_GET_VAR(__EGLEW_EXT_bind_to_front)
+
+#endif /* EGL_EXT_bind_to_front */
+
+/* --------------------------- EGL_EXT_buffer_age -------------------------- */
+
+#ifndef EGL_EXT_buffer_age
+#define EGL_EXT_buffer_age 1
+
+#define EGL_BUFFER_AGE_EXT 0x313D
+
+#define EGLEW_EXT_buffer_age EGLEW_GET_VAR(__EGLEW_EXT_buffer_age)
+
+#endif /* EGL_EXT_buffer_age */
+
+/* ----------------------- EGL_EXT_client_extensions ----------------------- */
+
+#ifndef EGL_EXT_client_extensions
+#define EGL_EXT_client_extensions 1
+
+#define EGLEW_EXT_client_extensions EGLEW_GET_VAR(__EGLEW_EXT_client_extensions)
+
+#endif /* EGL_EXT_client_extensions */
+
+/* -------------------------- EGL_EXT_client_sync -------------------------- */
+
+#ifndef EGL_EXT_client_sync
+#define EGL_EXT_client_sync 1
+
+#define EGL_SYNC_CLIENT_EXT 0x3364
+#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+
+typedef EGLBoolean ( * PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list);
+
+#define eglClientSignalSyncEXT EGLEW_GET_FUN(__eglewClientSignalSyncEXT)
+
+#define EGLEW_EXT_client_sync EGLEW_GET_VAR(__EGLEW_EXT_client_sync)
+
+#endif /* EGL_EXT_client_sync */
+
+/* --------------------------- EGL_EXT_compositor -------------------------- */
+
+#ifndef EGL_EXT_compositor
+#define EGL_EXT_compositor 1
+
+#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+#define EGL_EXTERNAL_REF_ID_EXT 0x3461
+#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+
+typedef EGLBoolean ( * PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint* context_attributes, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint* external_ref_ids, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint* window_attributes, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint* external_win_ids, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
+
+#define eglCompositorBindTexWindowEXT EGLEW_GET_FUN(__eglewCompositorBindTexWindowEXT)
+#define eglCompositorSetContextAttributesEXT EGLEW_GET_FUN(__eglewCompositorSetContextAttributesEXT)
+#define eglCompositorSetContextListEXT EGLEW_GET_FUN(__eglewCompositorSetContextListEXT)
+#define eglCompositorSetSizeEXT EGLEW_GET_FUN(__eglewCompositorSetSizeEXT)
+#define eglCompositorSetWindowAttributesEXT EGLEW_GET_FUN(__eglewCompositorSetWindowAttributesEXT)
+#define eglCompositorSetWindowListEXT EGLEW_GET_FUN(__eglewCompositorSetWindowListEXT)
+#define eglCompositorSwapPolicyEXT EGLEW_GET_FUN(__eglewCompositorSwapPolicyEXT)
+
+#define EGLEW_EXT_compositor EGLEW_GET_VAR(__EGLEW_EXT_compositor)
+
+#endif /* EGL_EXT_compositor */
+
+/* ---------------------- EGL_EXT_config_select_group ---------------------- */
+
+#ifndef EGL_EXT_config_select_group
+#define EGL_EXT_config_select_group 1
+
+#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+
+#define EGLEW_EXT_config_select_group EGLEW_GET_VAR(__EGLEW_EXT_config_select_group)
+
+#endif /* EGL_EXT_config_select_group */
+
+/* ------------------- EGL_EXT_create_context_robustness ------------------- */
+
+#ifndef EGL_EXT_create_context_robustness
+#define EGL_EXT_create_context_robustness 1
+
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+
+#define EGLEW_EXT_create_context_robustness EGLEW_GET_VAR(__EGLEW_EXT_create_context_robustness)
+
+#endif /* EGL_EXT_create_context_robustness */
+
+/* -------------------------- EGL_EXT_device_base -------------------------- */
+
+#ifndef EGL_EXT_device_base
+#define EGL_EXT_device_base 1
+
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+
+#define EGLEW_EXT_device_base EGLEW_GET_VAR(__EGLEW_EXT_device_base)
+
+#endif /* EGL_EXT_device_base */
+
+/* --------------------------- EGL_EXT_device_drm -------------------------- */
+
+#ifndef EGL_EXT_device_drm
+#define EGL_EXT_device_drm 1
+
+#define EGL_DRM_DEVICE_FILE_EXT 0x3233
+#define EGL_DRM_MASTER_FD_EXT 0x333C
+
+#define EGLEW_EXT_device_drm EGLEW_GET_VAR(__EGLEW_EXT_device_drm)
+
+#endif /* EGL_EXT_device_drm */
+
+/* --------------------- EGL_EXT_device_drm_render_node -------------------- */
+
+#ifndef EGL_EXT_device_drm_render_node
+#define EGL_EXT_device_drm_render_node 1
+
+#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+
+#define EGLEW_EXT_device_drm_render_node EGLEW_GET_VAR(__EGLEW_EXT_device_drm_render_node)
+
+#endif /* EGL_EXT_device_drm_render_node */
+
+/* ----------------------- EGL_EXT_device_enumeration ---------------------- */
+
+#ifndef EGL_EXT_device_enumeration
+#define EGL_EXT_device_enumeration 1
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT* devices, EGLint* num_devices);
+
+#define eglQueryDevicesEXT EGLEW_GET_FUN(__eglewQueryDevicesEXT)
+
+#define EGLEW_EXT_device_enumeration EGLEW_GET_VAR(__EGLEW_EXT_device_enumeration)
+
+#endif /* EGL_EXT_device_enumeration */
+
+/* ------------------------- EGL_EXT_device_openwf ------------------------- */
+
+#ifndef EGL_EXT_device_openwf
+#define EGL_EXT_device_openwf 1
+
+#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
+#define EGL_OPENWF_DEVICE_EXT 0x333D
+
+#define EGLEW_EXT_device_openwf EGLEW_GET_VAR(__EGLEW_EXT_device_openwf)
+
+#endif /* EGL_EXT_device_openwf */
+
+/* ---------------------- EGL_EXT_device_persistent_id --------------------- */
+
+#ifndef EGL_EXT_device_persistent_id
+#define EGL_EXT_device_persistent_id 1
+
+#define EGL_DEVICE_UUID_EXT 0x335C
+#define EGL_DRIVER_UUID_EXT 0x335D
+#define EGL_DRIVER_NAME_EXT 0x335E
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void* value, EGLint* size);
+
+#define eglQueryDeviceBinaryEXT EGLEW_GET_FUN(__eglewQueryDeviceBinaryEXT)
+
+#define EGLEW_EXT_device_persistent_id EGLEW_GET_VAR(__EGLEW_EXT_device_persistent_id)
+
+#endif /* EGL_EXT_device_persistent_id */
+
+/* -------------------------- EGL_EXT_device_query ------------------------- */
+
+#ifndef EGL_EXT_device_query
+#define EGL_EXT_device_query 1
+
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib* value);
+
+#define eglQueryDeviceAttribEXT EGLEW_GET_FUN(__eglewQueryDeviceAttribEXT)
+#define eglQueryDeviceStringEXT EGLEW_GET_FUN(__eglewQueryDeviceStringEXT)
+#define eglQueryDisplayAttribEXT EGLEW_GET_FUN(__eglewQueryDisplayAttribEXT)
+
+#define EGLEW_EXT_device_query EGLEW_GET_VAR(__EGLEW_EXT_device_query)
+
+#endif /* EGL_EXT_device_query */
+
+/* ----------------------- EGL_EXT_device_query_name ----------------------- */
+
+#ifndef EGL_EXT_device_query_name
+#define EGL_EXT_device_query_name 1
+
+#define EGL_RENDERER_EXT 0x335F
+
+#define EGLEW_EXT_device_query_name EGLEW_GET_VAR(__EGLEW_EXT_device_query_name)
+
+#endif /* EGL_EXT_device_query_name */
+
+/* ------------------------ EGL_EXT_explicit_device ------------------------ */
+
+#ifndef EGL_EXT_explicit_device
+#define EGL_EXT_explicit_device 1
+
+#define EGL_DEVICE_EXT 0x322C
+
+#define EGLEW_EXT_explicit_device EGLEW_GET_VAR(__EGLEW_EXT_explicit_device)
+
+#endif /* EGL_EXT_explicit_device */
+
+/* ------------------ EGL_EXT_gl_colorspace_bt2020_linear ------------------ */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_linear
+#define EGL_EXT_gl_colorspace_bt2020_linear 1
+
+#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+
+#define EGLEW_EXT_gl_colorspace_bt2020_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_bt2020_linear)
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+/* -------------------- EGL_EXT_gl_colorspace_bt2020_pq -------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_pq
+#define EGL_EXT_gl_colorspace_bt2020_pq 1
+
+#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+
+#define EGLEW_EXT_gl_colorspace_bt2020_pq EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_bt2020_pq)
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+/* -------------------- EGL_EXT_gl_colorspace_display_p3 ------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3
+#define EGL_EXT_gl_colorspace_display_p3 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+
+#define EGLEW_EXT_gl_colorspace_display_p3 EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+/* ---------------- EGL_EXT_gl_colorspace_display_p3_linear ---------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_linear
+#define EGL_EXT_gl_colorspace_display_p3_linear 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+
+#define EGLEW_EXT_gl_colorspace_display_p3_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3_linear)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+/* -------------- EGL_EXT_gl_colorspace_display_p3_passthrough ------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
+#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+
+#define EGLEW_EXT_gl_colorspace_display_p3_passthrough EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3_passthrough)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+/* ---------------------- EGL_EXT_gl_colorspace_scrgb ---------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb
+#define EGL_EXT_gl_colorspace_scrgb 1
+
+#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+
+#define EGLEW_EXT_gl_colorspace_scrgb EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_scrgb)
+
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+/* ------------------- EGL_EXT_gl_colorspace_scrgb_linear ------------------ */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb_linear
+#define EGL_EXT_gl_colorspace_scrgb_linear 1
+
+#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+
+#define EGLEW_EXT_gl_colorspace_scrgb_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_scrgb_linear)
+
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+/* ---------------------- EGL_EXT_image_dma_buf_import --------------------- */
+
+#ifndef EGL_EXT_image_dma_buf_import
+#define EGL_EXT_image_dma_buf_import 1
+
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+#define EGL_ITU_REC601_EXT 0x327F
+#define EGL_ITU_REC709_EXT 0x3280
+#define EGL_ITU_REC2020_EXT 0x3281
+#define EGL_YUV_FULL_RANGE_EXT 0x3282
+#define EGL_YUV_NARROW_RANGE_EXT 0x3283
+#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+
+#define EGLEW_EXT_image_dma_buf_import EGLEW_GET_VAR(__EGLEW_EXT_image_dma_buf_import)
+
+#endif /* EGL_EXT_image_dma_buf_import */
+
+/* ----------------- EGL_EXT_image_dma_buf_import_modifiers ---------------- */
+
+#ifndef EGL_EXT_image_dma_buf_import_modifiers
+#define EGL_EXT_image_dma_buf_import_modifiers 1
+
+#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+
+typedef EGLBoolean ( * PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint* formats, EGLint* num_formats);
+typedef EGLBoolean ( * PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR* modifiers, EGLBoolean* external_only, EGLint* num_modifiers);
+
+#define eglQueryDmaBufFormatsEXT EGLEW_GET_FUN(__eglewQueryDmaBufFormatsEXT)
+#define eglQueryDmaBufModifiersEXT EGLEW_GET_FUN(__eglewQueryDmaBufModifiersEXT)
+
+#define EGLEW_EXT_image_dma_buf_import_modifiers EGLEW_GET_VAR(__EGLEW_EXT_image_dma_buf_import_modifiers)
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+/* ---------------------- EGL_EXT_image_gl_colorspace ---------------------- */
+
+#ifndef EGL_EXT_image_gl_colorspace
+#define EGL_EXT_image_gl_colorspace 1
+
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+
+#define EGLEW_EXT_image_gl_colorspace EGLEW_GET_VAR(__EGLEW_EXT_image_gl_colorspace)
+
+#endif /* EGL_EXT_image_gl_colorspace */
+
+/* ------------------ EGL_EXT_image_implicit_sync_control ------------------ */
+
+#ifndef EGL_EXT_image_implicit_sync_control
+#define EGL_EXT_image_implicit_sync_control 1
+
+#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+
+#define EGLEW_EXT_image_implicit_sync_control EGLEW_GET_VAR(__EGLEW_EXT_image_implicit_sync_control)
+
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+/* ------------------------ EGL_EXT_multiview_window ----------------------- */
+
+#ifndef EGL_EXT_multiview_window
+#define EGL_EXT_multiview_window 1
+
+#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+
+#define EGLEW_EXT_multiview_window EGLEW_GET_VAR(__EGLEW_EXT_multiview_window)
+
+#endif /* EGL_EXT_multiview_window */
+
+/* -------------------------- EGL_EXT_output_base -------------------------- */
+
+#ifndef EGL_EXT_output_base
+#define EGL_EXT_output_base 1
+
+#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
+#define EGL_SWAP_INTERVAL_EXT 0x322F
+
+typedef EGLBoolean ( * PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputLayerEXT* layers, EGLint max_layers, EGLint* num_layers);
+typedef EGLBoolean ( * PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputPortEXT* ports, EGLint max_ports, EGLint* num_ports);
+typedef EGLBoolean ( * PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+
+#define eglGetOutputLayersEXT EGLEW_GET_FUN(__eglewGetOutputLayersEXT)
+#define eglGetOutputPortsEXT EGLEW_GET_FUN(__eglewGetOutputPortsEXT)
+#define eglOutputLayerAttribEXT EGLEW_GET_FUN(__eglewOutputLayerAttribEXT)
+#define eglOutputPortAttribEXT EGLEW_GET_FUN(__eglewOutputPortAttribEXT)
+#define eglQueryOutputLayerAttribEXT EGLEW_GET_FUN(__eglewQueryOutputLayerAttribEXT)
+#define eglQueryOutputLayerStringEXT EGLEW_GET_FUN(__eglewQueryOutputLayerStringEXT)
+#define eglQueryOutputPortAttribEXT EGLEW_GET_FUN(__eglewQueryOutputPortAttribEXT)
+#define eglQueryOutputPortStringEXT EGLEW_GET_FUN(__eglewQueryOutputPortStringEXT)
+
+#define EGLEW_EXT_output_base EGLEW_GET_VAR(__EGLEW_EXT_output_base)
+
+#endif /* EGL_EXT_output_base */
+
+/* --------------------------- EGL_EXT_output_drm -------------------------- */
+
+#ifndef EGL_EXT_output_drm
+#define EGL_EXT_output_drm 1
+
+#define EGL_DRM_CRTC_EXT 0x3234
+#define EGL_DRM_PLANE_EXT 0x3235
+#define EGL_DRM_CONNECTOR_EXT 0x3236
+
+#define EGLEW_EXT_output_drm EGLEW_GET_VAR(__EGLEW_EXT_output_drm)
+
+#endif /* EGL_EXT_output_drm */
+
+/* ------------------------- EGL_EXT_output_openwf ------------------------- */
+
+#ifndef EGL_EXT_output_openwf
+#define EGL_EXT_output_openwf 1
+
+#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+#define EGL_OPENWF_PORT_ID_EXT 0x3239
+
+#define EGLEW_EXT_output_openwf EGLEW_GET_VAR(__EGLEW_EXT_output_openwf)
+
+#endif /* EGL_EXT_output_openwf */
+
+/* ----------------------- EGL_EXT_pixel_format_float ---------------------- */
+
+#ifndef EGL_EXT_pixel_format_float
+#define EGL_EXT_pixel_format_float 1
+
+#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+
+#define EGLEW_EXT_pixel_format_float EGLEW_GET_VAR(__EGLEW_EXT_pixel_format_float)
+
+#endif /* EGL_EXT_pixel_format_float */
+
+/* ------------------------- EGL_EXT_platform_base ------------------------- */
+
+#ifndef EGL_EXT_platform_base
+#define EGL_EXT_platform_base 1
+
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const EGLint* attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void* native_window, const EGLint* attrib_list);
+typedef EGLDisplay ( * PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void* native_display, const EGLint* attrib_list);
+
+#define eglCreatePlatformPixmapSurfaceEXT EGLEW_GET_FUN(__eglewCreatePlatformPixmapSurfaceEXT)
+#define eglCreatePlatformWindowSurfaceEXT EGLEW_GET_FUN(__eglewCreatePlatformWindowSurfaceEXT)
+#define eglGetPlatformDisplayEXT EGLEW_GET_FUN(__eglewGetPlatformDisplayEXT)
+
+#define EGLEW_EXT_platform_base EGLEW_GET_VAR(__EGLEW_EXT_platform_base)
+
+#endif /* EGL_EXT_platform_base */
+
+/* ------------------------ EGL_EXT_platform_device ------------------------ */
+
+#ifndef EGL_EXT_platform_device
+#define EGL_EXT_platform_device 1
+
+#define EGL_PLATFORM_DEVICE_EXT 0x313F
+
+#define EGLEW_EXT_platform_device EGLEW_GET_VAR(__EGLEW_EXT_platform_device)
+
+#endif /* EGL_EXT_platform_device */
+
+/* ------------------------ EGL_EXT_platform_wayland ----------------------- */
+
+#ifndef EGL_EXT_platform_wayland
+#define EGL_EXT_platform_wayland 1
+
+#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
+
+#define EGLEW_EXT_platform_wayland EGLEW_GET_VAR(__EGLEW_EXT_platform_wayland)
+
+#endif /* EGL_EXT_platform_wayland */
+
+/* -------------------------- EGL_EXT_platform_x11 ------------------------- */
+
+#ifndef EGL_EXT_platform_x11
+#define EGL_EXT_platform_x11 1
+
+#define EGL_PLATFORM_X11_EXT 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+
+#define EGLEW_EXT_platform_x11 EGLEW_GET_VAR(__EGLEW_EXT_platform_x11)
+
+#endif /* EGL_EXT_platform_x11 */
+
+/* -------------------------- EGL_EXT_platform_xcb ------------------------- */
+
+#ifndef EGL_EXT_platform_xcb
+#define EGL_EXT_platform_xcb 1
+
+#define EGL_PLATFORM_XCB_EXT 0x31DC
+#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+
+#define EGLEW_EXT_platform_xcb EGLEW_GET_VAR(__EGLEW_EXT_platform_xcb)
+
+#endif /* EGL_EXT_platform_xcb */
+
+/* ------------------------- EGL_EXT_present_opaque ------------------------ */
+
+#ifndef EGL_EXT_present_opaque
+#define EGL_EXT_present_opaque 1
+
+#define EGL_PRESENT_OPAQUE_EXT 0x31DF
+
+#define EGLEW_EXT_present_opaque EGLEW_GET_VAR(__EGLEW_EXT_present_opaque)
+
+#endif /* EGL_EXT_present_opaque */
+
+/* ----------------------- EGL_EXT_protected_content ----------------------- */
+
+#ifndef EGL_EXT_protected_content
+#define EGL_EXT_protected_content 1
+
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+#define EGLEW_EXT_protected_content EGLEW_GET_VAR(__EGLEW_EXT_protected_content)
+
+#endif /* EGL_EXT_protected_content */
+
+/* ----------------------- EGL_EXT_protected_surface ----------------------- */
+
+#ifndef EGL_EXT_protected_surface
+#define EGL_EXT_protected_surface 1
+
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+#define EGLEW_EXT_protected_surface EGLEW_GET_VAR(__EGLEW_EXT_protected_surface)
+
+#endif /* EGL_EXT_protected_surface */
+
+/* ------------------- EGL_EXT_stream_consumer_egloutput ------------------- */
+
+#ifndef EGL_EXT_stream_consumer_egloutput
+#define EGL_EXT_stream_consumer_egloutput 1
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+
+#define eglStreamConsumerOutputEXT EGLEW_GET_FUN(__eglewStreamConsumerOutputEXT)
+
+#define EGLEW_EXT_stream_consumer_egloutput EGLEW_GET_VAR(__EGLEW_EXT_stream_consumer_egloutput)
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+/* ------------------- EGL_EXT_surface_CTA861_3_metadata ------------------- */
+
+#ifndef EGL_EXT_surface_CTA861_3_metadata
+#define EGL_EXT_surface_CTA861_3_metadata 1
+
+#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+
+#define EGLEW_EXT_surface_CTA861_3_metadata EGLEW_GET_VAR(__EGLEW_EXT_surface_CTA861_3_metadata)
+
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+/* ------------------- EGL_EXT_surface_SMPTE2086_metadata ------------------ */
+
+#ifndef EGL_EXT_surface_SMPTE2086_metadata
+#define EGL_EXT_surface_SMPTE2086_metadata 1
+
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+#define EGL_METADATA_SCALING_EXT 50000
+
+#define EGLEW_EXT_surface_SMPTE2086_metadata EGLEW_GET_VAR(__EGLEW_EXT_surface_SMPTE2086_metadata)
+
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+/* ---------------------- EGL_EXT_surface_compression ---------------------- */
+
+#ifndef EGL_EXT_surface_compression
+#define EGL_EXT_surface_compression 1
+
+#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+
+typedef EGLBoolean ( * PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib* attrib_list, EGLint* rates, EGLint rate_size, EGLint* num_rates);
+
+#define eglQuerySupportedCompressionRatesEXT EGLEW_GET_FUN(__eglewQuerySupportedCompressionRatesEXT)
+
+#define EGLEW_EXT_surface_compression EGLEW_GET_VAR(__EGLEW_EXT_surface_compression)
+
+#endif /* EGL_EXT_surface_compression */
+
+/* -------------------- EGL_EXT_swap_buffers_with_damage ------------------- */
+
+#ifndef EGL_EXT_swap_buffers_with_damage
+#define EGL_EXT_swap_buffers_with_damage 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects);
+
+#define eglSwapBuffersWithDamageEXT EGLEW_GET_FUN(__eglewSwapBuffersWithDamageEXT)
+
+#define EGLEW_EXT_swap_buffers_with_damage EGLEW_GET_VAR(__EGLEW_EXT_swap_buffers_with_damage)
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+/* --------------------------- EGL_EXT_sync_reuse -------------------------- */
+
+#ifndef EGL_EXT_sync_reuse
+#define EGL_EXT_sync_reuse 1
+
+typedef EGLBoolean ( * PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list);
+
+#define eglUnsignalSyncEXT EGLEW_GET_FUN(__eglewUnsignalSyncEXT)
+
+#define EGLEW_EXT_sync_reuse EGLEW_GET_VAR(__EGLEW_EXT_sync_reuse)
+
+#endif /* EGL_EXT_sync_reuse */
+
+/* -------------------------- EGL_EXT_yuv_surface -------------------------- */
+
+#ifndef EGL_EXT_yuv_surface
+#define EGL_EXT_yuv_surface 1
+
+#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 EGLEW_EXT_yuv_surface EGLEW_GET_VAR(__EGLEW_EXT_yuv_surface)
+
+#endif /* EGL_EXT_yuv_surface */
+
+/* -------------------------- EGL_HI_clientpixmap -------------------------- */
+
+#ifndef EGL_HI_clientpixmap
+#define EGL_HI_clientpixmap 1
+
+#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+
+typedef EGLSurface ( * PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
+
+#define eglCreatePixmapSurfaceHI EGLEW_GET_FUN(__eglewCreatePixmapSurfaceHI)
+
+#define EGLEW_HI_clientpixmap EGLEW_GET_VAR(__EGLEW_HI_clientpixmap)
+
+#endif /* EGL_HI_clientpixmap */
+
+/* -------------------------- EGL_HI_colorformats -------------------------- */
+
+#ifndef EGL_HI_colorformats
+#define EGL_HI_colorformats 1
+
+#define EGL_COLOR_FORMAT_HI 0x8F70
+#define EGL_COLOR_RGB_HI 0x8F71
+#define EGL_COLOR_RGBA_HI 0x8F72
+#define EGL_COLOR_ARGB_HI 0x8F73
+
+#define EGLEW_HI_colorformats EGLEW_GET_VAR(__EGLEW_HI_colorformats)
+
+#endif /* EGL_HI_colorformats */
+
+/* ------------------------ EGL_IMG_context_priority ----------------------- */
+
+#ifndef EGL_IMG_context_priority
+#define EGL_IMG_context_priority 1
+
+#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+
+#define EGLEW_IMG_context_priority EGLEW_GET_VAR(__EGLEW_IMG_context_priority)
+
+#endif /* EGL_IMG_context_priority */
+
+/* ---------------------- EGL_IMG_image_plane_attribs ---------------------- */
+
+#ifndef EGL_IMG_image_plane_attribs
+#define EGL_IMG_image_plane_attribs 1
+
+#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+
+#define EGLEW_IMG_image_plane_attribs EGLEW_GET_VAR(__EGLEW_IMG_image_plane_attribs)
+
+#endif /* EGL_IMG_image_plane_attribs */
+
+/* ---------------------------- EGL_KHR_cl_event --------------------------- */
+
+#ifndef EGL_KHR_cl_event
+#define EGL_KHR_cl_event 1
+
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+#define EGLEW_KHR_cl_event EGLEW_GET_VAR(__EGLEW_KHR_cl_event)
+
+#endif /* EGL_KHR_cl_event */
+
+/* --------------------------- EGL_KHR_cl_event2 --------------------------- */
+
+#ifndef EGL_KHR_cl_event2
+#define EGL_KHR_cl_event2 1
+
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+typedef EGLSyncKHR ( * PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR* attrib_list);
+
+#define eglCreateSync64KHR EGLEW_GET_FUN(__eglewCreateSync64KHR)
+
+#define EGLEW_KHR_cl_event2 EGLEW_GET_VAR(__EGLEW_KHR_cl_event2)
+
+#endif /* EGL_KHR_cl_event2 */
+
+/* ----------------- EGL_KHR_client_get_all_proc_addresses ----------------- */
+
+#ifndef EGL_KHR_client_get_all_proc_addresses
+#define EGL_KHR_client_get_all_proc_addresses 1
+
+#define EGLEW_KHR_client_get_all_proc_addresses EGLEW_GET_VAR(__EGLEW_KHR_client_get_all_proc_addresses)
+
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+/* ------------------------- EGL_KHR_config_attribs ------------------------ */
+
+#ifndef EGL_KHR_config_attribs
+#define EGL_KHR_config_attribs 1
+
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+#define EGL_CONFORMANT_KHR 0x3042
+
+#define EGLEW_KHR_config_attribs EGLEW_GET_VAR(__EGLEW_KHR_config_attribs)
+
+#endif /* EGL_KHR_config_attribs */
+
+/* --------------------- EGL_KHR_context_flush_control --------------------- */
+
+#ifndef EGL_KHR_context_flush_control
+#define EGL_KHR_context_flush_control 1
+
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
+
+#define EGLEW_KHR_context_flush_control EGLEW_GET_VAR(__EGLEW_KHR_context_flush_control)
+
+#endif /* EGL_KHR_context_flush_control */
+
+/* ------------------------- EGL_KHR_create_context ------------------------ */
+
+#ifndef EGL_KHR_create_context
+#define EGL_KHR_create_context 1
+
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
+#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+#define EGL_CONTEXT_FLAGS_KHR 0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+
+#define EGLEW_KHR_create_context EGLEW_GET_VAR(__EGLEW_KHR_create_context)
+
+#endif /* EGL_KHR_create_context */
+
+/* -------------------- EGL_KHR_create_context_no_error -------------------- */
+
+#ifndef EGL_KHR_create_context_no_error
+#define EGL_KHR_create_context_no_error 1
+
+#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+
+#define EGLEW_KHR_create_context_no_error EGLEW_GET_VAR(__EGLEW_KHR_create_context_no_error)
+
+#endif /* EGL_KHR_create_context_no_error */
+
+/* ----------------------------- EGL_KHR_debug ----------------------------- */
+
+#ifndef EGL_KHR_debug
+#define EGL_KHR_debug 1
+
+#define EGL_OBJECT_THREAD_KHR 0x33B0
+#define EGL_OBJECT_DISPLAY_KHR 0x33B1
+#define EGL_OBJECT_CONTEXT_KHR 0x33B2
+#define EGL_OBJECT_SURFACE_KHR 0x33B3
+#define EGL_OBJECT_IMAGE_KHR 0x33B4
+#define EGL_OBJECT_SYNC_KHR 0x33B5
+#define EGL_OBJECT_STREAM_KHR 0x33B6
+#define EGL_DEBUG_CALLBACK_KHR 0x33B8
+#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
+#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
+
+typedef EGLint ( * PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib* attrib_list);
+typedef EGLint ( * PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+typedef EGLBoolean ( * PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib* value);
+
+#define eglDebugMessageControlKHR EGLEW_GET_FUN(__eglewDebugMessageControlKHR)
+#define eglLabelObjectKHR EGLEW_GET_FUN(__eglewLabelObjectKHR)
+#define eglQueryDebugKHR EGLEW_GET_FUN(__eglewQueryDebugKHR)
+
+#define EGLEW_KHR_debug EGLEW_GET_VAR(__EGLEW_KHR_debug)
+
+#endif /* EGL_KHR_debug */
+
+/* ----------------------- EGL_KHR_display_reference ----------------------- */
+
+#ifndef EGL_KHR_display_reference
+#define EGL_KHR_display_reference 1
+
+#define EGL_TRACK_REFERENCES_KHR 0x3352
+
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib* value);
+
+#define eglQueryDisplayAttribKHR EGLEW_GET_FUN(__eglewQueryDisplayAttribKHR)
+
+#define EGLEW_KHR_display_reference EGLEW_GET_VAR(__EGLEW_KHR_display_reference)
+
+#endif /* EGL_KHR_display_reference */
+
+/* --------------------------- EGL_KHR_fence_sync -------------------------- */
+
+#ifndef EGL_KHR_fence_sync
+#define EGL_KHR_fence_sync 1
+
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SYNC_FENCE_KHR 0x30F9
+
+#define EGLEW_KHR_fence_sync EGLEW_GET_VAR(__EGLEW_KHR_fence_sync)
+
+#endif /* EGL_KHR_fence_sync */
+
+/* --------------------- EGL_KHR_get_all_proc_addresses -------------------- */
+
+#ifndef EGL_KHR_get_all_proc_addresses
+#define EGL_KHR_get_all_proc_addresses 1
+
+#define EGLEW_KHR_get_all_proc_addresses EGLEW_GET_VAR(__EGLEW_KHR_get_all_proc_addresses)
+
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+/* ------------------------- EGL_KHR_gl_colorspace ------------------------- */
+
+#ifndef EGL_KHR_gl_colorspace
+#define EGL_KHR_gl_colorspace 1
+
+#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+#define EGL_GL_COLORSPACE_KHR 0x309D
+
+#define EGLEW_KHR_gl_colorspace EGLEW_GET_VAR(__EGLEW_KHR_gl_colorspace)
+
+#endif /* EGL_KHR_gl_colorspace */
+
+/* --------------------- EGL_KHR_gl_renderbuffer_image --------------------- */
+
+#ifndef EGL_KHR_gl_renderbuffer_image
+#define EGL_KHR_gl_renderbuffer_image 1
+
+#define EGL_GL_RENDERBUFFER_KHR 0x30B9
+
+#define EGLEW_KHR_gl_renderbuffer_image EGLEW_GET_VAR(__EGLEW_KHR_gl_renderbuffer_image)
+
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+/* ---------------------- EGL_KHR_gl_texture_2D_image ---------------------- */
+
+#ifndef EGL_KHR_gl_texture_2D_image
+#define EGL_KHR_gl_texture_2D_image 1
+
+#define EGL_GL_TEXTURE_2D_KHR 0x30B1
+#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+
+#define EGLEW_KHR_gl_texture_2D_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_2D_image)
+
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+/* ---------------------- EGL_KHR_gl_texture_3D_image ---------------------- */
+
+#ifndef EGL_KHR_gl_texture_3D_image
+#define EGL_KHR_gl_texture_3D_image 1
+
+#define EGL_GL_TEXTURE_3D_KHR 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+
+#define EGLEW_KHR_gl_texture_3D_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_3D_image)
+
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+/* -------------------- EGL_KHR_gl_texture_cubemap_image ------------------- */
+
+#ifndef EGL_KHR_gl_texture_cubemap_image
+#define EGL_KHR_gl_texture_cubemap_image 1
+
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+
+#define EGLEW_KHR_gl_texture_cubemap_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_cubemap_image)
+
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+/* ----------------------------- EGL_KHR_image ----------------------------- */
+
+#ifndef EGL_KHR_image
+#define EGL_KHR_image 1
+
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+typedef EGLImageKHR ( * PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
+
+#define eglCreateImageKHR EGLEW_GET_FUN(__eglewCreateImageKHR)
+#define eglDestroyImageKHR EGLEW_GET_FUN(__eglewDestroyImageKHR)
+
+#define EGLEW_KHR_image EGLEW_GET_VAR(__EGLEW_KHR_image)
+
+#endif /* EGL_KHR_image */
+
+/* --------------------------- EGL_KHR_image_base -------------------------- */
+
+#ifndef EGL_KHR_image_base
+#define EGL_KHR_image_base 1
+
+#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+
+#define EGLEW_KHR_image_base EGLEW_GET_VAR(__EGLEW_KHR_image_base)
+
+#endif /* EGL_KHR_image_base */
+
+/* -------------------------- EGL_KHR_image_pixmap ------------------------- */
+
+#ifndef EGL_KHR_image_pixmap
+#define EGL_KHR_image_pixmap 1
+
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+#define EGLEW_KHR_image_pixmap EGLEW_GET_VAR(__EGLEW_KHR_image_pixmap)
+
+#endif /* EGL_KHR_image_pixmap */
+
+/* -------------------------- EGL_KHR_lock_surface ------------------------- */
+
+#ifndef EGL_KHR_lock_surface
+#define EGL_KHR_lock_surface 1
+
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#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
+
+typedef EGLBoolean ( * PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
+
+#define eglLockSurfaceKHR EGLEW_GET_FUN(__eglewLockSurfaceKHR)
+#define eglUnlockSurfaceKHR EGLEW_GET_FUN(__eglewUnlockSurfaceKHR)
+
+#define EGLEW_KHR_lock_surface EGLEW_GET_VAR(__EGLEW_KHR_lock_surface)
+
+#endif /* EGL_KHR_lock_surface */
+
+/* ------------------------- EGL_KHR_lock_surface2 ------------------------- */
+
+#ifndef EGL_KHR_lock_surface2
+#define EGL_KHR_lock_surface2 1
+
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+#define EGLEW_KHR_lock_surface2 EGLEW_GET_VAR(__EGLEW_KHR_lock_surface2)
+
+#endif /* EGL_KHR_lock_surface2 */
+
+/* ------------------------- EGL_KHR_lock_surface3 ------------------------- */
+
+#ifndef EGL_KHR_lock_surface3
+#define EGL_KHR_lock_surface3 1
+
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#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_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+typedef EGLBoolean ( * PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value);
+
+#define eglQuerySurface64KHR EGLEW_GET_FUN(__eglewQuerySurface64KHR)
+
+#define EGLEW_KHR_lock_surface3 EGLEW_GET_VAR(__EGLEW_KHR_lock_surface3)
+
+#endif /* EGL_KHR_lock_surface3 */
+
+/* --------------------- EGL_KHR_mutable_render_buffer --------------------- */
+
+#ifndef EGL_KHR_mutable_render_buffer
+#define EGL_KHR_mutable_render_buffer 1
+
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
+
+#define EGLEW_KHR_mutable_render_buffer EGLEW_GET_VAR(__EGLEW_KHR_mutable_render_buffer)
+
+#endif /* EGL_KHR_mutable_render_buffer */
+
+/* ----------------------- EGL_KHR_no_config_context ----------------------- */
+
+#ifndef EGL_KHR_no_config_context
+#define EGL_KHR_no_config_context 1
+
+#define EGLEW_KHR_no_config_context EGLEW_GET_VAR(__EGLEW_KHR_no_config_context)
+
+#endif /* EGL_KHR_no_config_context */
+
+/* ------------------------- EGL_KHR_partial_update ------------------------ */
+
+#ifndef EGL_KHR_partial_update
+#define EGL_KHR_partial_update 1
+
+#define EGL_BUFFER_AGE_KHR 0x313D
+
+typedef EGLBoolean ( * PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects);
+
+#define eglSetDamageRegionKHR EGLEW_GET_FUN(__eglewSetDamageRegionKHR)
+
+#define EGLEW_KHR_partial_update EGLEW_GET_VAR(__EGLEW_KHR_partial_update)
+
+#endif /* EGL_KHR_partial_update */
+
+/* ------------------------ EGL_KHR_platform_android ----------------------- */
+
+#ifndef EGL_KHR_platform_android
+#define EGL_KHR_platform_android 1
+
+#define EGL_PLATFORM_ANDROID_KHR 0x3141
+
+#define EGLEW_KHR_platform_android EGLEW_GET_VAR(__EGLEW_KHR_platform_android)
+
+#endif /* EGL_KHR_platform_android */
+
+/* -------------------------- EGL_KHR_platform_gbm ------------------------- */
+
+#ifndef EGL_KHR_platform_gbm
+#define EGL_KHR_platform_gbm 1
+
+#define EGL_PLATFORM_GBM_KHR 0x31D7
+
+#define EGLEW_KHR_platform_gbm EGLEW_GET_VAR(__EGLEW_KHR_platform_gbm)
+
+#endif /* EGL_KHR_platform_gbm */
+
+/* ------------------------ EGL_KHR_platform_wayland ----------------------- */
+
+#ifndef EGL_KHR_platform_wayland
+#define EGL_KHR_platform_wayland 1
+
+#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
+
+#define EGLEW_KHR_platform_wayland EGLEW_GET_VAR(__EGLEW_KHR_platform_wayland)
+
+#endif /* EGL_KHR_platform_wayland */
+
+/* -------------------------- EGL_KHR_platform_x11 ------------------------- */
+
+#ifndef EGL_KHR_platform_x11
+#define EGL_KHR_platform_x11 1
+
+#define EGL_PLATFORM_X11_KHR 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+
+#define EGLEW_KHR_platform_x11 EGLEW_GET_VAR(__EGLEW_KHR_platform_x11)
+
+#endif /* EGL_KHR_platform_x11 */
+
+/* ------------------------- EGL_KHR_reusable_sync ------------------------- */
+
+#ifndef EGL_KHR_reusable_sync
+#define EGL_KHR_reusable_sync 1
+
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_REUSABLE_KHR 0x30FA
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+typedef EGLSyncKHR ( * PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+
+#define eglClientWaitSyncKHR EGLEW_GET_FUN(__eglewClientWaitSyncKHR)
+#define eglCreateSyncKHR EGLEW_GET_FUN(__eglewCreateSyncKHR)
+#define eglDestroySyncKHR EGLEW_GET_FUN(__eglewDestroySyncKHR)
+#define eglGetSyncAttribKHR EGLEW_GET_FUN(__eglewGetSyncAttribKHR)
+#define eglSignalSyncKHR EGLEW_GET_FUN(__eglewSignalSyncKHR)
+
+#define EGLEW_KHR_reusable_sync EGLEW_GET_VAR(__EGLEW_KHR_reusable_sync)
+
+#endif /* EGL_KHR_reusable_sync */
+
+/* ----------------------------- EGL_KHR_stream ---------------------------- */
+
+#ifndef EGL_KHR_stream
+#define EGL_KHR_stream 1
+
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_PRODUCER_FRAME_KHR 0x3212
+#define EGL_CONSUMER_FRAME_KHR 0x3213
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
+#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+#define EGL_BAD_STREAM_KHR 0x321B
+#define EGL_BAD_STATE_KHR 0x321C
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR* value);
+typedef EGLBoolean ( * PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+
+#define eglCreateStreamKHR EGLEW_GET_FUN(__eglewCreateStreamKHR)
+#define eglDestroyStreamKHR EGLEW_GET_FUN(__eglewDestroyStreamKHR)
+#define eglQueryStreamKHR EGLEW_GET_FUN(__eglewQueryStreamKHR)
+#define eglQueryStreamu64KHR EGLEW_GET_FUN(__eglewQueryStreamu64KHR)
+#define eglStreamAttribKHR EGLEW_GET_FUN(__eglewStreamAttribKHR)
+
+#define EGLEW_KHR_stream EGLEW_GET_VAR(__EGLEW_KHR_stream)
+
+#endif /* EGL_KHR_stream */
+
+/* ------------------------- EGL_KHR_stream_attrib ------------------------- */
+
+#ifndef EGL_KHR_stream_attrib
+#define EGL_KHR_stream_attrib 1
+
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib* value);
+typedef EGLBoolean ( * PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+
+#define eglCreateStreamAttribKHR EGLEW_GET_FUN(__eglewCreateStreamAttribKHR)
+#define eglQueryStreamAttribKHR EGLEW_GET_FUN(__eglewQueryStreamAttribKHR)
+#define eglSetStreamAttribKHR EGLEW_GET_FUN(__eglewSetStreamAttribKHR)
+#define eglStreamConsumerAcquireAttribKHR EGLEW_GET_FUN(__eglewStreamConsumerAcquireAttribKHR)
+#define eglStreamConsumerReleaseAttribKHR EGLEW_GET_FUN(__eglewStreamConsumerReleaseAttribKHR)
+
+#define EGLEW_KHR_stream_attrib EGLEW_GET_VAR(__EGLEW_KHR_stream_attrib)
+
+#endif /* EGL_KHR_stream_attrib */
+
+/* ------------------- EGL_KHR_stream_consumer_gltexture ------------------- */
+
+#ifndef EGL_KHR_stream_consumer_gltexture
+#define EGL_KHR_stream_consumer_gltexture 1
+
+#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglStreamConsumerAcquireKHR EGLEW_GET_FUN(__eglewStreamConsumerAcquireKHR)
+#define eglStreamConsumerGLTextureExternalKHR EGLEW_GET_FUN(__eglewStreamConsumerGLTextureExternalKHR)
+#define eglStreamConsumerReleaseKHR EGLEW_GET_FUN(__eglewStreamConsumerReleaseKHR)
+
+#define EGLEW_KHR_stream_consumer_gltexture EGLEW_GET_VAR(__EGLEW_KHR_stream_consumer_gltexture)
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+/* -------------------- EGL_KHR_stream_cross_process_fd -------------------- */
+
+#ifndef EGL_KHR_stream_cross_process_fd
+#define EGL_KHR_stream_cross_process_fd 1
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+typedef EGLNativeFileDescriptorKHR ( * PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglCreateStreamFromFileDescriptorKHR EGLEW_GET_FUN(__eglewCreateStreamFromFileDescriptorKHR)
+#define eglGetStreamFileDescriptorKHR EGLEW_GET_FUN(__eglewGetStreamFileDescriptorKHR)
+
+#define EGLEW_KHR_stream_cross_process_fd EGLEW_GET_VAR(__EGLEW_KHR_stream_cross_process_fd)
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+/* -------------------------- EGL_KHR_stream_fifo -------------------------- */
+
+#ifndef EGL_KHR_stream_fifo
+#define EGL_KHR_stream_fifo 1
+
+#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+#define EGL_STREAM_TIME_NOW_KHR 0x31FD
+#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR* value);
+
+#define eglQueryStreamTimeKHR EGLEW_GET_FUN(__eglewQueryStreamTimeKHR)
+
+#define EGLEW_KHR_stream_fifo EGLEW_GET_VAR(__EGLEW_KHR_stream_fifo)
+
+#endif /* EGL_KHR_stream_fifo */
+
+/* ----------------- EGL_KHR_stream_producer_aldatalocator ----------------- */
+
+#ifndef EGL_KHR_stream_producer_aldatalocator
+#define EGL_KHR_stream_producer_aldatalocator 1
+
+#define EGLEW_KHR_stream_producer_aldatalocator EGLEW_GET_VAR(__EGLEW_KHR_stream_producer_aldatalocator)
+
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+/* ------------------- EGL_KHR_stream_producer_eglsurface ------------------ */
+
+#ifndef EGL_KHR_stream_producer_eglsurface
+#define EGL_KHR_stream_producer_eglsurface 1
+
+#define EGL_STREAM_BIT_KHR 0x0800
+
+typedef EGLSurface ( * PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint* attrib_list);
+
+#define eglCreateStreamProducerSurfaceKHR EGLEW_GET_FUN(__eglewCreateStreamProducerSurfaceKHR)
+
+#define EGLEW_KHR_stream_producer_eglsurface EGLEW_GET_VAR(__EGLEW_KHR_stream_producer_eglsurface)
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+/* ---------------------- EGL_KHR_surfaceless_context ---------------------- */
+
+#ifndef EGL_KHR_surfaceless_context
+#define EGL_KHR_surfaceless_context 1
+
+#define EGLEW_KHR_surfaceless_context EGLEW_GET_VAR(__EGLEW_KHR_surfaceless_context)
+
+#endif /* EGL_KHR_surfaceless_context */
+
+/* -------------------- EGL_KHR_swap_buffers_with_damage ------------------- */
+
+#ifndef EGL_KHR_swap_buffers_with_damage
+#define EGL_KHR_swap_buffers_with_damage 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects);
+
+#define eglSwapBuffersWithDamageKHR EGLEW_GET_FUN(__eglewSwapBuffersWithDamageKHR)
+
+#define EGLEW_KHR_swap_buffers_with_damage EGLEW_GET_VAR(__EGLEW_KHR_swap_buffers_with_damage)
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+/* ------------------------ EGL_KHR_vg_parent_image ------------------------ */
+
+#ifndef EGL_KHR_vg_parent_image
+#define EGL_KHR_vg_parent_image 1
+
+#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
+
+#define EGLEW_KHR_vg_parent_image EGLEW_GET_VAR(__EGLEW_KHR_vg_parent_image)
+
+#endif /* EGL_KHR_vg_parent_image */
+
+/* --------------------------- EGL_KHR_wait_sync --------------------------- */
+
+#ifndef EGL_KHR_wait_sync
+#define EGL_KHR_wait_sync 1
+
+typedef EGLint ( * PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+
+#define eglWaitSyncKHR EGLEW_GET_FUN(__eglewWaitSyncKHR)
+
+#define EGLEW_KHR_wait_sync EGLEW_GET_VAR(__EGLEW_KHR_wait_sync)
+
+#endif /* EGL_KHR_wait_sync */
+
+/* --------------------------- EGL_MESA_drm_image -------------------------- */
+
+#ifndef EGL_MESA_drm_image
+#define EGL_MESA_drm_image 1
+
+#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+#define EGL_DRM_BUFFER_USE_MESA 0x31D1
+#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+#define EGL_DRM_BUFFER_MESA 0x31D3
+#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+
+typedef EGLImageKHR ( * PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint* name, EGLint* handle, EGLint* stride);
+
+#define eglCreateDRMImageMESA EGLEW_GET_FUN(__eglewCreateDRMImageMESA)
+#define eglExportDRMImageMESA EGLEW_GET_FUN(__eglewExportDRMImageMESA)
+
+#define EGLEW_MESA_drm_image EGLEW_GET_VAR(__EGLEW_MESA_drm_image)
+
+#endif /* EGL_MESA_drm_image */
+
+/* --------------------- EGL_MESA_image_dma_buf_export --------------------- */
+
+#ifndef EGL_MESA_image_dma_buf_export
+#define EGL_MESA_image_dma_buf_export 1
+
+typedef EGLBoolean ( * PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int* fds, EGLint* strides, EGLint* offsets);
+typedef EGLBoolean ( * PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int* fourcc, int* num_planes, EGLuint64KHR* modifiers);
+
+#define eglExportDMABUFImageMESA EGLEW_GET_FUN(__eglewExportDMABUFImageMESA)
+#define eglExportDMABUFImageQueryMESA EGLEW_GET_FUN(__eglewExportDMABUFImageQueryMESA)
+
+#define EGLEW_MESA_image_dma_buf_export EGLEW_GET_VAR(__EGLEW_MESA_image_dma_buf_export)
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+/* ------------------------- EGL_MESA_platform_gbm ------------------------- */
+
+#ifndef EGL_MESA_platform_gbm
+#define EGL_MESA_platform_gbm 1
+
+#define EGL_PLATFORM_GBM_MESA 0x31D7
+
+#define EGLEW_MESA_platform_gbm EGLEW_GET_VAR(__EGLEW_MESA_platform_gbm)
+
+#endif /* EGL_MESA_platform_gbm */
+
+/* --------------------- EGL_MESA_platform_surfaceless --------------------- */
+
+#ifndef EGL_MESA_platform_surfaceless
+#define EGL_MESA_platform_surfaceless 1
+
+#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+#define EGLEW_MESA_platform_surfaceless EGLEW_GET_VAR(__EGLEW_MESA_platform_surfaceless)
+
+#endif /* EGL_MESA_platform_surfaceless */
+
+/* ------------------------- EGL_MESA_query_driver ------------------------- */
+
+#ifndef EGL_MESA_query_driver
+#define EGL_MESA_query_driver 1
+
+typedef char* ( * PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
+typedef const char* ( * PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
+
+#define eglGetDisplayDriverConfig EGLEW_GET_FUN(__eglewGetDisplayDriverConfig)
+#define eglGetDisplayDriverName EGLEW_GET_FUN(__eglewGetDisplayDriverName)
+
+#define EGLEW_MESA_query_driver EGLEW_GET_VAR(__EGLEW_MESA_query_driver)
+
+#endif /* EGL_MESA_query_driver */
+
+/* -------------------------- EGL_NOK_swap_region -------------------------- */
+
+#ifndef EGL_NOK_swap_region
+#define EGL_NOK_swap_region 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+
+#define eglSwapBuffersRegionNOK EGLEW_GET_FUN(__eglewSwapBuffersRegionNOK)
+
+#define EGLEW_NOK_swap_region EGLEW_GET_VAR(__EGLEW_NOK_swap_region)
+
+#endif /* EGL_NOK_swap_region */
+
+/* -------------------------- EGL_NOK_swap_region2 ------------------------- */
+
+#ifndef EGL_NOK_swap_region2
+#define EGL_NOK_swap_region2 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+
+#define eglSwapBuffersRegion2NOK EGLEW_GET_FUN(__eglewSwapBuffersRegion2NOK)
+
+#define EGLEW_NOK_swap_region2 EGLEW_GET_VAR(__EGLEW_NOK_swap_region2)
+
+#endif /* EGL_NOK_swap_region2 */
+
+/* ---------------------- EGL_NOK_texture_from_pixmap ---------------------- */
+
+#ifndef EGL_NOK_texture_from_pixmap
+#define EGL_NOK_texture_from_pixmap 1
+
+#define EGL_Y_INVERTED_NOK 0x307F
+
+#define EGLEW_NOK_texture_from_pixmap EGLEW_GET_VAR(__EGLEW_NOK_texture_from_pixmap)
+
+#endif /* EGL_NOK_texture_from_pixmap */
+
+/* ------------------------ EGL_NV_3dvision_surface ------------------------ */
+
+#ifndef EGL_NV_3dvision_surface
+#define EGL_NV_3dvision_surface 1
+
+#define EGL_AUTO_STEREO_NV 0x3136
+
+#define EGLEW_NV_3dvision_surface EGLEW_GET_VAR(__EGLEW_NV_3dvision_surface)
+
+#endif /* EGL_NV_3dvision_surface */
+
+/* -------------------- EGL_NV_context_priority_realtime ------------------- */
+
+#ifndef EGL_NV_context_priority_realtime
+#define EGL_NV_context_priority_realtime 1
+
+#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+
+#define EGLEW_NV_context_priority_realtime EGLEW_GET_VAR(__EGLEW_NV_context_priority_realtime)
+
+#endif /* EGL_NV_context_priority_realtime */
+
+/* ------------------------- EGL_NV_coverage_sample ------------------------ */
+
+#ifndef EGL_NV_coverage_sample
+#define EGL_NV_coverage_sample 1
+
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+
+#define EGLEW_NV_coverage_sample EGLEW_GET_VAR(__EGLEW_NV_coverage_sample)
+
+#endif /* EGL_NV_coverage_sample */
+
+/* --------------------- EGL_NV_coverage_sample_resolve -------------------- */
+
+#ifndef EGL_NV_coverage_sample_resolve
+#define EGL_NV_coverage_sample_resolve 1
+
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+
+#define EGLEW_NV_coverage_sample_resolve EGLEW_GET_VAR(__EGLEW_NV_coverage_sample_resolve)
+
+#endif /* EGL_NV_coverage_sample_resolve */
+
+/* --------------------------- EGL_NV_cuda_event --------------------------- */
+
+#ifndef EGL_NV_cuda_event
+#define EGL_NV_cuda_event 1
+
+#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
+#define EGL_SYNC_CUDA_EVENT_NV 0x323C
+#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+
+#define EGLEW_NV_cuda_event EGLEW_GET_VAR(__EGLEW_NV_cuda_event)
+
+#endif /* EGL_NV_cuda_event */
+
+/* ------------------------- EGL_NV_depth_nonlinear ------------------------ */
+
+#ifndef EGL_NV_depth_nonlinear
+#define EGL_NV_depth_nonlinear 1
+
+#define EGL_DEPTH_ENCODING_NONE_NV 0
+#define EGL_DEPTH_ENCODING_NV 0x30E2
+#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+
+#define EGLEW_NV_depth_nonlinear EGLEW_GET_VAR(__EGLEW_NV_depth_nonlinear)
+
+#endif /* EGL_NV_depth_nonlinear */
+
+/* --------------------------- EGL_NV_device_cuda -------------------------- */
+
+#ifndef EGL_NV_device_cuda
+#define EGL_NV_device_cuda 1
+
+#define EGL_CUDA_DEVICE_NV 0x323A
+
+#define EGLEW_NV_device_cuda EGLEW_GET_VAR(__EGLEW_NV_device_cuda)
+
+#endif /* EGL_NV_device_cuda */
+
+/* -------------------------- EGL_NV_native_query -------------------------- */
+
+#ifndef EGL_NV_native_query
+#define EGL_NV_native_query 1
+
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType* display_id);
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap);
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window);
+
+#define eglQueryNativeDisplayNV EGLEW_GET_FUN(__eglewQueryNativeDisplayNV)
+#define eglQueryNativePixmapNV EGLEW_GET_FUN(__eglewQueryNativePixmapNV)
+#define eglQueryNativeWindowNV EGLEW_GET_FUN(__eglewQueryNativeWindowNV)
+
+#define EGLEW_NV_native_query EGLEW_GET_VAR(__EGLEW_NV_native_query)
+
+#endif /* EGL_NV_native_query */
+
+/* ---------------------- EGL_NV_post_convert_rounding --------------------- */
+
+#ifndef EGL_NV_post_convert_rounding
+#define EGL_NV_post_convert_rounding 1
+
+#define EGLEW_NV_post_convert_rounding EGLEW_GET_VAR(__EGLEW_NV_post_convert_rounding)
+
+#endif /* EGL_NV_post_convert_rounding */
+
+/* ------------------------- EGL_NV_post_sub_buffer ------------------------ */
+
+#ifndef EGL_NV_post_sub_buffer
+#define EGL_NV_post_sub_buffer 1
+
+#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+
+typedef EGLBoolean ( * PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+
+#define eglPostSubBufferNV EGLEW_GET_FUN(__eglewPostSubBufferNV)
+
+#define EGLEW_NV_post_sub_buffer EGLEW_GET_VAR(__EGLEW_NV_post_sub_buffer)
+
+#endif /* EGL_NV_post_sub_buffer */
+
+/* ------------------------ EGL_NV_quadruple_buffer ------------------------ */
+
+#ifndef EGL_NV_quadruple_buffer
+#define EGL_NV_quadruple_buffer 1
+
+#define EGL_QUADRUPLE_BUFFER_NV 0x3231
+
+#define EGLEW_NV_quadruple_buffer EGLEW_GET_VAR(__EGLEW_NV_quadruple_buffer)
+
+#endif /* EGL_NV_quadruple_buffer */
+
+/* ------------------ EGL_NV_robustness_video_memory_purge ----------------- */
+
+#ifndef EGL_NV_robustness_video_memory_purge
+#define EGL_NV_robustness_video_memory_purge 1
+
+#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
+
+#define EGLEW_NV_robustness_video_memory_purge EGLEW_GET_VAR(__EGLEW_NV_robustness_video_memory_purge)
+
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+/* -------------------- EGL_NV_stream_consumer_eglimage -------------------- */
+
+#ifndef EGL_NV_stream_consumer_eglimage
+#define EGL_NV_stream_consumer_eglimage 1
+
+#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+#define EGL_STREAM_IMAGE_ADD_NV 0x3374
+#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+
+typedef EGLint ( * PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum* event, EGLAttrib* aux);
+typedef EGLBoolean ( * PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage* pImage, EGLSync sync);
+typedef EGLBoolean ( * PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR* modifiers, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+
+#define eglQueryStreamConsumerEventNV EGLEW_GET_FUN(__eglewQueryStreamConsumerEventNV)
+#define eglStreamAcquireImageNV EGLEW_GET_FUN(__eglewStreamAcquireImageNV)
+#define eglStreamImageConsumerConnectNV EGLEW_GET_FUN(__eglewStreamImageConsumerConnectNV)
+#define eglStreamReleaseImageNV EGLEW_GET_FUN(__eglewStreamReleaseImageNV)
+
+#define EGLEW_NV_stream_consumer_eglimage EGLEW_GET_VAR(__EGLEW_NV_stream_consumer_eglimage)
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+/* ------------------ EGL_NV_stream_consumer_gltexture_yuv ----------------- */
+
+#ifndef EGL_NV_stream_consumer_gltexture_yuv
+#define EGL_NV_stream_consumer_gltexture_yuv 1
+
+#define EGL_YUV_BUFFER_EXT 0x3300
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+
+#define eglStreamConsumerGLTextureExternalAttribsNV EGLEW_GET_FUN(__eglewStreamConsumerGLTextureExternalAttribsNV)
+
+#define EGLEW_NV_stream_consumer_gltexture_yuv EGLEW_GET_VAR(__EGLEW_NV_stream_consumer_gltexture_yuv)
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+/* ---------------------- EGL_NV_stream_cross_display ---------------------- */
+
+#ifndef EGL_NV_stream_cross_display
+#define EGL_NV_stream_cross_display 1
+
+#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+
+#define EGLEW_NV_stream_cross_display EGLEW_GET_VAR(__EGLEW_NV_stream_cross_display)
+
+#endif /* EGL_NV_stream_cross_display */
+
+/* ----------------------- EGL_NV_stream_cross_object ---------------------- */
+
+#ifndef EGL_NV_stream_cross_object
+#define EGL_NV_stream_cross_object 1
+
+#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
+
+#define EGLEW_NV_stream_cross_object EGLEW_GET_VAR(__EGLEW_NV_stream_cross_object)
+
+#endif /* EGL_NV_stream_cross_object */
+
+/* --------------------- EGL_NV_stream_cross_partition --------------------- */
+
+#ifndef EGL_NV_stream_cross_partition
+#define EGL_NV_stream_cross_partition 1
+
+#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
+
+#define EGLEW_NV_stream_cross_partition EGLEW_GET_VAR(__EGLEW_NV_stream_cross_partition)
+
+#endif /* EGL_NV_stream_cross_partition */
+
+/* ---------------------- EGL_NV_stream_cross_process ---------------------- */
+
+#ifndef EGL_NV_stream_cross_process
+#define EGL_NV_stream_cross_process 1
+
+#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
+
+#define EGLEW_NV_stream_cross_process EGLEW_GET_VAR(__EGLEW_NV_stream_cross_process)
+
+#endif /* EGL_NV_stream_cross_process */
+
+/* ----------------------- EGL_NV_stream_cross_system ---------------------- */
+
+#ifndef EGL_NV_stream_cross_system
+#define EGL_NV_stream_cross_system 1
+
+#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+
+#define EGLEW_NV_stream_cross_system EGLEW_GET_VAR(__EGLEW_NV_stream_cross_system)
+
+#endif /* EGL_NV_stream_cross_system */
+
+/* --------------------------- EGL_NV_stream_dma --------------------------- */
+
+#ifndef EGL_NV_stream_dma
+#define EGL_NV_stream_dma 1
+
+#define EGL_STREAM_DMA_NV 0x3371
+#define EGL_STREAM_DMA_SERVER_NV 0x3372
+
+#define EGLEW_NV_stream_dma EGLEW_GET_VAR(__EGLEW_NV_stream_dma)
+
+#endif /* EGL_NV_stream_dma */
+
+/* ------------------------ EGL_NV_stream_fifo_next ------------------------ */
+
+#ifndef EGL_NV_stream_fifo_next
+#define EGL_NV_stream_fifo_next 1
+
+#define EGL_PENDING_FRAME_NV 0x3329
+#define EGL_STREAM_TIME_PENDING_NV 0x332A
+
+#define EGLEW_NV_stream_fifo_next EGLEW_GET_VAR(__EGLEW_NV_stream_fifo_next)
+
+#endif /* EGL_NV_stream_fifo_next */
+
+/* --------------------- EGL_NV_stream_fifo_synchronous -------------------- */
+
+#ifndef EGL_NV_stream_fifo_synchronous
+#define EGL_NV_stream_fifo_synchronous 1
+
+#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+
+#define EGLEW_NV_stream_fifo_synchronous EGLEW_GET_VAR(__EGLEW_NV_stream_fifo_synchronous)
+
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+/* -------------------------- EGL_NV_stream_flush -------------------------- */
+
+#ifndef EGL_NV_stream_flush
+#define EGL_NV_stream_flush 1
+
+typedef EGLBoolean ( * PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglStreamFlushNV EGLEW_GET_FUN(__eglewStreamFlushNV)
+
+#define EGLEW_NV_stream_flush EGLEW_GET_VAR(__EGLEW_NV_stream_flush)
+
+#endif /* EGL_NV_stream_flush */
+
+/* ----------------------- EGL_NV_stream_frame_limits ---------------------- */
+
+#ifndef EGL_NV_stream_frame_limits
+#define EGL_NV_stream_frame_limits 1
+
+#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+
+#define EGLEW_NV_stream_frame_limits EGLEW_GET_VAR(__EGLEW_NV_stream_frame_limits)
+
+#endif /* EGL_NV_stream_frame_limits */
+
+/* ------------------------- EGL_NV_stream_metadata ------------------------ */
+
+#ifndef EGL_NV_stream_metadata
+#define EGL_NV_stream_metadata 1
+
+#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+#define EGL_PRODUCER_METADATA_NV 0x3253
+#define EGL_CONSUMER_METADATA_NV 0x3254
+#define EGL_METADATA0_SIZE_NV 0x3255
+#define EGL_METADATA1_SIZE_NV 0x3256
+#define EGL_METADATA2_SIZE_NV 0x3257
+#define EGL_METADATA3_SIZE_NV 0x3258
+#define EGL_METADATA0_TYPE_NV 0x3259
+#define EGL_METADATA1_TYPE_NV 0x325A
+#define EGL_METADATA2_TYPE_NV 0x325B
+#define EGL_METADATA3_TYPE_NV 0x325C
+#define EGL_PENDING_METADATA_NV 0x3328
+
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib* value);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void* data);
+typedef EGLBoolean ( * PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void* data);
+
+#define eglQueryDisplayAttribNV EGLEW_GET_FUN(__eglewQueryDisplayAttribNV)
+#define eglQueryStreamMetadataNV EGLEW_GET_FUN(__eglewQueryStreamMetadataNV)
+#define eglSetStreamMetadataNV EGLEW_GET_FUN(__eglewSetStreamMetadataNV)
+
+#define EGLEW_NV_stream_metadata EGLEW_GET_VAR(__EGLEW_NV_stream_metadata)
+
+#endif /* EGL_NV_stream_metadata */
+
+/* -------------------------- EGL_NV_stream_origin ------------------------- */
+
+#ifndef EGL_NV_stream_origin
+#define EGL_NV_stream_origin 1
+
+#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+#define EGL_LEFT_NV 0x336B
+#define EGL_RIGHT_NV 0x336C
+#define EGL_TOP_NV 0x336D
+#define EGL_BOTTOM_NV 0x336E
+#define EGL_X_AXIS_NV 0x336F
+#define EGL_Y_AXIS_NV 0x3370
+
+#define EGLEW_NV_stream_origin EGLEW_GET_VAR(__EGLEW_NV_stream_origin)
+
+#endif /* EGL_NV_stream_origin */
+
+/* -------------------------- EGL_NV_stream_remote ------------------------- */
+
+#ifndef EGL_NV_stream_remote
+#define EGL_NV_stream_remote 1
+
+#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+#define EGL_STREAM_TYPE_NV 0x3241
+#define EGL_STREAM_PROTOCOL_NV 0x3242
+#define EGL_STREAM_ENDPOINT_NV 0x3243
+#define EGL_STREAM_LOCAL_NV 0x3244
+#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
+#define EGL_STREAM_PRODUCER_NV 0x3247
+#define EGL_STREAM_CONSUMER_NV 0x3248
+
+#define EGLEW_NV_stream_remote EGLEW_GET_VAR(__EGLEW_NV_stream_remote)
+
+#endif /* EGL_NV_stream_remote */
+
+/* -------------------------- EGL_NV_stream_reset -------------------------- */
+
+#ifndef EGL_NV_stream_reset
+#define EGL_NV_stream_reset 1
+
+#define EGL_SUPPORT_RESET_NV 0x3334
+#define EGL_SUPPORT_REUSE_NV 0x3335
+
+typedef EGLBoolean ( * PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglResetStreamNV EGLEW_GET_FUN(__eglewResetStreamNV)
+
+#define EGLEW_NV_stream_reset EGLEW_GET_VAR(__EGLEW_NV_stream_reset)
+
+#endif /* EGL_NV_stream_reset */
+
+/* -------------------------- EGL_NV_stream_socket ------------------------- */
+
+#ifndef EGL_NV_stream_socket
+#define EGL_NV_stream_socket 1
+
+#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+#define EGL_SOCKET_HANDLE_NV 0x324C
+#define EGL_SOCKET_TYPE_NV 0x324D
+
+#define EGLEW_NV_stream_socket EGLEW_GET_VAR(__EGLEW_NV_stream_socket)
+
+#endif /* EGL_NV_stream_socket */
+
+/* ----------------------- EGL_NV_stream_socket_inet ----------------------- */
+
+#ifndef EGL_NV_stream_socket_inet
+#define EGL_NV_stream_socket_inet 1
+
+#define EGL_SOCKET_TYPE_INET_NV 0x324F
+
+#define EGLEW_NV_stream_socket_inet EGLEW_GET_VAR(__EGLEW_NV_stream_socket_inet)
+
+#endif /* EGL_NV_stream_socket_inet */
+
+/* ----------------------- EGL_NV_stream_socket_unix ----------------------- */
+
+#ifndef EGL_NV_stream_socket_unix
+#define EGL_NV_stream_socket_unix 1
+
+#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
+
+#define EGLEW_NV_stream_socket_unix EGLEW_GET_VAR(__EGLEW_NV_stream_socket_unix)
+
+#endif /* EGL_NV_stream_socket_unix */
+
+/* --------------------------- EGL_NV_stream_sync -------------------------- */
+
+#ifndef EGL_NV_stream_sync
+#define EGL_NV_stream_sync 1
+
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_NEW_FRAME_NV 0x321F
+
+typedef EGLSyncKHR ( * PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint* attrib_list);
+
+#define eglCreateStreamSyncNV EGLEW_GET_FUN(__eglewCreateStreamSyncNV)
+
+#define EGLEW_NV_stream_sync EGLEW_GET_VAR(__EGLEW_NV_stream_sync)
+
+#endif /* EGL_NV_stream_sync */
+
+/* ------------------------------ EGL_NV_sync ------------------------------ */
+
+#ifndef EGL_NV_sync
+#define EGL_NV_sync 1
+
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+#define EGL_SYNC_STATUS_NV 0x30E7
+#define EGL_SIGNALED_NV 0x30E8
+#define EGL_UNSIGNALED_NV 0x30E9
+#define EGL_ALREADY_SIGNALED_NV 0x30EA
+#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
+#define EGL_CONDITION_SATISFIED_NV 0x30EC
+#define EGL_SYNC_TYPE_NV 0x30ED
+#define EGL_SYNC_CONDITION_NV 0x30EE
+#define EGL_SYNC_FENCE_NV 0x30EF
+#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+typedef EGLSyncNV ( * PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
+typedef EGLBoolean ( * PFNEGLFENCENVPROC) (EGLSyncNV sync);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
+
+#define eglClientWaitSyncNV EGLEW_GET_FUN(__eglewClientWaitSyncNV)
+#define eglCreateFenceSyncNV EGLEW_GET_FUN(__eglewCreateFenceSyncNV)
+#define eglDestroySyncNV EGLEW_GET_FUN(__eglewDestroySyncNV)
+#define eglFenceNV EGLEW_GET_FUN(__eglewFenceNV)
+#define eglGetSyncAttribNV EGLEW_GET_FUN(__eglewGetSyncAttribNV)
+#define eglSignalSyncNV EGLEW_GET_FUN(__eglewSignalSyncNV)
+
+#define EGLEW_NV_sync EGLEW_GET_VAR(__EGLEW_NV_sync)
+
+#endif /* EGL_NV_sync */
+
+/* --------------------------- EGL_NV_system_time -------------------------- */
+
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+
+typedef EGLuint64NV ( * PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
+typedef EGLuint64NV ( * PFNEGLGETSYSTEMTIMENVPROC) (void);
+
+#define eglGetSystemTimeFrequencyNV EGLEW_GET_FUN(__eglewGetSystemTimeFrequencyNV)
+#define eglGetSystemTimeNV EGLEW_GET_FUN(__eglewGetSystemTimeNV)
+
+#define EGLEW_NV_system_time EGLEW_GET_VAR(__EGLEW_NV_system_time)
+
+#endif /* EGL_NV_system_time */
+
+/* -------------------------- EGL_NV_triple_buffer ------------------------- */
+
+#ifndef EGL_NV_triple_buffer
+#define EGL_NV_triple_buffer 1
+
+#define EGL_TRIPLE_BUFFER_NV 0x3230
+
+#define EGLEW_NV_triple_buffer EGLEW_GET_VAR(__EGLEW_NV_triple_buffer)
+
+#endif /* EGL_NV_triple_buffer */
+
+/* --------------------- EGL_TIZEN_image_native_buffer --------------------- */
+
+#ifndef EGL_TIZEN_image_native_buffer
+#define EGL_TIZEN_image_native_buffer 1
+
+#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+
+#define EGLEW_TIZEN_image_native_buffer EGLEW_GET_VAR(__EGLEW_TIZEN_image_native_buffer)
+
+#endif /* EGL_TIZEN_image_native_buffer */
+
+/* --------------------- EGL_TIZEN_image_native_surface -------------------- */
+
+#ifndef EGL_TIZEN_image_native_surface
+#define EGL_TIZEN_image_native_surface 1
+
+#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
+
+#define EGLEW_TIZEN_image_native_surface EGLEW_GET_VAR(__EGLEW_TIZEN_image_native_surface)
+
+#endif /* EGL_TIZEN_image_native_surface */
+
+/* ---------------------- EGL_WL_bind_wayland_display ---------------------- */
+
+#ifndef EGL_WL_bind_wayland_display
+#define EGL_WL_bind_wayland_display 1
+
+#define EGL_WAYLAND_BUFFER_WL 0x31D5
+#define EGL_WAYLAND_PLANE_WL 0x31D6
+#define EGL_TEXTURE_Y_U_V_WL 0x31D7
+#define EGL_TEXTURE_Y_UV_WL 0x31D8
+#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
+#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
+#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+
+typedef EGLBoolean ( * PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display* display);
+typedef EGLBoolean ( * PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource* buffer, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display* display);
+
+#define eglBindWaylandDisplayWL EGLEW_GET_FUN(__eglewBindWaylandDisplayWL)
+#define eglQueryWaylandBufferWL EGLEW_GET_FUN(__eglewQueryWaylandBufferWL)
+#define eglUnbindWaylandDisplayWL EGLEW_GET_FUN(__eglewUnbindWaylandDisplayWL)
+
+#define EGLEW_WL_bind_wayland_display EGLEW_GET_VAR(__EGLEW_WL_bind_wayland_display)
+
+#endif /* EGL_WL_bind_wayland_display */
+
+/* ---------------- EGL_WL_create_wayland_buffer_from_image ---------------- */
+
+#ifndef EGL_WL_create_wayland_buffer_from_image
+#define EGL_WL_create_wayland_buffer_from_image 1
+
+typedef struct wl_buffer* ( * PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
+
+#define eglCreateWaylandBufferFromImageWL EGLEW_GET_FUN(__eglewCreateWaylandBufferFromImageWL)
+
+#define EGLEW_WL_create_wayland_buffer_from_image EGLEW_GET_VAR(__EGLEW_WL_create_wayland_buffer_from_image)
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+/* ------------------------------------------------------------------------- */
+
+#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+EGLEW_FUN_EXPORT PFNEGLCHOOSECONFIGPROC __eglewChooseConfig;
+EGLEW_FUN_EXPORT PFNEGLCOPYBUFFERSPROC __eglewCopyBuffers;
+EGLEW_FUN_EXPORT PFNEGLCREATECONTEXTPROC __eglewCreateContext;
+EGLEW_FUN_EXPORT PFNEGLCREATEPBUFFERSURFACEPROC __eglewCreatePbufferSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEPIXMAPSURFACEPROC __eglewCreatePixmapSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEWINDOWSURFACEPROC __eglewCreateWindowSurface;
+EGLEW_FUN_EXPORT PFNEGLDESTROYCONTEXTPROC __eglewDestroyContext;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSURFACEPROC __eglewDestroySurface;
+EGLEW_FUN_EXPORT PFNEGLGETCONFIGATTRIBPROC __eglewGetConfigAttrib;
+EGLEW_FUN_EXPORT PFNEGLGETCONFIGSPROC __eglewGetConfigs;
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTDISPLAYPROC __eglewGetCurrentDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTSURFACEPROC __eglewGetCurrentSurface;
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYPROC __eglewGetDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETERRORPROC __eglewGetError;
+EGLEW_FUN_EXPORT PFNEGLINITIALIZEPROC __eglewInitialize;
+EGLEW_FUN_EXPORT PFNEGLMAKECURRENTPROC __eglewMakeCurrent;
+EGLEW_FUN_EXPORT PFNEGLQUERYCONTEXTPROC __eglewQueryContext;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTRINGPROC __eglewQueryString;
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACEPROC __eglewQuerySurface;
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSPROC __eglewSwapBuffers;
+EGLEW_FUN_EXPORT PFNEGLTERMINATEPROC __eglewTerminate;
+EGLEW_FUN_EXPORT PFNEGLWAITGLPROC __eglewWaitGL;
+EGLEW_FUN_EXPORT PFNEGLWAITNATIVEPROC __eglewWaitNative;
+
+EGLEW_FUN_EXPORT PFNEGLBINDTEXIMAGEPROC __eglewBindTexImage;
+EGLEW_FUN_EXPORT PFNEGLRELEASETEXIMAGEPROC __eglewReleaseTexImage;
+EGLEW_FUN_EXPORT PFNEGLSURFACEATTRIBPROC __eglewSurfaceAttrib;
+EGLEW_FUN_EXPORT PFNEGLSWAPINTERVALPROC __eglewSwapInterval;
+
+EGLEW_FUN_EXPORT PFNEGLBINDAPIPROC __eglewBindAPI;
+EGLEW_FUN_EXPORT PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC __eglewCreatePbufferFromClientBuffer;
+EGLEW_FUN_EXPORT PFNEGLQUERYAPIPROC __eglewQueryAPI;
+EGLEW_FUN_EXPORT PFNEGLRELEASETHREADPROC __eglewReleaseThread;
+EGLEW_FUN_EXPORT PFNEGLWAITCLIENTPROC __eglewWaitClient;
+
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTCONTEXTPROC __eglewGetCurrentContext;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCPROC __eglewClientWaitSync;
+EGLEW_FUN_EXPORT PFNEGLCREATEIMAGEPROC __eglewCreateImage;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC __eglewCreatePlatformPixmapSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMWINDOWSURFACEPROC __eglewCreatePlatformWindowSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATESYNCPROC __eglewCreateSync;
+EGLEW_FUN_EXPORT PFNEGLDESTROYIMAGEPROC __eglewDestroyImage;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCPROC __eglewDestroySync;
+EGLEW_FUN_EXPORT PFNEGLGETPLATFORMDISPLAYPROC __eglewGetPlatformDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBPROC __eglewGetSyncAttrib;
+EGLEW_FUN_EXPORT PFNEGLWAITSYNCPROC __eglewWaitSync;
+
+EGLEW_FUN_EXPORT PFNEGLSETBLOBCACHEFUNCSANDROIDPROC __eglewSetBlobCacheFuncsANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC __eglewCreateNativeClientBufferANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLGETCOMPOSITORTIMINGANDROIDPROC __eglewGetCompositorTimingANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC __eglewGetCompositorTimingSupportedANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC __eglewGetFrameTimestampSupportedANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETFRAMETIMESTAMPSANDROIDPROC __eglewGetFrameTimestampsANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETNEXTFRAMEIDANDROIDPROC __eglewGetNextFrameIdANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC __eglewGetNativeClientBufferANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLDUPNATIVEFENCEFDANDROIDPROC __eglewDupNativeFenceFDANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE;
+
+EGLEW_FUN_EXPORT PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC __eglewCompositorSetContextAttributesEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC __eglewCompositorSetContextListEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETSIZEEXTPROC __eglewCompositorSetSizeEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC __eglewCompositorSetWindowAttributesEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC __eglewCompositorSetWindowListEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSWAPPOLICYEXTPROC __eglewCompositorSwapPolicyEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICESEXTPROC __eglewQueryDevicesEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICEBINARYEXTPROC __eglewQueryDeviceBinaryEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC __eglewQueryDeviceAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC __eglewQueryDeviceStringEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBEXTPROC __eglewQueryDisplayAttribEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDMABUFFORMATSEXTPROC __eglewQueryDmaBufFormatsEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDMABUFMODIFIERSEXTPROC __eglewQueryDmaBufModifiersEXT;
+
+EGLEW_FUN_EXPORT PFNEGLGETOUTPUTLAYERSEXTPROC __eglewGetOutputLayersEXT;
+EGLEW_FUN_EXPORT PFNEGLGETOUTPUTPORTSEXTPROC __eglewGetOutputPortsEXT;
+EGLEW_FUN_EXPORT PFNEGLOUTPUTLAYERATTRIBEXTPROC __eglewOutputLayerAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLOUTPUTPORTATTRIBEXTPROC __eglewOutputPortAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC __eglewQueryOutputLayerAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC __eglewQueryOutputLayerStringEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC __eglewQueryOutputPortAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC __eglewQueryOutputPortStringEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC __eglewCreatePlatformPixmapSurfaceEXT;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC __eglewCreatePlatformWindowSurfaceEXT;
+EGLEW_FUN_EXPORT PFNEGLGETPLATFORMDISPLAYEXTPROC __eglewGetPlatformDisplayEXT;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMEROUTPUTEXTPROC __eglewStreamConsumerOutputEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC __eglewQuerySupportedCompressionRatesEXT;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC __eglewSwapBuffersWithDamageEXT;
+
+EGLEW_FUN_EXPORT PFNEGLUNSIGNALSYNCEXTPROC __eglewUnsignalSyncEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEPIXMAPSURFACEHIPROC __eglewCreatePixmapSurfaceHI;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESYNC64KHRPROC __eglewCreateSync64KHR;
+
+EGLEW_FUN_EXPORT PFNEGLDEBUGMESSAGECONTROLKHRPROC __eglewDebugMessageControlKHR;
+EGLEW_FUN_EXPORT PFNEGLLABELOBJECTKHRPROC __eglewLabelObjectKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYDEBUGKHRPROC __eglewQueryDebugKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBKHRPROC __eglewQueryDisplayAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEIMAGEKHRPROC __eglewCreateImageKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYIMAGEKHRPROC __eglewDestroyImageKHR;
+
+EGLEW_FUN_EXPORT PFNEGLLOCKSURFACEKHRPROC __eglewLockSurfaceKHR;
+EGLEW_FUN_EXPORT PFNEGLUNLOCKSURFACEKHRPROC __eglewUnlockSurfaceKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACE64KHRPROC __eglewQuerySurface64KHR;
+
+EGLEW_FUN_EXPORT PFNEGLSETDAMAGEREGIONKHRPROC __eglewSetDamageRegionKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCKHRPROC __eglewClientWaitSyncKHR;
+EGLEW_FUN_EXPORT PFNEGLCREATESYNCKHRPROC __eglewCreateSyncKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCKHRPROC __eglewDestroySyncKHR;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBKHRPROC __eglewGetSyncAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSIGNALSYNCKHRPROC __eglewSignalSyncKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMKHRPROC __eglewCreateStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSTREAMKHRPROC __eglewDestroyStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMKHRPROC __eglewQueryStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMU64KHRPROC __eglewQueryStreamu64KHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMATTRIBKHRPROC __eglewStreamAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMATTRIBKHRPROC __eglewCreateStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMATTRIBKHRPROC __eglewQueryStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSETSTREAMATTRIBKHRPROC __eglewSetStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC __eglewStreamConsumerAcquireAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC __eglewStreamConsumerReleaseAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERACQUIREKHRPROC __eglewStreamConsumerAcquireKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC __eglewStreamConsumerGLTextureExternalKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERRELEASEKHRPROC __eglewStreamConsumerReleaseKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC __eglewCreateStreamFromFileDescriptorKHR;
+EGLEW_FUN_EXPORT PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC __eglewGetStreamFileDescriptorKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMTIMEKHRPROC __eglewQueryStreamTimeKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC __eglewCreateStreamProducerSurfaceKHR;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC __eglewSwapBuffersWithDamageKHR;
+
+EGLEW_FUN_EXPORT PFNEGLWAITSYNCKHRPROC __eglewWaitSyncKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEDRMIMAGEMESAPROC __eglewCreateDRMImageMESA;
+EGLEW_FUN_EXPORT PFNEGLEXPORTDRMIMAGEMESAPROC __eglewExportDRMImageMESA;
+
+EGLEW_FUN_EXPORT PFNEGLEXPORTDMABUFIMAGEMESAPROC __eglewExportDMABUFImageMESA;
+EGLEW_FUN_EXPORT PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC __eglewExportDMABUFImageQueryMESA;
+
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYDRIVERCONFIGPROC __eglewGetDisplayDriverConfig;
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYDRIVERNAMEPROC __eglewGetDisplayDriverName;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSREGIONNOKPROC __eglewSwapBuffersRegionNOK;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSREGION2NOKPROC __eglewSwapBuffersRegion2NOK;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEDISPLAYNVPROC __eglewQueryNativeDisplayNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEPIXMAPNVPROC __eglewQueryNativePixmapNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV;
+
+EGLEW_FUN_EXPORT PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBNVPROC __eglewQueryDisplayAttribNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMMETADATANVPROC __eglewQueryStreamMetadataNV;
+EGLEW_FUN_EXPORT PFNEGLSETSTREAMMETADATANVPROC __eglewSetStreamMetadataNV;
+
+EGLEW_FUN_EXPORT PFNEGLRESETSTREAMNVPROC __eglewResetStreamNV;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMSYNCNVPROC __eglewCreateStreamSyncNV;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCNVPROC __eglewClientWaitSyncNV;
+EGLEW_FUN_EXPORT PFNEGLCREATEFENCESYNCNVPROC __eglewCreateFenceSyncNV;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCNVPROC __eglewDestroySyncNV;
+EGLEW_FUN_EXPORT PFNEGLFENCENVPROC __eglewFenceNV;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBNVPROC __eglewGetSyncAttribNV;
+EGLEW_FUN_EXPORT PFNEGLSIGNALSYNCNVPROC __eglewSignalSyncNV;
+
+EGLEW_FUN_EXPORT PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC __eglewGetSystemTimeFrequencyNV;
+EGLEW_FUN_EXPORT PFNEGLGETSYSTEMTIMENVPROC __eglewGetSystemTimeNV;
+
+EGLEW_FUN_EXPORT PFNEGLBINDWAYLANDDISPLAYWLPROC __eglewBindWaylandDisplayWL;
+EGLEW_FUN_EXPORT PFNEGLQUERYWAYLANDBUFFERWLPROC __eglewQueryWaylandBufferWL;
+EGLEW_FUN_EXPORT PFNEGLUNBINDWAYLANDDISPLAYWLPROC __eglewUnbindWaylandDisplayWL;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC __eglewCreateWaylandBufferFromImageWL;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_0;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_1;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_4;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_5;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_GLES_layers;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_blob_cache;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_create_native_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_framebuffer_target;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_front_buffer_auto_refresh;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_get_frame_timestamps;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_get_native_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_image_native_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_native_fence_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_presentation_time;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_recordable;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_device_d3d;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_query_surface_pointer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_sync_control_rate;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_window_fixed_size;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_image_format;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_implicit_external_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_pixmap_multisample_discard;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_bind_to_front;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_buffer_age;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_client_extensions;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_client_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_compositor;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_config_select_group;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_create_context_robustness;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_drm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_drm_render_node;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_enumeration;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_openwf;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_persistent_id;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_query;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_query_name;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_explicit_device;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_bt2020_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_bt2020_pq;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3_passthrough;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_scrgb;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_scrgb_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_dma_buf_import;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_dma_buf_import_modifiers;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_gl_colorspace;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_implicit_sync_control;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_multiview_window;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_drm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_openwf;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_pixel_format_float;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_device;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_wayland;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_x11;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_xcb;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_present_opaque;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_protected_content;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_protected_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_stream_consumer_egloutput;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_CTA861_3_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_SMPTE2086_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_compression;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_swap_buffers_with_damage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_sync_reuse;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_yuv_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_HI_clientpixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_HI_colorformats;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_IMG_context_priority;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_IMG_image_plane_attribs;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_cl_event;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_cl_event2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_client_get_all_proc_addresses;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_config_attribs;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_context_flush_control;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_create_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_create_context_no_error;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_debug;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_display_reference;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_fence_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_get_all_proc_addresses;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_colorspace;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_renderbuffer_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_2D_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_3D_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_cubemap_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image_pixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_mutable_render_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_no_config_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_partial_update;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_android;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_gbm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_wayland;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_x11;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_reusable_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_attrib;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_consumer_gltexture;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_cross_process_fd;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_fifo;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_producer_aldatalocator;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_producer_eglsurface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_surfaceless_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_swap_buffers_with_damage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_vg_parent_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_wait_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_drm_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_image_dma_buf_export;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_platform_gbm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_platform_surfaceless;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_query_driver;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_swap_region;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_swap_region2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_texture_from_pixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_3dvision_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_context_priority_realtime;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_coverage_sample;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_coverage_sample_resolve;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_cuda_event;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_depth_nonlinear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_device_cuda;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_native_query;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_convert_rounding;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_sub_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_quadruple_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_robustness_video_memory_purge;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_eglimage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_display;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_object;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_partition;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_process;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_system;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_dma;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_fifo_next;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_fifo_synchronous;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_flush;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_frame_limits;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_origin;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_remote;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_reset;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket_inet;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket_unix;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_system_time;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_triple_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_TIZEN_image_native_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_TIZEN_image_native_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_WL_bind_wayland_display;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_WL_create_wayland_buffer_from_image;
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY eglewInit (EGLDisplay display);
+GLEWAPI GLboolean GLEWAPIENTRY eglewIsSupported (const char *name);
+
+#define EGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#define EGLEW_GET_FUN(x) x
+
+GLEWAPI GLboolean GLEWAPIENTRY eglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __eglew_h__ */
diff --git a/glew/include/GL/glew.h b/glew/include/GL/glew.h
new file mode 100644
index 0000000..a688f9c
--- /dev/null
+++ b/glew/include/GL/glew.h
@@ -0,0 +1,26719 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __glew_h__
+#define __glew_h__
+#define __GLEW_H__
+
+#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__gl_gl_h_) || defined(__X_GL_H)
+#error gl.h included before glew.h
+#endif
+#if defined(__gl2_h_)
+#error gl2.h included before glew.h
+#endif
+#if defined(__gltypes_h_)
+#error gltypes.h included before glew.h
+#endif
+#if defined(__REGAL_H__)
+#error Regal.h included before glew.h
+#endif
+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
+#error glext.h included before glew.h
+#endif
+#if defined(__gl_ATI_h_)
+#error glATI.h included before glew.h
+#endif
+
+#define __gl_h_
+#define __gl2_h_
+#define __GL_H__
+#define _GL_H
+#define __gl_gl_h_
+#define __gltypes_h_
+#define __REGAL_H__
+#define __X_GL_H
+#define __glext_h_
+#define __GLEXT_H_
+#define __gl_glext_h_
+#define __gl_ATI_h_
+
+#if defined(_WIN32)
+
+/*
+ * GLEW does not include <windows.h> to avoid name space pollution.
+ * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t
+ * defined properly.
+ */
+/* <windef.h> and <gl.h>*/
+#ifdef APIENTRY
+# ifndef GLAPIENTRY
+# define GLAPIENTRY APIENTRY
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY APIENTRY
+# endif
+#else
+#define GLEW_APIENTRY_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__)
+# define APIENTRY __stdcall
+# ifndef GLAPIENTRY
+# define GLAPIENTRY __stdcall
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY __stdcall
+# endif
+# else
+# define APIENTRY
+# endif
+#endif
+/* <winnt.h> */
+#ifndef CALLBACK
+#define GLEW_CALLBACK_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define CALLBACK __attribute__ ((__stdcall__))
+# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+#endif
+/* <wingdi.h> and <winnt.h> */
+#ifndef WINGDIAPI
+#define GLEW_WINGDIAPI_DEFINED
+#define WINGDIAPI __declspec(dllimport)
+#endif
+/* <ctype.h> */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED)
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+#endif
+/* <stddef.h> */
+#if !defined(_W64)
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300
+# define _W64 __w64
+# else
+# define _W64
+# endif
+#endif
+#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__)
+# ifdef _WIN64
+typedef __int64 ptrdiff_t;
+# else
+typedef _W64 int ptrdiff_t;
+# endif
+# define _PTRDIFF_T_DEFINED
+# define _PTRDIFF_T_
+#endif
+
+#ifndef GLAPI
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define GLAPI extern
+# else
+# define GLAPI WINGDIAPI
+# endif
+#endif
+
+/*
+ * GLEW_STATIC is defined for static library.
+ * GLEW_BUILD is defined for building the DLL library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#else /* _UNIX */
+
+/*
+ * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO
+ * C. On my system, this amounts to _3 lines_ of included code, all of
+ * them pretty much harmless. If you know of a way of detecting 32 vs
+ * 64 _targets_ at compile time you are free to replace this with
+ * something that's portable. For now, _this_ is the portable solution.
+ * (mem, 2004-01-04)
+ */
+
+#if defined(__APPLE__) || defined(__linux__)
+# if defined(__cplusplus)
+# include <cstddef>
+# include <cstdint>
+# else
+# include <stddef.h>
+# include <stdint.h>
+# endif
+#else
+
+# include <stddef.h>
+
+/* SGI MIPSPro doesn't like stdint.h in C++ mode */
+/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */
+
+# if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+# endif
+#endif
+
+#define GLEW_APIENTRY_DEFINED
+#define APIENTRY
+
+/*
+ * GLEW_STATIC is defined for static library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# if defined(__GNUC__) && __GNUC__>=4
+# define GLEWAPI extern __attribute__ ((visibility("default")))
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# define GLEWAPI extern __global
+# else
+# define GLEWAPI extern
+# endif
+#endif
+
+/* <glu.h> */
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#endif /* _WIN32 */
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef GLEWAPIENTRY
+#define GLEWAPIENTRY
+#endif
+
+#define GLEW_VAR_EXPORT GLEWAPI
+#define GLEW_FUN_EXPORT GLEWAPI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifndef GL_VERSION_1_1
+#define GL_VERSION_1_1 1
+
+typedef unsigned int GLenum;
+typedef unsigned int GLbitfield;
+typedef unsigned int GLuint;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned long GLulong;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+#if defined(_MSC_VER) && _MSC_VER < 1400
+typedef __int64 GLint64EXT;
+typedef unsigned __int64 GLuint64EXT;
+#elif defined(_MSC_VER) || defined(__BORLANDC__)
+typedef signed long long GLint64EXT;
+typedef unsigned long long GLuint64EXT;
+#else
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+#include <inttypes.h>
+# endif
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+typedef GLint64EXT GLint64;
+typedef GLuint64EXT GLuint64;
+typedef struct __GLsync *GLsync;
+
+typedef char GLchar;
+
+typedef void *GLeglImageOES; /* GL_EXT_EGL_image_storage */
+
+#define GL_ZERO 0
+#define GL_FALSE 0
+#define GL_LOGIC_OP 0x0BF1
+#define GL_NONE 0
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_NO_ERROR 0
+#define GL_POINTS 0x0000
+#define GL_CURRENT_BIT 0x00000001
+#define GL_TRUE 1
+#define GL_ONE 1
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_POINT_BIT 0x00000002
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_LINE_STRIP 0x0003
+#define GL_LINE_BIT 0x00000004
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON 0x0009
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM 0x0100
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+#define GL_NEVER 0x0200
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_EXP 0x0800
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_EXP2 0x0801
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_BITMAP 0x1A00
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_S 0x2000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_ENV 0x2300
+#define GL_EYE_LINEAR 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_SPHERE_MAP 0x2402
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_R3_G3_B2 0x2A10
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+#define GL_LIGHT0 0x4000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_HINT_BIT 0x00008000
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000fffff
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+
+GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value);
+GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void GLAPIENTRY glArrayElement (GLint i);
+GLAPI void GLAPIENTRY glBegin (GLenum mode);
+GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void GLAPIENTRY glCallList (GLuint list);
+GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists);
+GLAPI void GLAPIENTRY glClear (GLbitfield mask);
+GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void GLAPIENTRY glClearDepth (GLclampd depth);
+GLAPI void GLAPIENTRY glClearIndex (GLfloat c);
+GLAPI void GLAPIENTRY glClearStencil (GLint s);
+GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation);
+GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue);
+GLAPI void GLAPIENTRY glColor3iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void GLAPIENTRY glColor3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void GLAPIENTRY glColor3usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void GLAPIENTRY glColor4iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+GLAPI void GLAPIENTRY glColor4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+GLAPI void GLAPIENTRY glColor4usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glCullFace (GLenum mode);
+GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range);
+GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void GLAPIENTRY glDepthFunc (GLenum func);
+GLAPI void GLAPIENTRY glDepthMask (GLboolean flag);
+GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);
+GLAPI void GLAPIENTRY glDisable (GLenum cap);
+GLAPI void GLAPIENTRY glDisableClientState (GLenum array);
+GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
+GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag);
+GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag);
+GLAPI void GLAPIENTRY glEnable (GLenum cap);
+GLAPI void GLAPIENTRY glEnableClientState (GLenum array);
+GLAPI void GLAPIENTRY glEnd (void);
+GLAPI void GLAPIENTRY glEndList (void);
+GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u);
+GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u);
+GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v);
+GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v);
+GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
+GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+GLAPI void GLAPIENTRY glEvalPoint1 (GLint i);
+GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j);
+GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
+GLAPI void GLAPIENTRY glFinish (void);
+GLAPI void GLAPIENTRY glFlush (void);
+GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glFrontFace (GLenum mode);
+GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range);
+GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
+GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation);
+GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params);
+GLAPI GLenum GLAPIENTRY glGetError (void);
+GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v);
+GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v);
+GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v);
+GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);
+GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);
+GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values);
+GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, void* *params);
+GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask);
+GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name);
+GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void GLAPIENTRY glIndexMask (GLuint mask);
+GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glIndexd (GLdouble c);
+GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c);
+GLAPI void GLAPIENTRY glIndexf (GLfloat c);
+GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c);
+GLAPI void GLAPIENTRY glIndexi (GLint c);
+GLAPI void GLAPIENTRY glIndexiv (const GLint *c);
+GLAPI void GLAPIENTRY glIndexs (GLshort c);
+GLAPI void GLAPIENTRY glIndexsv (const GLshort *c);
+GLAPI void GLAPIENTRY glIndexub (GLubyte c);
+GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c);
+GLAPI void GLAPIENTRY glInitNames (void);
+GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer);
+GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap);
+GLAPI GLboolean GLAPIENTRY glIsList (GLuint list);
+GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture);
+GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern);
+GLAPI void GLAPIENTRY glLineWidth (GLfloat width);
+GLAPI void GLAPIENTRY glListBase (GLuint base);
+GLAPI void GLAPIENTRY glLoadIdentity (void);
+GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glLoadName (GLuint name);
+GLAPI void GLAPIENTRY glLogicOp (GLenum opcode);
+GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
+GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
+GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glMatrixMode (GLenum mode);
+GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode);
+GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz);
+GLAPI void GLAPIENTRY glNormal3iv (const GLint *v);
+GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz);
+GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY glPassThrough (GLfloat token);
+GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values);
+GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values);
+GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values);
+GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor);
+GLAPI void GLAPIENTRY glPointSize (GLfloat size);
+GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask);
+GLAPI void GLAPIENTRY glPopAttrib (void);
+GLAPI void GLAPIENTRY glPopClientAttrib (void);
+GLAPI void GLAPIENTRY glPopMatrix (void);
+GLAPI void GLAPIENTRY glPopName (void);
+GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushMatrix (void);
+GLAPI void GLAPIENTRY glPushName (GLuint name);
+GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glReadBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2);
+GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2);
+GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
+GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2);
+GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2);
+GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode);
+GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer);
+GLAPI void GLAPIENTRY glShadeModel (GLenum mode);
+GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void GLAPIENTRY glStencilMask (GLuint mask);
+GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s);
+GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s);
+GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord1i (GLint s);
+GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord1s (GLshort s);
+GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t);
+GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t);
+GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t);
+GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t);
+GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
+GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r);
+GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r);
+GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
+GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param);
+GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glVertex2iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glVertex3iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glVertex4iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1)
+
+#endif /* GL_VERSION_1_1 */
+
+/* ---------------------------------- GLU ---------------------------------- */
+
+#ifndef GLEW_NO_GLU
+# ifdef __APPLE__
+# include <Availability.h>
+# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
+# define GLEW_NO_GLU
+# endif
+# endif
+#endif
+
+#ifndef GLEW_NO_GLU
+/* this is where we can safely include GLU */
+# if defined(__APPLE__) && defined(__MACH__)
+# include <OpenGL/glu.h>
+# else
+# include <GL/glu.h>
+# endif
+#endif
+
+/* ----------------------------- GL_VERSION_1_2 ---------------------------- */
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D)
+#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements)
+#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D)
+#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D)
+
+#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2)
+
+#endif /* GL_VERSION_1_2 */
+
+/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */
+
+#ifndef GL_VERSION_1_2_1
+#define GL_VERSION_1_2_1 1
+
+#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1)
+
+#endif /* GL_VERSION_1_2_1 */
+
+/* ----------------------------- GL_VERSION_1_3 ---------------------------- */
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_CLAMP_TO_BORDER 0x812D
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+#define GL_SUBTRACT 0x84E7
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_NORMAL_MAP 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_RGB_SCALE 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_CONSTANT 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PREVIOUS 0x8578
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+#define GL_MULTISAMPLE_BIT 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, void *img);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+
+#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture)
+#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture)
+#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D)
+#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D)
+#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D)
+#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D)
+#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D)
+#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D)
+#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage)
+#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd)
+#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf)
+#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd)
+#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf)
+#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d)
+#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv)
+#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f)
+#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv)
+#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i)
+#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv)
+#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s)
+#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv)
+#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d)
+#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv)
+#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f)
+#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv)
+#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i)
+#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv)
+#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s)
+#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv)
+#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d)
+#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv)
+#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f)
+#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv)
+#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i)
+#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv)
+#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s)
+#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv)
+#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d)
+#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv)
+#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f)
+#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv)
+#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i)
+#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv)
+#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s)
+#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv)
+#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage)
+
+#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3)
+
+#endif /* GL_VERSION_1_3 */
+
+/* ----------------------------- GL_VERSION_1_4 ---------------------------- */
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_POINT_SIZE_MIN 0x8126
+#define GL_POINT_SIZE_MAX 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#define GL_GENERATE_MIPMAP 0x8191
+#define GL_GENERATE_MIPMAP_HINT 0x8192
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_FOG_COORDINATE_SOURCE 0x8450
+#define GL_FOG_COORDINATE 0x8451
+#define GL_FRAGMENT_DEPTH 0x8452
+#define GL_CURRENT_FOG_COORDINATE 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY 0x8457
+#define GL_COLOR_SUM 0x8458
+#define GL_CURRENT_SECONDARY_COLOR 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
+#define GL_SECONDARY_COLOR_ARRAY 0x845E
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL 0x8500
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_INCR_WRAP 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+
+typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const* indices, GLsizei drawcount);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p);
+
+#define glBlendColor GLEW_GET_FUN(__glewBlendColor)
+#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation)
+#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate)
+#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer)
+#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd)
+#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv)
+#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf)
+#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv)
+#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays)
+#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements)
+#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf)
+#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv)
+#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri)
+#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv)
+#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b)
+#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv)
+#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d)
+#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv)
+#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f)
+#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv)
+#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i)
+#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv)
+#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s)
+#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv)
+#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub)
+#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv)
+#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui)
+#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv)
+#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us)
+#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv)
+#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer)
+#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d)
+#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv)
+#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f)
+#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv)
+#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i)
+#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv)
+#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s)
+#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv)
+#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d)
+#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv)
+#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f)
+#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv)
+#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i)
+#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv)
+#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s)
+#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv)
+
+#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4)
+
+#endif /* GL_VERSION_1_4 */
+
+/* ----------------------------- GL_VERSION_1_5 ---------------------------- */
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+
+#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
+#define GL_FOG_COORD GL_FOG_COORDINATE
+#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
+#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
+#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
+#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
+#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
+#define GL_SRC0_RGB GL_SOURCE0_RGB
+#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
+#define GL_SRC1_RGB GL_SOURCE1_RGB
+#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
+#define GL_SRC2_RGB GL_SOURCE2_RGB
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_CURRENT_QUERY 0x8865
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_SAMPLES_PASSED 0x8914
+
+typedef ptrdiff_t GLintptr;
+typedef ptrdiff_t GLsizeiptr;
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void* data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void* data);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id);
+typedef void* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target);
+
+#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery)
+#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer)
+#define glBufferData GLEW_GET_FUN(__glewBufferData)
+#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData)
+#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers)
+#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries)
+#define glEndQuery GLEW_GET_FUN(__glewEndQuery)
+#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers)
+#define glGenQueries GLEW_GET_FUN(__glewGenQueries)
+#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv)
+#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv)
+#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData)
+#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv)
+#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv)
+#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv)
+#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer)
+#define glIsQuery GLEW_GET_FUN(__glewIsQuery)
+#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer)
+#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer)
+
+#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5)
+
+#endif /* GL_VERSION_1_5 */
+
+/* ----------------------------- GL_VERSION_2_0 ---------------------------- */
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+
+#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_POINT_SPRITE 0x8861
+#define GL_COORD_REPLACE 0x8862
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_COORDS 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_DELETE_STATUS 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_STENCIL_BACK_REF 0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
+
+typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders);
+typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
+typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source);
+typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param);
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader);
+typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const* string, const GLint* length);
+typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer);
+
+#define glAttachShader GLEW_GET_FUN(__glewAttachShader)
+#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation)
+#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate)
+#define glCompileShader GLEW_GET_FUN(__glewCompileShader)
+#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram)
+#define glCreateShader GLEW_GET_FUN(__glewCreateShader)
+#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram)
+#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader)
+#define glDetachShader GLEW_GET_FUN(__glewDetachShader)
+#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray)
+#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers)
+#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray)
+#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib)
+#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform)
+#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders)
+#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation)
+#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog)
+#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv)
+#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog)
+#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource)
+#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv)
+#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation)
+#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv)
+#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv)
+#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv)
+#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv)
+#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv)
+#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv)
+#define glIsProgram GLEW_GET_FUN(__glewIsProgram)
+#define glIsShader GLEW_GET_FUN(__glewIsShader)
+#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram)
+#define glShaderSource GLEW_GET_FUN(__glewShaderSource)
+#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate)
+#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate)
+#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate)
+#define glUniform1f GLEW_GET_FUN(__glewUniform1f)
+#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv)
+#define glUniform1i GLEW_GET_FUN(__glewUniform1i)
+#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv)
+#define glUniform2f GLEW_GET_FUN(__glewUniform2f)
+#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv)
+#define glUniform2i GLEW_GET_FUN(__glewUniform2i)
+#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv)
+#define glUniform3f GLEW_GET_FUN(__glewUniform3f)
+#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv)
+#define glUniform3i GLEW_GET_FUN(__glewUniform3i)
+#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv)
+#define glUniform4f GLEW_GET_FUN(__glewUniform4f)
+#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv)
+#define glUniform4i GLEW_GET_FUN(__glewUniform4i)
+#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv)
+#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv)
+#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv)
+#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv)
+#define glUseProgram GLEW_GET_FUN(__glewUseProgram)
+#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram)
+#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d)
+#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv)
+#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f)
+#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv)
+#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s)
+#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv)
+#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d)
+#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv)
+#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f)
+#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv)
+#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s)
+#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv)
+#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d)
+#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv)
+#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f)
+#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv)
+#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s)
+#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv)
+#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv)
+#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv)
+#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv)
+#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub)
+#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv)
+#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv)
+#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv)
+#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv)
+#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d)
+#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv)
+#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f)
+#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv)
+#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv)
+#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s)
+#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv)
+#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv)
+#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv)
+#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv)
+#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer)
+
+#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0)
+
+#endif /* GL_VERSION_2_0 */
+
+/* ----------------------------- GL_VERSION_2_1 ---------------------------- */
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+
+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_SRGB 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_SLUMINANCE_ALPHA 0x8C44
+#define GL_SLUMINANCE8_ALPHA8 0x8C45
+#define GL_SLUMINANCE 0x8C46
+#define GL_SLUMINANCE8 0x8C47
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
+
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+
+#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv)
+#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv)
+#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv)
+#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv)
+#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv)
+#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv)
+
+#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1)
+
+#endif /* GL_VERSION_2_1 */
+
+/* ----------------------------- GL_VERSION_3_0 ---------------------------- */
+
+#ifndef GL_VERSION_3_0
+#define GL_VERSION_3_0 1
+
+#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0
+#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
+#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2
+#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
+#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4
+#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
+#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
+#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
+#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS
+#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
+#define GL_MAJOR_VERSION 0x821B
+#define GL_MINOR_VERSION 0x821C
+#define GL_NUM_EXTENSIONS 0x821D
+#define GL_CONTEXT_FLAGS 0x821E
+#define GL_DEPTH_BUFFER 0x8223
+#define GL_STENCIL_BUFFER 0x8224
+#define GL_RGBA32F 0x8814
+#define GL_RGB32F 0x8815
+#define GL_RGBA16F 0x881A
+#define GL_RGB16F 0x881B
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
+#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
+#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
+#define GL_CLAMP_VERTEX_COLOR 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR 0x891B
+#define GL_CLAMP_READ_COLOR 0x891C
+#define GL_FIXED_ONLY 0x891D
+#define GL_TEXTURE_RED_TYPE 0x8C10
+#define GL_TEXTURE_GREEN_TYPE 0x8C11
+#define GL_TEXTURE_BLUE_TYPE 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE 0x8C16
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+#define GL_RGB9_E5 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE 0x8C3F
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
+#define GL_PRIMITIVES_GENERATED 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
+#define GL_RASTERIZER_DISCARD 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS 0x8C8C
+#define GL_SEPARATE_ATTRIBS 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
+#define GL_RGBA32UI 0x8D70
+#define GL_RGB32UI 0x8D71
+#define GL_RGBA16UI 0x8D76
+#define GL_RGB16UI 0x8D77
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGB8UI 0x8D7D
+#define GL_RGBA32I 0x8D82
+#define GL_RGB32I 0x8D83
+#define GL_RGBA16I 0x8D88
+#define GL_RGB16I 0x8D89
+#define GL_RGBA8I 0x8D8E
+#define GL_RGB8I 0x8D8F
+#define GL_RED_INTEGER 0x8D94
+#define GL_GREEN_INTEGER 0x8D95
+#define GL_BLUE_INTEGER 0x8D96
+#define GL_ALPHA_INTEGER 0x8D97
+#define GL_RGB_INTEGER 0x8D98
+#define GL_RGBA_INTEGER 0x8D99
+#define GL_BGR_INTEGER 0x8D9A
+#define GL_BGRA_INTEGER 0x8D9B
+#define GL_SAMPLER_1D_ARRAY 0x8DC0
+#define GL_SAMPLER_2D_ARRAY 0x8DC1
+#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
+#define GL_UNSIGNED_INT_VEC2 0x8DC6
+#define GL_UNSIGNED_INT_VEC3 0x8DC7
+#define GL_UNSIGNED_INT_VEC4 0x8DC8
+#define GL_INT_SAMPLER_1D 0x8DC9
+#define GL_INT_SAMPLER_2D 0x8DCA
+#define GL_INT_SAMPLER_3D 0x8DCB
+#define GL_INT_SAMPLER_CUBE 0x8DCC
+#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
+#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
+#define GL_QUERY_WAIT 0x8E13
+#define GL_QUERY_NO_WAIT 0x8E14
+#define GL_QUERY_BY_REGION_WAIT 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint colorNumber, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawBuffer, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawBuffer, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawBuffer, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum pname, GLuint index, GLboolean* data);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar* name);
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void*pointer);
+
+#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender)
+#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback)
+#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation)
+#define glClampColor GLEW_GET_FUN(__glewClampColor)
+#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi)
+#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv)
+#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv)
+#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv)
+#define glColorMaski GLEW_GET_FUN(__glewColorMaski)
+#define glDisablei GLEW_GET_FUN(__glewDisablei)
+#define glEnablei GLEW_GET_FUN(__glewEnablei)
+#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender)
+#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback)
+#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v)
+#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation)
+#define glGetStringi GLEW_GET_FUN(__glewGetStringi)
+#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv)
+#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv)
+#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying)
+#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv)
+#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv)
+#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv)
+#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi)
+#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv)
+#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv)
+#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings)
+#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui)
+#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv)
+#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui)
+#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv)
+#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui)
+#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv)
+#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui)
+#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv)
+#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i)
+#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv)
+#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui)
+#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv)
+#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i)
+#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv)
+#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui)
+#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv)
+#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i)
+#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv)
+#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui)
+#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv)
+#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv)
+#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i)
+#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv)
+#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv)
+#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv)
+#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui)
+#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv)
+#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv)
+#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer)
+
+#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0)
+
+#endif /* GL_VERSION_3_0 */
+
+/* ----------------------------- GL_VERSION_3_1 ---------------------------- */
+
+#ifndef GL_VERSION_3_1
+#define GL_VERSION_3_1 1
+
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
+#define GL_SAMPLER_2D_RECT 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
+#define GL_TEXTURE_BUFFER 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E
+#define GL_SAMPLER_BUFFER 0x8DC2
+#define GL_INT_SAMPLER_2D_RECT 0x8DCD
+#define GL_INT_SAMPLER_BUFFER 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_PRIMITIVE_RESTART 0x8F9D
+#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalFormat, GLuint buffer);
+
+#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced)
+#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced)
+#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex)
+#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer)
+
+#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1)
+
+#endif /* GL_VERSION_3_1 */
+
+/* ----------------------------- GL_VERSION_3_2 ---------------------------- */
+
+#ifndef GL_VERSION_3_2
+#define GL_VERSION_3_2 1
+
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_LINES_ADJACENCY 0x000A
+#define GL_LINE_STRIP_ADJACENCY 0x000B
+#define GL_TRIANGLES_ADJACENCY 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
+#define GL_PROGRAM_POINT_SIZE 0x8642
+#define GL_GEOMETRY_VERTICES_OUT 0x8916
+#define GL_GEOMETRY_INPUT_TYPE 0x8917
+#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
+#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
+#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum value, GLint64 * data);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum pname, GLuint index, GLint64 * data);
+
+#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture)
+#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v)
+#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v)
+
+#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2)
+
+#endif /* GL_VERSION_3_2 */
+
+/* ----------------------------- GL_VERSION_3_3 ---------------------------- */
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+#define GL_RGB10_A2UI 0x906F
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor)
+
+#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3)
+
+#endif /* GL_VERSION_3_3 */
+
+/* ----------------------------- GL_VERSION_4_0 ---------------------------- */
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
+
+#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei)
+#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi)
+#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei)
+#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci)
+#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading)
+
+#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0)
+
+#endif /* GL_VERSION_4_0 */
+
+/* ----------------------------- GL_VERSION_4_1 ---------------------------- */
+
+#ifndef GL_VERSION_4_1
+#define GL_VERSION_4_1 1
+
+#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1)
+
+#endif /* GL_VERSION_4_1 */
+
+/* ----------------------------- GL_VERSION_4_2 ---------------------------- */
+
+#ifndef GL_VERSION_4_2
+#define GL_VERSION_4_2 1
+
+#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
+#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+#define GL_COPY_READ_BUFFER_BINDING 0x8F36
+#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
+
+#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2)
+
+#endif /* GL_VERSION_4_2 */
+
+/* ----------------------------- GL_VERSION_4_3 ---------------------------- */
+
+#ifndef GL_VERSION_4_3
+#define GL_VERSION_4_3 1
+
+#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
+#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
+
+#define GLEW_VERSION_4_3 GLEW_GET_VAR(__GLEW_VERSION_4_3)
+
+#endif /* GL_VERSION_4_3 */
+
+/* ----------------------------- GL_VERSION_4_4 ---------------------------- */
+
+#ifndef GL_VERSION_4_4
+#define GL_VERSION_4_4 1
+
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
+#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
+
+#define GLEW_VERSION_4_4 GLEW_GET_VAR(__GLEW_VERSION_4_4)
+
+#endif /* GL_VERSION_4_4 */
+
+/* ----------------------------- GL_VERSION_4_5 ---------------------------- */
+
+#ifndef GL_VERSION_4_5
+#define GL_VERSION_4_5 1
+
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEPROC) (GLenum tex, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+
+#define glGetGraphicsResetStatus GLEW_GET_FUN(__glewGetGraphicsResetStatus)
+#define glGetnCompressedTexImage GLEW_GET_FUN(__glewGetnCompressedTexImage)
+#define glGetnTexImage GLEW_GET_FUN(__glewGetnTexImage)
+#define glGetnUniformdv GLEW_GET_FUN(__glewGetnUniformdv)
+
+#define GLEW_VERSION_4_5 GLEW_GET_VAR(__GLEW_VERSION_4_5)
+
+#endif /* GL_VERSION_4_5 */
+
+/* ----------------------------- GL_VERSION_4_6 ---------------------------- */
+
+#ifndef GL_VERSION_4_6
+#define GL_VERSION_4_6 1
+
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
+#define GL_PARAMETER_BUFFER 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING 0x80EF
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
+#define GL_VERTICES_SUBMITTED 0x82EE
+#define GL_PRIMITIVES_SUBMITTED 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
+#define GL_SPIR_V_BINARY 0x9552
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const GLvoid *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const GLvoid *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+
+#define glMultiDrawArraysIndirectCount GLEW_GET_FUN(__glewMultiDrawArraysIndirectCount)
+#define glMultiDrawElementsIndirectCount GLEW_GET_FUN(__glewMultiDrawElementsIndirectCount)
+#define glSpecializeShader GLEW_GET_FUN(__glewSpecializeShader)
+
+#define GLEW_VERSION_4_6 GLEW_GET_VAR(__GLEW_VERSION_4_6)
+
+#endif /* GL_VERSION_4_6 */
+
+/* -------------------------- GL_3DFX_multisample -------------------------- */
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+
+#define GL_MULTISAMPLE_3DFX 0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
+#define GL_SAMPLES_3DFX 0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
+
+#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample)
+
+#endif /* GL_3DFX_multisample */
+
+/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+
+typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+
+#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX)
+
+#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer)
+
+#endif /* GL_3DFX_tbuffer */
+
+/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
+
+#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1)
+
+#endif /* GL_3DFX_texture_compression_FXT1 */
+
+/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */
+
+#ifndef GL_AMD_blend_minmax_factor
+#define GL_AMD_blend_minmax_factor 1
+
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+
+#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor)
+
+#endif /* GL_AMD_blend_minmax_factor */
+
+/* --------------------- GL_AMD_compressed_3DC_texture --------------------- */
+
+#ifndef GL_AMD_compressed_3DC_texture
+#define GL_AMD_compressed_3DC_texture 1
+
+#define GL_3DC_X_AMD 0x87F9
+#define GL_3DC_XY_AMD 0x87FA
+
+#define GLEW_AMD_compressed_3DC_texture GLEW_GET_VAR(__GLEW_AMD_compressed_3DC_texture)
+
+#endif /* GL_AMD_compressed_3DC_texture */
+
+/* --------------------- GL_AMD_compressed_ATC_texture --------------------- */
+
+#ifndef GL_AMD_compressed_ATC_texture
+#define GL_AMD_compressed_ATC_texture 1
+
+#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
+#define GL_ATC_RGB_AMD 0x8C92
+#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
+
+#define GLEW_AMD_compressed_ATC_texture GLEW_GET_VAR(__GLEW_AMD_compressed_ATC_texture)
+
+#endif /* GL_AMD_compressed_ATC_texture */
+
+/* ----------------------- GL_AMD_conservative_depth ----------------------- */
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+
+#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth)
+
+#endif /* GL_AMD_conservative_depth */
+
+/* -------------------------- GL_AMD_debug_output -------------------------- */
+
+#ifndef GL_AMD_debug_output
+#define GL_AMD_debug_output 1
+
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+
+typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message);
+
+#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD)
+#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD)
+#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD)
+#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD)
+
+#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output)
+
+#endif /* GL_AMD_debug_output */
+
+/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */
+
+#ifndef GL_AMD_depth_clamp_separate
+#define GL_AMD_depth_clamp_separate 1
+
+#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E
+#define GL_DEPTH_CLAMP_FAR_AMD 0x901F
+
+#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate)
+
+#endif /* GL_AMD_depth_clamp_separate */
+
+/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */
+
+#ifndef GL_AMD_draw_buffers_blend
+#define GL_AMD_draw_buffers_blend 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD)
+#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD)
+#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD)
+#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD)
+
+#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend)
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+/* ---------------- GL_AMD_framebuffer_multisample_advanced ---------------- */
+
+#ifndef GL_AMD_framebuffer_multisample_advanced
+#define GL_AMD_framebuffer_multisample_advanced 1
+
+#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
+#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
+#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
+#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
+#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
+#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
+
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glNamedRenderbufferStorageMultisampleAdvancedAMD GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleAdvancedAMD)
+#define glRenderbufferStorageMultisampleAdvancedAMD GLEW_GET_FUN(__glewRenderbufferStorageMultisampleAdvancedAMD)
+
+#define GLEW_AMD_framebuffer_multisample_advanced GLEW_GET_VAR(__GLEW_AMD_framebuffer_multisample_advanced)
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+/* ------------------ GL_AMD_framebuffer_sample_positions ------------------ */
+
+#ifndef GL_AMD_framebuffer_sample_positions
+#define GL_AMD_framebuffer_sample_positions 1
+
+#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
+#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
+#define GL_ALL_PIXELS_AMD 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat* values);
+
+#define glFramebufferSamplePositionsfvAMD GLEW_GET_FUN(__glewFramebufferSamplePositionsfvAMD)
+#define glGetFramebufferParameterfvAMD GLEW_GET_FUN(__glewGetFramebufferParameterfvAMD)
+#define glGetNamedFramebufferParameterfvAMD GLEW_GET_FUN(__glewGetNamedFramebufferParameterfvAMD)
+#define glNamedFramebufferSamplePositionsfvAMD GLEW_GET_FUN(__glewNamedFramebufferSamplePositionsfvAMD)
+
+#define GLEW_AMD_framebuffer_sample_positions GLEW_GET_VAR(__GLEW_AMD_framebuffer_sample_positions)
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+/* --------------------------- GL_AMD_gcn_shader --------------------------- */
+
+#ifndef GL_AMD_gcn_shader
+#define GL_AMD_gcn_shader 1
+
+#define GLEW_AMD_gcn_shader GLEW_GET_VAR(__GLEW_AMD_gcn_shader)
+
+#endif /* GL_AMD_gcn_shader */
+
+/* ---------------------- GL_AMD_gpu_shader_half_float --------------------- */
+
+#ifndef GL_AMD_gpu_shader_half_float
+#define GL_AMD_gpu_shader_half_float 1
+
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+#define GL_FLOAT16_MAT2_AMD 0x91C5
+#define GL_FLOAT16_MAT3_AMD 0x91C6
+#define GL_FLOAT16_MAT4_AMD 0x91C7
+#define GL_FLOAT16_MAT2x3_AMD 0x91C8
+#define GL_FLOAT16_MAT2x4_AMD 0x91C9
+#define GL_FLOAT16_MAT3x2_AMD 0x91CA
+#define GL_FLOAT16_MAT3x4_AMD 0x91CB
+#define GL_FLOAT16_MAT4x2_AMD 0x91CC
+#define GL_FLOAT16_MAT4x3_AMD 0x91CD
+
+#define GLEW_AMD_gpu_shader_half_float GLEW_GET_VAR(__GLEW_AMD_gpu_shader_half_float)
+
+#endif /* GL_AMD_gpu_shader_half_float */
+
+/* ------------------- GL_AMD_gpu_shader_half_float_fetch ------------------ */
+
+#ifndef GL_AMD_gpu_shader_half_float_fetch
+#define GL_AMD_gpu_shader_half_float_fetch 1
+
+#define GL_FLOAT16_SAMPLER_1D_AMD 0x91CE
+#define GL_FLOAT16_SAMPLER_2D_AMD 0x91CF
+#define GL_FLOAT16_SAMPLER_3D_AMD 0x91D0
+#define GL_FLOAT16_SAMPLER_CUBE_AMD 0x91D1
+#define GL_FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2
+#define GL_FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3
+#define GL_FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4
+#define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5
+#define GL_FLOAT16_SAMPLER_BUFFER_AMD 0x91D6
+#define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7
+#define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8
+#define GL_FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9
+#define GL_FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA
+#define GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB
+#define GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC
+#define GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD
+#define GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE
+#define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF
+#define GL_FLOAT16_IMAGE_1D_AMD 0x91E0
+#define GL_FLOAT16_IMAGE_2D_AMD 0x91E1
+#define GL_FLOAT16_IMAGE_3D_AMD 0x91E2
+#define GL_FLOAT16_IMAGE_2D_RECT_AMD 0x91E3
+#define GL_FLOAT16_IMAGE_CUBE_AMD 0x91E4
+#define GL_FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5
+#define GL_FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6
+#define GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7
+#define GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8
+#define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9
+#define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA
+
+#define GLEW_AMD_gpu_shader_half_float_fetch GLEW_GET_VAR(__GLEW_AMD_gpu_shader_half_float_fetch)
+
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+
+/* ------------------------ GL_AMD_gpu_shader_int16 ------------------------ */
+
+#ifndef GL_AMD_gpu_shader_int16
+#define GL_AMD_gpu_shader_int16 1
+
+#define GLEW_AMD_gpu_shader_int16 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int16)
+
+#endif /* GL_AMD_gpu_shader_int16 */
+
+/* ------------------------ GL_AMD_gpu_shader_int64 ------------------------ */
+
+#ifndef GL_AMD_gpu_shader_int64
+#define GL_AMD_gpu_shader_int64 1
+
+#define GLEW_AMD_gpu_shader_int64 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int64)
+
+#endif /* GL_AMD_gpu_shader_int64 */
+
+/* ---------------------- GL_AMD_interleaved_elements ---------------------- */
+
+#ifndef GL_AMD_interleaved_elements
+#define GL_AMD_interleaved_elements 1
+
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RG8UI 0x8238
+#define GL_RG16UI 0x823A
+#define GL_RGBA8UI 0x8D7C
+#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
+#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
+
+#define glVertexAttribParameteriAMD GLEW_GET_FUN(__glewVertexAttribParameteriAMD)
+
+#define GLEW_AMD_interleaved_elements GLEW_GET_VAR(__GLEW_AMD_interleaved_elements)
+
+#endif /* GL_AMD_interleaved_elements */
+
+/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */
+
+#ifndef GL_AMD_multi_draw_indirect
+#define GL_AMD_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD)
+#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD)
+
+#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect)
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+/* ------------------------- GL_AMD_name_gen_delete ------------------------ */
+
+#ifndef GL_AMD_name_gen_delete
+#define GL_AMD_name_gen_delete 1
+
+#define GL_DATA_BUFFER_AMD 0x9151
+#define GL_PERFORMANCE_MONITOR_AMD 0x9152
+#define GL_QUERY_OBJECT_AMD 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+#define GL_SAMPLER_OBJECT_AMD 0x9155
+
+typedef void (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names);
+typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
+
+#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD)
+#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD)
+#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD)
+
+#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete)
+
+#endif /* GL_AMD_name_gen_delete */
+
+/* ---------------------- GL_AMD_occlusion_query_event --------------------- */
+
+#ifndef GL_AMD_occlusion_query_event
+#define GL_AMD_occlusion_query_event 1
+
+#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
+#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
+#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
+#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
+#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
+#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
+
+#define glQueryObjectParameteruiAMD GLEW_GET_FUN(__glewQueryObjectParameteruiAMD)
+
+#define GLEW_AMD_occlusion_query_event GLEW_GET_VAR(__GLEW_AMD_occlusion_query_event)
+
+#endif /* GL_AMD_occlusion_query_event */
+
+/* ----------------------- GL_AMD_performance_monitor ---------------------- */
+
+#ifndef GL_AMD_performance_monitor
+#define GL_AMD_performance_monitor 1
+
+#define GL_COUNTER_TYPE_AMD 0x8BC0
+#define GL_COUNTER_RANGE_AMD 0x8BC1
+#define GL_UNSIGNED_INT64_AMD 0x8BC2
+#define GL_PERCENTAGE_AMD 0x8BC3
+#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+#define GL_PERFMON_RESULT_AMD 0x8BC6
+
+typedef void (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors);
+typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups);
+typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList);
+
+#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD)
+#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD)
+#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD)
+#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD)
+#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD)
+#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD)
+#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD)
+#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD)
+#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD)
+#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD)
+#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD)
+
+#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor)
+
+#endif /* GL_AMD_performance_monitor */
+
+/* -------------------------- GL_AMD_pinned_memory ------------------------- */
+
+#ifndef GL_AMD_pinned_memory
+#define GL_AMD_pinned_memory 1
+
+#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
+
+#define GLEW_AMD_pinned_memory GLEW_GET_VAR(__GLEW_AMD_pinned_memory)
+
+#endif /* GL_AMD_pinned_memory */
+
+/* ----------------------- GL_AMD_program_binary_Z400 ---------------------- */
+
+#ifndef GL_AMD_program_binary_Z400
+#define GL_AMD_program_binary_Z400 1
+
+#define GL_Z400_BINARY_AMD 0x8740
+
+#define GLEW_AMD_program_binary_Z400 GLEW_GET_VAR(__GLEW_AMD_program_binary_Z400)
+
+#endif /* GL_AMD_program_binary_Z400 */
+
+/* ----------------------- GL_AMD_query_buffer_object ---------------------- */
+
+#ifndef GL_AMD_query_buffer_object
+#define GL_AMD_query_buffer_object 1
+
+#define GL_QUERY_BUFFER_AMD 0x9192
+#define GL_QUERY_BUFFER_BINDING_AMD 0x9193
+#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
+
+#define GLEW_AMD_query_buffer_object GLEW_GET_VAR(__GLEW_AMD_query_buffer_object)
+
+#endif /* GL_AMD_query_buffer_object */
+
+/* ------------------------ GL_AMD_sample_positions ------------------------ */
+
+#ifndef GL_AMD_sample_positions
+#define GL_AMD_sample_positions 1
+
+#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+
+typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val);
+
+#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD)
+
+#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions)
+
+#endif /* GL_AMD_sample_positions */
+
+/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture)
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+/* -------------------- GL_AMD_shader_atomic_counter_ops ------------------- */
+
+#ifndef GL_AMD_shader_atomic_counter_ops
+#define GL_AMD_shader_atomic_counter_ops 1
+
+#define GLEW_AMD_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_AMD_shader_atomic_counter_ops)
+
+#endif /* GL_AMD_shader_atomic_counter_ops */
+
+/* -------------------------- GL_AMD_shader_ballot ------------------------- */
+
+#ifndef GL_AMD_shader_ballot
+#define GL_AMD_shader_ballot 1
+
+#define GLEW_AMD_shader_ballot GLEW_GET_VAR(__GLEW_AMD_shader_ballot)
+
+#endif /* GL_AMD_shader_ballot */
+
+/* ---------------- GL_AMD_shader_explicit_vertex_parameter ---------------- */
+
+#ifndef GL_AMD_shader_explicit_vertex_parameter
+#define GL_AMD_shader_explicit_vertex_parameter 1
+
+#define GLEW_AMD_shader_explicit_vertex_parameter GLEW_GET_VAR(__GLEW_AMD_shader_explicit_vertex_parameter)
+
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+
+/* ------------------- GL_AMD_shader_image_load_store_lod ------------------ */
+
+#ifndef GL_AMD_shader_image_load_store_lod
+#define GL_AMD_shader_image_load_store_lod 1
+
+#define GLEW_AMD_shader_image_load_store_lod GLEW_GET_VAR(__GLEW_AMD_shader_image_load_store_lod)
+
+#endif /* GL_AMD_shader_image_load_store_lod */
+
+/* ---------------------- GL_AMD_shader_stencil_export --------------------- */
+
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+
+#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export)
+
+#endif /* GL_AMD_shader_stencil_export */
+
+/* ------------------- GL_AMD_shader_stencil_value_export ------------------ */
+
+#ifndef GL_AMD_shader_stencil_value_export
+#define GL_AMD_shader_stencil_value_export 1
+
+#define GLEW_AMD_shader_stencil_value_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_value_export)
+
+#endif /* GL_AMD_shader_stencil_value_export */
+
+/* ---------------------- GL_AMD_shader_trinary_minmax --------------------- */
+
+#ifndef GL_AMD_shader_trinary_minmax
+#define GL_AMD_shader_trinary_minmax 1
+
+#define GLEW_AMD_shader_trinary_minmax GLEW_GET_VAR(__GLEW_AMD_shader_trinary_minmax)
+
+#endif /* GL_AMD_shader_trinary_minmax */
+
+/* ------------------------- GL_AMD_sparse_texture ------------------------- */
+
+#ifndef GL_AMD_sparse_texture
+#define GL_AMD_sparse_texture 1
+
+#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
+#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
+#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
+#define GL_MIN_LOD_WARNING_AMD 0x919C
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+
+#define glTexStorageSparseAMD GLEW_GET_FUN(__glewTexStorageSparseAMD)
+#define glTextureStorageSparseAMD GLEW_GET_FUN(__glewTextureStorageSparseAMD)
+
+#define GLEW_AMD_sparse_texture GLEW_GET_VAR(__GLEW_AMD_sparse_texture)
+
+#endif /* GL_AMD_sparse_texture */
+
+/* ------------------- GL_AMD_stencil_operation_extended ------------------- */
+
+#ifndef GL_AMD_stencil_operation_extended
+#define GL_AMD_stencil_operation_extended 1
+
+#define GL_SET_AMD 0x874A
+#define GL_REPLACE_VALUE_AMD 0x874B
+#define GL_STENCIL_OP_VALUE_AMD 0x874C
+#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
+
+typedef void (GLAPIENTRY * PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
+
+#define glStencilOpValueAMD GLEW_GET_FUN(__glewStencilOpValueAMD)
+
+#define GLEW_AMD_stencil_operation_extended GLEW_GET_VAR(__GLEW_AMD_stencil_operation_extended)
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+/* --------------------- GL_AMD_texture_gather_bias_lod -------------------- */
+
+#ifndef GL_AMD_texture_gather_bias_lod
+#define GL_AMD_texture_gather_bias_lod 1
+
+#define GLEW_AMD_texture_gather_bias_lod GLEW_GET_VAR(__GLEW_AMD_texture_gather_bias_lod)
+
+#endif /* GL_AMD_texture_gather_bias_lod */
+
+/* ------------------------ GL_AMD_texture_texture4 ------------------------ */
+
+#ifndef GL_AMD_texture_texture4
+#define GL_AMD_texture_texture4 1
+
+#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4)
+
+#endif /* GL_AMD_texture_texture4 */
+
+/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */
+
+#ifndef GL_AMD_transform_feedback3_lines_triangles
+#define GL_AMD_transform_feedback3_lines_triangles 1
+
+#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles)
+
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+
+/* ----------------------- GL_AMD_transform_feedback4 ---------------------- */
+
+#ifndef GL_AMD_transform_feedback4
+#define GL_AMD_transform_feedback4 1
+
+#define GL_STREAM_RASTERIZATION_AMD 0x91A0
+
+#define GLEW_AMD_transform_feedback4 GLEW_GET_VAR(__GLEW_AMD_transform_feedback4)
+
+#endif /* GL_AMD_transform_feedback4 */
+
+/* ----------------------- GL_AMD_vertex_shader_layer ---------------------- */
+
+#ifndef GL_AMD_vertex_shader_layer
+#define GL_AMD_vertex_shader_layer 1
+
+#define GLEW_AMD_vertex_shader_layer GLEW_GET_VAR(__GLEW_AMD_vertex_shader_layer)
+
+#endif /* GL_AMD_vertex_shader_layer */
+
+/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */
+
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_AMD_vertex_shader_tessellator 1
+
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+
+typedef void (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
+typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
+
+#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD)
+#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD)
+
+#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator)
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+/* ------------------ GL_AMD_vertex_shader_viewport_index ------------------ */
+
+#ifndef GL_AMD_vertex_shader_viewport_index
+#define GL_AMD_vertex_shader_viewport_index 1
+
+#define GLEW_AMD_vertex_shader_viewport_index GLEW_GET_VAR(__GLEW_AMD_vertex_shader_viewport_index)
+
+#endif /* GL_AMD_vertex_shader_viewport_index */
+
+/* -------------------- GL_ANDROID_extension_pack_es31a -------------------- */
+
+#ifndef GL_ANDROID_extension_pack_es31a
+#define GL_ANDROID_extension_pack_es31a 1
+
+#define GLEW_ANDROID_extension_pack_es31a GLEW_GET_VAR(__GLEW_ANDROID_extension_pack_es31a)
+
+#endif /* GL_ANDROID_extension_pack_es31a */
+
+/* ------------------------- GL_ANGLE_depth_texture ------------------------ */
+
+#ifndef GL_ANGLE_depth_texture
+#define GL_ANGLE_depth_texture 1
+
+#define GLEW_ANGLE_depth_texture GLEW_GET_VAR(__GLEW_ANGLE_depth_texture)
+
+#endif /* GL_ANGLE_depth_texture */
+
+/* ----------------------- GL_ANGLE_framebuffer_blit ----------------------- */
+
+#ifndef GL_ANGLE_framebuffer_blit
+#define GL_ANGLE_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferANGLE GLEW_GET_FUN(__glewBlitFramebufferANGLE)
+
+#define GLEW_ANGLE_framebuffer_blit GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_blit)
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+/* -------------------- GL_ANGLE_framebuffer_multisample ------------------- */
+
+#ifndef GL_ANGLE_framebuffer_multisample
+#define GL_ANGLE_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
+#define GL_MAX_SAMPLES_ANGLE 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleANGLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleANGLE)
+
+#define GLEW_ANGLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_multisample)
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+/* ----------------------- GL_ANGLE_instanced_arrays ----------------------- */
+
+#ifndef GL_ANGLE_instanced_arrays
+#define GL_ANGLE_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
+
+#define glDrawArraysInstancedANGLE GLEW_GET_FUN(__glewDrawArraysInstancedANGLE)
+#define glDrawElementsInstancedANGLE GLEW_GET_FUN(__glewDrawElementsInstancedANGLE)
+#define glVertexAttribDivisorANGLE GLEW_GET_FUN(__glewVertexAttribDivisorANGLE)
+
+#define GLEW_ANGLE_instanced_arrays GLEW_GET_VAR(__GLEW_ANGLE_instanced_arrays)
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+/* -------------------- GL_ANGLE_pack_reverse_row_order -------------------- */
+
+#ifndef GL_ANGLE_pack_reverse_row_order
+#define GL_ANGLE_pack_reverse_row_order 1
+
+#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
+
+#define GLEW_ANGLE_pack_reverse_row_order GLEW_GET_VAR(__GLEW_ANGLE_pack_reverse_row_order)
+
+#endif /* GL_ANGLE_pack_reverse_row_order */
+
+/* ------------------------ GL_ANGLE_program_binary ------------------------ */
+
+#ifndef GL_ANGLE_program_binary
+#define GL_ANGLE_program_binary 1
+
+#define GL_PROGRAM_BINARY_ANGLE 0x93A6
+
+#define GLEW_ANGLE_program_binary GLEW_GET_VAR(__GLEW_ANGLE_program_binary)
+
+#endif /* GL_ANGLE_program_binary */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt1 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt1
+#define GL_ANGLE_texture_compression_dxt1 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt1)
+
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt3 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt3
+#define GL_ANGLE_texture_compression_dxt3 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt3 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt3)
+
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt5 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt5
+#define GL_ANGLE_texture_compression_dxt5 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt5 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt5)
+
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+
+/* ------------------------- GL_ANGLE_texture_usage ------------------------ */
+
+#ifndef GL_ANGLE_texture_usage
+#define GL_ANGLE_texture_usage 1
+
+#define GL_TEXTURE_USAGE_ANGLE 0x93A2
+#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
+
+#define GLEW_ANGLE_texture_usage GLEW_GET_VAR(__GLEW_ANGLE_texture_usage)
+
+#endif /* GL_ANGLE_texture_usage */
+
+/* -------------------------- GL_ANGLE_timer_query ------------------------- */
+
+#ifndef GL_ANGLE_timer_query
+#define GL_ANGLE_timer_query 1
+
+#define GL_QUERY_COUNTER_BITS_ANGLE 0x8864
+#define GL_CURRENT_QUERY_ANGLE 0x8865
+#define GL_QUERY_RESULT_ANGLE 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867
+#define GL_TIME_ELAPSED_ANGLE 0x88BF
+#define GL_TIMESTAMP_ANGLE 0x8E28
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYANGLEPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESANGLEPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYANGLEPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESANGLEPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VANGLEPROC) (GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVANGLEPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VANGLEPROC) (GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVANGLEPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVANGLEPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYANGLEPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERANGLEPROC) (GLuint id, GLenum target);
+
+#define glBeginQueryANGLE GLEW_GET_FUN(__glewBeginQueryANGLE)
+#define glDeleteQueriesANGLE GLEW_GET_FUN(__glewDeleteQueriesANGLE)
+#define glEndQueryANGLE GLEW_GET_FUN(__glewEndQueryANGLE)
+#define glGenQueriesANGLE GLEW_GET_FUN(__glewGenQueriesANGLE)
+#define glGetQueryObjecti64vANGLE GLEW_GET_FUN(__glewGetQueryObjecti64vANGLE)
+#define glGetQueryObjectivANGLE GLEW_GET_FUN(__glewGetQueryObjectivANGLE)
+#define glGetQueryObjectui64vANGLE GLEW_GET_FUN(__glewGetQueryObjectui64vANGLE)
+#define glGetQueryObjectuivANGLE GLEW_GET_FUN(__glewGetQueryObjectuivANGLE)
+#define glGetQueryivANGLE GLEW_GET_FUN(__glewGetQueryivANGLE)
+#define glIsQueryANGLE GLEW_GET_FUN(__glewIsQueryANGLE)
+#define glQueryCounterANGLE GLEW_GET_FUN(__glewQueryCounterANGLE)
+
+#define GLEW_ANGLE_timer_query GLEW_GET_VAR(__GLEW_ANGLE_timer_query)
+
+#endif /* GL_ANGLE_timer_query */
+
+/* ------------------- GL_ANGLE_translated_shader_source ------------------- */
+
+#ifndef GL_ANGLE_translated_shader_source
+#define GL_ANGLE_translated_shader_source 1
+
+#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
+
+typedef void (GLAPIENTRY * PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+
+#define glGetTranslatedShaderSourceANGLE GLEW_GET_FUN(__glewGetTranslatedShaderSourceANGLE)
+
+#define GLEW_ANGLE_translated_shader_source GLEW_GET_VAR(__GLEW_ANGLE_translated_shader_source)
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */
+
+#ifndef GL_APPLE_aux_depth_stencil
+#define GL_APPLE_aux_depth_stencil 1
+
+#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
+
+#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil)
+
+#endif /* GL_APPLE_aux_depth_stencil */
+
+/* ------------------------ GL_APPLE_client_storage ------------------------ */
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+
+#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage)
+
+#endif /* GL_APPLE_client_storage */
+
+/* ------------------------- GL_APPLE_clip_distance ------------------------ */
+
+#ifndef GL_APPLE_clip_distance
+#define GL_APPLE_clip_distance 1
+
+#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
+#define GL_CLIP_DISTANCE0_APPLE 0x3000
+#define GL_CLIP_DISTANCE1_APPLE 0x3001
+#define GL_CLIP_DISTANCE2_APPLE 0x3002
+#define GL_CLIP_DISTANCE3_APPLE 0x3003
+#define GL_CLIP_DISTANCE4_APPLE 0x3004
+#define GL_CLIP_DISTANCE5_APPLE 0x3005
+#define GL_CLIP_DISTANCE6_APPLE 0x3006
+#define GL_CLIP_DISTANCE7_APPLE 0x3007
+
+#define GLEW_APPLE_clip_distance GLEW_GET_VAR(__GLEW_APPLE_clip_distance)
+
+#endif /* GL_APPLE_clip_distance */
+
+/* ------------------- GL_APPLE_color_buffer_packed_float ------------------ */
+
+#ifndef GL_APPLE_color_buffer_packed_float
+#define GL_APPLE_color_buffer_packed_float 1
+
+#define GLEW_APPLE_color_buffer_packed_float GLEW_GET_VAR(__GLEW_APPLE_color_buffer_packed_float)
+
+#endif /* GL_APPLE_color_buffer_packed_float */
+
+/* ---------------------- GL_APPLE_copy_texture_levels --------------------- */
+
+#ifndef GL_APPLE_copy_texture_levels
+#define GL_APPLE_copy_texture_levels 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
+
+#define glCopyTextureLevelsAPPLE GLEW_GET_FUN(__glewCopyTextureLevelsAPPLE)
+
+#define GLEW_APPLE_copy_texture_levels GLEW_GET_VAR(__GLEW_APPLE_copy_texture_levels)
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+/* ------------------------- GL_APPLE_element_array ------------------------ */
+
+#ifndef GL_APPLE_element_array
+#define GL_APPLE_element_array 1
+
+#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount);
+
+#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE)
+#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE)
+#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE)
+#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE)
+#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE)
+
+#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array)
+
+#endif /* GL_APPLE_element_array */
+
+/* ----------------------------- GL_APPLE_fence ---------------------------- */
+
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+
+#define GL_DRAW_PIXELS_APPLE 0x8A0A
+#define GL_FENCE_APPLE 0x8A0B
+
+typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
+typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences);
+typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
+
+#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE)
+#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE)
+#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE)
+#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE)
+#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE)
+#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE)
+#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE)
+#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE)
+
+#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence)
+
+#endif /* GL_APPLE_fence */
+
+/* ------------------------- GL_APPLE_float_pixels ------------------------- */
+
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels 1
+
+#define GL_HALF_APPLE 0x140B
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+
+#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels)
+
+#endif /* GL_APPLE_float_pixels */
+
+/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_APPLE_flush_buffer_range 1
+
+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
+
+#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE)
+#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE)
+
+#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range)
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+/* -------------------- GL_APPLE_framebuffer_multisample ------------------- */
+
+#ifndef GL_APPLE_framebuffer_multisample
+#define GL_APPLE_framebuffer_multisample 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
+#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
+#define GL_MAX_SAMPLES_APPLE 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
+
+#define glRenderbufferStorageMultisampleAPPLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleAPPLE)
+#define glResolveMultisampleFramebufferAPPLE GLEW_GET_FUN(__glewResolveMultisampleFramebufferAPPLE)
+
+#define GLEW_APPLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_APPLE_framebuffer_multisample)
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+/* ----------------------- GL_APPLE_object_purgeable ----------------------- */
+
+#ifndef GL_APPLE_object_purgeable
+#define GL_APPLE_object_purgeable 1
+
+#define GL_BUFFER_OBJECT_APPLE 0x85B3
+#define GL_RELEASED_APPLE 0x8A19
+#define GL_VOLATILE_APPLE 0x8A1A
+#define GL_RETAINED_APPLE 0x8A1B
+#define GL_UNDEFINED_APPLE 0x8A1C
+#define GL_PURGEABLE_APPLE 0x8A1D
+
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params);
+typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+
+#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE)
+#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE)
+#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE)
+
+#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable)
+
+#endif /* GL_APPLE_object_purgeable */
+
+/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */
+
+#ifndef GL_APPLE_pixel_buffer
+#define GL_APPLE_pixel_buffer 1
+
+#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10
+
+#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer)
+
+#endif /* GL_APPLE_pixel_buffer */
+
+/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */
+
+#ifndef GL_APPLE_rgb_422
+#define GL_APPLE_rgb_422 1
+
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#define GL_RGB_422_APPLE 0x8A1F
+#define GL_RGB_RAW_422_APPLE 0x8A51
+
+#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422)
+
+#endif /* GL_APPLE_rgb_422 */
+
+/* --------------------------- GL_APPLE_row_bytes -------------------------- */
+
+#ifndef GL_APPLE_row_bytes
+#define GL_APPLE_row_bytes 1
+
+#define GL_PACK_ROW_BYTES_APPLE 0x8A15
+#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
+
+#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes)
+
+#endif /* GL_APPLE_row_bytes */
+
+/* ------------------------ GL_APPLE_specular_vector ----------------------- */
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+
+#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector)
+
+#endif /* GL_APPLE_specular_vector */
+
+/* ----------------------------- GL_APPLE_sync ----------------------------- */
+
+#ifndef GL_APPLE_sync
+#define GL_APPLE_sync 1
+
+#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
+#define GL_SYNC_OBJECT_APPLE 0x8A53
+#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
+#define GL_OBJECT_TYPE_APPLE 0x9112
+#define GL_SYNC_CONDITION_APPLE 0x9113
+#define GL_SYNC_STATUS_APPLE 0x9114
+#define GL_SYNC_FLAGS_APPLE 0x9115
+#define GL_SYNC_FENCE_APPLE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
+#define GL_UNSIGNALED_APPLE 0x9118
+#define GL_SIGNALED_APPLE 0x9119
+#define GL_ALREADY_SIGNALED_APPLE 0x911A
+#define GL_TIMEOUT_EXPIRED_APPLE 0x911B
+#define GL_CONDITION_SATISFIED_APPLE 0x911C
+#define GL_WAIT_FAILED_APPLE 0x911D
+#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
+
+typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync GLsync, GLbitfield flags, GLuint64 timeout);
+typedef void (GLAPIENTRY * PFNGLDELETESYNCAPPLEPROC) (GLsync GLsync);
+typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETSYNCIVAPPLEPROC) (GLsync GLsync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values);
+typedef GLboolean (GLAPIENTRY * PFNGLISSYNCAPPLEPROC) (GLsync GLsync);
+typedef void (GLAPIENTRY * PFNGLWAITSYNCAPPLEPROC) (GLsync GLsync, GLbitfield flags, GLuint64 timeout);
+
+#define glClientWaitSyncAPPLE GLEW_GET_FUN(__glewClientWaitSyncAPPLE)
+#define glDeleteSyncAPPLE GLEW_GET_FUN(__glewDeleteSyncAPPLE)
+#define glFenceSyncAPPLE GLEW_GET_FUN(__glewFenceSyncAPPLE)
+#define glGetInteger64vAPPLE GLEW_GET_FUN(__glewGetInteger64vAPPLE)
+#define glGetSyncivAPPLE GLEW_GET_FUN(__glewGetSyncivAPPLE)
+#define glIsSyncAPPLE GLEW_GET_FUN(__glewIsSyncAPPLE)
+#define glWaitSyncAPPLE GLEW_GET_FUN(__glewWaitSyncAPPLE)
+
+#define GLEW_APPLE_sync GLEW_GET_VAR(__GLEW_APPLE_sync)
+
+#endif /* GL_APPLE_sync */
+
+/* -------------------- GL_APPLE_texture_2D_limited_npot ------------------- */
+
+#ifndef GL_APPLE_texture_2D_limited_npot
+#define GL_APPLE_texture_2D_limited_npot 1
+
+#define GLEW_APPLE_texture_2D_limited_npot GLEW_GET_VAR(__GLEW_APPLE_texture_2D_limited_npot)
+
+#endif /* GL_APPLE_texture_2D_limited_npot */
+
+/* -------------------- GL_APPLE_texture_format_BGRA8888 ------------------- */
+
+#ifndef GL_APPLE_texture_format_BGRA8888
+#define GL_APPLE_texture_format_BGRA8888 1
+
+#define GL_BGRA_EXT 0x80E1
+#define GL_BGRA8_EXT 0x93A1
+
+#define GLEW_APPLE_texture_format_BGRA8888 GLEW_GET_VAR(__GLEW_APPLE_texture_format_BGRA8888)
+
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+
+/* ----------------------- GL_APPLE_texture_max_level ---------------------- */
+
+#ifndef GL_APPLE_texture_max_level
+#define GL_APPLE_texture_max_level 1
+
+#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
+
+#define GLEW_APPLE_texture_max_level GLEW_GET_VAR(__GLEW_APPLE_texture_max_level)
+
+#endif /* GL_APPLE_texture_max_level */
+
+/* --------------------- GL_APPLE_texture_packed_float --------------------- */
+
+#ifndef GL_APPLE_texture_packed_float
+#define GL_APPLE_texture_packed_float 1
+
+#define GL_R11F_G11F_B10F_APPLE 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
+#define GL_RGB9_E5_APPLE 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
+
+#define GLEW_APPLE_texture_packed_float GLEW_GET_VAR(__GLEW_APPLE_texture_packed_float)
+
+#endif /* GL_APPLE_texture_packed_float */
+
+/* ------------------------- GL_APPLE_texture_range ------------------------ */
+
+#ifndef GL_APPLE_texture_range
+#define GL_APPLE_texture_range 1
+
+#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+#define GL_STORAGE_PRIVATE_APPLE 0x85BD
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
+typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, void *pointer);
+
+#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE)
+#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE)
+
+#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range)
+
+#endif /* GL_APPLE_texture_range */
+
+/* ------------------------ GL_APPLE_transform_hint ------------------------ */
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+
+#define GL_TRANSFORM_HINT_APPLE 0x85B1
+
+#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint)
+
+#endif /* GL_APPLE_transform_hint */
+
+/* ---------------------- GL_APPLE_vertex_array_object --------------------- */
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_APPLE_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
+
+#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE)
+#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE)
+#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE)
+#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE)
+
+#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object)
+
+#endif /* GL_APPLE_vertex_array_object */
+
+/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_APPLE_vertex_array_range 1
+
+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CLIENT_APPLE 0x85B4
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+
+typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
+
+#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE)
+#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE)
+#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE)
+
+#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range)
+
+#endif /* GL_APPLE_vertex_array_range */
+
+/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */
+
+#ifndef GL_APPLE_vertex_program_evaluators
+#define GL_APPLE_vertex_program_evaluators 1
+
+#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points);
+
+#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE)
+#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE)
+#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE)
+#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE)
+#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE)
+#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE)
+#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE)
+
+#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators)
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+
+#define GL_YCBCR_422_APPLE 0x85B9
+
+#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422)
+
+#endif /* GL_APPLE_ycbcr_422 */
+
+/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */
+
+#ifndef GL_ARB_ES2_compatibility
+#define GL_ARB_ES2_compatibility 1
+
+#define GL_FIXED 0x140C
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+#define GL_RGB565 0x8D62
+#define GL_LOW_FLOAT 0x8DF0
+#define GL_MEDIUM_FLOAT 0x8DF1
+#define GL_HIGH_FLOAT 0x8DF2
+#define GL_LOW_INT 0x8DF3
+#define GL_MEDIUM_INT 0x8DF4
+#define GL_HIGH_INT 0x8DF5
+#define GL_SHADER_BINARY_FORMATS 0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+#define GL_SHADER_COMPILER 0x8DFA
+#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+#define GL_MAX_VARYING_VECTORS 0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+
+typedef int GLfixed;
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f);
+typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision);
+typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void);
+typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length);
+
+#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf)
+#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef)
+#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat)
+#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler)
+#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary)
+
+#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility)
+
+#endif /* GL_ARB_ES2_compatibility */
+
+/* ----------------------- GL_ARB_ES3_1_compatibility ---------------------- */
+
+#ifndef GL_ARB_ES3_1_compatibility
+#define GL_ARB_ES3_1_compatibility 1
+
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
+
+#define glMemoryBarrierByRegion GLEW_GET_FUN(__glewMemoryBarrierByRegion)
+
+#define GLEW_ARB_ES3_1_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_1_compatibility)
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+/* ----------------------- GL_ARB_ES3_2_compatibility ---------------------- */
+
+#ifndef GL_ARB_ES3_2_compatibility
+#define GL_ARB_ES3_2_compatibility 1
+
+#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+#define glPrimitiveBoundingBoxARB GLEW_GET_FUN(__glewPrimitiveBoundingBoxARB)
+
+#define GLEW_ARB_ES3_2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_2_compatibility)
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+/* ------------------------ GL_ARB_ES3_compatibility ----------------------- */
+
+#ifndef GL_ARB_ES3_compatibility
+#define GL_ARB_ES3_compatibility 1
+
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+#define GL_MAX_ELEMENT_INDEX 0x8D6B
+#define GL_COMPRESSED_R11_EAC 0x9270
+#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+#define GL_COMPRESSED_RG11_EAC 0x9272
+#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+#define GL_COMPRESSED_RGB8_ETC2 0x9274
+#define GL_COMPRESSED_SRGB8_ETC2 0x9275
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
+
+#define GLEW_ARB_ES3_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_compatibility)
+
+#endif /* GL_ARB_ES3_compatibility */
+
+/* ------------------------ GL_ARB_arrays_of_arrays ------------------------ */
+
+#ifndef GL_ARB_arrays_of_arrays
+#define GL_ARB_arrays_of_arrays 1
+
+#define GLEW_ARB_arrays_of_arrays GLEW_GET_VAR(__GLEW_ARB_arrays_of_arrays)
+
+#endif /* GL_ARB_arrays_of_arrays */
+
+/* -------------------------- GL_ARB_base_instance ------------------------- */
+
+#ifndef GL_ARB_base_instance
+#define GL_ARB_base_instance 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance);
+
+#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance)
+#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance)
+#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance)
+
+#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance)
+
+#endif /* GL_ARB_base_instance */
+
+/* ------------------------ GL_ARB_bindless_texture ------------------------ */
+
+#ifndef GL_ARB_bindless_texture
+#define GL_ARB_bindless_texture 1
+
+#define GL_UNSIGNED_INT64_ARB 0x140F
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT* v);
+
+#define glGetImageHandleARB GLEW_GET_FUN(__glewGetImageHandleARB)
+#define glGetTextureHandleARB GLEW_GET_FUN(__glewGetTextureHandleARB)
+#define glGetTextureSamplerHandleARB GLEW_GET_FUN(__glewGetTextureSamplerHandleARB)
+#define glGetVertexAttribLui64vARB GLEW_GET_FUN(__glewGetVertexAttribLui64vARB)
+#define glIsImageHandleResidentARB GLEW_GET_FUN(__glewIsImageHandleResidentARB)
+#define glIsTextureHandleResidentARB GLEW_GET_FUN(__glewIsTextureHandleResidentARB)
+#define glMakeImageHandleNonResidentARB GLEW_GET_FUN(__glewMakeImageHandleNonResidentARB)
+#define glMakeImageHandleResidentARB GLEW_GET_FUN(__glewMakeImageHandleResidentARB)
+#define glMakeTextureHandleNonResidentARB GLEW_GET_FUN(__glewMakeTextureHandleNonResidentARB)
+#define glMakeTextureHandleResidentARB GLEW_GET_FUN(__glewMakeTextureHandleResidentARB)
+#define glProgramUniformHandleui64ARB GLEW_GET_FUN(__glewProgramUniformHandleui64ARB)
+#define glProgramUniformHandleui64vARB GLEW_GET_FUN(__glewProgramUniformHandleui64vARB)
+#define glUniformHandleui64ARB GLEW_GET_FUN(__glewUniformHandleui64ARB)
+#define glUniformHandleui64vARB GLEW_GET_FUN(__glewUniformHandleui64vARB)
+#define glVertexAttribL1ui64ARB GLEW_GET_FUN(__glewVertexAttribL1ui64ARB)
+#define glVertexAttribL1ui64vARB GLEW_GET_FUN(__glewVertexAttribL1ui64vARB)
+
+#define GLEW_ARB_bindless_texture GLEW_GET_VAR(__GLEW_ARB_bindless_texture)
+
+#endif /* GL_ARB_bindless_texture */
+
+/* ----------------------- GL_ARB_blend_func_extended ---------------------- */
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+
+#define GL_SRC1_COLOR 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar * name);
+
+#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed)
+#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex)
+
+#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended)
+
+#endif /* GL_ARB_blend_func_extended */
+
+/* ------------------------- GL_ARB_buffer_storage ------------------------- */
+
+#ifndef GL_ARB_buffer_storage
+#define GL_ARB_buffer_storage 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_PERSISTENT_BIT 0x00000040
+#define GL_MAP_COHERENT_BIT 0x00000080
+#define GL_DYNAMIC_STORAGE_BIT 0x0100
+#define GL_CLIENT_STORAGE_BIT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+#define GL_BUFFER_STORAGE_FLAGS 0x8220
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+
+#define glBufferStorage GLEW_GET_FUN(__glewBufferStorage)
+
+#define GLEW_ARB_buffer_storage GLEW_GET_VAR(__GLEW_ARB_buffer_storage)
+
+#endif /* GL_ARB_buffer_storage */
+
+/* ---------------------------- GL_ARB_cl_event ---------------------------- */
+
+#ifndef GL_ARB_cl_event
+#define GL_ARB_cl_event 1
+
+#define GL_SYNC_CL_EVENT_ARB 0x8240
+#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+
+typedef struct _cl_context *cl_context;
+typedef struct _cl_event *cl_event;
+
+typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags);
+
+#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB)
+
+#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event)
+
+#endif /* GL_ARB_cl_event */
+
+/* ----------------------- GL_ARB_clear_buffer_object ---------------------- */
+
+#ifndef GL_ARB_clear_buffer_object
+#define GL_ARB_clear_buffer_object 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+
+#define glClearBufferData GLEW_GET_FUN(__glewClearBufferData)
+#define glClearBufferSubData GLEW_GET_FUN(__glewClearBufferSubData)
+#define glClearNamedBufferDataEXT GLEW_GET_FUN(__glewClearNamedBufferDataEXT)
+#define glClearNamedBufferSubDataEXT GLEW_GET_FUN(__glewClearNamedBufferSubDataEXT)
+
+#define GLEW_ARB_clear_buffer_object GLEW_GET_VAR(__GLEW_ARB_clear_buffer_object)
+
+#endif /* GL_ARB_clear_buffer_object */
+
+/* -------------------------- GL_ARB_clear_texture ------------------------- */
+
+#ifndef GL_ARB_clear_texture
+#define GL_ARB_clear_texture 1
+
+#define GL_CLEAR_TEXTURE 0x9365
+
+typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+
+#define glClearTexImage GLEW_GET_FUN(__glewClearTexImage)
+#define glClearTexSubImage GLEW_GET_FUN(__glewClearTexSubImage)
+
+#define GLEW_ARB_clear_texture GLEW_GET_VAR(__GLEW_ARB_clear_texture)
+
+#endif /* GL_ARB_clear_texture */
+
+/* -------------------------- GL_ARB_clip_control -------------------------- */
+
+#ifndef GL_ARB_clip_control
+#define GL_ARB_clip_control 1
+
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_CLIP_ORIGIN 0x935C
+#define GL_CLIP_DEPTH_MODE 0x935D
+#define GL_NEGATIVE_ONE_TO_ONE 0x935E
+#define GL_ZERO_TO_ONE 0x935F
+
+typedef void (GLAPIENTRY * PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
+
+#define glClipControl GLEW_GET_FUN(__glewClipControl)
+
+#define GLEW_ARB_clip_control GLEW_GET_VAR(__GLEW_ARB_clip_control)
+
+#endif /* GL_ARB_clip_control */
+
+/* ----------------------- GL_ARB_color_buffer_float ----------------------- */
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_ARB_color_buffer_float 1
+
+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+#define GL_CLAMP_READ_COLOR_ARB 0x891C
+#define GL_FIXED_ONLY_ARB 0x891D
+
+typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+
+#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB)
+
+#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float)
+
+#endif /* GL_ARB_color_buffer_float */
+
+/* -------------------------- GL_ARB_compatibility ------------------------- */
+
+#ifndef GL_ARB_compatibility
+#define GL_ARB_compatibility 1
+
+#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility)
+
+#endif /* GL_ARB_compatibility */
+
+/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */
+
+#ifndef GL_ARB_compressed_texture_pixel_storage
+#define GL_ARB_compressed_texture_pixel_storage 1
+
+#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
+
+#define GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage)
+
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+
+/* ------------------------- GL_ARB_compute_shader ------------------------- */
+
+#ifndef GL_ARB_compute_shader
+#define GL_ARB_compute_shader 1
+
+#define GL_COMPUTE_SHADER_BIT 0x00000020
+#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+#define GL_COMPUTE_SHADER 0x91B9
+#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
+
+#define glDispatchCompute GLEW_GET_FUN(__glewDispatchCompute)
+#define glDispatchComputeIndirect GLEW_GET_FUN(__glewDispatchComputeIndirect)
+
+#define GLEW_ARB_compute_shader GLEW_GET_VAR(__GLEW_ARB_compute_shader)
+
+#endif /* GL_ARB_compute_shader */
+
+/* ------------------- GL_ARB_compute_variable_group_size ------------------ */
+
+#ifndef GL_ARB_compute_variable_group_size
+#define GL_ARB_compute_variable_group_size 1
+
+#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+
+#define glDispatchComputeGroupSizeARB GLEW_GET_FUN(__glewDispatchComputeGroupSizeARB)
+
+#define GLEW_ARB_compute_variable_group_size GLEW_GET_VAR(__GLEW_ARB_compute_variable_group_size)
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+/* ------------------- GL_ARB_conditional_render_inverted ------------------ */
+
+#ifndef GL_ARB_conditional_render_inverted
+#define GL_ARB_conditional_render_inverted 1
+
+#define GL_QUERY_WAIT_INVERTED 0x8E17
+#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
+#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+
+#define GLEW_ARB_conditional_render_inverted GLEW_GET_VAR(__GLEW_ARB_conditional_render_inverted)
+
+#endif /* GL_ARB_conditional_render_inverted */
+
+/* ----------------------- GL_ARB_conservative_depth ----------------------- */
+
+#ifndef GL_ARB_conservative_depth
+#define GL_ARB_conservative_depth 1
+
+#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth)
+
+#endif /* GL_ARB_conservative_depth */
+
+/* --------------------------- GL_ARB_copy_buffer -------------------------- */
+
+#ifndef GL_ARB_copy_buffer
+#define GL_ARB_copy_buffer 1
+
+#define GL_COPY_READ_BUFFER 0x8F36
+#define GL_COPY_WRITE_BUFFER 0x8F37
+
+typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
+
+#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData)
+
+#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer)
+
+#endif /* GL_ARB_copy_buffer */
+
+/* --------------------------- GL_ARB_copy_image --------------------------- */
+
+#ifndef GL_ARB_copy_image
+#define GL_ARB_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubData GLEW_GET_FUN(__glewCopyImageSubData)
+
+#define GLEW_ARB_copy_image GLEW_GET_VAR(__GLEW_ARB_copy_image)
+
+#endif /* GL_ARB_copy_image */
+
+/* -------------------------- GL_ARB_cull_distance ------------------------- */
+
+#ifndef GL_ARB_cull_distance
+#define GL_ARB_cull_distance 1
+
+#define GL_MAX_CULL_DISTANCES 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
+
+#define GLEW_ARB_cull_distance GLEW_GET_VAR(__GLEW_ARB_cull_distance)
+
+#endif /* GL_ARB_cull_distance */
+
+/* -------------------------- GL_ARB_debug_output -------------------------- */
+
+#ifndef GL_ARB_debug_output
+#define GL_ARB_debug_output 1
+
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+#define GL_DEBUG_SOURCE_API_ARB 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+
+typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
+
+#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB)
+#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB)
+#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB)
+#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB)
+
+#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output)
+
+#endif /* GL_ARB_debug_output */
+
+/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */
+
+#ifndef GL_ARB_depth_buffer_float
+#define GL_ARB_depth_buffer_float 1
+
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
+
+#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float)
+
+#endif /* GL_ARB_depth_buffer_float */
+
+/* --------------------------- GL_ARB_depth_clamp -------------------------- */
+
+#ifndef GL_ARB_depth_clamp
+#define GL_ARB_depth_clamp 1
+
+#define GL_DEPTH_CLAMP 0x864F
+
+#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp)
+
+#endif /* GL_ARB_depth_clamp */
+
+/* -------------------------- GL_ARB_depth_texture ------------------------- */
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+
+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
+
+#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture)
+
+#endif /* GL_ARB_depth_texture */
+
+/* ----------------------- GL_ARB_derivative_control ----------------------- */
+
+#ifndef GL_ARB_derivative_control
+#define GL_ARB_derivative_control 1
+
+#define GLEW_ARB_derivative_control GLEW_GET_VAR(__GLEW_ARB_derivative_control)
+
+#endif /* GL_ARB_derivative_control */
+
+/* ----------------------- GL_ARB_direct_state_access ---------------------- */
+
+#ifndef GL_ARB_direct_state_access
+#define GL_ARB_direct_state_access 1
+
+#define GL_TEXTURE_TARGET 0x1006
+#define GL_QUERY_TARGET 0x82EA
+
+typedef void (GLAPIENTRY * PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64* param);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments);
+typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides);
+
+#define glBindTextureUnit GLEW_GET_FUN(__glewBindTextureUnit)
+#define glBlitNamedFramebuffer GLEW_GET_FUN(__glewBlitNamedFramebuffer)
+#define glCheckNamedFramebufferStatus GLEW_GET_FUN(__glewCheckNamedFramebufferStatus)
+#define glClearNamedBufferData GLEW_GET_FUN(__glewClearNamedBufferData)
+#define glClearNamedBufferSubData GLEW_GET_FUN(__glewClearNamedBufferSubData)
+#define glClearNamedFramebufferfi GLEW_GET_FUN(__glewClearNamedFramebufferfi)
+#define glClearNamedFramebufferfv GLEW_GET_FUN(__glewClearNamedFramebufferfv)
+#define glClearNamedFramebufferiv GLEW_GET_FUN(__glewClearNamedFramebufferiv)
+#define glClearNamedFramebufferuiv GLEW_GET_FUN(__glewClearNamedFramebufferuiv)
+#define glCompressedTextureSubImage1D GLEW_GET_FUN(__glewCompressedTextureSubImage1D)
+#define glCompressedTextureSubImage2D GLEW_GET_FUN(__glewCompressedTextureSubImage2D)
+#define glCompressedTextureSubImage3D GLEW_GET_FUN(__glewCompressedTextureSubImage3D)
+#define glCopyNamedBufferSubData GLEW_GET_FUN(__glewCopyNamedBufferSubData)
+#define glCopyTextureSubImage1D GLEW_GET_FUN(__glewCopyTextureSubImage1D)
+#define glCopyTextureSubImage2D GLEW_GET_FUN(__glewCopyTextureSubImage2D)
+#define glCopyTextureSubImage3D GLEW_GET_FUN(__glewCopyTextureSubImage3D)
+#define glCreateBuffers GLEW_GET_FUN(__glewCreateBuffers)
+#define glCreateFramebuffers GLEW_GET_FUN(__glewCreateFramebuffers)
+#define glCreateProgramPipelines GLEW_GET_FUN(__glewCreateProgramPipelines)
+#define glCreateQueries GLEW_GET_FUN(__glewCreateQueries)
+#define glCreateRenderbuffers GLEW_GET_FUN(__glewCreateRenderbuffers)
+#define glCreateSamplers GLEW_GET_FUN(__glewCreateSamplers)
+#define glCreateTextures GLEW_GET_FUN(__glewCreateTextures)
+#define glCreateTransformFeedbacks GLEW_GET_FUN(__glewCreateTransformFeedbacks)
+#define glCreateVertexArrays GLEW_GET_FUN(__glewCreateVertexArrays)
+#define glDisableVertexArrayAttrib GLEW_GET_FUN(__glewDisableVertexArrayAttrib)
+#define glEnableVertexArrayAttrib GLEW_GET_FUN(__glewEnableVertexArrayAttrib)
+#define glFlushMappedNamedBufferRange GLEW_GET_FUN(__glewFlushMappedNamedBufferRange)
+#define glGenerateTextureMipmap GLEW_GET_FUN(__glewGenerateTextureMipmap)
+#define glGetCompressedTextureImage GLEW_GET_FUN(__glewGetCompressedTextureImage)
+#define glGetNamedBufferParameteri64v GLEW_GET_FUN(__glewGetNamedBufferParameteri64v)
+#define glGetNamedBufferParameteriv GLEW_GET_FUN(__glewGetNamedBufferParameteriv)
+#define glGetNamedBufferPointerv GLEW_GET_FUN(__glewGetNamedBufferPointerv)
+#define glGetNamedBufferSubData GLEW_GET_FUN(__glewGetNamedBufferSubData)
+#define glGetNamedFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameteriv)
+#define glGetNamedFramebufferParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferParameteriv)
+#define glGetNamedRenderbufferParameteriv GLEW_GET_FUN(__glewGetNamedRenderbufferParameteriv)
+#define glGetQueryBufferObjecti64v GLEW_GET_FUN(__glewGetQueryBufferObjecti64v)
+#define glGetQueryBufferObjectiv GLEW_GET_FUN(__glewGetQueryBufferObjectiv)
+#define glGetQueryBufferObjectui64v GLEW_GET_FUN(__glewGetQueryBufferObjectui64v)
+#define glGetQueryBufferObjectuiv GLEW_GET_FUN(__glewGetQueryBufferObjectuiv)
+#define glGetTextureImage GLEW_GET_FUN(__glewGetTextureImage)
+#define glGetTextureLevelParameterfv GLEW_GET_FUN(__glewGetTextureLevelParameterfv)
+#define glGetTextureLevelParameteriv GLEW_GET_FUN(__glewGetTextureLevelParameteriv)
+#define glGetTextureParameterIiv GLEW_GET_FUN(__glewGetTextureParameterIiv)
+#define glGetTextureParameterIuiv GLEW_GET_FUN(__glewGetTextureParameterIuiv)
+#define glGetTextureParameterfv GLEW_GET_FUN(__glewGetTextureParameterfv)
+#define glGetTextureParameteriv GLEW_GET_FUN(__glewGetTextureParameteriv)
+#define glGetTransformFeedbacki64_v GLEW_GET_FUN(__glewGetTransformFeedbacki64_v)
+#define glGetTransformFeedbacki_v GLEW_GET_FUN(__glewGetTransformFeedbacki_v)
+#define glGetTransformFeedbackiv GLEW_GET_FUN(__glewGetTransformFeedbackiv)
+#define glGetVertexArrayIndexed64iv GLEW_GET_FUN(__glewGetVertexArrayIndexed64iv)
+#define glGetVertexArrayIndexediv GLEW_GET_FUN(__glewGetVertexArrayIndexediv)
+#define glGetVertexArrayiv GLEW_GET_FUN(__glewGetVertexArrayiv)
+#define glInvalidateNamedFramebufferData GLEW_GET_FUN(__glewInvalidateNamedFramebufferData)
+#define glInvalidateNamedFramebufferSubData GLEW_GET_FUN(__glewInvalidateNamedFramebufferSubData)
+#define glMapNamedBuffer GLEW_GET_FUN(__glewMapNamedBuffer)
+#define glMapNamedBufferRange GLEW_GET_FUN(__glewMapNamedBufferRange)
+#define glNamedBufferData GLEW_GET_FUN(__glewNamedBufferData)
+#define glNamedBufferStorage GLEW_GET_FUN(__glewNamedBufferStorage)
+#define glNamedBufferSubData GLEW_GET_FUN(__glewNamedBufferSubData)
+#define glNamedFramebufferDrawBuffer GLEW_GET_FUN(__glewNamedFramebufferDrawBuffer)
+#define glNamedFramebufferDrawBuffers GLEW_GET_FUN(__glewNamedFramebufferDrawBuffers)
+#define glNamedFramebufferParameteri GLEW_GET_FUN(__glewNamedFramebufferParameteri)
+#define glNamedFramebufferReadBuffer GLEW_GET_FUN(__glewNamedFramebufferReadBuffer)
+#define glNamedFramebufferRenderbuffer GLEW_GET_FUN(__glewNamedFramebufferRenderbuffer)
+#define glNamedFramebufferTexture GLEW_GET_FUN(__glewNamedFramebufferTexture)
+#define glNamedFramebufferTextureLayer GLEW_GET_FUN(__glewNamedFramebufferTextureLayer)
+#define glNamedRenderbufferStorage GLEW_GET_FUN(__glewNamedRenderbufferStorage)
+#define glNamedRenderbufferStorageMultisample GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisample)
+#define glTextureBuffer GLEW_GET_FUN(__glewTextureBuffer)
+#define glTextureBufferRange GLEW_GET_FUN(__glewTextureBufferRange)
+#define glTextureParameterIiv GLEW_GET_FUN(__glewTextureParameterIiv)
+#define glTextureParameterIuiv GLEW_GET_FUN(__glewTextureParameterIuiv)
+#define glTextureParameterf GLEW_GET_FUN(__glewTextureParameterf)
+#define glTextureParameterfv GLEW_GET_FUN(__glewTextureParameterfv)
+#define glTextureParameteri GLEW_GET_FUN(__glewTextureParameteri)
+#define glTextureParameteriv GLEW_GET_FUN(__glewTextureParameteriv)
+#define glTextureStorage1D GLEW_GET_FUN(__glewTextureStorage1D)
+#define glTextureStorage2D GLEW_GET_FUN(__glewTextureStorage2D)
+#define glTextureStorage2DMultisample GLEW_GET_FUN(__glewTextureStorage2DMultisample)
+#define glTextureStorage3D GLEW_GET_FUN(__glewTextureStorage3D)
+#define glTextureStorage3DMultisample GLEW_GET_FUN(__glewTextureStorage3DMultisample)
+#define glTextureSubImage1D GLEW_GET_FUN(__glewTextureSubImage1D)
+#define glTextureSubImage2D GLEW_GET_FUN(__glewTextureSubImage2D)
+#define glTextureSubImage3D GLEW_GET_FUN(__glewTextureSubImage3D)
+#define glTransformFeedbackBufferBase GLEW_GET_FUN(__glewTransformFeedbackBufferBase)
+#define glTransformFeedbackBufferRange GLEW_GET_FUN(__glewTransformFeedbackBufferRange)
+#define glUnmapNamedBuffer GLEW_GET_FUN(__glewUnmapNamedBuffer)
+#define glVertexArrayAttribBinding GLEW_GET_FUN(__glewVertexArrayAttribBinding)
+#define glVertexArrayAttribFormat GLEW_GET_FUN(__glewVertexArrayAttribFormat)
+#define glVertexArrayAttribIFormat GLEW_GET_FUN(__glewVertexArrayAttribIFormat)
+#define glVertexArrayAttribLFormat GLEW_GET_FUN(__glewVertexArrayAttribLFormat)
+#define glVertexArrayBindingDivisor GLEW_GET_FUN(__glewVertexArrayBindingDivisor)
+#define glVertexArrayElementBuffer GLEW_GET_FUN(__glewVertexArrayElementBuffer)
+#define glVertexArrayVertexBuffer GLEW_GET_FUN(__glewVertexArrayVertexBuffer)
+#define glVertexArrayVertexBuffers GLEW_GET_FUN(__glewVertexArrayVertexBuffers)
+
+#define GLEW_ARB_direct_state_access GLEW_GET_VAR(__GLEW_ARB_direct_state_access)
+
+#endif /* GL_ARB_direct_state_access */
+
+/* -------------------------- GL_ARB_draw_buffers -------------------------- */
+
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
+#define GL_DRAW_BUFFER0_ARB 0x8825
+#define GL_DRAW_BUFFER1_ARB 0x8826
+#define GL_DRAW_BUFFER2_ARB 0x8827
+#define GL_DRAW_BUFFER3_ARB 0x8828
+#define GL_DRAW_BUFFER4_ARB 0x8829
+#define GL_DRAW_BUFFER5_ARB 0x882A
+#define GL_DRAW_BUFFER6_ARB 0x882B
+#define GL_DRAW_BUFFER7_ARB 0x882C
+#define GL_DRAW_BUFFER8_ARB 0x882D
+#define GL_DRAW_BUFFER9_ARB 0x882E
+#define GL_DRAW_BUFFER10_ARB 0x882F
+#define GL_DRAW_BUFFER11_ARB 0x8830
+#define GL_DRAW_BUFFER12_ARB 0x8831
+#define GL_DRAW_BUFFER13_ARB 0x8832
+#define GL_DRAW_BUFFER14_ARB 0x8833
+#define GL_DRAW_BUFFER15_ARB 0x8834
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB)
+
+#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers)
+
+#endif /* GL_ARB_draw_buffers */
+
+/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */
+
+#ifndef GL_ARB_draw_buffers_blend
+#define GL_ARB_draw_buffers_blend 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
+
+#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB)
+#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB)
+#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB)
+#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB)
+
+#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend)
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */
+
+#ifndef GL_ARB_draw_elements_base_vertex
+#define GL_ARB_draw_elements_base_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei* count, GLenum type, const void*const *indices, GLsizei drawcount, const GLint *basevertex);
+
+#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex)
+#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex)
+#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex)
+#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex)
+
+#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex)
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+/* -------------------------- GL_ARB_draw_indirect ------------------------- */
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
+
+#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect)
+#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect)
+
+#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect)
+
+#endif /* GL_ARB_draw_indirect */
+
+/* ------------------------- GL_ARB_draw_instanced ------------------------- */
+
+#ifndef GL_ARB_draw_instanced
+#define GL_ARB_draw_instanced 1
+
+#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced)
+
+#endif /* GL_ARB_draw_instanced */
+
+/* ------------------------ GL_ARB_enhanced_layouts ------------------------ */
+
+#ifndef GL_ARB_enhanced_layouts
+#define GL_ARB_enhanced_layouts 1
+
+#define GL_LOCATION_COMPONENT 0x934A
+#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
+
+#define GLEW_ARB_enhanced_layouts GLEW_GET_VAR(__GLEW_ARB_enhanced_layouts)
+
+#endif /* GL_ARB_enhanced_layouts */
+
+/* -------------------- GL_ARB_explicit_attrib_location -------------------- */
+
+#ifndef GL_ARB_explicit_attrib_location
+#define GL_ARB_explicit_attrib_location 1
+
+#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location)
+
+#endif /* GL_ARB_explicit_attrib_location */
+
+/* -------------------- GL_ARB_explicit_uniform_location ------------------- */
+
+#ifndef GL_ARB_explicit_uniform_location
+#define GL_ARB_explicit_uniform_location 1
+
+#define GL_MAX_UNIFORM_LOCATIONS 0x826E
+
+#define GLEW_ARB_explicit_uniform_location GLEW_GET_VAR(__GLEW_ARB_explicit_uniform_location)
+
+#endif /* GL_ARB_explicit_uniform_location */
+
+/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */
+
+#ifndef GL_ARB_fragment_coord_conventions
+#define GL_ARB_fragment_coord_conventions 1
+
+#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions)
+
+#endif /* GL_ARB_fragment_coord_conventions */
+
+/* --------------------- GL_ARB_fragment_layer_viewport -------------------- */
+
+#ifndef GL_ARB_fragment_layer_viewport
+#define GL_ARB_fragment_layer_viewport 1
+
+#define GLEW_ARB_fragment_layer_viewport GLEW_GET_VAR(__GLEW_ARB_fragment_layer_viewport)
+
+#endif /* GL_ARB_fragment_layer_viewport */
+
+/* ------------------------ GL_ARB_fragment_program ------------------------ */
+
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
+
+#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program)
+
+#endif /* GL_ARB_fragment_program */
+
+/* --------------------- GL_ARB_fragment_program_shadow -------------------- */
+
+#ifndef GL_ARB_fragment_program_shadow
+#define GL_ARB_fragment_program_shadow 1
+
+#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow)
+
+#endif /* GL_ARB_fragment_program_shadow */
+
+/* ------------------------- GL_ARB_fragment_shader ------------------------ */
+
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+
+#define GL_FRAGMENT_SHADER_ARB 0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
+
+#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader)
+
+#endif /* GL_ARB_fragment_shader */
+
+/* -------------------- GL_ARB_fragment_shader_interlock ------------------- */
+
+#ifndef GL_ARB_fragment_shader_interlock
+#define GL_ARB_fragment_shader_interlock 1
+
+#define GLEW_ARB_fragment_shader_interlock GLEW_GET_VAR(__GLEW_ARB_fragment_shader_interlock)
+
+#endif /* GL_ARB_fragment_shader_interlock */
+
+/* ------------------- GL_ARB_framebuffer_no_attachments ------------------- */
+
+#ifndef GL_ARB_framebuffer_no_attachments
+#define GL_ARB_framebuffer_no_attachments 1
+
+#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
+
+#define glFramebufferParameteri GLEW_GET_FUN(__glewFramebufferParameteri)
+#define glGetFramebufferParameteriv GLEW_GET_FUN(__glewGetFramebufferParameteriv)
+#define glGetNamedFramebufferParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferParameterivEXT)
+#define glNamedFramebufferParameteriEXT GLEW_GET_FUN(__glewNamedFramebufferParameteriEXT)
+
+#define GLEW_ARB_framebuffer_no_attachments GLEW_GET_VAR(__GLEW_ARB_framebuffer_no_attachments)
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+/* ----------------------- GL_ARB_framebuffer_object ----------------------- */
+
+#ifndef GL_ARB_framebuffer_object
+#define GL_ARB_framebuffer_object 1
+
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+#define GL_FRAMEBUFFER_DEFAULT 0x8218
+#define GL_FRAMEBUFFER_UNDEFINED 0x8219
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#define GL_INDEX 0x8222
+#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
+#define GL_DEPTH_STENCIL 0x84F9
+#define GL_UNSIGNED_INT_24_8 0x84FA
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE 0x88F1
+#define GL_UNSIGNED_NORMALIZED 0x8C17
+#define GL_SRGB 0x8C40
+#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#define GL_DRAW_FRAMEBUFFER 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES 0x8CAB
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#define GL_COLOR_ATTACHMENT3 0x8CE3
+#define GL_COLOR_ATTACHMENT4 0x8CE4
+#define GL_COLOR_ATTACHMENT5 0x8CE5
+#define GL_COLOR_ATTACHMENT6 0x8CE6
+#define GL_COLOR_ATTACHMENT7 0x8CE7
+#define GL_COLOR_ATTACHMENT8 0x8CE8
+#define GL_COLOR_ATTACHMENT9 0x8CE9
+#define GL_COLOR_ATTACHMENT10 0x8CEA
+#define GL_COLOR_ATTACHMENT11 0x8CEB
+#define GL_COLOR_ATTACHMENT12 0x8CEC
+#define GL_COLOR_ATTACHMENT13 0x8CED
+#define GL_COLOR_ATTACHMENT14 0x8CEE
+#define GL_COLOR_ATTACHMENT15 0x8CEF
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_WIDTH 0x8D42
+#define GL_RENDERBUFFER_HEIGHT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+#define GL_STENCIL_INDEX1 0x8D46
+#define GL_STENCIL_INDEX4 0x8D47
+#define GL_STENCIL_INDEX8 0x8D48
+#define GL_STENCIL_INDEX16 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+#define GL_MAX_SAMPLES 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer)
+#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer)
+#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer)
+#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus)
+#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers)
+#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers)
+#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer)
+#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D)
+#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D)
+#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D)
+#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer)
+#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers)
+#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers)
+#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap)
+#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv)
+#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv)
+#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer)
+#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer)
+#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage)
+#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample)
+
+#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object)
+
+#endif /* GL_ARB_framebuffer_object */
+
+/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */
+
+#ifndef GL_ARB_framebuffer_sRGB
+#define GL_ARB_framebuffer_sRGB 1
+
+#define GL_FRAMEBUFFER_SRGB 0x8DB9
+
+#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB)
+
+#endif /* GL_ARB_framebuffer_sRGB */
+
+/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */
+
+#ifndef GL_ARB_geometry_shader4
+#define GL_ARB_geometry_shader4 1
+
+#define GL_LINES_ADJACENCY_ARB 0xA
+#define GL_LINE_STRIP_ADJACENCY_ARB 0xB
+#define GL_TRIANGLES_ADJACENCY_ARB 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB)
+#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB)
+#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB)
+#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB)
+
+#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4)
+
+#endif /* GL_ARB_geometry_shader4 */
+
+/* ----------------------- GL_ARB_get_program_binary ----------------------- */
+
+#ifndef GL_ARB_get_program_binary
+#define GL_ARB_get_program_binary 1
+
+#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+#define GL_PROGRAM_BINARY_LENGTH 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS 0x87FF
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary)
+#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary)
+#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri)
+
+#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary)
+
+#endif /* GL_ARB_get_program_binary */
+
+/* ---------------------- GL_ARB_get_texture_sub_image --------------------- */
+
+#ifndef GL_ARB_get_texture_sub_image
+#define GL_ARB_get_texture_sub_image 1
+
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+
+#define glGetCompressedTextureSubImage GLEW_GET_FUN(__glewGetCompressedTextureSubImage)
+#define glGetTextureSubImage GLEW_GET_FUN(__glewGetTextureSubImage)
+
+#define GLEW_ARB_get_texture_sub_image GLEW_GET_VAR(__GLEW_ARB_get_texture_sub_image)
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+/* ---------------------------- GL_ARB_gl_spirv ---------------------------- */
+
+#ifndef GL_ARB_gl_spirv
+#define GL_ARB_gl_spirv 1
+
+#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+#define GL_SPIR_V_BINARY_ARB 0x9552
+
+typedef void (GLAPIENTRY * PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue);
+
+#define glSpecializeShaderARB GLEW_GET_FUN(__glewSpecializeShaderARB)
+
+#define GLEW_ARB_gl_spirv GLEW_GET_VAR(__GLEW_ARB_gl_spirv)
+
+#endif /* GL_ARB_gl_spirv */
+
+/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_ARB_gpu_shader5 1
+
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+
+#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5)
+
+#endif /* GL_ARB_gpu_shader5 */
+
+/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+
+#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv)
+#define glUniform1d GLEW_GET_FUN(__glewUniform1d)
+#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv)
+#define glUniform2d GLEW_GET_FUN(__glewUniform2d)
+#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv)
+#define glUniform3d GLEW_GET_FUN(__glewUniform3d)
+#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv)
+#define glUniform4d GLEW_GET_FUN(__glewUniform4d)
+#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv)
+#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv)
+#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv)
+#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv)
+#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv)
+#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv)
+#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv)
+#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv)
+#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv)
+#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv)
+
+#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64)
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+/* ------------------------ GL_ARB_gpu_shader_int64 ------------------------ */
+
+#ifndef GL_ARB_gpu_shader_int64
+#define GL_ARB_gpu_shader_int64 1
+
+#define GL_INT64_ARB 0x140E
+#define GL_UNSIGNED_INT64_ARB 0x140F
+#define GL_INT64_VEC2_ARB 0x8FE9
+#define GL_INT64_VEC3_ARB 0x8FEA
+#define GL_INT64_VEC4_ARB 0x8FEB
+#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetUniformi64vARB GLEW_GET_FUN(__glewGetUniformi64vARB)
+#define glGetUniformui64vARB GLEW_GET_FUN(__glewGetUniformui64vARB)
+#define glGetnUniformi64vARB GLEW_GET_FUN(__glewGetnUniformi64vARB)
+#define glGetnUniformui64vARB GLEW_GET_FUN(__glewGetnUniformui64vARB)
+#define glProgramUniform1i64ARB GLEW_GET_FUN(__glewProgramUniform1i64ARB)
+#define glProgramUniform1i64vARB GLEW_GET_FUN(__glewProgramUniform1i64vARB)
+#define glProgramUniform1ui64ARB GLEW_GET_FUN(__glewProgramUniform1ui64ARB)
+#define glProgramUniform1ui64vARB GLEW_GET_FUN(__glewProgramUniform1ui64vARB)
+#define glProgramUniform2i64ARB GLEW_GET_FUN(__glewProgramUniform2i64ARB)
+#define glProgramUniform2i64vARB GLEW_GET_FUN(__glewProgramUniform2i64vARB)
+#define glProgramUniform2ui64ARB GLEW_GET_FUN(__glewProgramUniform2ui64ARB)
+#define glProgramUniform2ui64vARB GLEW_GET_FUN(__glewProgramUniform2ui64vARB)
+#define glProgramUniform3i64ARB GLEW_GET_FUN(__glewProgramUniform3i64ARB)
+#define glProgramUniform3i64vARB GLEW_GET_FUN(__glewProgramUniform3i64vARB)
+#define glProgramUniform3ui64ARB GLEW_GET_FUN(__glewProgramUniform3ui64ARB)
+#define glProgramUniform3ui64vARB GLEW_GET_FUN(__glewProgramUniform3ui64vARB)
+#define glProgramUniform4i64ARB GLEW_GET_FUN(__glewProgramUniform4i64ARB)
+#define glProgramUniform4i64vARB GLEW_GET_FUN(__glewProgramUniform4i64vARB)
+#define glProgramUniform4ui64ARB GLEW_GET_FUN(__glewProgramUniform4ui64ARB)
+#define glProgramUniform4ui64vARB GLEW_GET_FUN(__glewProgramUniform4ui64vARB)
+#define glUniform1i64ARB GLEW_GET_FUN(__glewUniform1i64ARB)
+#define glUniform1i64vARB GLEW_GET_FUN(__glewUniform1i64vARB)
+#define glUniform1ui64ARB GLEW_GET_FUN(__glewUniform1ui64ARB)
+#define glUniform1ui64vARB GLEW_GET_FUN(__glewUniform1ui64vARB)
+#define glUniform2i64ARB GLEW_GET_FUN(__glewUniform2i64ARB)
+#define glUniform2i64vARB GLEW_GET_FUN(__glewUniform2i64vARB)
+#define glUniform2ui64ARB GLEW_GET_FUN(__glewUniform2ui64ARB)
+#define glUniform2ui64vARB GLEW_GET_FUN(__glewUniform2ui64vARB)
+#define glUniform3i64ARB GLEW_GET_FUN(__glewUniform3i64ARB)
+#define glUniform3i64vARB GLEW_GET_FUN(__glewUniform3i64vARB)
+#define glUniform3ui64ARB GLEW_GET_FUN(__glewUniform3ui64ARB)
+#define glUniform3ui64vARB GLEW_GET_FUN(__glewUniform3ui64vARB)
+#define glUniform4i64ARB GLEW_GET_FUN(__glewUniform4i64ARB)
+#define glUniform4i64vARB GLEW_GET_FUN(__glewUniform4i64vARB)
+#define glUniform4ui64ARB GLEW_GET_FUN(__glewUniform4ui64ARB)
+#define glUniform4ui64vARB GLEW_GET_FUN(__glewUniform4ui64vARB)
+
+#define GLEW_ARB_gpu_shader_int64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_int64)
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+/* ------------------------ GL_ARB_half_float_pixel ------------------------ */
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel 1
+
+#define GL_HALF_FLOAT_ARB 0x140B
+
+#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel)
+
+#endif /* GL_ARB_half_float_pixel */
+
+/* ------------------------ GL_ARB_half_float_vertex ----------------------- */
+
+#ifndef GL_ARB_half_float_vertex
+#define GL_ARB_half_float_vertex 1
+
+#define GL_HALF_FLOAT 0x140B
+
+#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex)
+
+#endif /* GL_ARB_half_float_vertex */
+
+/* ----------------------------- GL_ARB_imaging ---------------------------- */
+
+#ifndef GL_ARB_imaging
+#define GL_ARB_imaging 1
+
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_IGNORE_BORDER 0x8150
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_WRAP_BORDER 0x8152
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+
+typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
+typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
+
+#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable)
+#define glColorTable GLEW_GET_FUN(__glewColorTable)
+#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv)
+#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv)
+#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D)
+#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D)
+#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf)
+#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv)
+#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri)
+#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv)
+#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable)
+#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable)
+#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D)
+#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D)
+#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable)
+#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv)
+#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv)
+#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter)
+#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv)
+#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv)
+#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram)
+#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv)
+#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv)
+#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax)
+#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv)
+#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv)
+#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter)
+#define glHistogram GLEW_GET_FUN(__glewHistogram)
+#define glMinmax GLEW_GET_FUN(__glewMinmax)
+#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram)
+#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax)
+#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D)
+
+#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging)
+
+#endif /* GL_ARB_imaging */
+
+/* ----------------------- GL_ARB_indirect_parameters ---------------------- */
+
+#ifndef GL_ARB_indirect_parameters
+#define GL_ARB_indirect_parameters 1
+
+#define GL_PARAMETER_BUFFER_ARB 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectCountARB GLEW_GET_FUN(__glewMultiDrawArraysIndirectCountARB)
+#define glMultiDrawElementsIndirectCountARB GLEW_GET_FUN(__glewMultiDrawElementsIndirectCountARB)
+
+#define GLEW_ARB_indirect_parameters GLEW_GET_VAR(__GLEW_ARB_indirect_parameters)
+
+#endif /* GL_ARB_indirect_parameters */
+
+/* ------------------------ GL_ARB_instanced_arrays ------------------------ */
+
+#ifndef GL_ARB_instanced_arrays
+#define GL_ARB_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
+
+#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB)
+#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB)
+#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB)
+
+#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays)
+
+#endif /* GL_ARB_instanced_arrays */
+
+/* ---------------------- GL_ARB_internalformat_query ---------------------- */
+
+#ifndef GL_ARB_internalformat_query
+#define GL_ARB_internalformat_query 1
+
+#define GL_NUM_SAMPLE_COUNTS 0x9380
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params);
+
+#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ)
+
+#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query)
+
+#endif /* GL_ARB_internalformat_query */
+
+/* ---------------------- GL_ARB_internalformat_query2 --------------------- */
+
+#ifndef GL_ARB_internalformat_query2
+#define GL_ARB_internalformat_query2 1
+
+#define GL_INTERNALFORMAT_SUPPORTED 0x826F
+#define GL_INTERNALFORMAT_PREFERRED 0x8270
+#define GL_INTERNALFORMAT_RED_SIZE 0x8271
+#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+#define GL_INTERNALFORMAT_RED_TYPE 0x8278
+#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+#define GL_MAX_WIDTH 0x827E
+#define GL_MAX_HEIGHT 0x827F
+#define GL_MAX_DEPTH 0x8280
+#define GL_MAX_LAYERS 0x8281
+#define GL_MAX_COMBINED_DIMENSIONS 0x8282
+#define GL_COLOR_COMPONENTS 0x8283
+#define GL_DEPTH_COMPONENTS 0x8284
+#define GL_STENCIL_COMPONENTS 0x8285
+#define GL_COLOR_RENDERABLE 0x8286
+#define GL_DEPTH_RENDERABLE 0x8287
+#define GL_STENCIL_RENDERABLE 0x8288
+#define GL_FRAMEBUFFER_RENDERABLE 0x8289
+#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+#define GL_FRAMEBUFFER_BLEND 0x828B
+#define GL_READ_PIXELS 0x828C
+#define GL_READ_PIXELS_FORMAT 0x828D
+#define GL_READ_PIXELS_TYPE 0x828E
+#define GL_TEXTURE_IMAGE_FORMAT 0x828F
+#define GL_TEXTURE_IMAGE_TYPE 0x8290
+#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+#define GL_MIPMAP 0x8293
+#define GL_MANUAL_GENERATE_MIPMAP 0x8294
+#define GL_AUTO_GENERATE_MIPMAP 0x8295
+#define GL_COLOR_ENCODING 0x8296
+#define GL_SRGB_READ 0x8297
+#define GL_SRGB_WRITE 0x8298
+#define GL_SRGB_DECODE_ARB 0x8299
+#define GL_FILTER 0x829A
+#define GL_VERTEX_TEXTURE 0x829B
+#define GL_TESS_CONTROL_TEXTURE 0x829C
+#define GL_TESS_EVALUATION_TEXTURE 0x829D
+#define GL_GEOMETRY_TEXTURE 0x829E
+#define GL_FRAGMENT_TEXTURE 0x829F
+#define GL_COMPUTE_TEXTURE 0x82A0
+#define GL_TEXTURE_SHADOW 0x82A1
+#define GL_TEXTURE_GATHER 0x82A2
+#define GL_TEXTURE_GATHER_SHADOW 0x82A3
+#define GL_SHADER_IMAGE_LOAD 0x82A4
+#define GL_SHADER_IMAGE_STORE 0x82A5
+#define GL_SHADER_IMAGE_ATOMIC 0x82A6
+#define GL_IMAGE_TEXEL_SIZE 0x82A7
+#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+#define GL_IMAGE_PIXEL_FORMAT 0x82A9
+#define GL_IMAGE_PIXEL_TYPE 0x82AA
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+#define GL_CLEAR_BUFFER 0x82B4
+#define GL_TEXTURE_VIEW 0x82B5
+#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+#define GL_FULL_SUPPORT 0x82B7
+#define GL_CAVEAT_SUPPORT 0x82B8
+#define GL_IMAGE_CLASS_4_X_32 0x82B9
+#define GL_IMAGE_CLASS_2_X_32 0x82BA
+#define GL_IMAGE_CLASS_1_X_32 0x82BB
+#define GL_IMAGE_CLASS_4_X_16 0x82BC
+#define GL_IMAGE_CLASS_2_X_16 0x82BD
+#define GL_IMAGE_CLASS_1_X_16 0x82BE
+#define GL_IMAGE_CLASS_4_X_8 0x82BF
+#define GL_IMAGE_CLASS_2_X_8 0x82C0
+#define GL_IMAGE_CLASS_1_X_8 0x82C1
+#define GL_IMAGE_CLASS_11_11_10 0x82C2
+#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
+#define GL_VIEW_CLASS_128_BITS 0x82C4
+#define GL_VIEW_CLASS_96_BITS 0x82C5
+#define GL_VIEW_CLASS_64_BITS 0x82C6
+#define GL_VIEW_CLASS_48_BITS 0x82C7
+#define GL_VIEW_CLASS_32_BITS 0x82C8
+#define GL_VIEW_CLASS_24_BITS 0x82C9
+#define GL_VIEW_CLASS_16_BITS 0x82CA
+#define GL_VIEW_CLASS_8_BITS 0x82CB
+#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
+#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
+#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params);
+
+#define glGetInternalformati64v GLEW_GET_FUN(__glewGetInternalformati64v)
+
+#define GLEW_ARB_internalformat_query2 GLEW_GET_VAR(__GLEW_ARB_internalformat_query2)
+
+#endif /* GL_ARB_internalformat_query2 */
+
+/* ----------------------- GL_ARB_invalidate_subdata ----------------------- */
+
+#ifndef GL_ARB_invalidate_subdata
+#define GL_ARB_invalidate_subdata 1
+
+typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
+typedef void (GLAPIENTRY * PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glInvalidateBufferData GLEW_GET_FUN(__glewInvalidateBufferData)
+#define glInvalidateBufferSubData GLEW_GET_FUN(__glewInvalidateBufferSubData)
+#define glInvalidateFramebuffer GLEW_GET_FUN(__glewInvalidateFramebuffer)
+#define glInvalidateSubFramebuffer GLEW_GET_FUN(__glewInvalidateSubFramebuffer)
+#define glInvalidateTexImage GLEW_GET_FUN(__glewInvalidateTexImage)
+#define glInvalidateTexSubImage GLEW_GET_FUN(__glewInvalidateTexSubImage)
+
+#define GLEW_ARB_invalidate_subdata GLEW_GET_VAR(__GLEW_ARB_invalidate_subdata)
+
+#endif /* GL_ARB_invalidate_subdata */
+
+/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */
+
+#ifndef GL_ARB_map_buffer_alignment
+#define GL_ARB_map_buffer_alignment 1
+
+#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
+
+#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment)
+
+#endif /* GL_ARB_map_buffer_alignment */
+
+/* ------------------------ GL_ARB_map_buffer_range ------------------------ */
+
+#ifndef GL_ARB_map_buffer_range
+#define GL_ARB_map_buffer_range 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange)
+#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange)
+
+#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range)
+
+#endif /* GL_ARB_map_buffer_range */
+
+/* ------------------------- GL_ARB_matrix_palette ------------------------- */
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+
+#define GL_MATRIX_PALETTE_ARB 0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+
+typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices);
+
+#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB)
+#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB)
+#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB)
+#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB)
+#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB)
+
+#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette)
+
+#endif /* GL_ARB_matrix_palette */
+
+/* --------------------------- GL_ARB_multi_bind --------------------------- */
+
+#ifndef GL_ARB_multi_bind
+#define GL_ARB_multi_bind 1
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides);
+
+#define glBindBuffersBase GLEW_GET_FUN(__glewBindBuffersBase)
+#define glBindBuffersRange GLEW_GET_FUN(__glewBindBuffersRange)
+#define glBindImageTextures GLEW_GET_FUN(__glewBindImageTextures)
+#define glBindSamplers GLEW_GET_FUN(__glewBindSamplers)
+#define glBindTextures GLEW_GET_FUN(__glewBindTextures)
+#define glBindVertexBuffers GLEW_GET_FUN(__glewBindVertexBuffers)
+
+#define GLEW_ARB_multi_bind GLEW_GET_VAR(__GLEW_ARB_multi_bind)
+
+#endif /* GL_ARB_multi_bind */
+
+/* ----------------------- GL_ARB_multi_draw_indirect ---------------------- */
+
+#ifndef GL_ARB_multi_draw_indirect
+#define GL_ARB_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirect GLEW_GET_FUN(__glewMultiDrawArraysIndirect)
+#define glMultiDrawElementsIndirect GLEW_GET_FUN(__glewMultiDrawElementsIndirect)
+
+#define GLEW_ARB_multi_draw_indirect GLEW_GET_VAR(__GLEW_ARB_multi_draw_indirect)
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+/* --------------------------- GL_ARB_multisample -------------------------- */
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+
+#define GL_MULTISAMPLE_ARB 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
+#define GL_SAMPLES_ARB 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+
+#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB)
+
+#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample)
+
+#endif /* GL_ARB_multisample */
+
+/* -------------------------- GL_ARB_multitexture -------------------------- */
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+
+typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+
+#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB)
+#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB)
+#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB)
+#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB)
+#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB)
+#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB)
+#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB)
+#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB)
+#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB)
+#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB)
+#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB)
+#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB)
+#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB)
+#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB)
+#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB)
+#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB)
+#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB)
+#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB)
+#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB)
+#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB)
+#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB)
+#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB)
+#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB)
+#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB)
+#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB)
+#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB)
+#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB)
+#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB)
+#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB)
+#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB)
+#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB)
+#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB)
+#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB)
+#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB)
+
+#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture)
+
+#endif /* GL_ARB_multitexture */
+
+/* ------------------------- GL_ARB_occlusion_query ------------------------ */
+
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+
+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
+#define GL_CURRENT_QUERY_ARB 0x8865
+#define GL_QUERY_RESULT_ARB 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+#define GL_SAMPLES_PASSED_ARB 0x8914
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id);
+
+#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB)
+#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB)
+#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB)
+#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB)
+#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB)
+#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB)
+#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB)
+#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB)
+
+#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query)
+
+#endif /* GL_ARB_occlusion_query */
+
+/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ARB_occlusion_query2 1
+
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+
+#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2)
+
+#endif /* GL_ARB_occlusion_query2 */
+
+/* --------------------- GL_ARB_parallel_shader_compile -------------------- */
+
+#ifndef GL_ARB_parallel_shader_compile
+#define GL_ARB_parallel_shader_compile 1
+
+#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+#define GL_COMPLETION_STATUS_ARB 0x91B1
+
+typedef void (GLAPIENTRY * PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);
+
+#define glMaxShaderCompilerThreadsARB GLEW_GET_FUN(__glewMaxShaderCompilerThreadsARB)
+
+#define GLEW_ARB_parallel_shader_compile GLEW_GET_VAR(__GLEW_ARB_parallel_shader_compile)
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+/* -------------------- GL_ARB_pipeline_statistics_query ------------------- */
+
+#ifndef GL_ARB_pipeline_statistics_query
+#define GL_ARB_pipeline_statistics_query 1
+
+#define GL_VERTICES_SUBMITTED_ARB 0x82EE
+#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+
+#define GLEW_ARB_pipeline_statistics_query GLEW_GET_VAR(__GLEW_ARB_pipeline_statistics_query)
+
+#endif /* GL_ARB_pipeline_statistics_query */
+
+/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+
+#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object)
+
+#endif /* GL_ARB_pixel_buffer_object */
+
+/* ------------------------ GL_ARB_point_parameters ------------------------ */
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_POINT_SIZE_MAX_ARB 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params);
+
+#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB)
+#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB)
+
+#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters)
+
+#endif /* GL_ARB_point_parameters */
+
+/* -------------------------- GL_ARB_point_sprite -------------------------- */
+
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+
+#define GL_POINT_SPRITE_ARB 0x8861
+#define GL_COORD_REPLACE_ARB 0x8862
+
+#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite)
+
+#endif /* GL_ARB_point_sprite */
+
+/* ---------------------- GL_ARB_polygon_offset_clamp ---------------------- */
+
+#ifndef GL_ARB_polygon_offset_clamp
+#define GL_ARB_polygon_offset_clamp 1
+
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+
+#define glPolygonOffsetClamp GLEW_GET_FUN(__glewPolygonOffsetClamp)
+
+#define GLEW_ARB_polygon_offset_clamp GLEW_GET_VAR(__GLEW_ARB_polygon_offset_clamp)
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+/* ----------------------- GL_ARB_post_depth_coverage ---------------------- */
+
+#ifndef GL_ARB_post_depth_coverage
+#define GL_ARB_post_depth_coverage 1
+
+#define GLEW_ARB_post_depth_coverage GLEW_GET_VAR(__GLEW_ARB_post_depth_coverage)
+
+#endif /* GL_ARB_post_depth_coverage */
+
+/* --------------------- GL_ARB_program_interface_query -------------------- */
+
+#ifndef GL_ARB_program_interface_query
+#define GL_ARB_program_interface_query 1
+
+#define GL_UNIFORM 0x92E1
+#define GL_UNIFORM_BLOCK 0x92E2
+#define GL_PROGRAM_INPUT 0x92E3
+#define GL_PROGRAM_OUTPUT 0x92E4
+#define GL_BUFFER_VARIABLE 0x92E5
+#define GL_SHADER_STORAGE_BLOCK 0x92E6
+#define GL_IS_PER_PATCH 0x92E7
+#define GL_VERTEX_SUBROUTINE 0x92E8
+#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
+#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+#define GL_GEOMETRY_SUBROUTINE 0x92EB
+#define GL_FRAGMENT_SUBROUTINE 0x92EC
+#define GL_COMPUTE_SUBROUTINE 0x92ED
+#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+#define GL_ACTIVE_RESOURCES 0x92F5
+#define GL_MAX_NAME_LENGTH 0x92F6
+#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+#define GL_NAME_LENGTH 0x92F9
+#define GL_TYPE 0x92FA
+#define GL_ARRAY_SIZE 0x92FB
+#define GL_OFFSET 0x92FC
+#define GL_BLOCK_INDEX 0x92FD
+#define GL_ARRAY_STRIDE 0x92FE
+#define GL_MATRIX_STRIDE 0x92FF
+#define GL_IS_ROW_MAJOR 0x9300
+#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+#define GL_BUFFER_BINDING 0x9302
+#define GL_BUFFER_DATA_SIZE 0x9303
+#define GL_NUM_ACTIVE_VARIABLES 0x9304
+#define GL_ACTIVE_VARIABLES 0x9305
+#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+#define GL_LOCATION 0x930E
+#define GL_LOCATION_INDEX 0x930F
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params);
+typedef GLuint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
+
+#define glGetProgramInterfaceiv GLEW_GET_FUN(__glewGetProgramInterfaceiv)
+#define glGetProgramResourceIndex GLEW_GET_FUN(__glewGetProgramResourceIndex)
+#define glGetProgramResourceLocation GLEW_GET_FUN(__glewGetProgramResourceLocation)
+#define glGetProgramResourceLocationIndex GLEW_GET_FUN(__glewGetProgramResourceLocationIndex)
+#define glGetProgramResourceName GLEW_GET_FUN(__glewGetProgramResourceName)
+#define glGetProgramResourceiv GLEW_GET_FUN(__glewGetProgramResourceiv)
+
+#define GLEW_ARB_program_interface_query GLEW_GET_VAR(__GLEW_ARB_program_interface_query)
+
+#endif /* GL_ARB_program_interface_query */
+
+/* ------------------------ GL_ARB_provoking_vertex ------------------------ */
+
+#ifndef GL_ARB_provoking_vertex
+#define GL_ARB_provoking_vertex 1
+
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
+
+#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex)
+
+#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex)
+
+#endif /* GL_ARB_provoking_vertex */
+
+/* ----------------------- GL_ARB_query_buffer_object ---------------------- */
+
+#ifndef GL_ARB_query_buffer_object
+#define GL_ARB_query_buffer_object 1
+
+#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+#define GL_QUERY_BUFFER 0x9192
+#define GL_QUERY_BUFFER_BINDING 0x9193
+#define GL_QUERY_RESULT_NO_WAIT 0x9194
+
+#define GLEW_ARB_query_buffer_object GLEW_GET_VAR(__GLEW_ARB_query_buffer_object)
+
+#endif /* GL_ARB_query_buffer_object */
+
+/* ------------------ GL_ARB_robust_buffer_access_behavior ----------------- */
+
+#ifndef GL_ARB_robust_buffer_access_behavior
+#define GL_ARB_robust_buffer_access_behavior 1
+
+#define GLEW_ARB_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_ARB_robust_buffer_access_behavior)
+
+#endif /* GL_ARB_robust_buffer_access_behavior */
+
+/* --------------------------- GL_ARB_robustness --------------------------- */
+
+#ifndef GL_ARB_robustness
+#define GL_ARB_robustness 1
+
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table);
+typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img);
+typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image);
+typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values);
+typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v);
+typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values);
+typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern);
+typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span);
+typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data);
+
+#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB)
+#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB)
+#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB)
+#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB)
+#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB)
+#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB)
+#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB)
+#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB)
+#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB)
+#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB)
+#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB)
+#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB)
+#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB)
+#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB)
+#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB)
+#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB)
+#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB)
+#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB)
+#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB)
+#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB)
+
+#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness)
+
+#endif /* GL_ARB_robustness */
+
+/* ---------------- GL_ARB_robustness_application_isolation ---------------- */
+
+#ifndef GL_ARB_robustness_application_isolation
+#define GL_ARB_robustness_application_isolation 1
+
+#define GLEW_ARB_robustness_application_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_application_isolation)
+
+#endif /* GL_ARB_robustness_application_isolation */
+
+/* ---------------- GL_ARB_robustness_share_group_isolation ---------------- */
+
+#ifndef GL_ARB_robustness_share_group_isolation
+#define GL_ARB_robustness_share_group_isolation 1
+
+#define GLEW_ARB_robustness_share_group_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_share_group_isolation)
+
+#endif /* GL_ARB_robustness_share_group_isolation */
+
+/* ------------------------ GL_ARB_sample_locations ------------------------ */
+
+#ifndef GL_ARB_sample_locations
+#define GL_ARB_sample_locations 1
+
+#define GL_SAMPLE_LOCATION_ARB 0x8E50
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+
+typedef void (GLAPIENTRY * PFNGLEVALUATEDEPTHVALUESARBPROC) (void);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+
+#define glEvaluateDepthValuesARB GLEW_GET_FUN(__glewEvaluateDepthValuesARB)
+#define glFramebufferSampleLocationsfvARB GLEW_GET_FUN(__glewFramebufferSampleLocationsfvARB)
+#define glNamedFramebufferSampleLocationsfvARB GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvARB)
+
+#define GLEW_ARB_sample_locations GLEW_GET_VAR(__GLEW_ARB_sample_locations)
+
+#endif /* GL_ARB_sample_locations */
+
+/* ------------------------- GL_ARB_sample_shading ------------------------- */
+
+#ifndef GL_ARB_sample_shading
+#define GL_ARB_sample_shading 1
+
+#define GL_SAMPLE_SHADING_ARB 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value);
+
+#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB)
+
+#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading)
+
+#endif /* GL_ARB_sample_shading */
+
+/* ------------------------- GL_ARB_sampler_objects ------------------------ */
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+
+#define GL_SAMPLER_BINDING 0x8919
+
+typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers);
+typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+
+#define glBindSampler GLEW_GET_FUN(__glewBindSampler)
+#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers)
+#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers)
+#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv)
+#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv)
+#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv)
+#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv)
+#define glIsSampler GLEW_GET_FUN(__glewIsSampler)
+#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv)
+#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv)
+#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf)
+#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv)
+#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri)
+#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv)
+
+#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects)
+
+#endif /* GL_ARB_sampler_objects */
+
+/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */
+
+#ifndef GL_ARB_seamless_cube_map
+#define GL_ARB_seamless_cube_map 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map)
+
+#endif /* GL_ARB_seamless_cube_map */
+
+/* ------------------ GL_ARB_seamless_cubemap_per_texture ------------------ */
+
+#ifndef GL_ARB_seamless_cubemap_per_texture
+#define GL_ARB_seamless_cubemap_per_texture 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_ARB_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_ARB_seamless_cubemap_per_texture)
+
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+
+/* --------------------- GL_ARB_separate_shader_objects -------------------- */
+
+#ifndef GL_ARB_separate_shader_objects
+#define GL_ARB_separate_shader_objects 1
+
+#define GL_VERTEX_SHADER_BIT 0x00000001
+#define GL_FRAGMENT_SHADER_BIT 0x00000002
+#define GL_GEOMETRY_SHADER_BIT 0x00000004
+#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
+#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+#define GL_PROGRAM_SEPARABLE 0x8258
+#define GL_ACTIVE_PROGRAM 0x8259
+#define GL_PROGRAM_PIPELINE_BINDING 0x825A
+#define GL_ALL_SHADER_BITS 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar * const * strings);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
+
+#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram)
+#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline)
+#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv)
+#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines)
+#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines)
+#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog)
+#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv)
+#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline)
+#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d)
+#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv)
+#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f)
+#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv)
+#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i)
+#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv)
+#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui)
+#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv)
+#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d)
+#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv)
+#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f)
+#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv)
+#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i)
+#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv)
+#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui)
+#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv)
+#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d)
+#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv)
+#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f)
+#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv)
+#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i)
+#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv)
+#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui)
+#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv)
+#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d)
+#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv)
+#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f)
+#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv)
+#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i)
+#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv)
+#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui)
+#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv)
+#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv)
+#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv)
+#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv)
+#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv)
+#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv)
+#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv)
+#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv)
+#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv)
+#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv)
+#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv)
+#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv)
+#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv)
+#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv)
+#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv)
+#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv)
+#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv)
+#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv)
+#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv)
+#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages)
+#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline)
+
+#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects)
+
+#endif /* GL_ARB_separate_shader_objects */
+
+/* -------------------- GL_ARB_shader_atomic_counter_ops ------------------- */
+
+#ifndef GL_ARB_shader_atomic_counter_ops
+#define GL_ARB_shader_atomic_counter_ops 1
+
+#define GLEW_ARB_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counter_ops)
+
+#endif /* GL_ARB_shader_atomic_counter_ops */
+
+/* --------------------- GL_ARB_shader_atomic_counters --------------------- */
+
+#ifndef GL_ARB_shader_atomic_counters
+#define GL_ARB_shader_atomic_counters 1
+
+#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
+#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params);
+
+#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv)
+
+#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters)
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+/* -------------------------- GL_ARB_shader_ballot ------------------------- */
+
+#ifndef GL_ARB_shader_ballot
+#define GL_ARB_shader_ballot 1
+
+#define GLEW_ARB_shader_ballot GLEW_GET_VAR(__GLEW_ARB_shader_ballot)
+
+#endif /* GL_ARB_shader_ballot */
+
+/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */
+
+#ifndef GL_ARB_shader_bit_encoding
+#define GL_ARB_shader_bit_encoding 1
+
+#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding)
+
+#endif /* GL_ARB_shader_bit_encoding */
+
+/* -------------------------- GL_ARB_shader_clock -------------------------- */
+
+#ifndef GL_ARB_shader_clock
+#define GL_ARB_shader_clock 1
+
+#define GLEW_ARB_shader_clock GLEW_GET_VAR(__GLEW_ARB_shader_clock)
+
+#endif /* GL_ARB_shader_clock */
+
+/* --------------------- GL_ARB_shader_draw_parameters --------------------- */
+
+#ifndef GL_ARB_shader_draw_parameters
+#define GL_ARB_shader_draw_parameters 1
+
+#define GLEW_ARB_shader_draw_parameters GLEW_GET_VAR(__GLEW_ARB_shader_draw_parameters)
+
+#endif /* GL_ARB_shader_draw_parameters */
+
+/* ------------------------ GL_ARB_shader_group_vote ----------------------- */
+
+#ifndef GL_ARB_shader_group_vote
+#define GL_ARB_shader_group_vote 1
+
+#define GLEW_ARB_shader_group_vote GLEW_GET_VAR(__GLEW_ARB_shader_group_vote)
+
+#endif /* GL_ARB_shader_group_vote */
+
+/* --------------------- GL_ARB_shader_image_load_store -------------------- */
+
+#ifndef GL_ARB_shader_image_load_store
+#define GL_ARB_shader_image_load_store 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+#define GL_COMMAND_BARRIER_BIT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+#define GL_MAX_IMAGE_UNITS 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+#define GL_IMAGE_BINDING_NAME 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED 0x8F3C
+#define GL_IMAGE_BINDING_LAYER 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS 0x8F3E
+#define GL_IMAGE_1D 0x904C
+#define GL_IMAGE_2D 0x904D
+#define GL_IMAGE_3D 0x904E
+#define GL_IMAGE_2D_RECT 0x904F
+#define GL_IMAGE_CUBE 0x9050
+#define GL_IMAGE_BUFFER 0x9051
+#define GL_IMAGE_1D_ARRAY 0x9052
+#define GL_IMAGE_2D_ARRAY 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+#define GL_INT_IMAGE_1D 0x9057
+#define GL_INT_IMAGE_2D 0x9058
+#define GL_INT_IMAGE_3D 0x9059
+#define GL_INT_IMAGE_2D_RECT 0x905A
+#define GL_INT_IMAGE_CUBE 0x905B
+#define GL_INT_IMAGE_BUFFER 0x905C
+#define GL_INT_IMAGE_1D_ARRAY 0x905D
+#define GL_INT_IMAGE_2D_ARRAY 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+#define GL_MAX_IMAGE_SAMPLES 0x906D
+#define GL_IMAGE_BINDING_FORMAT 0x906E
+#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
+
+#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture)
+#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier)
+
+#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store)
+
+#endif /* GL_ARB_shader_image_load_store */
+
+/* ------------------------ GL_ARB_shader_image_size ----------------------- */
+
+#ifndef GL_ARB_shader_image_size
+#define GL_ARB_shader_image_size 1
+
+#define GLEW_ARB_shader_image_size GLEW_GET_VAR(__GLEW_ARB_shader_image_size)
+
+#endif /* GL_ARB_shader_image_size */
+
+/* ------------------------- GL_ARB_shader_objects ------------------------- */
+
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+
+#define GL_PROGRAM_OBJECT_ARB 0x8B40
+#define GL_SHADER_OBJECT_ARB 0x8B48
+#define GL_OBJECT_TYPE_ARB 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
+#define GL_FLOAT_VEC2_ARB 0x8B50
+#define GL_FLOAT_VEC3_ARB 0x8B51
+#define GL_FLOAT_VEC4_ARB 0x8B52
+#define GL_INT_VEC2_ARB 0x8B53
+#define GL_INT_VEC3_ARB 0x8B54
+#define GL_INT_VEC4_ARB 0x8B55
+#define GL_BOOL_ARB 0x8B56
+#define GL_BOOL_VEC2_ARB 0x8B57
+#define GL_BOOL_VEC3_ARB 0x8B58
+#define GL_BOOL_VEC4_ARB 0x8B59
+#define GL_FLOAT_MAT2_ARB 0x8B5A
+#define GL_FLOAT_MAT3_ARB 0x8B5B
+#define GL_FLOAT_MAT4_ARB 0x8B5C
+#define GL_SAMPLER_1D_ARB 0x8B5D
+#define GL_SAMPLER_2D_ARB 0x8B5E
+#define GL_SAMPLER_3D_ARB 0x8B5F
+#define GL_SAMPLER_CUBE_ARB 0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+
+typedef char GLcharARB;
+typedef unsigned int GLhandleARB;
+
+typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
+typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj);
+typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source);
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params);
+typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+
+#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB)
+#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB)
+#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB)
+#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB)
+#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB)
+#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB)
+#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB)
+#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB)
+#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB)
+#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB)
+#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB)
+#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB)
+#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB)
+#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB)
+#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB)
+#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB)
+#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB)
+#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB)
+#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB)
+#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB)
+#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB)
+#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB)
+#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB)
+#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB)
+#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB)
+#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB)
+#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB)
+#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB)
+#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB)
+#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB)
+#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB)
+#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB)
+#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB)
+#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB)
+#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB)
+#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB)
+#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB)
+#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB)
+#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB)
+
+#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects)
+
+#endif /* GL_ARB_shader_objects */
+
+/* ------------------------ GL_ARB_shader_precision ------------------------ */
+
+#ifndef GL_ARB_shader_precision
+#define GL_ARB_shader_precision 1
+
+#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision)
+
+#endif /* GL_ARB_shader_precision */
+
+/* ---------------------- GL_ARB_shader_stencil_export --------------------- */
+
+#ifndef GL_ARB_shader_stencil_export
+#define GL_ARB_shader_stencil_export 1
+
+#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export)
+
+#endif /* GL_ARB_shader_stencil_export */
+
+/* ------------------ GL_ARB_shader_storage_buffer_object ------------------ */
+
+#ifndef GL_ARB_shader_storage_buffer_object
+#define GL_ARB_shader_storage_buffer_object 1
+
+#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000
+#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+#define GL_SHADER_STORAGE_BUFFER 0x90D2
+#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
+#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+
+typedef void (GLAPIENTRY * PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+
+#define glShaderStorageBlockBinding GLEW_GET_FUN(__glewShaderStorageBlockBinding)
+
+#define GLEW_ARB_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_ARB_shader_storage_buffer_object)
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+/* ------------------------ GL_ARB_shader_subroutine ----------------------- */
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values);
+typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices);
+
+#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName)
+#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName)
+#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv)
+#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv)
+#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex)
+#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation)
+#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv)
+#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv)
+
+#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine)
+
+#endif /* GL_ARB_shader_subroutine */
+
+/* ------------------ GL_ARB_shader_texture_image_samples ------------------ */
+
+#ifndef GL_ARB_shader_texture_image_samples
+#define GL_ARB_shader_texture_image_samples 1
+
+#define GLEW_ARB_shader_texture_image_samples GLEW_GET_VAR(__GLEW_ARB_shader_texture_image_samples)
+
+#endif /* GL_ARB_shader_texture_image_samples */
+
+/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */
+
+#ifndef GL_ARB_shader_texture_lod
+#define GL_ARB_shader_texture_lod 1
+
+#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod)
+
+#endif /* GL_ARB_shader_texture_lod */
+
+/* ------------------- GL_ARB_shader_viewport_layer_array ------------------ */
+
+#ifndef GL_ARB_shader_viewport_layer_array
+#define GL_ARB_shader_viewport_layer_array 1
+
+#define GLEW_ARB_shader_viewport_layer_array GLEW_GET_VAR(__GLEW_ARB_shader_viewport_layer_array)
+
+#endif /* GL_ARB_shader_viewport_layer_array */
+
+/* ---------------------- GL_ARB_shading_language_100 ---------------------- */
+
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100 1
+
+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
+
+#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100)
+
+#endif /* GL_ARB_shading_language_100 */
+
+/* -------------------- GL_ARB_shading_language_420pack -------------------- */
+
+#ifndef GL_ARB_shading_language_420pack
+#define GL_ARB_shading_language_420pack 1
+
+#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack)
+
+#endif /* GL_ARB_shading_language_420pack */
+
+/* -------------------- GL_ARB_shading_language_include -------------------- */
+
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length);
+typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar* name, GLenum pname, GLint *params);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string);
+
+#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB)
+#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB)
+#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB)
+#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB)
+#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB)
+#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB)
+
+#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include)
+
+#endif /* GL_ARB_shading_language_include */
+
+/* -------------------- GL_ARB_shading_language_packing -------------------- */
+
+#ifndef GL_ARB_shading_language_packing
+#define GL_ARB_shading_language_packing 1
+
+#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing)
+
+#endif /* GL_ARB_shading_language_packing */
+
+/* ----------------------------- GL_ARB_shadow ----------------------------- */
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+
+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
+
+#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow)
+
+#endif /* GL_ARB_shadow */
+
+/* ------------------------- GL_ARB_shadow_ambient ------------------------- */
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+
+#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient)
+
+#endif /* GL_ARB_shadow_ambient */
+
+/* -------------------------- GL_ARB_sparse_buffer ------------------------- */
+
+#ifndef GL_ARB_sparse_buffer
+#define GL_ARB_sparse_buffer 1
+
+#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
+#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+
+#define glBufferPageCommitmentARB GLEW_GET_FUN(__glewBufferPageCommitmentARB)
+
+#define GLEW_ARB_sparse_buffer GLEW_GET_VAR(__GLEW_ARB_sparse_buffer)
+
+#endif /* GL_ARB_sparse_buffer */
+
+/* ------------------------- GL_ARB_sparse_texture ------------------------- */
+
+#ifndef GL_ARB_sparse_texture
+#define GL_ARB_sparse_texture 1
+
+#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+#define GL_TEXTURE_SPARSE_ARB 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+#define glTexPageCommitmentARB GLEW_GET_FUN(__glewTexPageCommitmentARB)
+
+#define GLEW_ARB_sparse_texture GLEW_GET_VAR(__GLEW_ARB_sparse_texture)
+
+#endif /* GL_ARB_sparse_texture */
+
+/* ------------------------- GL_ARB_sparse_texture2 ------------------------ */
+
+#ifndef GL_ARB_sparse_texture2
+#define GL_ARB_sparse_texture2 1
+
+#define GLEW_ARB_sparse_texture2 GLEW_GET_VAR(__GLEW_ARB_sparse_texture2)
+
+#endif /* GL_ARB_sparse_texture2 */
+
+/* ---------------------- GL_ARB_sparse_texture_clamp ---------------------- */
+
+#ifndef GL_ARB_sparse_texture_clamp
+#define GL_ARB_sparse_texture_clamp 1
+
+#define GLEW_ARB_sparse_texture_clamp GLEW_GET_VAR(__GLEW_ARB_sparse_texture_clamp)
+
+#endif /* GL_ARB_sparse_texture_clamp */
+
+/* ------------------------ GL_ARB_spirv_extensions ------------------------ */
+
+#ifndef GL_ARB_spirv_extensions
+#define GL_ARB_spirv_extensions 1
+
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+
+#define GLEW_ARB_spirv_extensions GLEW_GET_VAR(__GLEW_ARB_spirv_extensions)
+
+#endif /* GL_ARB_spirv_extensions */
+
+/* ------------------------ GL_ARB_stencil_texturing ----------------------- */
+
+#ifndef GL_ARB_stencil_texturing
+#define GL_ARB_stencil_texturing 1
+
+#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
+
+#define GLEW_ARB_stencil_texturing GLEW_GET_VAR(__GLEW_ARB_stencil_texturing)
+
+#endif /* GL_ARB_stencil_texturing */
+
+/* ------------------------------ GL_ARB_sync ------------------------------ */
+
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_WAIT_FAILED 0x911D
+#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+
+typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout);
+typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync);
+typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values);
+typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync);
+typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout);
+
+#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync)
+#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync)
+#define glFenceSync GLEW_GET_FUN(__glewFenceSync)
+#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v)
+#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv)
+#define glIsSync GLEW_GET_FUN(__glewIsSync)
+#define glWaitSync GLEW_GET_FUN(__glewWaitSync)
+
+#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync)
+
+#endif /* GL_ARB_sync */
+
+/* ----------------------- GL_ARB_tessellation_shader ---------------------- */
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+
+#define GL_PATCHES 0xE
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+#define GL_ISOLINES 0x8E7A
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+
+#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv)
+#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri)
+
+#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader)
+
+#endif /* GL_ARB_tessellation_shader */
+
+/* ------------------------- GL_ARB_texture_barrier ------------------------ */
+
+#ifndef GL_ARB_texture_barrier
+#define GL_ARB_texture_barrier 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERPROC) (void);
+
+#define glTextureBarrier GLEW_GET_FUN(__glewTextureBarrier)
+
+#define GLEW_ARB_texture_barrier GLEW_GET_VAR(__GLEW_ARB_texture_barrier)
+
+#endif /* GL_ARB_texture_barrier */
+
+/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+
+#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp)
+
+#endif /* GL_ARB_texture_border_clamp */
+
+/* ---------------------- GL_ARB_texture_buffer_object --------------------- */
+
+#ifndef GL_ARB_texture_buffer_object
+#define GL_ARB_texture_buffer_object 1
+
+#define GL_TEXTURE_BUFFER_ARB 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+
+#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB)
+
+#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object)
+
+#endif /* GL_ARB_texture_buffer_object */
+
+/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+#define GL_ARB_texture_buffer_object_rgb32 1
+
+#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32)
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
+/* ---------------------- GL_ARB_texture_buffer_range ---------------------- */
+
+#ifndef GL_ARB_texture_buffer_range
+#define GL_ARB_texture_buffer_range 1
+
+#define GL_TEXTURE_BUFFER_OFFSET 0x919D
+#define GL_TEXTURE_BUFFER_SIZE 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+#define glTexBufferRange GLEW_GET_FUN(__glewTexBufferRange)
+#define glTextureBufferRangeEXT GLEW_GET_FUN(__glewTextureBufferRangeEXT)
+
+#define GLEW_ARB_texture_buffer_range GLEW_GET_VAR(__GLEW_ARB_texture_buffer_range)
+
+#endif /* GL_ARB_texture_buffer_range */
+
+/* ----------------------- GL_ARB_texture_compression ---------------------- */
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
+#define GL_COMPRESSED_RGB_ARB 0x84ED
+#define GL_COMPRESSED_RGBA_ARB 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void *img);
+
+#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB)
+#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB)
+#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB)
+#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB)
+#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB)
+#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB)
+#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB)
+
+#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression)
+
+#endif /* GL_ARB_texture_compression */
+
+/* -------------------- GL_ARB_texture_compression_bptc -------------------- */
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_ARB_texture_compression_bptc 1
+
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+
+#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc)
+
+#endif /* GL_ARB_texture_compression_bptc */
+
+/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */
+
+#ifndef GL_ARB_texture_compression_rgtc
+#define GL_ARB_texture_compression_rgtc 1
+
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+
+#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc)
+
+#endif /* GL_ARB_texture_compression_rgtc */
+
+/* ------------------------ GL_ARB_texture_cube_map ------------------------ */
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+
+#define GL_NORMAL_MAP_ARB 0x8511
+#define GL_REFLECTION_MAP_ARB 0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
+
+#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map)
+
+#endif /* GL_ARB_texture_cube_map */
+
+/* --------------------- GL_ARB_texture_cube_map_array --------------------- */
+
+#ifndef GL_ARB_texture_cube_map_array
+#define GL_ARB_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
+
+#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array)
+
+#endif /* GL_ARB_texture_cube_map_array */
+
+/* ------------------------- GL_ARB_texture_env_add ------------------------ */
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+
+#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add)
+
+#endif /* GL_ARB_texture_env_add */
+
+/* ----------------------- GL_ARB_texture_env_combine ---------------------- */
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+
+#define GL_SUBTRACT_ARB 0x84E7
+#define GL_COMBINE_ARB 0x8570
+#define GL_COMBINE_RGB_ARB 0x8571
+#define GL_COMBINE_ALPHA_ARB 0x8572
+#define GL_RGB_SCALE_ARB 0x8573
+#define GL_ADD_SIGNED_ARB 0x8574
+#define GL_INTERPOLATE_ARB 0x8575
+#define GL_CONSTANT_ARB 0x8576
+#define GL_PRIMARY_COLOR_ARB 0x8577
+#define GL_PREVIOUS_ARB 0x8578
+#define GL_SOURCE0_RGB_ARB 0x8580
+#define GL_SOURCE1_RGB_ARB 0x8581
+#define GL_SOURCE2_RGB_ARB 0x8582
+#define GL_SOURCE0_ALPHA_ARB 0x8588
+#define GL_SOURCE1_ALPHA_ARB 0x8589
+#define GL_SOURCE2_ALPHA_ARB 0x858A
+#define GL_OPERAND0_RGB_ARB 0x8590
+#define GL_OPERAND1_RGB_ARB 0x8591
+#define GL_OPERAND2_RGB_ARB 0x8592
+#define GL_OPERAND0_ALPHA_ARB 0x8598
+#define GL_OPERAND1_ALPHA_ARB 0x8599
+#define GL_OPERAND2_ALPHA_ARB 0x859A
+
+#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine)
+
+#endif /* GL_ARB_texture_env_combine */
+
+/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+
+#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar)
+
+#endif /* GL_ARB_texture_env_crossbar */
+
+/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+
+#define GL_DOT3_RGB_ARB 0x86AE
+#define GL_DOT3_RGBA_ARB 0x86AF
+
+#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3)
+
+#endif /* GL_ARB_texture_env_dot3 */
+
+/* ------------------- GL_ARB_texture_filter_anisotropic ------------------- */
+
+#ifndef GL_ARB_texture_filter_anisotropic
+#define GL_ARB_texture_filter_anisotropic 1
+
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+
+#define GLEW_ARB_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_ARB_texture_filter_anisotropic)
+
+#endif /* GL_ARB_texture_filter_anisotropic */
+
+/* ---------------------- GL_ARB_texture_filter_minmax --------------------- */
+
+#ifndef GL_ARB_texture_filter_minmax
+#define GL_ARB_texture_filter_minmax 1
+
+#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+#define GL_WEIGHTED_AVERAGE_ARB 0x9367
+
+#define GLEW_ARB_texture_filter_minmax GLEW_GET_VAR(__GLEW_ARB_texture_filter_minmax)
+
+#endif /* GL_ARB_texture_filter_minmax */
+
+/* -------------------------- GL_ARB_texture_float ------------------------- */
+
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+
+#define GL_RGBA32F_ARB 0x8814
+#define GL_RGB32F_ARB 0x8815
+#define GL_ALPHA32F_ARB 0x8816
+#define GL_INTENSITY32F_ARB 0x8817
+#define GL_LUMINANCE32F_ARB 0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
+#define GL_RGBA16F_ARB 0x881A
+#define GL_RGB16F_ARB 0x881B
+#define GL_ALPHA16F_ARB 0x881C
+#define GL_INTENSITY16F_ARB 0x881D
+#define GL_LUMINANCE16F_ARB 0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
+
+#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float)
+
+#endif /* GL_ARB_texture_float */
+
+/* ------------------------- GL_ARB_texture_gather ------------------------- */
+
+#ifndef GL_ARB_texture_gather
+#define GL_ARB_texture_gather 1
+
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
+
+#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather)
+
+#endif /* GL_ARB_texture_gather */
+
+/* ------------------ GL_ARB_texture_mirror_clamp_to_edge ------------------ */
+
+#ifndef GL_ARB_texture_mirror_clamp_to_edge
+#define GL_ARB_texture_mirror_clamp_to_edge 1
+
+#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
+
+#define GLEW_ARB_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_ARB_texture_mirror_clamp_to_edge)
+
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+
+/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+
+#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat)
+
+#endif /* GL_ARB_texture_mirrored_repeat */
+
+/* ----------------------- GL_ARB_texture_multisample ---------------------- */
+
+#ifndef GL_ARB_texture_multisample
+#define GL_ARB_texture_multisample 1
+
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+
+typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv)
+#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski)
+#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample)
+#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample)
+
+#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample)
+
+#endif /* GL_ARB_texture_multisample */
+
+/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+
+#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two)
+
+#endif /* GL_ARB_texture_non_power_of_two */
+
+/* ---------------------- GL_ARB_texture_query_levels ---------------------- */
+
+#ifndef GL_ARB_texture_query_levels
+#define GL_ARB_texture_query_levels 1
+
+#define GLEW_ARB_texture_query_levels GLEW_GET_VAR(__GLEW_ARB_texture_query_levels)
+
+#endif /* GL_ARB_texture_query_levels */
+
+/* ------------------------ GL_ARB_texture_query_lod ----------------------- */
+
+#ifndef GL_ARB_texture_query_lod
+#define GL_ARB_texture_query_lod 1
+
+#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod)
+
+#endif /* GL_ARB_texture_query_lod */
+
+/* ------------------------ GL_ARB_texture_rectangle ----------------------- */
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+
+#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle)
+
+#endif /* GL_ARB_texture_rectangle */
+
+/* --------------------------- GL_ARB_texture_rg --------------------------- */
+
+#ifndef GL_ARB_texture_rg
+#define GL_ARB_texture_rg 1
+
+#define GL_COMPRESSED_RED 0x8225
+#define GL_COMPRESSED_RG 0x8226
+#define GL_RG 0x8227
+#define GL_RG_INTEGER 0x8228
+#define GL_R8 0x8229
+#define GL_R16 0x822A
+#define GL_RG8 0x822B
+#define GL_RG16 0x822C
+#define GL_R16F 0x822D
+#define GL_R32F 0x822E
+#define GL_RG16F 0x822F
+#define GL_RG32F 0x8230
+#define GL_R8I 0x8231
+#define GL_R8UI 0x8232
+#define GL_R16I 0x8233
+#define GL_R16UI 0x8234
+#define GL_R32I 0x8235
+#define GL_R32UI 0x8236
+#define GL_RG8I 0x8237
+#define GL_RG8UI 0x8238
+#define GL_RG16I 0x8239
+#define GL_RG16UI 0x823A
+#define GL_RG32I 0x823B
+#define GL_RG32UI 0x823C
+
+#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg)
+
+#endif /* GL_ARB_texture_rg */
+
+/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_ARB_texture_rgb10_a2ui 1
+
+#define GL_RGB10_A2UI 0x906F
+
+#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui)
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+/* ------------------------ GL_ARB_texture_stencil8 ------------------------ */
+
+#ifndef GL_ARB_texture_stencil8
+#define GL_ARB_texture_stencil8 1
+
+#define GL_STENCIL_INDEX 0x1901
+#define GL_STENCIL_INDEX8 0x8D48
+
+#define GLEW_ARB_texture_stencil8 GLEW_GET_VAR(__GLEW_ARB_texture_stencil8)
+
+#endif /* GL_ARB_texture_stencil8 */
+
+/* ------------------------- GL_ARB_texture_storage ------------------------ */
+
+#ifndef GL_ARB_texture_storage
+#define GL_ARB_texture_storage 1
+
+#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D)
+#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D)
+#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D)
+
+#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage)
+
+#endif /* GL_ARB_texture_storage */
+
+/* ------------------- GL_ARB_texture_storage_multisample ------------------ */
+
+#ifndef GL_ARB_texture_storage_multisample
+#define GL_ARB_texture_storage_multisample 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glTexStorage2DMultisample GLEW_GET_FUN(__glewTexStorage2DMultisample)
+#define glTexStorage3DMultisample GLEW_GET_FUN(__glewTexStorage3DMultisample)
+#define glTextureStorage2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage2DMultisampleEXT)
+#define glTextureStorage3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage3DMultisampleEXT)
+
+#define GLEW_ARB_texture_storage_multisample GLEW_GET_VAR(__GLEW_ARB_texture_storage_multisample)
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+/* ------------------------- GL_ARB_texture_swizzle ------------------------ */
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_ARB_texture_swizzle 1
+
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+
+#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle)
+
+#endif /* GL_ARB_texture_swizzle */
+
+/* -------------------------- GL_ARB_texture_view -------------------------- */
+
+#ifndef GL_ARB_texture_view
+#define GL_ARB_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureView GLEW_GET_FUN(__glewTextureView)
+
+#define GLEW_ARB_texture_view GLEW_GET_VAR(__GLEW_ARB_texture_view)
+
+#endif /* GL_ARB_texture_view */
+
+/* --------------------------- GL_ARB_timer_query -------------------------- */
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+
+#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v)
+#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v)
+#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter)
+
+#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query)
+
+#endif /* GL_ARB_timer_query */
+
+/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+
+typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
+typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+
+#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback)
+#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks)
+#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback)
+#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks)
+#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback)
+#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback)
+#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback)
+
+#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2)
+
+#endif /* GL_ARB_transform_feedback2 */
+
+/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params);
+
+#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed)
+#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream)
+#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed)
+#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv)
+
+#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3)
+
+#endif /* GL_ARB_transform_feedback3 */
+
+/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */
+
+#ifndef GL_ARB_transform_feedback_instanced
+#define GL_ARB_transform_feedback_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount);
+
+#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced)
+#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced)
+
+#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced)
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+/* ---------------- GL_ARB_transform_feedback_overflow_query --------------- */
+
+#ifndef GL_ARB_transform_feedback_overflow_query
+#define GL_ARB_transform_feedback_overflow_query 1
+
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
+
+#define GLEW_ARB_transform_feedback_overflow_query GLEW_GET_VAR(__GLEW_ARB_transform_feedback_overflow_query)
+
+#endif /* GL_ARB_transform_feedback_overflow_query */
+
+/* ------------------------ GL_ARB_transpose_matrix ------------------------ */
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]);
+
+#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB)
+#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB)
+#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB)
+#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB)
+
+#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix)
+
+#endif /* GL_ARB_transpose_matrix */
+
+/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */
+
+#ifndef GL_ARB_uniform_buffer_object
+#define GL_ARB_uniform_buffer_object 1
+
+#define GL_UNIFORM_BUFFER 0x8A11
+#define GL_UNIFORM_BUFFER_BINDING 0x8A28
+#define GL_UNIFORM_BUFFER_START 0x8A29
+#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
+#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+#define GL_UNIFORM_TYPE 0x8A37
+#define GL_UNIFORM_SIZE 0x8A38
+#define GL_UNIFORM_NAME_LENGTH 0x8A39
+#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
+#define GL_UNIFORM_OFFSET 0x8A3B
+#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
+#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+#define GL_INVALID_INDEX 0xFFFFFFFFu
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data);
+typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices);
+typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+
+#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase)
+#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange)
+#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName)
+#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv)
+#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName)
+#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv)
+#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v)
+#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex)
+#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices)
+#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding)
+
+#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object)
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */
+
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_ARB_vertex_array_bgra 1
+
+#define GL_BGRA 0x80E1
+
+#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra)
+
+#endif /* GL_ARB_vertex_array_bgra */
+
+/* ----------------------- GL_ARB_vertex_array_object ---------------------- */
+
+#ifndef GL_ARB_vertex_array_object
+#define GL_ARB_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array);
+
+#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray)
+#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays)
+#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays)
+#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray)
+
+#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object)
+
+#endif /* GL_ARB_vertex_array_object */
+
+/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */
+
+#ifndef GL_ARB_vertex_attrib_64bit
+#define GL_ARB_vertex_attrib_64bit 1
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer);
+
+#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv)
+#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d)
+#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv)
+#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d)
+#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv)
+#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d)
+#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv)
+#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d)
+#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv)
+#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer)
+
+#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit)
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+/* ---------------------- GL_ARB_vertex_attrib_binding --------------------- */
+
+#ifndef GL_ARB_vertex_attrib_binding
+#define GL_ARB_vertex_attrib_binding 1
+
+#define GL_VERTEX_ATTRIB_BINDING 0x82D4
+#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+#define GL_VERTEX_BINDING_DIVISOR 0x82D6
+#define GL_VERTEX_BINDING_OFFSET 0x82D7
+#define GL_VERTEX_BINDING_STRIDE 0x82D8
+#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+#define GL_VERTEX_BINDING_BUFFER 0x8F4F
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
+
+#define glBindVertexBuffer GLEW_GET_FUN(__glewBindVertexBuffer)
+#define glVertexArrayBindVertexBufferEXT GLEW_GET_FUN(__glewVertexArrayBindVertexBufferEXT)
+#define glVertexArrayVertexAttribBindingEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribBindingEXT)
+#define glVertexArrayVertexAttribFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribFormatEXT)
+#define glVertexArrayVertexAttribIFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIFormatEXT)
+#define glVertexArrayVertexAttribLFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLFormatEXT)
+#define glVertexArrayVertexBindingDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexBindingDivisorEXT)
+#define glVertexAttribBinding GLEW_GET_FUN(__glewVertexAttribBinding)
+#define glVertexAttribFormat GLEW_GET_FUN(__glewVertexAttribFormat)
+#define glVertexAttribIFormat GLEW_GET_FUN(__glewVertexAttribIFormat)
+#define glVertexAttribLFormat GLEW_GET_FUN(__glewVertexAttribLFormat)
+#define glVertexBindingDivisor GLEW_GET_FUN(__glewVertexBindingDivisor)
+
+#define GLEW_ARB_vertex_attrib_binding GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_binding)
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+/* -------------------------- GL_ARB_vertex_blend -------------------------- */
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+
+#define GL_MODELVIEW0_ARB 0x1700
+#define GL_MODELVIEW1_ARB 0x850A
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+#define GL_VERTEX_BLEND_ARB 0x86A7
+#define GL_CURRENT_WEIGHT_ARB 0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+#define GL_WEIGHT_ARRAY_ARB 0x86AD
+#define GL_MODELVIEW2_ARB 0x8722
+#define GL_MODELVIEW3_ARB 0x8723
+#define GL_MODELVIEW4_ARB 0x8724
+#define GL_MODELVIEW5_ARB 0x8725
+#define GL_MODELVIEW6_ARB 0x8726
+#define GL_MODELVIEW7_ARB 0x8727
+#define GL_MODELVIEW8_ARB 0x8728
+#define GL_MODELVIEW9_ARB 0x8729
+#define GL_MODELVIEW10_ARB 0x872A
+#define GL_MODELVIEW11_ARB 0x872B
+#define GL_MODELVIEW12_ARB 0x872C
+#define GL_MODELVIEW13_ARB 0x872D
+#define GL_MODELVIEW14_ARB 0x872E
+#define GL_MODELVIEW15_ARB 0x872F
+#define GL_MODELVIEW16_ARB 0x8730
+#define GL_MODELVIEW17_ARB 0x8731
+#define GL_MODELVIEW18_ARB 0x8732
+#define GL_MODELVIEW19_ARB 0x8733
+#define GL_MODELVIEW20_ARB 0x8734
+#define GL_MODELVIEW21_ARB 0x8735
+#define GL_MODELVIEW22_ARB 0x8736
+#define GL_MODELVIEW23_ARB 0x8737
+#define GL_MODELVIEW24_ARB 0x8738
+#define GL_MODELVIEW25_ARB 0x8739
+#define GL_MODELVIEW26_ARB 0x873A
+#define GL_MODELVIEW27_ARB 0x873B
+#define GL_MODELVIEW28_ARB 0x873C
+#define GL_MODELVIEW29_ARB 0x873D
+#define GL_MODELVIEW30_ARB 0x873E
+#define GL_MODELVIEW31_ARB 0x873F
+
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights);
+
+#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB)
+#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB)
+#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB)
+#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB)
+#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB)
+#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB)
+#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB)
+#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB)
+#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB)
+#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB)
+
+#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend)
+
+#endif /* GL_ARB_vertex_blend */
+
+/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+
+typedef ptrdiff_t GLintptrARB;
+typedef ptrdiff_t GLsizeiptrARB;
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target);
+
+#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB)
+#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB)
+#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB)
+#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB)
+#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB)
+#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB)
+#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB)
+#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB)
+#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB)
+#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB)
+#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB)
+
+#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object)
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+/* ------------------------- GL_ARB_vertex_program ------------------------- */
+
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+
+#define GL_COLOR_SUM_ARB 0x8458
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+#define GL_PROGRAM_LENGTH_ARB 0x8627
+#define GL_PROGRAM_STRING_ARB 0x8628
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_CURRENT_MATRIX_ARB 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+#define GL_PROGRAM_BINDING_ARB 0x8677
+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+#define GL_PROGRAM_FORMAT_ARB 0x8876
+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+#define GL_MATRIX0_ARB 0x88C0
+#define GL_MATRIX1_ARB 0x88C1
+#define GL_MATRIX2_ARB 0x88C2
+#define GL_MATRIX3_ARB 0x88C3
+#define GL_MATRIX4_ARB 0x88C4
+#define GL_MATRIX5_ARB 0x88C5
+#define GL_MATRIX6_ARB 0x88C6
+#define GL_MATRIX7_ARB 0x88C7
+#define GL_MATRIX8_ARB 0x88C8
+#define GL_MATRIX9_ARB 0x88C9
+#define GL_MATRIX10_ARB 0x88CA
+#define GL_MATRIX11_ARB 0x88CB
+#define GL_MATRIX12_ARB 0x88CC
+#define GL_MATRIX13_ARB 0x88CD
+#define GL_MATRIX14_ARB 0x88CE
+#define GL_MATRIX15_ARB 0x88CF
+#define GL_MATRIX16_ARB 0x88D0
+#define GL_MATRIX17_ARB 0x88D1
+#define GL_MATRIX18_ARB 0x88D2
+#define GL_MATRIX19_ARB 0x88D3
+#define GL_MATRIX20_ARB 0x88D4
+#define GL_MATRIX21_ARB 0x88D5
+#define GL_MATRIX22_ARB 0x88D6
+#define GL_MATRIX23_ARB 0x88D7
+#define GL_MATRIX24_ARB 0x88D8
+#define GL_MATRIX25_ARB 0x88D9
+#define GL_MATRIX26_ARB 0x88DA
+#define GL_MATRIX27_ARB 0x88DB
+#define GL_MATRIX28_ARB 0x88DC
+#define GL_MATRIX29_ARB 0x88DD
+#define GL_MATRIX30_ARB 0x88DE
+#define GL_MATRIX31_ARB 0x88DF
+
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
+
+#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB)
+#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB)
+#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB)
+#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB)
+#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB)
+#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB)
+#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB)
+#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB)
+#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB)
+#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB)
+#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB)
+#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB)
+#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB)
+#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB)
+#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB)
+#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB)
+#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB)
+#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB)
+#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB)
+#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB)
+#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB)
+#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB)
+#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB)
+#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB)
+#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB)
+#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB)
+#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB)
+#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB)
+#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB)
+#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB)
+#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB)
+#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB)
+#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB)
+#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB)
+#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB)
+#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB)
+#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB)
+#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB)
+#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB)
+#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB)
+#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB)
+#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB)
+#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB)
+#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB)
+#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB)
+#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB)
+#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB)
+#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB)
+#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB)
+#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB)
+#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB)
+#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB)
+#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB)
+#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB)
+#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB)
+#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB)
+#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB)
+#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB)
+#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB)
+#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB)
+#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB)
+#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB)
+
+#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program)
+
+#endif /* GL_ARB_vertex_program */
+
+/* -------------------------- GL_ARB_vertex_shader ------------------------- */
+
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+
+#define GL_VERTEX_SHADER_ARB 0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+
+typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
+typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);
+
+#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB)
+#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB)
+#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB)
+
+#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader)
+
+#endif /* GL_ARB_vertex_shader */
+
+/* ------------------- GL_ARB_vertex_type_10f_11f_11f_rev ------------------ */
+
+#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
+#define GL_ARB_vertex_type_10f_11f_11f_rev 1
+
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+
+#define GLEW_ARB_vertex_type_10f_11f_11f_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_10f_11f_11f_rev)
+
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+
+/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_INT_2_10_10_10_REV 0x8D9F
+
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value);
+
+#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui)
+#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv)
+#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui)
+#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv)
+#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui)
+#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv)
+#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui)
+#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv)
+#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui)
+#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv)
+#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui)
+#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv)
+#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui)
+#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv)
+#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui)
+#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv)
+#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui)
+#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv)
+#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui)
+#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv)
+#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui)
+#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv)
+#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui)
+#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv)
+#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui)
+#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv)
+#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui)
+#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv)
+#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui)
+#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv)
+#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui)
+#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv)
+#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui)
+#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv)
+#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui)
+#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv)
+#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui)
+#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv)
+
+#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev)
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+/* ------------------------- GL_ARB_viewport_array ------------------------- */
+
+#ifndef GL_ARB_viewport_array
+#define GL_ARB_viewport_array 1
+
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_VIEWPORT 0x0BA2
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_MAX_VIEWPORTS 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
+#define GL_LAYER_PROVOKING_VERTEX 0x825E
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+#define GL_UNDEFINED_VERTEX 0x8260
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v);
+
+#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv)
+#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed)
+#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v)
+#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v)
+#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv)
+#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed)
+#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv)
+#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv)
+#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf)
+#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv)
+
+#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array)
+
+#endif /* GL_ARB_viewport_array */
+
+/* --------------------------- GL_ARB_window_pos --------------------------- */
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p);
+
+#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB)
+#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB)
+#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB)
+#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB)
+#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB)
+#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB)
+#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB)
+#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB)
+#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB)
+#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB)
+#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB)
+#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB)
+#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB)
+#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB)
+#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB)
+#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB)
+
+#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos)
+
+#endif /* GL_ARB_window_pos */
+
+/* ----------------------- GL_ARM_mali_program_binary ---------------------- */
+
+#ifndef GL_ARM_mali_program_binary
+#define GL_ARM_mali_program_binary 1
+
+#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
+
+#define GLEW_ARM_mali_program_binary GLEW_GET_VAR(__GLEW_ARM_mali_program_binary)
+
+#endif /* GL_ARM_mali_program_binary */
+
+/* ----------------------- GL_ARM_mali_shader_binary ----------------------- */
+
+#ifndef GL_ARM_mali_shader_binary
+#define GL_ARM_mali_shader_binary 1
+
+#define GL_MALI_SHADER_BINARY_ARM 0x8F60
+
+#define GLEW_ARM_mali_shader_binary GLEW_GET_VAR(__GLEW_ARM_mali_shader_binary)
+
+#endif /* GL_ARM_mali_shader_binary */
+
+/* ------------------------------ GL_ARM_rgba8 ----------------------------- */
+
+#ifndef GL_ARM_rgba8
+#define GL_ARM_rgba8 1
+
+#define GL_RGBA8_OES 0x8058
+
+#define GLEW_ARM_rgba8 GLEW_GET_VAR(__GLEW_ARM_rgba8)
+
+#endif /* GL_ARM_rgba8 */
+
+/* -------------------- GL_ARM_shader_framebuffer_fetch -------------------- */
+
+#ifndef GL_ARM_shader_framebuffer_fetch
+#define GL_ARM_shader_framebuffer_fetch 1
+
+#define GL_FETCH_PER_SAMPLE_ARM 0x8F65
+#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
+
+#define GLEW_ARM_shader_framebuffer_fetch GLEW_GET_VAR(__GLEW_ARM_shader_framebuffer_fetch)
+
+#endif /* GL_ARM_shader_framebuffer_fetch */
+
+/* ------------- GL_ARM_shader_framebuffer_fetch_depth_stencil ------------- */
+
+#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil
+#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1
+
+#define GLEW_ARM_shader_framebuffer_fetch_depth_stencil GLEW_GET_VAR(__GLEW_ARM_shader_framebuffer_fetch_depth_stencil)
+
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+
+/* ---------------- GL_ARM_texture_unnormalized_coordinates ---------------- */
+
+#ifndef GL_ARM_texture_unnormalized_coordinates
+#define GL_ARM_texture_unnormalized_coordinates 1
+
+#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A
+
+#define GLEW_ARM_texture_unnormalized_coordinates GLEW_GET_VAR(__GLEW_ARM_texture_unnormalized_coordinates)
+
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+
+/* ------------------------- GL_ATIX_point_sprites ------------------------- */
+
+#ifndef GL_ATIX_point_sprites
+#define GL_ATIX_point_sprites 1
+
+#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0
+#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1
+#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2
+#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3
+#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4
+#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5
+
+#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites)
+
+#endif /* GL_ATIX_point_sprites */
+
+/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */
+
+#ifndef GL_ATIX_texture_env_combine3
+#define GL_ATIX_texture_env_combine3 1
+
+#define GL_MODULATE_ADD_ATIX 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745
+#define GL_MODULATE_SUBTRACT_ATIX 0x8746
+
+#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3)
+
+#endif /* GL_ATIX_texture_env_combine3 */
+
+/* ----------------------- GL_ATIX_texture_env_route ----------------------- */
+
+#ifndef GL_ATIX_texture_env_route
+#define GL_ATIX_texture_env_route 1
+
+#define GL_SECONDARY_COLOR_ATIX 0x8747
+#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748
+#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749
+
+#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route)
+
+#endif /* GL_ATIX_texture_env_route */
+
+/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */
+
+#ifndef GL_ATIX_vertex_shader_output_point_size
+#define GL_ATIX_vertex_shader_output_point_size 1
+
+#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E
+
+#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size)
+
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+
+/* -------------------------- GL_ATI_draw_buffers -------------------------- */
+
+#ifndef GL_ATI_draw_buffers
+#define GL_ATI_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
+#define GL_DRAW_BUFFER0_ATI 0x8825
+#define GL_DRAW_BUFFER1_ATI 0x8826
+#define GL_DRAW_BUFFER2_ATI 0x8827
+#define GL_DRAW_BUFFER3_ATI 0x8828
+#define GL_DRAW_BUFFER4_ATI 0x8829
+#define GL_DRAW_BUFFER5_ATI 0x882A
+#define GL_DRAW_BUFFER6_ATI 0x882B
+#define GL_DRAW_BUFFER7_ATI 0x882C
+#define GL_DRAW_BUFFER8_ATI 0x882D
+#define GL_DRAW_BUFFER9_ATI 0x882E
+#define GL_DRAW_BUFFER10_ATI 0x882F
+#define GL_DRAW_BUFFER11_ATI 0x8830
+#define GL_DRAW_BUFFER12_ATI 0x8831
+#define GL_DRAW_BUFFER13_ATI 0x8832
+#define GL_DRAW_BUFFER14_ATI 0x8833
+#define GL_DRAW_BUFFER15_ATI 0x8834
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI)
+
+#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers)
+
+#endif /* GL_ATI_draw_buffers */
+
+/* -------------------------- GL_ATI_element_array ------------------------- */
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+
+#define GL_ELEMENT_ARRAY_ATI 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
+
+#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI)
+#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI)
+#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI)
+
+#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array)
+
+#endif /* GL_ATI_element_array */
+
+/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+
+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+#define GL_BUMP_TEX_UNITS_ATI 0x8778
+#define GL_DUDV_ATI 0x8779
+#define GL_DU8DV8_ATI 0x877A
+#define GL_BUMP_ENVMAP_ATI 0x877B
+#define GL_BUMP_TARGET_ATI 0x877C
+
+typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+
+#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI)
+#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI)
+#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI)
+#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI)
+
+#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap)
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+/* ------------------------- GL_ATI_fragment_shader ------------------------ */
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+
+#define GL_2X_BIT_ATI 0x00000001
+#define GL_RED_BIT_ATI 0x00000001
+#define GL_4X_BIT_ATI 0x00000002
+#define GL_COMP_BIT_ATI 0x00000002
+#define GL_GREEN_BIT_ATI 0x00000002
+#define GL_8X_BIT_ATI 0x00000004
+#define GL_BLUE_BIT_ATI 0x00000004
+#define GL_NEGATE_BIT_ATI 0x00000004
+#define GL_BIAS_BIT_ATI 0x00000008
+#define GL_HALF_BIT_ATI 0x00000008
+#define GL_QUARTER_BIT_ATI 0x00000010
+#define GL_EIGHTH_BIT_ATI 0x00000020
+#define GL_SATURATE_BIT_ATI 0x00000040
+#define GL_FRAGMENT_SHADER_ATI 0x8920
+#define GL_REG_0_ATI 0x8921
+#define GL_REG_1_ATI 0x8922
+#define GL_REG_2_ATI 0x8923
+#define GL_REG_3_ATI 0x8924
+#define GL_REG_4_ATI 0x8925
+#define GL_REG_5_ATI 0x8926
+#define GL_CON_0_ATI 0x8941
+#define GL_CON_1_ATI 0x8942
+#define GL_CON_2_ATI 0x8943
+#define GL_CON_3_ATI 0x8944
+#define GL_CON_4_ATI 0x8945
+#define GL_CON_5_ATI 0x8946
+#define GL_CON_6_ATI 0x8947
+#define GL_CON_7_ATI 0x8948
+#define GL_MOV_ATI 0x8961
+#define GL_ADD_ATI 0x8963
+#define GL_MUL_ATI 0x8964
+#define GL_SUB_ATI 0x8965
+#define GL_DOT3_ATI 0x8966
+#define GL_DOT4_ATI 0x8967
+#define GL_MAD_ATI 0x8968
+#define GL_LERP_ATI 0x8969
+#define GL_CND_ATI 0x896A
+#define GL_CND0_ATI 0x896B
+#define GL_DOT2_ADD_ATI 0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+#define GL_NUM_PASSES_ATI 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+#define GL_SWIZZLE_STR_ATI 0x8976
+#define GL_SWIZZLE_STQ_ATI 0x8977
+#define GL_SWIZZLE_STR_DR_ATI 0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
+#define GL_SWIZZLE_STRQ_ATI 0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
+typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value);
+
+#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI)
+#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI)
+#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI)
+#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI)
+#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI)
+#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI)
+#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI)
+#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI)
+#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI)
+#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI)
+#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI)
+#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI)
+#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI)
+#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI)
+
+#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader)
+
+#endif /* GL_ATI_fragment_shader */
+
+/* ------------------------ GL_ATI_map_object_buffer ----------------------- */
+
+#ifndef GL_ATI_map_object_buffer
+#define GL_ATI_map_object_buffer 1
+
+typedef void * (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+
+#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI)
+#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI)
+
+#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer)
+
+#endif /* GL_ATI_map_object_buffer */
+
+/* ----------------------------- GL_ATI_meminfo ---------------------------- */
+
+#ifndef GL_ATI_meminfo
+#define GL_ATI_meminfo 1
+
+#define GL_VBO_FREE_MEMORY_ATI 0x87FB
+#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
+
+#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo)
+
+#endif /* GL_ATI_meminfo */
+
+/* -------------------------- GL_ATI_pn_triangles -------------------------- */
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+
+#define GL_PN_TRIANGLES_ATI 0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+
+typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+
+#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI)
+#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI)
+
+#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles)
+
+#endif /* GL_ATI_pn_triangles */
+
+/* ------------------------ GL_ATI_separate_stencil ------------------------ */
+
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+
+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+
+typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+
+#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI)
+#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI)
+
+#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil)
+
+#endif /* GL_ATI_separate_stencil */
+
+/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */
+
+#ifndef GL_ATI_shader_texture_lod
+#define GL_ATI_shader_texture_lod 1
+
+#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod)
+
+#endif /* GL_ATI_shader_texture_lod */
+
+/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_ATI_text_fragment_shader 1
+
+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
+
+#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader)
+
+#endif /* GL_ATI_text_fragment_shader */
+
+/* --------------------- GL_ATI_texture_compression_3dc -------------------- */
+
+#ifndef GL_ATI_texture_compression_3dc
+#define GL_ATI_texture_compression_3dc 1
+
+#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
+
+#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc)
+
+#endif /* GL_ATI_texture_compression_3dc */
+
+/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+
+#define GL_MODULATE_ADD_ATI 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
+#define GL_MODULATE_SUBTRACT_ATI 0x8746
+
+#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3)
+
+#endif /* GL_ATI_texture_env_combine3 */
+
+/* -------------------------- GL_ATI_texture_float ------------------------- */
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+
+#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float)
+
+#endif /* GL_ATI_texture_float */
+
+/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+
+#define GL_MIRROR_CLAMP_ATI 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
+
+#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once)
+
+#endif /* GL_ATI_texture_mirror_once */
+
+/* ----------------------- GL_ATI_vertex_array_object ---------------------- */
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+
+#define GL_STATIC_ATI 0x8760
+#define GL_DYNAMIC_ATI 0x8761
+#define GL_PRESERVE_ATI 0x8762
+#define GL_DISCARD_ATI 0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+
+typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
+typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+
+#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI)
+#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI)
+#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI)
+#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI)
+#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI)
+#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI)
+#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI)
+#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI)
+#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI)
+#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI)
+#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI)
+#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI)
+
+#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object)
+
+#endif /* GL_ATI_vertex_array_object */
+
+/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#define GL_ATI_vertex_attrib_array_object 1
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+
+#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI)
+#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI)
+#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI)
+
+#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object)
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+/* ------------------------- GL_ATI_vertex_streams ------------------------- */
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+
+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
+#define GL_VERTEX_SOURCE_ATI 0x876C
+#define GL_VERTEX_STREAM0_ATI 0x876D
+#define GL_VERTEX_STREAM1_ATI 0x876E
+#define GL_VERTEX_STREAM2_ATI 0x876F
+#define GL_VERTEX_STREAM3_ATI 0x8770
+#define GL_VERTEX_STREAM4_ATI 0x8771
+#define GL_VERTEX_STREAM5_ATI 0x8772
+#define GL_VERTEX_STREAM6_ATI 0x8773
+#define GL_VERTEX_STREAM7_ATI 0x8774
+
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
+
+#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI)
+#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI)
+#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI)
+#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI)
+#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI)
+#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI)
+#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI)
+#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI)
+#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI)
+#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI)
+#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI)
+#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI)
+#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI)
+#define glVertexStream1dATI GLEW_GET_FUN(__glewVertexStream1dATI)
+#define glVertexStream1dvATI GLEW_GET_FUN(__glewVertexStream1dvATI)
+#define glVertexStream1fATI GLEW_GET_FUN(__glewVertexStream1fATI)
+#define glVertexStream1fvATI GLEW_GET_FUN(__glewVertexStream1fvATI)
+#define glVertexStream1iATI GLEW_GET_FUN(__glewVertexStream1iATI)
+#define glVertexStream1ivATI GLEW_GET_FUN(__glewVertexStream1ivATI)
+#define glVertexStream1sATI GLEW_GET_FUN(__glewVertexStream1sATI)
+#define glVertexStream1svATI GLEW_GET_FUN(__glewVertexStream1svATI)
+#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI)
+#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI)
+#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI)
+#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI)
+#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI)
+#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI)
+#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI)
+#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI)
+#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI)
+#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI)
+#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI)
+#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI)
+#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI)
+#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI)
+#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI)
+#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI)
+#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI)
+#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI)
+#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI)
+#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI)
+#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI)
+#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI)
+#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI)
+#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI)
+
+#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams)
+
+#endif /* GL_ATI_vertex_streams */
+
+/* ------------------------- GL_DMP_program_binary ------------------------- */
+
+#ifndef GL_DMP_program_binary
+#define GL_DMP_program_binary 1
+
+#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
+#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
+#define GL_DMP_PROGRAM_BINARY_DMP 0x9253
+
+#define GLEW_DMP_program_binary GLEW_GET_VAR(__GLEW_DMP_program_binary)
+
+#endif /* GL_DMP_program_binary */
+
+/* -------------------------- GL_DMP_shader_binary ------------------------- */
+
+#ifndef GL_DMP_shader_binary
+#define GL_DMP_shader_binary 1
+
+#define GL_SHADER_BINARY_DMP 0x9250
+
+#define GLEW_DMP_shader_binary GLEW_GET_VAR(__GLEW_DMP_shader_binary)
+
+#endif /* GL_DMP_shader_binary */
+
+/* --------------------------- GL_EXT_422_pixels --------------------------- */
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+
+#define GL_422_EXT 0x80CC
+#define GL_422_REV_EXT 0x80CD
+#define GL_422_AVERAGE_EXT 0x80CE
+#define GL_422_REV_AVERAGE_EXT 0x80CF
+
+#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels)
+
+#endif /* GL_EXT_422_pixels */
+
+/* ---------------------------- GL_EXT_Cg_shader --------------------------- */
+
+#ifndef GL_EXT_Cg_shader
+#define GL_EXT_Cg_shader 1
+
+#define GL_CG_VERTEX_SHADER_EXT 0x890E
+#define GL_CG_FRAGMENT_SHADER_EXT 0x890F
+
+#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader)
+
+#endif /* GL_EXT_Cg_shader */
+
+/* ------------------------- GL_EXT_EGL_image_array ------------------------ */
+
+#ifndef GL_EXT_EGL_image_array
+#define GL_EXT_EGL_image_array 1
+
+#define GLEW_EXT_EGL_image_array GLEW_GET_VAR(__GLEW_EXT_EGL_image_array)
+
+#endif /* GL_EXT_EGL_image_array */
+
+/* ------------------ GL_EXT_EGL_image_external_wrap_modes ----------------- */
+
+#ifndef GL_EXT_EGL_image_external_wrap_modes
+#define GL_EXT_EGL_image_external_wrap_modes 1
+
+#define GLEW_EXT_EGL_image_external_wrap_modes GLEW_GET_VAR(__GLEW_EXT_EGL_image_external_wrap_modes)
+
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+
+/* ------------------------ GL_EXT_EGL_image_storage ----------------------- */
+
+#ifndef GL_EXT_EGL_image_storage
+#define GL_EXT_EGL_image_storage 1
+
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+
+#define glEGLImageTargetTexStorageEXT GLEW_GET_FUN(__glewEGLImageTargetTexStorageEXT)
+#define glEGLImageTargetTextureStorageEXT GLEW_GET_FUN(__glewEGLImageTargetTextureStorageEXT)
+
+#define GLEW_EXT_EGL_image_storage GLEW_GET_VAR(__GLEW_EXT_EGL_image_storage)
+
+#endif /* GL_EXT_EGL_image_storage */
+
+/* ------------------ GL_EXT_EGL_image_storage_compression ----------------- */
+
+#ifndef GL_EXT_EGL_image_storage_compression
+#define GL_EXT_EGL_image_storage_compression 1
+
+#define GL_SURFACE_COMPRESSION_EXT 0x96C0
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+
+#define GLEW_EXT_EGL_image_storage_compression GLEW_GET_VAR(__GLEW_EXT_EGL_image_storage_compression)
+
+#endif /* GL_EXT_EGL_image_storage_compression */
+
+/* ---------------------------- GL_EXT_EGL_sync ---------------------------- */
+
+#ifndef GL_EXT_EGL_sync
+#define GL_EXT_EGL_sync 1
+
+#define GLEW_EXT_EGL_sync GLEW_GET_VAR(__GLEW_EXT_EGL_sync)
+
+#endif /* GL_EXT_EGL_sync */
+
+/* --------------------------- GL_EXT_YUV_target --------------------------- */
+
+#ifndef GL_EXT_YUV_target
+#define GL_EXT_YUV_target 1
+
+#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
+
+#define GLEW_EXT_YUV_target GLEW_GET_VAR(__GLEW_EXT_YUV_target)
+
+#endif /* GL_EXT_YUV_target */
+
+/* ------------------------------ GL_EXT_abgr ------------------------------ */
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+
+#define GL_ABGR_EXT 0x8000
+
+#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr)
+
+#endif /* GL_EXT_abgr */
+
+/* -------------------------- GL_EXT_base_instance ------------------------- */
+
+#ifndef GL_EXT_base_instance
+#define GL_EXT_base_instance 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+
+#define glDrawArraysInstancedBaseInstanceEXT GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstanceEXT)
+#define glDrawElementsInstancedBaseInstanceEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstanceEXT)
+#define glDrawElementsInstancedBaseVertexBaseInstanceEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstanceEXT)
+
+#define GLEW_EXT_base_instance GLEW_GET_VAR(__GLEW_EXT_base_instance)
+
+#endif /* GL_EXT_base_instance */
+
+/* ------------------------------ GL_EXT_bgra ------------------------------ */
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra)
+
+#endif /* GL_EXT_bgra */
+
+/* ------------------------ GL_EXT_bindable_uniform ------------------------ */
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_EXT_bindable_uniform 1
+
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
+typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
+typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
+
+#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT)
+#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT)
+#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT)
+
+#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform)
+
+#endif /* GL_EXT_bindable_uniform */
+
+/* --------------------------- GL_EXT_blend_color -------------------------- */
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+
+#define GL_CONSTANT_COLOR_EXT 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+#define GL_CONSTANT_ALPHA_EXT 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+#define GL_BLEND_COLOR_EXT 0x8005
+
+typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+
+#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT)
+
+#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color)
+
+#endif /* GL_EXT_blend_color */
+
+/* --------------------- GL_EXT_blend_equation_separate -------------------- */
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 1
+
+#define GL_BLEND_EQUATION_RGB_EXT 0x8009
+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+
+#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT)
+
+#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate)
+
+#endif /* GL_EXT_blend_equation_separate */
+
+/* ----------------------- GL_EXT_blend_func_extended ---------------------- */
+
+#ifndef GL_EXT_blend_func_extended
+#define GL_EXT_blend_func_extended 1
+
+#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
+#define GL_SRC1_ALPHA_EXT 0x8589
+#define GL_SRC1_COLOR_EXT 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
+#define GL_LOCATION_INDEX_EXT 0x930F
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+
+#define glBindFragDataLocationIndexedEXT GLEW_GET_FUN(__glewBindFragDataLocationIndexedEXT)
+#define glGetFragDataIndexEXT GLEW_GET_FUN(__glewGetFragDataIndexEXT)
+#define glGetProgramResourceLocationIndexEXT GLEW_GET_FUN(__glewGetProgramResourceLocationIndexEXT)
+
+#define GLEW_EXT_blend_func_extended GLEW_GET_VAR(__GLEW_EXT_blend_func_extended)
+
+#endif /* GL_EXT_blend_func_extended */
+
+/* ----------------------- GL_EXT_blend_func_separate ---------------------- */
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+
+#define GL_BLEND_DST_RGB_EXT 0x80C8
+#define GL_BLEND_SRC_RGB_EXT 0x80C9
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
+
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT)
+
+#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate)
+
+#endif /* GL_EXT_blend_func_separate */
+
+/* ------------------------- GL_EXT_blend_logic_op ------------------------- */
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+
+#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op)
+
+#endif /* GL_EXT_blend_logic_op */
+
+/* -------------------------- GL_EXT_blend_minmax -------------------------- */
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+
+#define GL_FUNC_ADD_EXT 0x8006
+#define GL_MIN_EXT 0x8007
+#define GL_MAX_EXT 0x8008
+#define GL_BLEND_EQUATION_EXT 0x8009
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+
+#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT)
+
+#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax)
+
+#endif /* GL_EXT_blend_minmax */
+
+/* ------------------------- GL_EXT_blend_subtract ------------------------- */
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+
+#define GL_FUNC_SUBTRACT_EXT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
+
+#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract)
+
+#endif /* GL_EXT_blend_subtract */
+
+/* ------------------------- GL_EXT_buffer_storage ------------------------- */
+
+#ifndef GL_EXT_buffer_storage
+#define GL_EXT_buffer_storage 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_PERSISTENT_BIT_EXT 0x0040
+#define GL_MAP_COHERENT_BIT_EXT 0x0080
+#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
+#define GL_CLIENT_STORAGE_BIT_EXT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
+#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+
+#define glBufferStorageEXT GLEW_GET_FUN(__glewBufferStorageEXT)
+#define glNamedBufferStorageEXT GLEW_GET_FUN(__glewNamedBufferStorageEXT)
+
+#define GLEW_EXT_buffer_storage GLEW_GET_VAR(__GLEW_EXT_buffer_storage)
+
+#endif /* GL_EXT_buffer_storage */
+
+/* -------------------------- GL_EXT_clear_texture ------------------------- */
+
+#ifndef GL_EXT_clear_texture
+#define GL_EXT_clear_texture 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+
+#define glClearTexImageEXT GLEW_GET_FUN(__glewClearTexImageEXT)
+#define glClearTexSubImageEXT GLEW_GET_FUN(__glewClearTexSubImageEXT)
+
+#define GLEW_EXT_clear_texture GLEW_GET_VAR(__GLEW_EXT_clear_texture)
+
+#endif /* GL_EXT_clear_texture */
+
+/* -------------------------- GL_EXT_clip_control -------------------------- */
+
+#ifndef GL_EXT_clip_control
+#define GL_EXT_clip_control 1
+
+#define GL_LOWER_LEFT_EXT 0x8CA1
+#define GL_UPPER_LEFT_EXT 0x8CA2
+#define GL_CLIP_ORIGIN_EXT 0x935C
+#define GL_CLIP_DEPTH_MODE_EXT 0x935D
+#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
+#define GL_ZERO_TO_ONE_EXT 0x935F
+
+typedef void (GLAPIENTRY * PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth);
+
+#define glClipControlEXT GLEW_GET_FUN(__glewClipControlEXT)
+
+#define GLEW_EXT_clip_control GLEW_GET_VAR(__GLEW_EXT_clip_control)
+
+#endif /* GL_EXT_clip_control */
+
+/* ----------------------- GL_EXT_clip_cull_distance ----------------------- */
+
+#ifndef GL_EXT_clip_cull_distance
+#define GL_EXT_clip_cull_distance 1
+
+#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32
+#define GL_CLIP_DISTANCE0_EXT 0x3000
+#define GL_CLIP_DISTANCE1_EXT 0x3001
+#define GL_CLIP_DISTANCE2_EXT 0x3002
+#define GL_CLIP_DISTANCE3_EXT 0x3003
+#define GL_CLIP_DISTANCE4_EXT 0x3004
+#define GL_CLIP_DISTANCE5_EXT 0x3005
+#define GL_CLIP_DISTANCE6_EXT 0x3006
+#define GL_CLIP_DISTANCE7_EXT 0x3007
+#define GL_MAX_CULL_DISTANCES_EXT 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
+
+#define GLEW_EXT_clip_cull_distance GLEW_GET_VAR(__GLEW_EXT_clip_cull_distance)
+
+#endif /* GL_EXT_clip_cull_distance */
+
+/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
+
+#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint)
+
+#endif /* GL_EXT_clip_volume_hint */
+
+/* ------------------------------ GL_EXT_cmyka ----------------------------- */
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+
+#define GL_CMYK_EXT 0x800C
+#define GL_CMYKA_EXT 0x800D
+#define GL_PACK_CMYK_HINT_EXT 0x800E
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
+
+#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka)
+
+#endif /* GL_EXT_cmyka */
+
+/* ----------------------- GL_EXT_color_buffer_float ----------------------- */
+
+#ifndef GL_EXT_color_buffer_float
+#define GL_EXT_color_buffer_float 1
+
+#define GLEW_EXT_color_buffer_float GLEW_GET_VAR(__GLEW_EXT_color_buffer_float)
+
+#endif /* GL_EXT_color_buffer_float */
+
+/* --------------------- GL_EXT_color_buffer_half_float -------------------- */
+
+#ifndef GL_EXT_color_buffer_half_float
+#define GL_EXT_color_buffer_half_float 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
+#define GL_R16F_EXT 0x822D
+#define GL_RG16F_EXT 0x822F
+#define GL_RGBA16F_EXT 0x881A
+#define GL_RGB16F_EXT 0x881B
+#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17
+
+#define GLEW_EXT_color_buffer_half_float GLEW_GET_VAR(__GLEW_EXT_color_buffer_half_float)
+
+#endif /* GL_EXT_color_buffer_half_float */
+
+/* ------------------------- GL_EXT_color_subtable ------------------------- */
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+
+typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+
+#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT)
+#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT)
+
+#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable)
+
+#endif /* GL_EXT_color_subtable */
+
+/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+
+typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
+
+#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT)
+#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT)
+
+#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array)
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+/* ---------------- GL_EXT_compressed_ETC1_RGB8_sub_texture ---------------- */
+
+#ifndef GL_EXT_compressed_ETC1_RGB8_sub_texture
+#define GL_EXT_compressed_ETC1_RGB8_sub_texture 1
+
+#define GLEW_EXT_compressed_ETC1_RGB8_sub_texture GLEW_GET_VAR(__GLEW_EXT_compressed_ETC1_RGB8_sub_texture)
+
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+
+/* ----------------------- GL_EXT_conservative_depth ----------------------- */
+
+#ifndef GL_EXT_conservative_depth
+#define GL_EXT_conservative_depth 1
+
+#define GLEW_EXT_conservative_depth GLEW_GET_VAR(__GLEW_EXT_conservative_depth)
+
+#endif /* GL_EXT_conservative_depth */
+
+/* --------------------------- GL_EXT_convolution -------------------------- */
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+
+#define GL_CONVOLUTION_1D_EXT 0x8010
+#define GL_CONVOLUTION_2D_EXT 0x8011
+#define GL_SEPARABLE_2D_EXT 0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+#define GL_REDUCE_EXT 0x8016
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
+typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
+
+#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT)
+#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT)
+#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT)
+#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT)
+#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT)
+#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT)
+#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT)
+#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT)
+#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT)
+#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT)
+#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT)
+#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT)
+#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT)
+
+#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution)
+
+#endif /* GL_EXT_convolution */
+
+/* ------------------------ GL_EXT_coordinate_frame ------------------------ */
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+
+#define GL_TANGENT_ARRAY_EXT 0x8439
+#define GL_BINORMAL_ARRAY_EXT 0x843A
+#define GL_CURRENT_TANGENT_EXT 0x843B
+#define GL_CURRENT_BINORMAL_EXT 0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+#define GL_MAP1_TANGENT_EXT 0x8444
+#define GL_MAP2_TANGENT_EXT 0x8445
+#define GL_MAP1_BINORMAL_EXT 0x8446
+#define GL_MAP2_BINORMAL_EXT 0x8447
+
+typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer);
+
+#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT)
+#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT)
+
+#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame)
+
+#endif /* GL_EXT_coordinate_frame */
+
+/* --------------------------- GL_EXT_copy_image --------------------------- */
+
+#ifndef GL_EXT_copy_image
+#define GL_EXT_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAEXTPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubDataEXT GLEW_GET_FUN(__glewCopyImageSubDataEXT)
+
+#define GLEW_EXT_copy_image GLEW_GET_VAR(__GLEW_EXT_copy_image)
+
+#endif /* GL_EXT_copy_image */
+
+/* -------------------------- GL_EXT_copy_texture -------------------------- */
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT)
+#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT)
+#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT)
+#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT)
+#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT)
+
+#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture)
+
+#endif /* GL_EXT_copy_texture */
+
+/* --------------------------- GL_EXT_cull_vertex -------------------------- */
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+
+typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params);
+
+#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT)
+#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT)
+
+#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex)
+
+#endif /* GL_EXT_cull_vertex */
+
+/* --------------------------- GL_EXT_debug_label -------------------------- */
+
+#ifndef GL_EXT_debug_label
+#define GL_EXT_debug_label 1
+
+#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+#define GL_PROGRAM_OBJECT_EXT 0x8B40
+#define GL_SHADER_OBJECT_EXT 0x8B48
+#define GL_BUFFER_OBJECT_EXT 0x9151
+#define GL_QUERY_OBJECT_EXT 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+
+typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar* label);
+
+#define glGetObjectLabelEXT GLEW_GET_FUN(__glewGetObjectLabelEXT)
+#define glLabelObjectEXT GLEW_GET_FUN(__glewLabelObjectEXT)
+
+#define GLEW_EXT_debug_label GLEW_GET_VAR(__GLEW_EXT_debug_label)
+
+#endif /* GL_EXT_debug_label */
+
+/* -------------------------- GL_EXT_debug_marker -------------------------- */
+
+#ifndef GL_EXT_debug_marker
+#define GL_EXT_debug_marker 1
+
+typedef void (GLAPIENTRY * PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar* marker);
+typedef void (GLAPIENTRY * PFNGLPOPGROUPMARKEREXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar* marker);
+
+#define glInsertEventMarkerEXT GLEW_GET_FUN(__glewInsertEventMarkerEXT)
+#define glPopGroupMarkerEXT GLEW_GET_FUN(__glewPopGroupMarkerEXT)
+#define glPushGroupMarkerEXT GLEW_GET_FUN(__glewPushGroupMarkerEXT)
+
+#define GLEW_EXT_debug_marker GLEW_GET_VAR(__GLEW_EXT_debug_marker)
+
+#endif /* GL_EXT_debug_marker */
+
+/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 1
+
+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+#define GL_DEPTH_BOUNDS_EXT 0x8891
+
+typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
+
+#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT)
+
+#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test)
+
+#endif /* GL_EXT_depth_bounds_test */
+
+/* --------------------------- GL_EXT_depth_clamp -------------------------- */
+
+#ifndef GL_EXT_depth_clamp
+#define GL_EXT_depth_clamp 1
+
+#define GL_DEPTH_CLAMP_EXT 0x864F
+
+#define GLEW_EXT_depth_clamp GLEW_GET_VAR(__GLEW_EXT_depth_clamp)
+
+#endif /* GL_EXT_depth_clamp */
+
+/* ----------------------- GL_EXT_direct_state_access ---------------------- */
+
+#ifndef GL_EXT_direct_state_access
+#define GL_EXT_direct_state_access 1
+
+#define GL_PROGRAM_MATRIX_EXT 0x8E2D
+#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+
+typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
+typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void *img);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void *img);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void** params);
+typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void** params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void** param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void** param);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT)
+#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT)
+#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT)
+#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT)
+#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT)
+#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT)
+#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT)
+#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT)
+#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT)
+#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT)
+#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT)
+#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT)
+#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT)
+#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT)
+#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT)
+#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT)
+#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT)
+#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT)
+#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT)
+#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT)
+#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT)
+#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT)
+#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT)
+#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT)
+#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT)
+#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT)
+#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT)
+#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT)
+#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT)
+#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT)
+#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT)
+#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT)
+#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT)
+#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT)
+#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT)
+#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT)
+#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT)
+#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT)
+#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT)
+#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT)
+#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT)
+#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT)
+#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT)
+#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT)
+#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT)
+#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT)
+#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT)
+#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT)
+#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT)
+#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT)
+#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT)
+#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT)
+#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT)
+#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT)
+#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT)
+#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT)
+#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT)
+#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT)
+#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT)
+#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT)
+#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT)
+#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT)
+#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT)
+#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT)
+#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT)
+#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT)
+#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT)
+#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT)
+#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT)
+#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT)
+#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT)
+#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT)
+#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT)
+#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT)
+#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT)
+#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT)
+#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT)
+#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT)
+#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT)
+#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT)
+#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT)
+#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT)
+#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT)
+#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT)
+#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT)
+#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT)
+#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT)
+#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT)
+#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT)
+#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT)
+#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT)
+#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT)
+#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT)
+#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT)
+#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT)
+#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT)
+#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT)
+#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT)
+#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT)
+#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT)
+#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT)
+#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT)
+#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT)
+#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT)
+#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT)
+#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT)
+#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT)
+#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT)
+#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT)
+#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT)
+#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT)
+#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT)
+#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT)
+#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT)
+#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT)
+#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT)
+#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT)
+#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT)
+#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT)
+#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT)
+#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT)
+#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT)
+#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT)
+#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT)
+#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT)
+#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT)
+#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT)
+#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT)
+#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT)
+#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT)
+#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT)
+#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT)
+#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT)
+#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT)
+#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT)
+#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT)
+#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT)
+#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT)
+#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT)
+#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT)
+#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT)
+#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT)
+#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT)
+#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT)
+#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT)
+#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT)
+#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT)
+#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT)
+#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT)
+#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT)
+#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT)
+#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT)
+#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT)
+#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT)
+#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT)
+#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT)
+#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT)
+#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT)
+#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT)
+#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT)
+#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT)
+#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT)
+#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT)
+#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT)
+#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT)
+#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT)
+#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT)
+#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT)
+#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT)
+#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT)
+#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT)
+#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT)
+#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT)
+#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT)
+#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT)
+#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT)
+#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT)
+#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT)
+#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT)
+#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT)
+#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT)
+#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT)
+#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT)
+#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT)
+#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT)
+#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT)
+#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT)
+#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT)
+#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT)
+#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT)
+#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT)
+#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT)
+#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT)
+#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT)
+#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT)
+#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT)
+#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT)
+#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT)
+#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT)
+#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT)
+#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT)
+#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT)
+#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT)
+#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT)
+#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT)
+#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT)
+#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT)
+#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT)
+#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT)
+#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT)
+#define glVertexArrayVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribDivisorEXT)
+#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT)
+#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT)
+#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT)
+
+#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access)
+
+#endif /* GL_EXT_direct_state_access */
+
+/* ----------------------- GL_EXT_discard_framebuffer ---------------------- */
+
+#ifndef GL_EXT_discard_framebuffer
+#define GL_EXT_discard_framebuffer 1
+
+#define GL_COLOR_EXT 0x1800
+#define GL_DEPTH_EXT 0x1801
+#define GL_STENCIL_EXT 0x1802
+
+typedef void (GLAPIENTRY * PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
+
+#define glDiscardFramebufferEXT GLEW_GET_FUN(__glewDiscardFramebufferEXT)
+
+#define GLEW_EXT_discard_framebuffer GLEW_GET_VAR(__GLEW_EXT_discard_framebuffer)
+
+#endif /* GL_EXT_discard_framebuffer */
+
+/* ---------------------- GL_EXT_disjoint_timer_query ---------------------- */
+
+#ifndef GL_EXT_disjoint_timer_query
+#define GL_EXT_disjoint_timer_query 1
+
+#define GL_QUERY_COUNTER_BITS_EXT 0x8864
+#define GL_CURRENT_QUERY_EXT 0x8865
+#define GL_QUERY_RESULT_EXT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+#define GL_TIME_ELAPSED_EXT 0x88BF
+#define GL_TIMESTAMP_EXT 0x8E28
+#define GL_GPU_DISJOINT_EXT 0x8FBB
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64* data);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
+
+#define glBeginQueryEXT GLEW_GET_FUN(__glewBeginQueryEXT)
+#define glDeleteQueriesEXT GLEW_GET_FUN(__glewDeleteQueriesEXT)
+#define glEndQueryEXT GLEW_GET_FUN(__glewEndQueryEXT)
+#define glGenQueriesEXT GLEW_GET_FUN(__glewGenQueriesEXT)
+#define glGetInteger64vEXT GLEW_GET_FUN(__glewGetInteger64vEXT)
+#define glGetQueryObjectivEXT GLEW_GET_FUN(__glewGetQueryObjectivEXT)
+#define glGetQueryObjectuivEXT GLEW_GET_FUN(__glewGetQueryObjectuivEXT)
+#define glGetQueryivEXT GLEW_GET_FUN(__glewGetQueryivEXT)
+#define glIsQueryEXT GLEW_GET_FUN(__glewIsQueryEXT)
+#define glQueryCounterEXT GLEW_GET_FUN(__glewQueryCounterEXT)
+
+#define GLEW_EXT_disjoint_timer_query GLEW_GET_VAR(__GLEW_EXT_disjoint_timer_query)
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+/* -------------------------- GL_EXT_draw_buffers -------------------------- */
+
+#ifndef GL_EXT_draw_buffers
+#define GL_EXT_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_EXT 0x8824
+#define GL_DRAW_BUFFER0_EXT 0x8825
+#define GL_DRAW_BUFFER1_EXT 0x8826
+#define GL_DRAW_BUFFER2_EXT 0x8827
+#define GL_DRAW_BUFFER3_EXT 0x8828
+#define GL_DRAW_BUFFER4_EXT 0x8829
+#define GL_DRAW_BUFFER5_EXT 0x882A
+#define GL_DRAW_BUFFER6_EXT 0x882B
+#define GL_DRAW_BUFFER7_EXT 0x882C
+#define GL_DRAW_BUFFER8_EXT 0x882D
+#define GL_DRAW_BUFFER9_EXT 0x882E
+#define GL_DRAW_BUFFER10_EXT 0x882F
+#define GL_DRAW_BUFFER11_EXT 0x8830
+#define GL_DRAW_BUFFER12_EXT 0x8831
+#define GL_DRAW_BUFFER13_EXT 0x8832
+#define GL_DRAW_BUFFER14_EXT 0x8833
+#define GL_DRAW_BUFFER15_EXT 0x8834
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersEXT GLEW_GET_FUN(__glewDrawBuffersEXT)
+
+#define GLEW_EXT_draw_buffers GLEW_GET_VAR(__GLEW_EXT_draw_buffers)
+
+#endif /* GL_EXT_draw_buffers */
+
+/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */
+
+#ifndef GL_EXT_draw_buffers2
+#define GL_EXT_draw_buffers2 1
+
+typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+
+#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT)
+#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT)
+#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT)
+#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT)
+#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT)
+#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT)
+
+#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2)
+
+#endif /* GL_EXT_draw_buffers2 */
+
+/* ---------------------- GL_EXT_draw_buffers_indexed ---------------------- */
+
+#ifndef GL_EXT_draw_buffers_indexed
+#define GL_EXT_draw_buffers_indexed 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index);
+
+#define glBlendEquationSeparateiEXT GLEW_GET_FUN(__glewBlendEquationSeparateiEXT)
+#define glBlendEquationiEXT GLEW_GET_FUN(__glewBlendEquationiEXT)
+#define glBlendFuncSeparateiEXT GLEW_GET_FUN(__glewBlendFuncSeparateiEXT)
+#define glBlendFunciEXT GLEW_GET_FUN(__glewBlendFunciEXT)
+#define glColorMaskiEXT GLEW_GET_FUN(__glewColorMaskiEXT)
+#define glDisableiEXT GLEW_GET_FUN(__glewDisableiEXT)
+#define glEnableiEXT GLEW_GET_FUN(__glewEnableiEXT)
+#define glIsEnablediEXT GLEW_GET_FUN(__glewIsEnablediEXT)
+
+#define GLEW_EXT_draw_buffers_indexed GLEW_GET_VAR(__GLEW_EXT_draw_buffers_indexed)
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+/* -------------------- GL_EXT_draw_elements_base_vertex ------------------- */
+
+#ifndef GL_EXT_draw_elements_base_vertex
+#define GL_EXT_draw_elements_base_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex);
+
+#define glDrawElementsBaseVertexEXT GLEW_GET_FUN(__glewDrawElementsBaseVertexEXT)
+#define glDrawElementsInstancedBaseVertexEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexEXT)
+#define glDrawRangeElementsBaseVertexEXT GLEW_GET_FUN(__glewDrawRangeElementsBaseVertexEXT)
+#define glMultiDrawElementsBaseVertexEXT GLEW_GET_FUN(__glewMultiDrawElementsBaseVertexEXT)
+
+#define GLEW_EXT_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_EXT_draw_elements_base_vertex)
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+/* ------------------------- GL_EXT_draw_instanced ------------------------- */
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+
+#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT)
+#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT)
+
+#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced)
+
+#endif /* GL_EXT_draw_instanced */
+
+/* ----------------------- GL_EXT_draw_range_elements ---------------------- */
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+
+#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT)
+
+#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements)
+
+#endif /* GL_EXT_draw_range_elements */
+
+/* --------------------- GL_EXT_draw_transform_feedback -------------------- */
+
+#ifndef GL_EXT_draw_transform_feedback
+#define GL_EXT_draw_transform_feedback 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount);
+
+#define glDrawTransformFeedbackEXT GLEW_GET_FUN(__glewDrawTransformFeedbackEXT)
+#define glDrawTransformFeedbackInstancedEXT GLEW_GET_FUN(__glewDrawTransformFeedbackInstancedEXT)
+
+#define GLEW_EXT_draw_transform_feedback GLEW_GET_VAR(__GLEW_EXT_draw_transform_feedback)
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+/* ------------------------- GL_EXT_external_buffer ------------------------ */
+
+#ifndef GL_EXT_external_buffer
+#define GL_EXT_external_buffer 1
+
+typedef void* GLeglClientBufferEXT;
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+
+#define glBufferStorageExternalEXT GLEW_GET_FUN(__glewBufferStorageExternalEXT)
+#define glNamedBufferStorageExternalEXT GLEW_GET_FUN(__glewNamedBufferStorageExternalEXT)
+
+#define GLEW_EXT_external_buffer GLEW_GET_VAR(__GLEW_EXT_external_buffer)
+
+#endif /* GL_EXT_external_buffer */
+
+/* --------------------------- GL_EXT_float_blend -------------------------- */
+
+#ifndef GL_EXT_float_blend
+#define GL_EXT_float_blend 1
+
+#define GLEW_EXT_float_blend GLEW_GET_VAR(__GLEW_EXT_float_blend)
+
+#endif /* GL_EXT_float_blend */
+
+/* ---------------------------- GL_EXT_fog_coord --------------------------- */
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+#define GL_FOG_COORDINATE_EXT 0x8451
+#define GL_FRAGMENT_DEPTH_EXT 0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
+
+#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT)
+#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT)
+#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT)
+#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT)
+#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT)
+
+#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord)
+
+#endif /* GL_EXT_fog_coord */
+
+/* --------------------------- GL_EXT_frag_depth --------------------------- */
+
+#ifndef GL_EXT_frag_depth
+#define GL_EXT_frag_depth 1
+
+#define GLEW_EXT_frag_depth GLEW_GET_VAR(__GLEW_EXT_frag_depth)
+
+#endif /* GL_EXT_frag_depth */
+
+/* ------------------------ GL_EXT_fragment_lighting ----------------------- */
+
+#ifndef GL_EXT_fragment_lighting
+#define GL_EXT_fragment_lighting 1
+
+#define GL_FRAGMENT_LIGHTING_EXT 0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404
+#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405
+#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406
+#define GL_LIGHT_ENV_MODE_EXT 0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B
+#define GL_FRAGMENT_LIGHT0_EXT 0x840C
+#define GL_FRAGMENT_LIGHT7_EXT 0x8413
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param);
+
+#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT)
+#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT)
+#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT)
+#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT)
+#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT)
+#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT)
+#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT)
+#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT)
+#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT)
+#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT)
+#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT)
+#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT)
+#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT)
+#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT)
+#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT)
+#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT)
+#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT)
+#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT)
+
+#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting)
+
+#endif /* GL_EXT_fragment_lighting */
+
+/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT)
+
+#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit)
+
+#endif /* GL_EXT_framebuffer_blit */
+
+/* --------------------- GL_EXT_framebuffer_multisample -------------------- */
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT)
+
+#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample)
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */
+
+#ifndef GL_EXT_framebuffer_multisample_blit_scaled
+#define GL_EXT_framebuffer_multisample_blit_scaled 1
+
+#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
+#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
+
+#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled)
+
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+
+/* ----------------------- GL_EXT_framebuffer_object ----------------------- */
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
+#define GL_FRAMEBUFFER_EXT 0x8D40
+#define GL_RENDERBUFFER_EXT 0x8D41
+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+#define GL_STENCIL_INDEX1_EXT 0x8D46
+#define GL_STENCIL_INDEX4_EXT 0x8D47
+#define GL_STENCIL_INDEX8_EXT 0x8D48
+#define GL_STENCIL_INDEX16_EXT 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT)
+#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT)
+#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT)
+#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT)
+#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT)
+#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT)
+#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT)
+#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT)
+#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT)
+#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT)
+#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT)
+#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT)
+#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT)
+#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT)
+#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT)
+#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT)
+#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT)
+
+#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object)
+
+#endif /* GL_EXT_framebuffer_object */
+
+/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_EXT_framebuffer_sRGB 1
+
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
+
+#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB)
+
+#endif /* GL_EXT_framebuffer_sRGB */
+
+/* ----------------------- GL_EXT_geometry_point_size ---------------------- */
+
+#ifndef GL_EXT_geometry_point_size
+#define GL_EXT_geometry_point_size 1
+
+#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+#define GL_UNDEFINED_VERTEX_EXT 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
+
+#define GLEW_EXT_geometry_point_size GLEW_GET_VAR(__GLEW_EXT_geometry_point_size)
+
+#endif /* GL_EXT_geometry_point_size */
+
+/* ------------------------- GL_EXT_geometry_shader ------------------------ */
+
+#ifndef GL_EXT_geometry_shader
+#define GL_EXT_geometry_shader 1
+
+#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+#define GL_UNDEFINED_VERTEX_EXT 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
+
+#define GLEW_EXT_geometry_shader GLEW_GET_VAR(__GLEW_EXT_geometry_shader)
+
+#endif /* GL_EXT_geometry_shader */
+
+/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_EXT_geometry_shader4 1
+
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT)
+#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT)
+#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT)
+
+#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4)
+
+#endif /* GL_EXT_geometry_shader4 */
+
+/* --------------------- GL_EXT_gpu_program_parameters --------------------- */
+
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 1
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+
+#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT)
+#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT)
+
+#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters)
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_EXT_gpu_shader4 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT)
+#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT)
+#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT)
+#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT)
+#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT)
+#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT)
+#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT)
+#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT)
+#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT)
+#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT)
+#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT)
+#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT)
+#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT)
+#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT)
+#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT)
+#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT)
+#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT)
+#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT)
+#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT)
+#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT)
+#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT)
+#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT)
+#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT)
+#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT)
+#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT)
+#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT)
+#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT)
+#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT)
+#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT)
+#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT)
+#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT)
+#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT)
+#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT)
+#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT)
+
+#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4)
+
+#endif /* GL_EXT_gpu_shader4 */
+
+/* --------------------------- GL_EXT_gpu_shader5 -------------------------- */
+
+#ifndef GL_EXT_gpu_shader5
+#define GL_EXT_gpu_shader5 1
+
+#define GLEW_EXT_gpu_shader5 GLEW_GET_VAR(__GLEW_EXT_gpu_shader5)
+
+#endif /* GL_EXT_gpu_shader5 */
+
+/* ---------------------------- GL_EXT_histogram --------------------------- */
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+
+#define GL_HISTOGRAM_EXT 0x8024
+#define GL_PROXY_HISTOGRAM_EXT 0x8025
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+#define GL_HISTOGRAM_SINK_EXT 0x802D
+#define GL_MINMAX_EXT 0x802E
+#define GL_MINMAX_FORMAT_EXT 0x802F
+#define GL_MINMAX_SINK_EXT 0x8030
+
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);
+
+#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT)
+#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT)
+#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT)
+#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT)
+#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT)
+#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT)
+#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT)
+#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT)
+#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT)
+#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT)
+
+#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram)
+
+#endif /* GL_EXT_histogram */
+
+/* ----------------------- GL_EXT_index_array_formats ---------------------- */
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+
+#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats)
+
+#endif /* GL_EXT_index_array_formats */
+
+/* --------------------------- GL_EXT_index_func --------------------------- */
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+
+typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref);
+
+#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT)
+
+#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func)
+
+#endif /* GL_EXT_index_func */
+
+/* ------------------------- GL_EXT_index_material ------------------------- */
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+
+typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+
+#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT)
+
+#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material)
+
+#endif /* GL_EXT_index_material */
+
+/* -------------------------- GL_EXT_index_texture ------------------------- */
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+
+#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture)
+
+#endif /* GL_EXT_index_texture */
+
+/* ------------------------ GL_EXT_instanced_arrays ------------------------ */
+
+#ifndef GL_EXT_instanced_arrays
+#define GL_EXT_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexAttribDivisorEXT)
+
+#define GLEW_EXT_instanced_arrays GLEW_GET_VAR(__GLEW_EXT_instanced_arrays)
+
+#endif /* GL_EXT_instanced_arrays */
+
+/* -------------------------- GL_EXT_light_texture ------------------------- */
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
+#define GL_FRAGMENT_NORMAL_EXT 0x834A
+#define GL_FRAGMENT_COLOR_EXT 0x834C
+#define GL_ATTENUATION_EXT 0x834D
+#define GL_SHADOW_ATTENUATION_EXT 0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+#define GL_TEXTURE_LIGHT_EXT 0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+
+typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+
+#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT)
+#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT)
+#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT)
+
+#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture)
+
+#endif /* GL_EXT_light_texture */
+
+/* ------------------------ GL_EXT_map_buffer_range ------------------------ */
+
+#ifndef GL_EXT_map_buffer_range
+#define GL_EXT_map_buffer_range 1
+
+#define GL_MAP_READ_BIT_EXT 0x0001
+#define GL_MAP_WRITE_BIT_EXT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
+
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+#define glFlushMappedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedBufferRangeEXT)
+#define glMapBufferRangeEXT GLEW_GET_FUN(__glewMapBufferRangeEXT)
+
+#define GLEW_EXT_map_buffer_range GLEW_GET_VAR(__GLEW_EXT_map_buffer_range)
+
+#endif /* GL_EXT_map_buffer_range */
+
+/* -------------------------- GL_EXT_memory_object ------------------------- */
+
+#ifndef GL_EXT_memory_object
+#define GL_EXT_memory_object 1
+
+#define GL_UUID_SIZE_EXT 16
+#define GL_TEXTURE_TILING_EXT 0x9580
+#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
+#define GL_NUM_TILING_TYPES_EXT 0x9582
+#define GL_TILING_TYPES_EXT 0x9583
+#define GL_OPTIMAL_TILING_EXT 0x9584
+#define GL_LINEAR_TILING_EXT 0x9585
+#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
+#define GL_DEVICE_UUID_EXT 0x9597
+#define GL_DRIVER_UUID_EXT 0x9598
+#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint* memoryObjects);
+typedef void (GLAPIENTRY * PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint* memoryObjects);
+typedef void (GLAPIENTRY * PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte* data);
+typedef void (GLAPIENTRY * PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);
+typedef void (GLAPIENTRY * PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM1DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+#define glBufferStorageMemEXT GLEW_GET_FUN(__glewBufferStorageMemEXT)
+#define glCreateMemoryObjectsEXT GLEW_GET_FUN(__glewCreateMemoryObjectsEXT)
+#define glDeleteMemoryObjectsEXT GLEW_GET_FUN(__glewDeleteMemoryObjectsEXT)
+#define glGetMemoryObjectParameterivEXT GLEW_GET_FUN(__glewGetMemoryObjectParameterivEXT)
+#define glGetUnsignedBytei_vEXT GLEW_GET_FUN(__glewGetUnsignedBytei_vEXT)
+#define glGetUnsignedBytevEXT GLEW_GET_FUN(__glewGetUnsignedBytevEXT)
+#define glIsMemoryObjectEXT GLEW_GET_FUN(__glewIsMemoryObjectEXT)
+#define glMemoryObjectParameterivEXT GLEW_GET_FUN(__glewMemoryObjectParameterivEXT)
+#define glNamedBufferStorageMemEXT GLEW_GET_FUN(__glewNamedBufferStorageMemEXT)
+#define glTexStorageMem1DEXT GLEW_GET_FUN(__glewTexStorageMem1DEXT)
+#define glTexStorageMem2DEXT GLEW_GET_FUN(__glewTexStorageMem2DEXT)
+#define glTexStorageMem2DMultisampleEXT GLEW_GET_FUN(__glewTexStorageMem2DMultisampleEXT)
+#define glTexStorageMem3DEXT GLEW_GET_FUN(__glewTexStorageMem3DEXT)
+#define glTexStorageMem3DMultisampleEXT GLEW_GET_FUN(__glewTexStorageMem3DMultisampleEXT)
+#define glTextureStorageMem1DEXT GLEW_GET_FUN(__glewTextureStorageMem1DEXT)
+#define glTextureStorageMem2DEXT GLEW_GET_FUN(__glewTextureStorageMem2DEXT)
+#define glTextureStorageMem2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorageMem2DMultisampleEXT)
+#define glTextureStorageMem3DEXT GLEW_GET_FUN(__glewTextureStorageMem3DEXT)
+#define glTextureStorageMem3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorageMem3DMultisampleEXT)
+
+#define GLEW_EXT_memory_object GLEW_GET_VAR(__GLEW_EXT_memory_object)
+
+#endif /* GL_EXT_memory_object */
+
+/* ------------------------ GL_EXT_memory_object_fd ------------------------ */
+
+#ifndef GL_EXT_memory_object_fd
+#define GL_EXT_memory_object_fd 1
+
+#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
+
+#define glImportMemoryFdEXT GLEW_GET_FUN(__glewImportMemoryFdEXT)
+
+#define GLEW_EXT_memory_object_fd GLEW_GET_VAR(__GLEW_EXT_memory_object_fd)
+
+#endif /* GL_EXT_memory_object_fd */
+
+/* ----------------------- GL_EXT_memory_object_win32 ---------------------- */
+
+#ifndef GL_EXT_memory_object_win32
+#define GL_EXT_memory_object_win32 1
+
+#define GL_LUID_SIZE_EXT 8
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
+#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
+#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
+#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
+#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
+#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
+#define GL_D3D12_FENCE_VALUE_EXT 0x9595
+#define GL_DEVICE_LUID_EXT 0x9599
+#define GL_DEVICE_NODE_MASK_EXT 0x959A
+
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
+
+#define glImportMemoryWin32HandleEXT GLEW_GET_FUN(__glewImportMemoryWin32HandleEXT)
+#define glImportMemoryWin32NameEXT GLEW_GET_FUN(__glewImportMemoryWin32NameEXT)
+
+#define GLEW_EXT_memory_object_win32 GLEW_GET_VAR(__GLEW_EXT_memory_object_win32)
+
+#endif /* GL_EXT_memory_object_win32 */
+
+/* ------------------------- GL_EXT_misc_attribute ------------------------- */
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+
+#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute)
+
+#endif /* GL_EXT_misc_attribute */
+
+/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount);
+
+#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT)
+#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT)
+
+#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays)
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+/* ----------------------- GL_EXT_multi_draw_indirect ---------------------- */
+
+#ifndef GL_EXT_multi_draw_indirect
+#define GL_EXT_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectEXT GLEW_GET_FUN(__glewMultiDrawArraysIndirectEXT)
+#define glMultiDrawElementsIndirectEXT GLEW_GET_FUN(__glewMultiDrawElementsIndirectEXT)
+
+#define GLEW_EXT_multi_draw_indirect GLEW_GET_VAR(__GLEW_EXT_multi_draw_indirect)
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+/* ------------------------ GL_EXT_multiple_textures ----------------------- */
+
+#ifndef GL_EXT_multiple_textures
+#define GL_EXT_multiple_textures 1
+
+#define GLEW_EXT_multiple_textures GLEW_GET_VAR(__GLEW_EXT_multiple_textures)
+
+#endif /* GL_EXT_multiple_textures */
+
+/* --------------------------- GL_EXT_multisample -------------------------- */
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+#define GL_SAMPLE_MASK_EXT 0x80A0
+#define GL_1PASS_EXT 0x80A1
+#define GL_2PASS_0_EXT 0x80A2
+#define GL_2PASS_1_EXT 0x80A3
+#define GL_4PASS_0_EXT 0x80A4
+#define GL_4PASS_1_EXT 0x80A5
+#define GL_4PASS_2_EXT 0x80A6
+#define GL_4PASS_3_EXT 0x80A7
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
+#define GL_SAMPLES_EXT 0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+#define GL_SAMPLE_PATTERN_EXT 0x80AC
+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+
+#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT)
+#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT)
+
+#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample)
+
+#endif /* GL_EXT_multisample */
+
+/* -------------------- GL_EXT_multisample_compatibility ------------------- */
+
+#ifndef GL_EXT_multisample_compatibility
+#define GL_EXT_multisample_compatibility 1
+
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+
+#define GLEW_EXT_multisample_compatibility GLEW_GET_VAR(__GLEW_EXT_multisample_compatibility)
+
+#endif /* GL_EXT_multisample_compatibility */
+
+/* ----------------- GL_EXT_multisampled_render_to_texture ----------------- */
+
+#ifndef GL_EXT_multisampled_render_to_texture
+#define GL_EXT_multisampled_render_to_texture 1
+
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+
+#define glFramebufferTexture2DMultisampleEXT GLEW_GET_FUN(__glewFramebufferTexture2DMultisampleEXT)
+
+#define GLEW_EXT_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_EXT_multisampled_render_to_texture)
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+/* ----------------- GL_EXT_multisampled_render_to_texture2 ---------------- */
+
+#ifndef GL_EXT_multisampled_render_to_texture2
+#define GL_EXT_multisampled_render_to_texture2 1
+
+#define GLEW_EXT_multisampled_render_to_texture2 GLEW_GET_VAR(__GLEW_EXT_multisampled_render_to_texture2)
+
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+
+/* --------------------- GL_EXT_multiview_draw_buffers --------------------- */
+
+#ifndef GL_EXT_multiview_draw_buffers
+#define GL_EXT_multiview_draw_buffers 1
+
+#define GL_DRAW_BUFFER_EXT 0x0C01
+#define GL_READ_BUFFER_EXT 0x0C02
+#define GL_COLOR_ATTACHMENT_EXT 0x90F0
+#define GL_MULTIVIEW_EXT 0x90F1
+#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum* location, const GLint *indices);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint* data);
+typedef void (GLAPIENTRY * PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
+
+#define glDrawBuffersIndexedEXT GLEW_GET_FUN(__glewDrawBuffersIndexedEXT)
+#define glGetIntegeri_vEXT GLEW_GET_FUN(__glewGetIntegeri_vEXT)
+#define glReadBufferIndexedEXT GLEW_GET_FUN(__glewReadBufferIndexedEXT)
+
+#define GLEW_EXT_multiview_draw_buffers GLEW_GET_VAR(__GLEW_EXT_multiview_draw_buffers)
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+/* ------------- GL_EXT_multiview_tessellation_geometry_shader ------------- */
+
+#ifndef GL_EXT_multiview_tessellation_geometry_shader
+#define GL_EXT_multiview_tessellation_geometry_shader 1
+
+#define GLEW_EXT_multiview_tessellation_geometry_shader GLEW_GET_VAR(__GLEW_EXT_multiview_tessellation_geometry_shader)
+
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+
+/* ------------------ GL_EXT_multiview_texture_multisample ----------------- */
+
+#ifndef GL_EXT_multiview_texture_multisample
+#define GL_EXT_multiview_texture_multisample 1
+
+#define GLEW_EXT_multiview_texture_multisample GLEW_GET_VAR(__GLEW_EXT_multiview_texture_multisample)
+
+#endif /* GL_EXT_multiview_texture_multisample */
+
+/* ---------------------- GL_EXT_multiview_timer_query --------------------- */
+
+#ifndef GL_EXT_multiview_timer_query
+#define GL_EXT_multiview_timer_query 1
+
+#define GLEW_EXT_multiview_timer_query GLEW_GET_VAR(__GLEW_EXT_multiview_timer_query)
+
+#endif /* GL_EXT_multiview_timer_query */
+
+/* --------------------- GL_EXT_occlusion_query_boolean -------------------- */
+
+#ifndef GL_EXT_occlusion_query_boolean
+#define GL_EXT_occlusion_query_boolean 1
+
+#define GL_CURRENT_QUERY_EXT 0x8865
+#define GL_QUERY_RESULT_EXT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
+
+#define GLEW_EXT_occlusion_query_boolean GLEW_GET_VAR(__GLEW_EXT_occlusion_query_boolean)
+
+#endif /* GL_EXT_occlusion_query_boolean */
+
+/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_EXT_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_EXT 0x84F9
+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
+
+#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil)
+
+#endif /* GL_EXT_packed_depth_stencil */
+
+/* -------------------------- GL_EXT_packed_float -------------------------- */
+
+#ifndef GL_EXT_packed_float
+#define GL_EXT_packed_float 1
+
+#define GL_R11F_G11F_B10F_EXT 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
+
+#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float)
+
+#endif /* GL_EXT_packed_float */
+
+/* -------------------------- GL_EXT_packed_pixels ------------------------- */
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
+
+#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels)
+
+#endif /* GL_EXT_packed_pixels */
+
+/* ------------------------ GL_EXT_paletted_texture ------------------------ */
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8
+#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+
+#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT)
+#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT)
+#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT)
+#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT)
+
+#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture)
+
+#endif /* GL_EXT_paletted_texture */
+
+/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_EXT_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
+
+#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object)
+
+#endif /* GL_EXT_pixel_buffer_object */
+
+/* ------------------------- GL_EXT_pixel_transform ------------------------ */
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+#define GL_CUBIC_EXT 0x8334
+#define GL_AVERAGE_EXT 0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT)
+#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT)
+#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT)
+#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT)
+#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT)
+#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT)
+
+#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform)
+
+#endif /* GL_EXT_pixel_transform */
+
+/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+
+#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table)
+
+#endif /* GL_EXT_pixel_transform_color_table */
+
+/* ------------------------ GL_EXT_point_parameters ------------------------ */
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_POINT_SIZE_MAX_EXT 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params);
+
+#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT)
+#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT)
+
+#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters)
+
+#endif /* GL_EXT_point_parameters */
+
+/* ------------------------- GL_EXT_polygon_offset ------------------------- */
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+
+#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT)
+
+#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset)
+
+#endif /* GL_EXT_polygon_offset */
+
+/* ---------------------- GL_EXT_polygon_offset_clamp ---------------------- */
+
+#ifndef GL_EXT_polygon_offset_clamp
+#define GL_EXT_polygon_offset_clamp 1
+
+#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+
+#define glPolygonOffsetClampEXT GLEW_GET_FUN(__glewPolygonOffsetClampEXT)
+
+#define GLEW_EXT_polygon_offset_clamp GLEW_GET_VAR(__GLEW_EXT_polygon_offset_clamp)
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+/* ----------------------- GL_EXT_post_depth_coverage ---------------------- */
+
+#ifndef GL_EXT_post_depth_coverage
+#define GL_EXT_post_depth_coverage 1
+
+#define GLEW_EXT_post_depth_coverage GLEW_GET_VAR(__GLEW_EXT_post_depth_coverage)
+
+#endif /* GL_EXT_post_depth_coverage */
+
+/* --------------------- GL_EXT_primitive_bounding_box --------------------- */
+
+#ifndef GL_EXT_primitive_bounding_box
+#define GL_EXT_primitive_bounding_box 1
+
+#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+#define glPrimitiveBoundingBoxEXT GLEW_GET_FUN(__glewPrimitiveBoundingBoxEXT)
+
+#define GLEW_EXT_primitive_bounding_box GLEW_GET_VAR(__GLEW_EXT_primitive_bounding_box)
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+/* ----------------------- GL_EXT_protected_textures ----------------------- */
+
+#ifndef GL_EXT_protected_textures
+#define GL_EXT_protected_textures 1
+
+#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
+#define GL_TEXTURE_PROTECTED_EXT 0x8BFA
+
+#define GLEW_EXT_protected_textures GLEW_GET_VAR(__GLEW_EXT_protected_textures)
+
+#endif /* GL_EXT_protected_textures */
+
+/* ------------------------ GL_EXT_provoking_vertex ------------------------ */
+
+#ifndef GL_EXT_provoking_vertex
+#define GL_EXT_provoking_vertex 1
+
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_PROVOKING_VERTEX_EXT 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
+
+#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT)
+
+#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex)
+
+#endif /* GL_EXT_provoking_vertex */
+
+/* --------------------------- GL_EXT_pvrtc_sRGB --------------------------- */
+
+#ifndef GL_EXT_pvrtc_sRGB
+#define GL_EXT_pvrtc_sRGB 1
+
+#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
+#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
+
+#define GLEW_EXT_pvrtc_sRGB GLEW_GET_VAR(__GLEW_EXT_pvrtc_sRGB)
+
+#endif /* GL_EXT_pvrtc_sRGB */
+
+/* ----------------------- GL_EXT_raster_multisample ----------------------- */
+
+#ifndef GL_EXT_raster_multisample
+#define GL_EXT_raster_multisample 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+
+typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
+typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
+
+#define glCoverageModulationNV GLEW_GET_FUN(__glewCoverageModulationNV)
+#define glCoverageModulationTableNV GLEW_GET_FUN(__glewCoverageModulationTableNV)
+#define glGetCoverageModulationTableNV GLEW_GET_FUN(__glewGetCoverageModulationTableNV)
+#define glRasterSamplesEXT GLEW_GET_FUN(__glewRasterSamplesEXT)
+
+#define GLEW_EXT_raster_multisample GLEW_GET_VAR(__GLEW_EXT_raster_multisample)
+
+#endif /* GL_EXT_raster_multisample */
+
+/* ------------------------ GL_EXT_read_format_bgra ------------------------ */
+
+#ifndef GL_EXT_read_format_bgra
+#define GL_EXT_read_format_bgra 1
+
+#define GL_BGRA_EXT 0x80E1
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
+
+#define GLEW_EXT_read_format_bgra GLEW_GET_VAR(__GLEW_EXT_read_format_bgra)
+
+#endif /* GL_EXT_read_format_bgra */
+
+/* -------------------------- GL_EXT_render_snorm -------------------------- */
+
+#ifndef GL_EXT_render_snorm
+#define GL_EXT_render_snorm 1
+
+#define GL_BYTE 0x1400
+#define GL_SHORT 0x1402
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM_EXT 0x8F98
+#define GL_RG16_SNORM_EXT 0x8F99
+#define GL_RGBA16_SNORM_EXT 0x8F9B
+
+#define GLEW_EXT_render_snorm GLEW_GET_VAR(__GLEW_EXT_render_snorm)
+
+#endif /* GL_EXT_render_snorm */
+
+/* ------------------------- GL_EXT_rescale_normal ------------------------- */
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+
+#define GL_RESCALE_NORMAL_EXT 0x803A
+
+#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal)
+
+#endif /* GL_EXT_rescale_normal */
+
+/* --------------------------- GL_EXT_robustness --------------------------- */
+
+#ifndef GL_EXT_robustness
+#define GL_EXT_robustness 1
+
+#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
+#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
+#define GL_NO_RESET_NOTIFICATION_EXT 0x8261
+#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+
+#define glGetGraphicsResetStatusEXT GLEW_GET_FUN(__glewGetGraphicsResetStatusEXT)
+#define glGetnUniformfvEXT GLEW_GET_FUN(__glewGetnUniformfvEXT)
+#define glGetnUniformivEXT GLEW_GET_FUN(__glewGetnUniformivEXT)
+#define glReadnPixelsEXT GLEW_GET_FUN(__glewReadnPixelsEXT)
+
+#define GLEW_EXT_robustness GLEW_GET_VAR(__GLEW_EXT_robustness)
+
+#endif /* GL_EXT_robustness */
+
+/* ------------------------------ GL_EXT_sRGB ------------------------------ */
+
+#ifndef GL_EXT_sRGB
+#define GL_EXT_sRGB 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+
+#define GLEW_EXT_sRGB GLEW_GET_VAR(__GLEW_EXT_sRGB)
+
+#endif /* GL_EXT_sRGB */
+
+/* ----------------------- GL_EXT_sRGB_write_control ----------------------- */
+
+#ifndef GL_EXT_sRGB_write_control
+#define GL_EXT_sRGB_write_control 1
+
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+
+#define GLEW_EXT_sRGB_write_control GLEW_GET_VAR(__GLEW_EXT_sRGB_write_control)
+
+#endif /* GL_EXT_sRGB_write_control */
+
+/* -------------------------- GL_EXT_scene_marker -------------------------- */
+
+#ifndef GL_EXT_scene_marker
+#define GL_EXT_scene_marker 1
+
+typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void);
+
+#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT)
+#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT)
+
+#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker)
+
+#endif /* GL_EXT_scene_marker */
+
+/* ------------------------- GL_EXT_secondary_color ------------------------ */
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+
+#define GL_COLOR_SUM_EXT 0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT)
+#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT)
+#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT)
+#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT)
+#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT)
+#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT)
+#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT)
+#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT)
+#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT)
+#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT)
+#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT)
+#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT)
+#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT)
+#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT)
+#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT)
+#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT)
+#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT)
+
+#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color)
+
+#endif /* GL_EXT_secondary_color */
+
+/* ---------------------------- GL_EXT_semaphore --------------------------- */
+
+#ifndef GL_EXT_semaphore
+#define GL_EXT_semaphore 1
+
+#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
+#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
+#define GL_LAYOUT_GENERAL_EXT 0x958D
+#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
+#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
+#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
+#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
+#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
+#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
+
+typedef void (GLAPIENTRY * PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);
+typedef void (GLAPIENTRY * PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
+typedef void (GLAPIENTRY * PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
+
+#define glDeleteSemaphoresEXT GLEW_GET_FUN(__glewDeleteSemaphoresEXT)
+#define glGenSemaphoresEXT GLEW_GET_FUN(__glewGenSemaphoresEXT)
+#define glGetSemaphoreParameterui64vEXT GLEW_GET_FUN(__glewGetSemaphoreParameterui64vEXT)
+#define glIsSemaphoreEXT GLEW_GET_FUN(__glewIsSemaphoreEXT)
+#define glSemaphoreParameterui64vEXT GLEW_GET_FUN(__glewSemaphoreParameterui64vEXT)
+#define glSignalSemaphoreEXT GLEW_GET_FUN(__glewSignalSemaphoreEXT)
+#define glWaitSemaphoreEXT GLEW_GET_FUN(__glewWaitSemaphoreEXT)
+
+#define GLEW_EXT_semaphore GLEW_GET_VAR(__GLEW_EXT_semaphore)
+
+#endif /* GL_EXT_semaphore */
+
+/* -------------------------- GL_EXT_semaphore_fd -------------------------- */
+
+#ifndef GL_EXT_semaphore_fd
+#define GL_EXT_semaphore_fd 1
+
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);
+
+#define glImportSemaphoreFdEXT GLEW_GET_FUN(__glewImportSemaphoreFdEXT)
+
+#define GLEW_EXT_semaphore_fd GLEW_GET_VAR(__GLEW_EXT_semaphore_fd)
+
+#endif /* GL_EXT_semaphore_fd */
+
+/* ------------------------- GL_EXT_semaphore_win32 ------------------------ */
+
+#ifndef GL_EXT_semaphore_win32
+#define GL_EXT_semaphore_win32 1
+
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);
+
+#define glImportSemaphoreWin32HandleEXT GLEW_GET_FUN(__glewImportSemaphoreWin32HandleEXT)
+#define glImportSemaphoreWin32NameEXT GLEW_GET_FUN(__glewImportSemaphoreWin32NameEXT)
+
+#define GLEW_EXT_semaphore_win32 GLEW_GET_VAR(__GLEW_EXT_semaphore_win32)
+
+#endif /* GL_EXT_semaphore_win32 */
+
+/* --------------------- GL_EXT_separate_depth_stencil --------------------- */
+
+#ifndef GL_EXT_separate_depth_stencil
+#define GL_EXT_separate_depth_stencil 1
+
+#define GLEW_EXT_separate_depth_stencil GLEW_GET_VAR(__GLEW_EXT_separate_depth_stencil)
+
+#endif /* GL_EXT_separate_depth_stencil */
+
+/* --------------------- GL_EXT_separate_shader_objects -------------------- */
+
+#ifndef GL_EXT_separate_shader_objects
+#define GL_EXT_separate_shader_objects 1
+
+#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
+
+typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar* string);
+typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
+
+#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT)
+#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT)
+#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT)
+
+#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects)
+
+#endif /* GL_EXT_separate_shader_objects */
+
+/* --------------------- GL_EXT_separate_specular_color -------------------- */
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+#define GL_SINGLE_COLOR_EXT 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
+
+#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color)
+
+#endif /* GL_EXT_separate_specular_color */
+
+/* -------------------- GL_EXT_shader_framebuffer_fetch -------------------- */
+
+#ifndef GL_EXT_shader_framebuffer_fetch
+#define GL_EXT_shader_framebuffer_fetch 1
+
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
+
+#define glFramebufferFetchBarrierEXT GLEW_GET_FUN(__glewFramebufferFetchBarrierEXT)
+
+#define GLEW_EXT_shader_framebuffer_fetch GLEW_GET_VAR(__GLEW_EXT_shader_framebuffer_fetch)
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+/* -------------- GL_EXT_shader_framebuffer_fetch_non_coherent ------------- */
+
+#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
+#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
+
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+
+#define GLEW_EXT_shader_framebuffer_fetch_non_coherent GLEW_GET_VAR(__GLEW_EXT_shader_framebuffer_fetch_non_coherent)
+
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+
+/* ------------------------ GL_EXT_shader_group_vote ----------------------- */
+
+#ifndef GL_EXT_shader_group_vote
+#define GL_EXT_shader_group_vote 1
+
+#define GLEW_EXT_shader_group_vote GLEW_GET_VAR(__GLEW_EXT_shader_group_vote)
+
+#endif /* GL_EXT_shader_group_vote */
+
+/* ------------------- GL_EXT_shader_image_load_formatted ------------------ */
+
+#ifndef GL_EXT_shader_image_load_formatted
+#define GL_EXT_shader_image_load_formatted 1
+
+#define GLEW_EXT_shader_image_load_formatted GLEW_GET_VAR(__GLEW_EXT_shader_image_load_formatted)
+
+#endif /* GL_EXT_shader_image_load_formatted */
+
+/* --------------------- GL_EXT_shader_image_load_store -------------------- */
+
+#ifndef GL_EXT_shader_image_load_store
+#define GL_EXT_shader_image_load_store 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+#define GL_IMAGE_1D_EXT 0x904C
+#define GL_IMAGE_2D_EXT 0x904D
+#define GL_IMAGE_3D_EXT 0x904E
+#define GL_IMAGE_2D_RECT_EXT 0x904F
+#define GL_IMAGE_CUBE_EXT 0x9050
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_IMAGE_1D_ARRAY_EXT 0x9052
+#define GL_IMAGE_2D_ARRAY_EXT 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+#define GL_INT_IMAGE_1D_EXT 0x9057
+#define GL_INT_IMAGE_2D_EXT 0x9058
+#define GL_INT_IMAGE_3D_EXT 0x9059
+#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
+#define GL_INT_IMAGE_CUBE_EXT 0x905B
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
+
+#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT)
+#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT)
+
+#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store)
+
+#endif /* GL_EXT_shader_image_load_store */
+
+/* ------------------- GL_EXT_shader_implicit_conversions ------------------ */
+
+#ifndef GL_EXT_shader_implicit_conversions
+#define GL_EXT_shader_implicit_conversions 1
+
+#define GLEW_EXT_shader_implicit_conversions GLEW_GET_VAR(__GLEW_EXT_shader_implicit_conversions)
+
+#endif /* GL_EXT_shader_implicit_conversions */
+
+/* ----------------------- GL_EXT_shader_integer_mix ----------------------- */
+
+#ifndef GL_EXT_shader_integer_mix
+#define GL_EXT_shader_integer_mix 1
+
+#define GLEW_EXT_shader_integer_mix GLEW_GET_VAR(__GLEW_EXT_shader_integer_mix)
+
+#endif /* GL_EXT_shader_integer_mix */
+
+/* ------------------------ GL_EXT_shader_io_blocks ------------------------ */
+
+#ifndef GL_EXT_shader_io_blocks
+#define GL_EXT_shader_io_blocks 1
+
+#define GLEW_EXT_shader_io_blocks GLEW_GET_VAR(__GLEW_EXT_shader_io_blocks)
+
+#endif /* GL_EXT_shader_io_blocks */
+
+/* ------------- GL_EXT_shader_non_constant_global_initializers ------------ */
+
+#ifndef GL_EXT_shader_non_constant_global_initializers
+#define GL_EXT_shader_non_constant_global_initializers 1
+
+#define GLEW_EXT_shader_non_constant_global_initializers GLEW_GET_VAR(__GLEW_EXT_shader_non_constant_global_initializers)
+
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+
+/* ------------------- GL_EXT_shader_pixel_local_storage ------------------- */
+
+#ifndef GL_EXT_shader_pixel_local_storage
+#define GL_EXT_shader_pixel_local_storage 1
+
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
+#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
+
+#define GLEW_EXT_shader_pixel_local_storage GLEW_GET_VAR(__GLEW_EXT_shader_pixel_local_storage)
+
+#endif /* GL_EXT_shader_pixel_local_storage */
+
+/* ------------------- GL_EXT_shader_pixel_local_storage2 ------------------ */
+
+#ifndef GL_EXT_shader_pixel_local_storage2
+#define GL_EXT_shader_pixel_local_storage2 1
+
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
+#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
+
+typedef void (GLAPIENTRY * PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint* values);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size);
+typedef GLsizei (GLAPIENTRY * PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target);
+
+#define glClearPixelLocalStorageuiEXT GLEW_GET_FUN(__glewClearPixelLocalStorageuiEXT)
+#define glFramebufferPixelLocalStorageSizeEXT GLEW_GET_FUN(__glewFramebufferPixelLocalStorageSizeEXT)
+#define glGetFramebufferPixelLocalStorageSizeEXT GLEW_GET_FUN(__glewGetFramebufferPixelLocalStorageSizeEXT)
+
+#define GLEW_EXT_shader_pixel_local_storage2 GLEW_GET_VAR(__GLEW_EXT_shader_pixel_local_storage2)
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+/* -------------------- GL_EXT_shader_samples_identical -------------------- */
+
+#ifndef GL_EXT_shader_samples_identical
+#define GL_EXT_shader_samples_identical 1
+
+#define GLEW_EXT_shader_samples_identical GLEW_GET_VAR(__GLEW_EXT_shader_samples_identical)
+
+#endif /* GL_EXT_shader_samples_identical */
+
+/* ----------------------- GL_EXT_shader_texture_lod ----------------------- */
+
+#ifndef GL_EXT_shader_texture_lod
+#define GL_EXT_shader_texture_lod 1
+
+#define GLEW_EXT_shader_texture_lod GLEW_GET_VAR(__GLEW_EXT_shader_texture_lod)
+
+#endif /* GL_EXT_shader_texture_lod */
+
+/* -------------------------- GL_EXT_shadow_funcs -------------------------- */
+
+#ifndef GL_EXT_shadow_funcs
+#define GL_EXT_shadow_funcs 1
+
+#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs)
+
+#endif /* GL_EXT_shadow_funcs */
+
+/* ------------------------- GL_EXT_shadow_samplers ------------------------ */
+
+#ifndef GL_EXT_shadow_samplers
+#define GL_EXT_shadow_samplers 1
+
+#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
+#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
+#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62
+
+#define GLEW_EXT_shadow_samplers GLEW_GET_VAR(__GLEW_EXT_shadow_samplers)
+
+#endif /* GL_EXT_shadow_samplers */
+
+/* --------------------- GL_EXT_shared_texture_palette --------------------- */
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
+
+#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette)
+
+#endif /* GL_EXT_shared_texture_palette */
+
+/* ------------------------- GL_EXT_sparse_texture ------------------------- */
+
+#ifndef GL_EXT_sparse_texture
+#define GL_EXT_sparse_texture 1
+
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_TEXTURE_3D 0x806F
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
+#define GL_TEXTURE_SPARSE_EXT 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
+#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
+#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA
+
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+#define glTexPageCommitmentEXT GLEW_GET_FUN(__glewTexPageCommitmentEXT)
+#define glTexturePageCommitmentEXT GLEW_GET_FUN(__glewTexturePageCommitmentEXT)
+
+#define GLEW_EXT_sparse_texture GLEW_GET_VAR(__GLEW_EXT_sparse_texture)
+
+#endif /* GL_EXT_sparse_texture */
+
+/* ------------------------- GL_EXT_sparse_texture2 ------------------------ */
+
+#ifndef GL_EXT_sparse_texture2
+#define GL_EXT_sparse_texture2 1
+
+#define GLEW_EXT_sparse_texture2 GLEW_GET_VAR(__GLEW_EXT_sparse_texture2)
+
+#endif /* GL_EXT_sparse_texture2 */
+
+/* ----------------------- GL_EXT_static_vertex_array ---------------------- */
+
+#ifndef GL_EXT_static_vertex_array
+#define GL_EXT_static_vertex_array 1
+
+#define GLEW_EXT_static_vertex_array GLEW_GET_VAR(__GLEW_EXT_static_vertex_array)
+
+#endif /* GL_EXT_static_vertex_array */
+
+/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_EXT_stencil_clear_tag 1
+
+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
+
+#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag)
+
+#endif /* GL_EXT_stencil_clear_tag */
+
+/* ------------------------ GL_EXT_stencil_two_side ------------------------ */
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+
+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+
+typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
+
+#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT)
+
+#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side)
+
+#endif /* GL_EXT_stencil_two_side */
+
+/* -------------------------- GL_EXT_stencil_wrap -------------------------- */
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+
+#define GL_INCR_WRAP_EXT 0x8507
+#define GL_DECR_WRAP_EXT 0x8508
+
+#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap)
+
+#endif /* GL_EXT_stencil_wrap */
+
+/* --------------------------- GL_EXT_subtexture --------------------------- */
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT)
+#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT)
+#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT)
+
+#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture)
+
+#endif /* GL_EXT_subtexture */
+
+/* --------------------- GL_EXT_tessellation_point_size -------------------- */
+
+#ifndef GL_EXT_tessellation_point_size
+#define GL_EXT_tessellation_point_size 1
+
+#define GL_QUADS_EXT 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+#define GL_PATCHES_EXT 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+#define GL_PATCH_VERTICES_EXT 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+#define GL_TESS_GEN_MODE_EXT 0x8E76
+#define GL_TESS_GEN_SPACING_EXT 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+#define GL_ISOLINES_EXT 0x8E7A
+#define GL_FRACTIONAL_ODD_EXT 0x8E7B
+#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
+#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+#define GL_IS_PER_PATCH_EXT 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value);
+
+#define glPatchParameteriEXT GLEW_GET_FUN(__glewPatchParameteriEXT)
+
+#define GLEW_EXT_tessellation_point_size GLEW_GET_VAR(__GLEW_EXT_tessellation_point_size)
+
+#endif /* GL_EXT_tessellation_point_size */
+
+/* ----------------------- GL_EXT_tessellation_shader ---------------------- */
+
+#ifndef GL_EXT_tessellation_shader
+#define GL_EXT_tessellation_shader 1
+
+#define GL_QUADS_EXT 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+#define GL_PATCHES_EXT 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+#define GL_PATCH_VERTICES_EXT 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+#define GL_TESS_GEN_MODE_EXT 0x8E76
+#define GL_TESS_GEN_SPACING_EXT 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+#define GL_ISOLINES_EXT 0x8E7A
+#define GL_FRACTIONAL_ODD_EXT 0x8E7B
+#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
+#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+#define GL_IS_PER_PATCH_EXT 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+
+#define GLEW_EXT_tessellation_shader GLEW_GET_VAR(__GLEW_EXT_tessellation_shader)
+
+#endif /* GL_EXT_tessellation_shader */
+
+/* ----------------------------- GL_EXT_texture ---------------------------- */
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+
+#define GL_ALPHA4_EXT 0x803B
+#define GL_ALPHA8_EXT 0x803C
+#define GL_ALPHA12_EXT 0x803D
+#define GL_ALPHA16_EXT 0x803E
+#define GL_LUMINANCE4_EXT 0x803F
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE12_EXT 0x8041
+#define GL_LUMINANCE16_EXT 0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
+#define GL_INTENSITY_EXT 0x8049
+#define GL_INTENSITY4_EXT 0x804A
+#define GL_INTENSITY8_EXT 0x804B
+#define GL_INTENSITY12_EXT 0x804C
+#define GL_INTENSITY16_EXT 0x804D
+#define GL_RGB2_EXT 0x804E
+#define GL_RGB4_EXT 0x804F
+#define GL_RGB5_EXT 0x8050
+#define GL_RGB8_EXT 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB12_EXT 0x8053
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA2_EXT 0x8055
+#define GL_RGBA4_EXT 0x8056
+#define GL_RGB5_A1_EXT 0x8057
+#define GL_RGBA8_EXT 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_RGBA12_EXT 0x805A
+#define GL_RGBA16_EXT 0x805B
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+#define GL_REPLACE_EXT 0x8062
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
+
+#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture)
+
+#endif /* GL_EXT_texture */
+
+/* ---------------------------- GL_EXT_texture3D --------------------------- */
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+#define GL_TEXTURE_3D_EXT 0x806F
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
+#define GL_TEXTURE_DEPTH_EXT 0x8071
+#define GL_TEXTURE_WRAP_R_EXT 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+
+#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT)
+
+#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D)
+
+#endif /* GL_EXT_texture3D */
+
+/* -------------------------- GL_EXT_texture_array ------------------------- */
+
+#ifndef GL_EXT_texture_array
+#define GL_EXT_texture_array 1
+
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT)
+
+#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array)
+
+#endif /* GL_EXT_texture_array */
+
+/* ---------------------- GL_EXT_texture_border_clamp ---------------------- */
+
+#ifndef GL_EXT_texture_border_clamp
+#define GL_EXT_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004
+#define GL_CLAMP_TO_BORDER_EXT 0x812D
+
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+
+#define glGetSamplerParameterIivEXT GLEW_GET_FUN(__glewGetSamplerParameterIivEXT)
+#define glGetSamplerParameterIuivEXT GLEW_GET_FUN(__glewGetSamplerParameterIuivEXT)
+#define glSamplerParameterIivEXT GLEW_GET_FUN(__glewSamplerParameterIivEXT)
+#define glSamplerParameterIuivEXT GLEW_GET_FUN(__glewSamplerParameterIuivEXT)
+
+#define GLEW_EXT_texture_border_clamp GLEW_GET_VAR(__GLEW_EXT_texture_border_clamp)
+
+#endif /* GL_EXT_texture_border_clamp */
+
+/* ------------------------- GL_EXT_texture_buffer ------------------------- */
+
+#ifndef GL_EXT_texture_buffer
+#define GL_EXT_texture_buffer 1
+
+#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
+#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
+
+#define GLEW_EXT_texture_buffer GLEW_GET_VAR(__GLEW_EXT_texture_buffer)
+
+#endif /* GL_EXT_texture_buffer */
+
+/* ---------------------- GL_EXT_texture_buffer_object --------------------- */
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_EXT_texture_buffer_object 1
+
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+
+#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT)
+
+#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object)
+
+#endif /* GL_EXT_texture_buffer_object */
+
+/* -------------- GL_EXT_texture_compression_astc_decode_mode -------------- */
+
+#ifndef GL_EXT_texture_compression_astc_decode_mode
+#define GL_EXT_texture_compression_astc_decode_mode 1
+
+#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
+
+#define GLEW_EXT_texture_compression_astc_decode_mode GLEW_GET_VAR(__GLEW_EXT_texture_compression_astc_decode_mode)
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+
+/* ----------- GL_EXT_texture_compression_astc_decode_mode_rgb9e5 ---------- */
+
+#ifndef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+#define GL_EXT_texture_compression_astc_decode_mode_rgb9e5 1
+
+#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
+
+#define GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5 GLEW_GET_VAR(__GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5)
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+
+/* -------------------- GL_EXT_texture_compression_bptc -------------------- */
+
+#ifndef GL_EXT_texture_compression_bptc
+#define GL_EXT_texture_compression_bptc 1
+
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
+
+#define GLEW_EXT_texture_compression_bptc GLEW_GET_VAR(__GLEW_EXT_texture_compression_bptc)
+
+#endif /* GL_EXT_texture_compression_bptc */
+
+/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */
+
+#ifndef GL_EXT_texture_compression_dxt1
+#define GL_EXT_texture_compression_dxt1 1
+
+#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1)
+
+#endif /* GL_EXT_texture_compression_dxt1 */
+
+/* -------------------- GL_EXT_texture_compression_latc -------------------- */
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_EXT_texture_compression_latc 1
+
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
+
+#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc)
+
+#endif /* GL_EXT_texture_compression_latc */
+
+/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc 1
+
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
+
+#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc)
+
+#endif /* GL_EXT_texture_compression_rgtc */
+
+/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_EXT_texture_compression_s3tc 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+
+#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc)
+
+#endif /* GL_EXT_texture_compression_s3tc */
+
+/* ------------------ GL_EXT_texture_compression_s3tc_srgb ----------------- */
+
+#ifndef GL_EXT_texture_compression_s3tc_srgb
+#define GL_EXT_texture_compression_s3tc_srgb 1
+
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+
+#define GLEW_EXT_texture_compression_s3tc_srgb GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc_srgb)
+
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+
+/* ------------------------ GL_EXT_texture_cube_map ------------------------ */
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_EXT_texture_cube_map 1
+
+#define GL_NORMAL_MAP_EXT 0x8511
+#define GL_REFLECTION_MAP_EXT 0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
+
+#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map)
+
+#endif /* GL_EXT_texture_cube_map */
+
+/* --------------------- GL_EXT_texture_cube_map_array --------------------- */
+
+#ifndef GL_EXT_texture_cube_map_array
+#define GL_EXT_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
+#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+
+#define GLEW_EXT_texture_cube_map_array GLEW_GET_VAR(__GLEW_EXT_texture_cube_map_array)
+
+#endif /* GL_EXT_texture_cube_map_array */
+
+/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */
+
+#ifndef GL_EXT_texture_edge_clamp
+#define GL_EXT_texture_edge_clamp 1
+
+#define GL_CLAMP_TO_EDGE_EXT 0x812F
+
+#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp)
+
+#endif /* GL_EXT_texture_edge_clamp */
+
+/* --------------------------- GL_EXT_texture_env -------------------------- */
+
+#ifndef GL_EXT_texture_env
+#define GL_EXT_texture_env 1
+
+#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env)
+
+#endif /* GL_EXT_texture_env */
+
+/* ------------------------- GL_EXT_texture_env_add ------------------------ */
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+
+#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add)
+
+#endif /* GL_EXT_texture_env_add */
+
+/* ----------------------- GL_EXT_texture_env_combine ---------------------- */
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+
+#define GL_COMBINE_EXT 0x8570
+#define GL_COMBINE_RGB_EXT 0x8571
+#define GL_COMBINE_ALPHA_EXT 0x8572
+#define GL_RGB_SCALE_EXT 0x8573
+#define GL_ADD_SIGNED_EXT 0x8574
+#define GL_INTERPOLATE_EXT 0x8575
+#define GL_CONSTANT_EXT 0x8576
+#define GL_PRIMARY_COLOR_EXT 0x8577
+#define GL_PREVIOUS_EXT 0x8578
+#define GL_SOURCE0_RGB_EXT 0x8580
+#define GL_SOURCE1_RGB_EXT 0x8581
+#define GL_SOURCE2_RGB_EXT 0x8582
+#define GL_SOURCE0_ALPHA_EXT 0x8588
+#define GL_SOURCE1_ALPHA_EXT 0x8589
+#define GL_SOURCE2_ALPHA_EXT 0x858A
+#define GL_OPERAND0_RGB_EXT 0x8590
+#define GL_OPERAND1_RGB_EXT 0x8591
+#define GL_OPERAND2_RGB_EXT 0x8592
+#define GL_OPERAND0_ALPHA_EXT 0x8598
+#define GL_OPERAND1_ALPHA_EXT 0x8599
+#define GL_OPERAND2_ALPHA_EXT 0x859A
+
+#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine)
+
+#endif /* GL_EXT_texture_env_combine */
+
+/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+
+#define GL_DOT3_RGB_EXT 0x8740
+#define GL_DOT3_RGBA_EXT 0x8741
+
+#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3)
+
+#endif /* GL_EXT_texture_env_dot3 */
+
+/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+
+#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic)
+
+#endif /* GL_EXT_texture_filter_anisotropic */
+
+/* ---------------------- GL_EXT_texture_filter_minmax --------------------- */
+
+#ifndef GL_EXT_texture_filter_minmax
+#define GL_EXT_texture_filter_minmax 1
+
+#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+#define GL_WEIGHTED_AVERAGE_EXT 0x9367
+
+#define GLEW_EXT_texture_filter_minmax GLEW_GET_VAR(__GLEW_EXT_texture_filter_minmax)
+
+#endif /* GL_EXT_texture_filter_minmax */
+
+/* --------------------- GL_EXT_texture_format_BGRA8888 -------------------- */
+
+#ifndef GL_EXT_texture_format_BGRA8888
+#define GL_EXT_texture_format_BGRA8888 1
+
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_EXT_texture_format_BGRA8888 GLEW_GET_VAR(__GLEW_EXT_texture_format_BGRA8888)
+
+#endif /* GL_EXT_texture_format_BGRA8888 */
+
+/* ------------------ GL_EXT_texture_format_sRGB_override ------------------ */
+
+#ifndef GL_EXT_texture_format_sRGB_override
+#define GL_EXT_texture_format_sRGB_override 1
+
+#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
+
+#define GLEW_EXT_texture_format_sRGB_override GLEW_GET_VAR(__GLEW_EXT_texture_format_sRGB_override)
+
+#endif /* GL_EXT_texture_format_sRGB_override */
+
+/* ------------------------- GL_EXT_texture_integer ------------------------ */
+
+#ifndef GL_EXT_texture_integer
+#define GL_EXT_texture_integer 1
+
+#define GL_RGBA32UI_EXT 0x8D70
+#define GL_RGB32UI_EXT 0x8D71
+#define GL_ALPHA32UI_EXT 0x8D72
+#define GL_INTENSITY32UI_EXT 0x8D73
+#define GL_LUMINANCE32UI_EXT 0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+#define GL_RGBA16UI_EXT 0x8D76
+#define GL_RGB16UI_EXT 0x8D77
+#define GL_ALPHA16UI_EXT 0x8D78
+#define GL_INTENSITY16UI_EXT 0x8D79
+#define GL_LUMINANCE16UI_EXT 0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+#define GL_RGBA8UI_EXT 0x8D7C
+#define GL_RGB8UI_EXT 0x8D7D
+#define GL_ALPHA8UI_EXT 0x8D7E
+#define GL_INTENSITY8UI_EXT 0x8D7F
+#define GL_LUMINANCE8UI_EXT 0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+#define GL_RGBA32I_EXT 0x8D82
+#define GL_RGB32I_EXT 0x8D83
+#define GL_ALPHA32I_EXT 0x8D84
+#define GL_INTENSITY32I_EXT 0x8D85
+#define GL_LUMINANCE32I_EXT 0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+#define GL_RGBA16I_EXT 0x8D88
+#define GL_RGB16I_EXT 0x8D89
+#define GL_ALPHA16I_EXT 0x8D8A
+#define GL_INTENSITY16I_EXT 0x8D8B
+#define GL_LUMINANCE16I_EXT 0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+#define GL_RGBA8I_EXT 0x8D8E
+#define GL_RGB8I_EXT 0x8D8F
+#define GL_ALPHA8I_EXT 0x8D90
+#define GL_INTENSITY8I_EXT 0x8D91
+#define GL_LUMINANCE8I_EXT 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+#define GL_RED_INTEGER_EXT 0x8D94
+#define GL_GREEN_INTEGER_EXT 0x8D95
+#define GL_BLUE_INTEGER_EXT 0x8D96
+#define GL_ALPHA_INTEGER_EXT 0x8D97
+#define GL_RGB_INTEGER_EXT 0x8D98
+#define GL_RGBA_INTEGER_EXT 0x8D99
+#define GL_BGR_INTEGER_EXT 0x8D9A
+#define GL_BGRA_INTEGER_EXT 0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
+
+#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT)
+#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT)
+#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT)
+#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT)
+#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT)
+#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT)
+
+#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer)
+
+#endif /* GL_EXT_texture_integer */
+
+/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
+
+#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias)
+
+#endif /* GL_EXT_texture_lod_bias */
+
+/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_EXT_texture_mirror_clamp 1
+
+#define GL_MIRROR_CLAMP_EXT 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
+
+#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp)
+
+#endif /* GL_EXT_texture_mirror_clamp */
+
+/* ------------------ GL_EXT_texture_mirror_clamp_to_edge ------------------ */
+
+#ifndef GL_EXT_texture_mirror_clamp_to_edge
+#define GL_EXT_texture_mirror_clamp_to_edge 1
+
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+
+#define GLEW_EXT_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp_to_edge)
+
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+
+/* ------------------------- GL_EXT_texture_norm16 ------------------------- */
+
+#ifndef GL_EXT_texture_norm16
+#define GL_EXT_texture_norm16 1
+
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA16_EXT 0x805B
+#define GL_R16_EXT 0x822A
+#define GL_RG16_EXT 0x822C
+#define GL_R16_SNORM_EXT 0x8F98
+#define GL_RG16_SNORM_EXT 0x8F99
+#define GL_RGB16_SNORM_EXT 0x8F9A
+#define GL_RGBA16_SNORM_EXT 0x8F9B
+
+#define GLEW_EXT_texture_norm16 GLEW_GET_VAR(__GLEW_EXT_texture_norm16)
+
+#endif /* GL_EXT_texture_norm16 */
+
+/* ------------------------- GL_EXT_texture_object ------------------------- */
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+
+#define GL_TEXTURE_PRIORITY_EXT 0x8066
+#define GL_TEXTURE_RESIDENT_EXT 0x8067
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
+
+typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences);
+typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities);
+
+#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT)
+#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT)
+#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT)
+#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT)
+#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT)
+#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT)
+
+#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object)
+
+#endif /* GL_EXT_texture_object */
+
+/* --------------------- GL_EXT_texture_perturb_normal --------------------- */
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+
+#define GL_PERTURB_EXT 0x85AE
+#define GL_TEXTURE_NORMAL_EXT 0x85AF
+
+typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+
+#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT)
+
+#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal)
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+/* ------------------------ GL_EXT_texture_query_lod ----------------------- */
+
+#ifndef GL_EXT_texture_query_lod
+#define GL_EXT_texture_query_lod 1
+
+#define GLEW_EXT_texture_query_lod GLEW_GET_VAR(__GLEW_EXT_texture_query_lod)
+
+#endif /* GL_EXT_texture_query_lod */
+
+/* ------------------------ GL_EXT_texture_rectangle ----------------------- */
+
+#ifndef GL_EXT_texture_rectangle
+#define GL_EXT_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
+
+#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle)
+
+#endif /* GL_EXT_texture_rectangle */
+
+/* --------------------------- GL_EXT_texture_rg --------------------------- */
+
+#ifndef GL_EXT_texture_rg
+#define GL_EXT_texture_rg 1
+
+#define GL_RED_EXT 0x1903
+#define GL_RG_EXT 0x8227
+#define GL_R8_EXT 0x8229
+#define GL_RG8_EXT 0x822B
+
+#define GLEW_EXT_texture_rg GLEW_GET_VAR(__GLEW_EXT_texture_rg)
+
+#endif /* GL_EXT_texture_rg */
+
+/* -------------------------- GL_EXT_texture_sRGB -------------------------- */
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+
+#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB)
+
+#endif /* GL_EXT_texture_sRGB */
+
+/* ------------------------- GL_EXT_texture_sRGB_R8 ------------------------ */
+
+#ifndef GL_EXT_texture_sRGB_R8
+#define GL_EXT_texture_sRGB_R8 1
+
+#define GL_SR8_EXT 0x8FBD
+
+#define GLEW_EXT_texture_sRGB_R8 GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_R8)
+
+#endif /* GL_EXT_texture_sRGB_R8 */
+
+/* ------------------------ GL_EXT_texture_sRGB_RG8 ------------------------ */
+
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+
+#define GL_SRG8_EXT 0x8FBE
+
+#define GLEW_EXT_texture_sRGB_RG8 GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_RG8)
+
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
+/* ----------------------- GL_EXT_texture_sRGB_decode ---------------------- */
+
+#ifndef GL_EXT_texture_sRGB_decode
+#define GL_EXT_texture_sRGB_decode 1
+
+#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+#define GL_DECODE_EXT 0x8A49
+#define GL_SKIP_DECODE_EXT 0x8A4A
+
+#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode)
+
+#endif /* GL_EXT_texture_sRGB_decode */
+
+/* ----------------------- GL_EXT_texture_shadow_lod ----------------------- */
+
+#ifndef GL_EXT_texture_shadow_lod
+#define GL_EXT_texture_shadow_lod 1
+
+#define GLEW_EXT_texture_shadow_lod GLEW_GET_VAR(__GLEW_EXT_texture_shadow_lod)
+
+#endif /* GL_EXT_texture_shadow_lod */
+
+/* --------------------- GL_EXT_texture_shared_exponent -------------------- */
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_EXT_texture_shared_exponent 1
+
+#define GL_RGB9_E5_EXT 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
+
+#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent)
+
+#endif /* GL_EXT_texture_shared_exponent */
+
+/* -------------------------- GL_EXT_texture_snorm ------------------------- */
+
+#ifndef GL_EXT_texture_snorm
+#define GL_EXT_texture_snorm 1
+
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_ALPHA_SNORM 0x9010
+#define GL_LUMINANCE_SNORM 0x9011
+#define GL_LUMINANCE_ALPHA_SNORM 0x9012
+#define GL_INTENSITY_SNORM 0x9013
+#define GL_ALPHA8_SNORM 0x9014
+#define GL_LUMINANCE8_SNORM 0x9015
+#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+#define GL_INTENSITY8_SNORM 0x9017
+#define GL_ALPHA16_SNORM 0x9018
+#define GL_LUMINANCE16_SNORM 0x9019
+#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+#define GL_INTENSITY16_SNORM 0x901B
+
+#define GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm)
+
+#endif /* GL_EXT_texture_snorm */
+
+/* ------------------------- GL_EXT_texture_storage ------------------------ */
+
+#ifndef GL_EXT_texture_storage
+#define GL_EXT_texture_storage 1
+
+#define GL_ALPHA8_EXT 0x803C
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_R8_EXT 0x8229
+#define GL_RG8_EXT 0x822B
+#define GL_R16F_EXT 0x822D
+#define GL_R32F_EXT 0x822E
+#define GL_RG16F_EXT 0x822F
+#define GL_RG32F_EXT 0x8230
+#define GL_RGBA32F_EXT 0x8814
+#define GL_RGB32F_EXT 0x8815
+#define GL_ALPHA32F_EXT 0x8816
+#define GL_LUMINANCE32F_EXT 0x8818
+#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
+#define GL_RGBA16F_EXT 0x881A
+#define GL_RGB16F_EXT 0x881B
+#define GL_ALPHA16F_EXT 0x881C
+#define GL_LUMINANCE16F_EXT 0x881E
+#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
+#define GL_RGB_RAW_422_APPLE 0x8A51
+#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
+#define GL_BGRA8_EXT 0x93A1
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glTexStorage1DEXT GLEW_GET_FUN(__glewTexStorage1DEXT)
+#define glTexStorage2DEXT GLEW_GET_FUN(__glewTexStorage2DEXT)
+#define glTexStorage3DEXT GLEW_GET_FUN(__glewTexStorage3DEXT)
+#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT)
+#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT)
+#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT)
+
+#define GLEW_EXT_texture_storage GLEW_GET_VAR(__GLEW_EXT_texture_storage)
+
+#endif /* GL_EXT_texture_storage */
+
+/* ------------------- GL_EXT_texture_storage_compression ------------------ */
+
+#ifndef GL_EXT_texture_storage_compression
+#define GL_EXT_texture_storage_compression 1
+
+#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E
+#define GL_SURFACE_COMPRESSION_EXT 0x96C0
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);
+
+#define glTexStorageAttribs2DEXT GLEW_GET_FUN(__glewTexStorageAttribs2DEXT)
+#define glTexStorageAttribs3DEXT GLEW_GET_FUN(__glewTexStorageAttribs3DEXT)
+
+#define GLEW_EXT_texture_storage_compression GLEW_GET_VAR(__GLEW_EXT_texture_storage_compression)
+
+#endif /* GL_EXT_texture_storage_compression */
+
+/* ------------------------- GL_EXT_texture_swizzle ------------------------ */
+
+#ifndef GL_EXT_texture_swizzle
+#define GL_EXT_texture_swizzle 1
+
+#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
+
+#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle)
+
+#endif /* GL_EXT_texture_swizzle */
+
+/* ------------------- GL_EXT_texture_type_2_10_10_10_REV ------------------ */
+
+#ifndef GL_EXT_texture_type_2_10_10_10_REV
+#define GL_EXT_texture_type_2_10_10_10_REV 1
+
+#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
+
+#define GLEW_EXT_texture_type_2_10_10_10_REV GLEW_GET_VAR(__GLEW_EXT_texture_type_2_10_10_10_REV)
+
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+
+/* -------------------------- GL_EXT_texture_view -------------------------- */
+
+#ifndef GL_EXT_texture_view
+#define GL_EXT_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureViewEXT GLEW_GET_FUN(__glewTextureViewEXT)
+
+#define GLEW_EXT_texture_view GLEW_GET_VAR(__GLEW_EXT_texture_view)
+
+#endif /* GL_EXT_texture_view */
+
+/* --------------------------- GL_EXT_timer_query -------------------------- */
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 1
+
+#define GL_TIME_ELAPSED_EXT 0x88BF
+
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
+
+#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT)
+#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT)
+
+#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query)
+
+#endif /* GL_EXT_timer_query */
+
+/* ----------------------- GL_EXT_transform_feedback ----------------------- */
+
+#ifndef GL_EXT_transform_feedback
+#define GL_EXT_transform_feedback 1
+
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+#define GL_RASTERIZER_DISCARD_EXT 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode);
+
+#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT)
+#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT)
+#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT)
+#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT)
+#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT)
+#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT)
+#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT)
+
+#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback)
+
+#endif /* GL_EXT_transform_feedback */
+
+/* ------------------------- GL_EXT_unpack_subimage ------------------------ */
+
+#ifndef GL_EXT_unpack_subimage
+#define GL_EXT_unpack_subimage 1
+
+#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
+#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
+
+#define GLEW_EXT_unpack_subimage GLEW_GET_VAR(__GLEW_EXT_unpack_subimage)
+
+#endif /* GL_EXT_unpack_subimage */
+
+/* -------------------------- GL_EXT_vertex_array -------------------------- */
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+
+#define GL_DOUBLE_EXT 0x140A
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+
+typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer);
+typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+
+#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT)
+#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT)
+#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT)
+#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT)
+#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT)
+#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT)
+#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT)
+#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT)
+
+#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array)
+
+#endif /* GL_EXT_vertex_array */
+
+/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */
+
+#ifndef GL_EXT_vertex_array_bgra
+#define GL_EXT_vertex_array_bgra 1
+
+#define GL_BGRA 0x80E1
+
+#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra)
+
+#endif /* GL_EXT_vertex_array_bgra */
+
+/* ----------------------- GL_EXT_vertex_array_setXXX ---------------------- */
+
+#ifndef GL_EXT_vertex_array_setXXX
+#define GL_EXT_vertex_array_setXXX 1
+
+typedef void (GLAPIENTRY * PFNGLBINDARRAYSETEXTPROC) (const void *arrayset);
+typedef const void * (GLAPIENTRY * PFNGLCREATEARRAYSETEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLDELETEARRAYSETSEXTPROC) (GLsizei n, const void *arrayset[]);
+
+#define glBindArraySetEXT GLEW_GET_FUN(__glewBindArraySetEXT)
+#define glCreateArraySetExt GLEW_GET_FUN(__glewCreateArraySetExt)
+#define glDeleteArraySetsEXT GLEW_GET_FUN(__glewDeleteArraySetsEXT)
+
+#define GLEW_EXT_vertex_array_setXXX GLEW_GET_VAR(__GLEW_EXT_vertex_array_setXXX)
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */
+
+#ifndef GL_EXT_vertex_attrib_64bit
+#define GL_EXT_vertex_attrib_64bit 1
+
+#define GL_DOUBLE_MAT2_EXT 0x8F46
+#define GL_DOUBLE_MAT3_EXT 0x8F47
+#define GL_DOUBLE_MAT4_EXT 0x8F48
+#define GL_DOUBLE_MAT2x3_EXT 0x8F49
+#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
+#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
+#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
+#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
+#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
+#define GL_DOUBLE_VEC2_EXT 0x8FFC
+#define GL_DOUBLE_VEC3_EXT 0x8FFD
+#define GL_DOUBLE_VEC4_EXT 0x8FFE
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT)
+#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT)
+#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT)
+#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT)
+#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT)
+#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT)
+#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT)
+#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT)
+#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT)
+#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT)
+#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT)
+
+#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit)
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+/* -------------------------- GL_EXT_vertex_shader ------------------------- */
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+
+#define GL_VERTEX_SHADER_EXT 0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
+#define GL_OP_INDEX_EXT 0x8782
+#define GL_OP_NEGATE_EXT 0x8783
+#define GL_OP_DOT3_EXT 0x8784
+#define GL_OP_DOT4_EXT 0x8785
+#define GL_OP_MUL_EXT 0x8786
+#define GL_OP_ADD_EXT 0x8787
+#define GL_OP_MADD_EXT 0x8788
+#define GL_OP_FRAC_EXT 0x8789
+#define GL_OP_MAX_EXT 0x878A
+#define GL_OP_MIN_EXT 0x878B
+#define GL_OP_SET_GE_EXT 0x878C
+#define GL_OP_SET_LT_EXT 0x878D
+#define GL_OP_CLAMP_EXT 0x878E
+#define GL_OP_FLOOR_EXT 0x878F
+#define GL_OP_ROUND_EXT 0x8790
+#define GL_OP_EXP_BASE_2_EXT 0x8791
+#define GL_OP_LOG_BASE_2_EXT 0x8792
+#define GL_OP_POWER_EXT 0x8793
+#define GL_OP_RECIP_EXT 0x8794
+#define GL_OP_RECIP_SQRT_EXT 0x8795
+#define GL_OP_SUB_EXT 0x8796
+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+#define GL_OP_MOV_EXT 0x8799
+#define GL_OUTPUT_VERTEX_EXT 0x879A
+#define GL_OUTPUT_COLOR0_EXT 0x879B
+#define GL_OUTPUT_COLOR1_EXT 0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+#define GL_OUTPUT_FOG_EXT 0x87BD
+#define GL_SCALAR_EXT 0x87BE
+#define GL_VECTOR_EXT 0x87BF
+#define GL_MATRIX_EXT 0x87C0
+#define GL_VARIANT_EXT 0x87C1
+#define GL_INVARIANT_EXT 0x87C2
+#define GL_LOCAL_CONSTANT_EXT 0x87C3
+#define GL_LOCAL_EXT 0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+#define GL_X_EXT 0x87D5
+#define GL_Y_EXT 0x87D6
+#define GL_Z_EXT 0x87D7
+#define GL_W_EXT 0x87D8
+#define GL_NEGATIVE_X_EXT 0x87D9
+#define GL_NEGATIVE_Y_EXT 0x87DA
+#define GL_NEGATIVE_Z_EXT 0x87DB
+#define GL_NEGATIVE_W_EXT 0x87DC
+#define GL_ZERO_EXT 0x87DD
+#define GL_ONE_EXT 0x87DE
+#define GL_NEGATIVE_ONE_EXT 0x87DF
+#define GL_NORMALIZED_RANGE_EXT 0x87E0
+#define GL_FULL_RANGE_EXT 0x87E1
+#define GL_CURRENT_VERTEX_EXT 0x87E2
+#define GL_MVP_MATRIX_EXT 0x87E3
+#define GL_VARIANT_VALUE_EXT 0x87E4
+#define GL_VARIANT_DATATYPE_EXT 0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+#define GL_VARIANT_ARRAY_EXT 0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+#define GL_INVARIANT_VALUE_EXT 0x87EA
+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+
+typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components);
+typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
+typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, void *addr);
+typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, void *addr);
+typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, void *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr);
+typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+
+#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT)
+#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT)
+#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT)
+#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT)
+#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT)
+#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT)
+#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT)
+#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT)
+#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT)
+#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT)
+#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT)
+#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT)
+#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT)
+#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT)
+#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT)
+#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT)
+#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT)
+#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT)
+#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT)
+#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT)
+#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT)
+#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT)
+#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT)
+#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT)
+#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT)
+#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT)
+#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT)
+#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT)
+#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT)
+#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT)
+#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT)
+#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT)
+#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT)
+#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT)
+#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT)
+#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT)
+#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT)
+#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT)
+#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT)
+#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT)
+#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT)
+#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT)
+
+#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader)
+
+#endif /* GL_EXT_vertex_shader */
+
+/* ------------------------ GL_EXT_vertex_weighting ------------------------ */
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+
+#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
+#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
+#define GL_MODELVIEW0_EXT 0x1700
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
+#define GL_VERTEX_WEIGHTING_EXT 0x8509
+#define GL_MODELVIEW1_EXT 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight);
+
+#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT)
+#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT)
+#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT)
+
+#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting)
+
+#endif /* GL_EXT_vertex_weighting */
+
+/* ------------------------ GL_EXT_win32_keyed_mutex ----------------------- */
+
+#ifndef GL_EXT_win32_keyed_mutex
+#define GL_EXT_win32_keyed_mutex 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);
+typedef GLboolean (GLAPIENTRY * PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);
+
+#define glAcquireKeyedMutexWin32EXT GLEW_GET_FUN(__glewAcquireKeyedMutexWin32EXT)
+#define glReleaseKeyedMutexWin32EXT GLEW_GET_FUN(__glewReleaseKeyedMutexWin32EXT)
+
+#define GLEW_EXT_win32_keyed_mutex GLEW_GET_VAR(__GLEW_EXT_win32_keyed_mutex)
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+/* ------------------------ GL_EXT_window_rectangles ----------------------- */
+
+#ifndef GL_EXT_window_rectangles
+#define GL_EXT_window_rectangles 1
+
+#define GL_INCLUSIVE_EXT 0x8F10
+#define GL_EXCLUSIVE_EXT 0x8F11
+#define GL_WINDOW_RECTANGLE_EXT 0x8F12
+#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+
+typedef void (GLAPIENTRY * PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint box[]);
+
+#define glWindowRectanglesEXT GLEW_GET_FUN(__glewWindowRectanglesEXT)
+
+#define GLEW_EXT_window_rectangles GLEW_GET_VAR(__GLEW_EXT_window_rectangles)
+
+#endif /* GL_EXT_window_rectangles */
+
+/* ------------------------- GL_EXT_x11_sync_object ------------------------ */
+
+#ifndef GL_EXT_x11_sync_object
+#define GL_EXT_x11_sync_object 1
+
+#define GL_SYNC_X11_FENCE_EXT 0x90E1
+
+typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
+
+#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT)
+
+#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object)
+
+#endif /* GL_EXT_x11_sync_object */
+
+/* ----------------------- GL_FJ_shader_binary_GCCSO ----------------------- */
+
+#ifndef GL_FJ_shader_binary_GCCSO
+#define GL_FJ_shader_binary_GCCSO 1
+
+#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
+
+#define GLEW_FJ_shader_binary_GCCSO GLEW_GET_VAR(__GLEW_FJ_shader_binary_GCCSO)
+
+#endif /* GL_FJ_shader_binary_GCCSO */
+
+/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */
+
+#ifndef GL_GREMEDY_frame_terminator
+#define GL_GREMEDY_frame_terminator 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void);
+
+#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY)
+
+#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator)
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+/* ------------------------ GL_GREMEDY_string_marker ----------------------- */
+
+#ifndef GL_GREMEDY_string_marker
+#define GL_GREMEDY_string_marker 1
+
+typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
+
+#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY)
+
+#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker)
+
+#endif /* GL_GREMEDY_string_marker */
+
+/* --------------------- GL_HP_convolution_border_modes -------------------- */
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+
+#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes)
+
+#endif /* GL_HP_convolution_border_modes */
+
+/* ------------------------- GL_HP_image_transform ------------------------- */
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+
+typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP)
+#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP)
+#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP)
+#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP)
+#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP)
+#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP)
+
+#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform)
+
+#endif /* GL_HP_image_transform */
+
+/* -------------------------- GL_HP_occlusion_test ------------------------- */
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+
+#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test)
+
+#endif /* GL_HP_occlusion_test */
+
+/* ------------------------- GL_HP_texture_lighting ------------------------ */
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+
+#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting)
+
+#endif /* GL_HP_texture_lighting */
+
+/* --------------------------- GL_IBM_cull_vertex -------------------------- */
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+
+#define GL_CULL_VERTEX_IBM 103050
+
+#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex)
+
+#endif /* GL_IBM_cull_vertex */
+
+/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride);
+
+#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM)
+#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM)
+
+#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays)
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010
+
+#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip)
+
+#endif /* GL_IBM_rasterpos_clip */
+
+/* --------------------------- GL_IBM_static_data -------------------------- */
+
+#ifndef GL_IBM_static_data
+#define GL_IBM_static_data 1
+
+#define GL_ALL_STATIC_DATA_IBM 103060
+#define GL_STATIC_VERTEX_ARRAY_IBM 103061
+
+#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data)
+
+#endif /* GL_IBM_static_data */
+
+/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_IBM_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT_IBM 0x8370
+
+#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat)
+
+#endif /* GL_IBM_texture_mirrored_repeat */
+
+/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+
+#define GL_VERTEX_ARRAY_LIST_IBM 103070
+#define GL_NORMAL_ARRAY_LIST_IBM 103071
+#define GL_COLOR_ARRAY_LIST_IBM 103072
+#define GL_INDEX_ARRAY_LIST_IBM 103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+
+#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM)
+#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM)
+#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM)
+#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM)
+#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM)
+#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM)
+#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM)
+#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM)
+
+#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists)
+
+#endif /* GL_IBM_vertex_array_lists */
+
+/* ------------------------ GL_IMG_bindless_texture ------------------------ */
+
+#ifndef GL_IMG_bindless_texture
+#define GL_IMG_bindless_texture 1
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetTextureHandleIMG GLEW_GET_FUN(__glewGetTextureHandleIMG)
+#define glGetTextureSamplerHandleIMG GLEW_GET_FUN(__glewGetTextureSamplerHandleIMG)
+#define glProgramUniformHandleui64IMG GLEW_GET_FUN(__glewProgramUniformHandleui64IMG)
+#define glProgramUniformHandleui64vIMG GLEW_GET_FUN(__glewProgramUniformHandleui64vIMG)
+#define glUniformHandleui64IMG GLEW_GET_FUN(__glewUniformHandleui64IMG)
+#define glUniformHandleui64vIMG GLEW_GET_FUN(__glewUniformHandleui64vIMG)
+
+#define GLEW_IMG_bindless_texture GLEW_GET_VAR(__GLEW_IMG_bindless_texture)
+
+#endif /* GL_IMG_bindless_texture */
+
+/* --------------------- GL_IMG_framebuffer_downsample --------------------- */
+
+#ifndef GL_IMG_framebuffer_downsample
+#define GL_IMG_framebuffer_downsample 1
+
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
+#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
+#define GL_DOWNSAMPLE_SCALES_IMG 0x913E
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+
+#define glFramebufferTexture2DDownsampleIMG GLEW_GET_FUN(__glewFramebufferTexture2DDownsampleIMG)
+#define glFramebufferTextureLayerDownsampleIMG GLEW_GET_FUN(__glewFramebufferTextureLayerDownsampleIMG)
+
+#define GLEW_IMG_framebuffer_downsample GLEW_GET_VAR(__GLEW_IMG_framebuffer_downsample)
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+/* ----------------- GL_IMG_multisampled_render_to_texture ----------------- */
+
+#ifndef GL_IMG_multisampled_render_to_texture
+#define GL_IMG_multisampled_render_to_texture 1
+
+#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
+#define GL_MAX_SAMPLES_IMG 0x9135
+#define GL_TEXTURE_SAMPLES_IMG 0x9136
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glFramebufferTexture2DMultisampleIMG GLEW_GET_FUN(__glewFramebufferTexture2DMultisampleIMG)
+#define glRenderbufferStorageMultisampleIMG GLEW_GET_FUN(__glewRenderbufferStorageMultisampleIMG)
+
+#define GLEW_IMG_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_IMG_multisampled_render_to_texture)
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+/* ------------------------- GL_IMG_program_binary ------------------------- */
+
+#ifndef GL_IMG_program_binary
+#define GL_IMG_program_binary 1
+
+#define GL_SGX_PROGRAM_BINARY_IMG 0x9130
+
+#define GLEW_IMG_program_binary GLEW_GET_VAR(__GLEW_IMG_program_binary)
+
+#endif /* GL_IMG_program_binary */
+
+/* --------------------------- GL_IMG_read_format -------------------------- */
+
+#ifndef GL_IMG_read_format
+#define GL_IMG_read_format 1
+
+#define GL_BGRA_IMG 0x80E1
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
+
+#define GLEW_IMG_read_format GLEW_GET_VAR(__GLEW_IMG_read_format)
+
+#endif /* GL_IMG_read_format */
+
+/* -------------------------- GL_IMG_shader_binary ------------------------- */
+
+#ifndef GL_IMG_shader_binary
+#define GL_IMG_shader_binary 1
+
+#define GL_SGX_BINARY_IMG 0x8C0A
+
+#define GLEW_IMG_shader_binary GLEW_GET_VAR(__GLEW_IMG_shader_binary)
+
+#endif /* GL_IMG_shader_binary */
+
+/* -------------------- GL_IMG_texture_compression_pvrtc ------------------- */
+
+#ifndef GL_IMG_texture_compression_pvrtc
+#define GL_IMG_texture_compression_pvrtc 1
+
+#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
+#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
+
+#define GLEW_IMG_texture_compression_pvrtc GLEW_GET_VAR(__GLEW_IMG_texture_compression_pvrtc)
+
+#endif /* GL_IMG_texture_compression_pvrtc */
+
+/* ------------------- GL_IMG_texture_compression_pvrtc2 ------------------- */
+
+#ifndef GL_IMG_texture_compression_pvrtc2
+#define GL_IMG_texture_compression_pvrtc2 1
+
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
+
+#define GLEW_IMG_texture_compression_pvrtc2 GLEW_GET_VAR(__GLEW_IMG_texture_compression_pvrtc2)
+
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+
+/* --------------- GL_IMG_texture_env_enhanced_fixed_function -------------- */
+
+#ifndef GL_IMG_texture_env_enhanced_fixed_function
+#define GL_IMG_texture_env_enhanced_fixed_function 1
+
+#define GL_DOT3_RGBA_IMG 0x86AF
+#define GL_MODULATE_COLOR_IMG 0x8C04
+#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05
+#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06
+#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07
+#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08
+#define GL_ADD_BLEND_IMG 0x8C09
+
+#define GLEW_IMG_texture_env_enhanced_fixed_function GLEW_GET_VAR(__GLEW_IMG_texture_env_enhanced_fixed_function)
+
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+
+/* ---------------------- GL_IMG_texture_filter_cubic ---------------------- */
+
+#ifndef GL_IMG_texture_filter_cubic
+#define GL_IMG_texture_filter_cubic 1
+
+#define GL_CUBIC_IMG 0x9139
+#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
+#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
+
+#define GLEW_IMG_texture_filter_cubic GLEW_GET_VAR(__GLEW_IMG_texture_filter_cubic)
+
+#endif /* GL_IMG_texture_filter_cubic */
+
+/* --------------------- GL_IMG_tile_region_protection --------------------- */
+
+#ifndef GL_IMG_tile_region_protection
+#define GL_IMG_tile_region_protection 1
+
+#define GL_TRP_IMG 0x8EA0
+#define GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
+#define GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
+
+#define GLEW_IMG_tile_region_protection GLEW_GET_VAR(__GLEW_IMG_tile_region_protection)
+
+#endif /* GL_IMG_tile_region_protection */
+
+/* -------------------------- GL_INGR_color_clamp -------------------------- */
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+
+#define GL_RED_MIN_CLAMP_INGR 0x8560
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
+#define GL_RED_MAX_CLAMP_INGR 0x8564
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
+
+#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp)
+
+#endif /* GL_INGR_color_clamp */
+
+/* ------------------------- GL_INGR_interlace_read ------------------------ */
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+
+#define GL_INTERLACE_READ_INGR 0x8568
+
+#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read)
+
+#endif /* GL_INGR_interlace_read */
+
+/* ----------------------- GL_INTEL_blackhole_render ----------------------- */
+
+#ifndef GL_INTEL_blackhole_render
+#define GL_INTEL_blackhole_render 1
+
+#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
+
+#define GLEW_INTEL_blackhole_render GLEW_GET_VAR(__GLEW_INTEL_blackhole_render)
+
+#endif /* GL_INTEL_blackhole_render */
+
+/* ------------------ GL_INTEL_conservative_rasterization ------------------ */
+
+#ifndef GL_INTEL_conservative_rasterization
+#define GL_INTEL_conservative_rasterization 1
+
+#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
+
+#define GLEW_INTEL_conservative_rasterization GLEW_GET_VAR(__GLEW_INTEL_conservative_rasterization)
+
+#endif /* GL_INTEL_conservative_rasterization */
+
+/* ------------------- GL_INTEL_fragment_shader_ordering ------------------- */
+
+#ifndef GL_INTEL_fragment_shader_ordering
+#define GL_INTEL_fragment_shader_ordering 1
+
+#define GLEW_INTEL_fragment_shader_ordering GLEW_GET_VAR(__GLEW_INTEL_fragment_shader_ordering)
+
+#endif /* GL_INTEL_fragment_shader_ordering */
+
+/* ----------------------- GL_INTEL_framebuffer_CMAA ----------------------- */
+
+#ifndef GL_INTEL_framebuffer_CMAA
+#define GL_INTEL_framebuffer_CMAA 1
+
+typedef void (GLAPIENTRY * PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
+
+#define glApplyFramebufferAttachmentCMAAINTEL GLEW_GET_FUN(__glewApplyFramebufferAttachmentCMAAINTEL)
+
+#define GLEW_INTEL_framebuffer_CMAA GLEW_GET_VAR(__GLEW_INTEL_framebuffer_CMAA)
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+/* -------------------------- GL_INTEL_map_texture ------------------------- */
+
+#ifndef GL_INTEL_map_texture
+#define GL_INTEL_map_texture 1
+
+#define GL_LAYOUT_DEFAULT_INTEL 0
+#define GL_LAYOUT_LINEAR_INTEL 1
+#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
+#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
+
+typedef void * (GLAPIENTRY * PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout);
+typedef void (GLAPIENTRY * PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
+
+#define glMapTexture2DINTEL GLEW_GET_FUN(__glewMapTexture2DINTEL)
+#define glSyncTextureINTEL GLEW_GET_FUN(__glewSyncTextureINTEL)
+#define glUnmapTexture2DINTEL GLEW_GET_FUN(__glewUnmapTexture2DINTEL)
+
+#define GLEW_INTEL_map_texture GLEW_GET_VAR(__GLEW_INTEL_map_texture)
+
+#endif /* GL_INTEL_map_texture */
+
+/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+
+#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL)
+#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL)
+#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL)
+#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL)
+
+#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays)
+
+#endif /* GL_INTEL_parallel_arrays */
+
+/* ----------------------- GL_INTEL_performance_query ---------------------- */
+
+#ifndef GL_INTEL_performance_query
+#define GL_INTEL_performance_query 1
+
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+
+typedef void (GLAPIENTRY * PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint* queryHandle);
+typedef void (GLAPIENTRY * PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint* queryId);
+typedef void (GLAPIENTRY * PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint* nextQueryId);
+typedef void (GLAPIENTRY * PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar* counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar* queryName, GLuint *queryId);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+
+#define glBeginPerfQueryINTEL GLEW_GET_FUN(__glewBeginPerfQueryINTEL)
+#define glCreatePerfQueryINTEL GLEW_GET_FUN(__glewCreatePerfQueryINTEL)
+#define glDeletePerfQueryINTEL GLEW_GET_FUN(__glewDeletePerfQueryINTEL)
+#define glEndPerfQueryINTEL GLEW_GET_FUN(__glewEndPerfQueryINTEL)
+#define glGetFirstPerfQueryIdINTEL GLEW_GET_FUN(__glewGetFirstPerfQueryIdINTEL)
+#define glGetNextPerfQueryIdINTEL GLEW_GET_FUN(__glewGetNextPerfQueryIdINTEL)
+#define glGetPerfCounterInfoINTEL GLEW_GET_FUN(__glewGetPerfCounterInfoINTEL)
+#define glGetPerfQueryDataINTEL GLEW_GET_FUN(__glewGetPerfQueryDataINTEL)
+#define glGetPerfQueryIdByNameINTEL GLEW_GET_FUN(__glewGetPerfQueryIdByNameINTEL)
+#define glGetPerfQueryInfoINTEL GLEW_GET_FUN(__glewGetPerfQueryInfoINTEL)
+
+#define GLEW_INTEL_performance_query GLEW_GET_VAR(__GLEW_INTEL_performance_query)
+
+#endif /* GL_INTEL_performance_query */
+
+/* ------------------- GL_INTEL_shader_integer_functions2 ------------------ */
+
+#ifndef GL_INTEL_shader_integer_functions2
+#define GL_INTEL_shader_integer_functions2 1
+
+#define GLEW_INTEL_shader_integer_functions2 GLEW_GET_VAR(__GLEW_INTEL_shader_integer_functions2)
+
+#endif /* GL_INTEL_shader_integer_functions2 */
+
+/* ------------------------ GL_INTEL_texture_scissor ----------------------- */
+
+#ifndef GL_INTEL_texture_scissor
+#define GL_INTEL_texture_scissor 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc);
+typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh);
+
+#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL)
+#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL)
+
+#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor)
+
+#endif /* GL_INTEL_texture_scissor */
+
+/* --------------------- GL_KHR_blend_equation_advanced -------------------- */
+
+#ifndef GL_KHR_blend_equation_advanced
+#define GL_KHR_blend_equation_advanced 1
+
+#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+#define GL_MULTIPLY_KHR 0x9294
+#define GL_SCREEN_KHR 0x9295
+#define GL_OVERLAY_KHR 0x9296
+#define GL_DARKEN_KHR 0x9297
+#define GL_LIGHTEN_KHR 0x9298
+#define GL_COLORDODGE_KHR 0x9299
+#define GL_COLORBURN_KHR 0x929A
+#define GL_HARDLIGHT_KHR 0x929B
+#define GL_SOFTLIGHT_KHR 0x929C
+#define GL_DIFFERENCE_KHR 0x929E
+#define GL_EXCLUSION_KHR 0x92A0
+#define GL_HSL_HUE_KHR 0x92AD
+#define GL_HSL_SATURATION_KHR 0x92AE
+#define GL_HSL_COLOR_KHR 0x92AF
+#define GL_HSL_LUMINOSITY_KHR 0x92B0
+
+typedef void (GLAPIENTRY * PFNGLBLENDBARRIERKHRPROC) (void);
+
+#define glBlendBarrierKHR GLEW_GET_FUN(__glewBlendBarrierKHR)
+
+#define GLEW_KHR_blend_equation_advanced GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced)
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+/* ---------------- GL_KHR_blend_equation_advanced_coherent ---------------- */
+
+#ifndef GL_KHR_blend_equation_advanced_coherent
+#define GL_KHR_blend_equation_advanced_coherent 1
+
+#define GLEW_KHR_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced_coherent)
+
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+
+/* ---------------------- GL_KHR_context_flush_control --------------------- */
+
+#ifndef GL_KHR_context_flush_control
+#define GL_KHR_context_flush_control 1
+
+#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+
+#define GLEW_KHR_context_flush_control GLEW_GET_VAR(__GLEW_KHR_context_flush_control)
+
+#endif /* GL_KHR_context_flush_control */
+
+/* ------------------------------ GL_KHR_debug ----------------------------- */
+
+#ifndef GL_KHR_debug
+#define GL_KHR_debug 1
+
+#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+#define GL_DEBUG_SOURCE_API 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION 0x824A
+#define GL_DEBUG_SOURCE_OTHER 0x824B
+#define GL_DEBUG_TYPE_ERROR 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
+#define GL_DEBUG_TYPE_OTHER 0x8251
+#define GL_DEBUG_TYPE_MARKER 0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+#define GL_DEBUG_TYPE_POP_GROUP 0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+#define GL_BUFFER 0x82E0
+#define GL_SHADER 0x82E1
+#define GL_PROGRAM 0x82E2
+#define GL_QUERY 0x82E3
+#define GL_PROGRAM_PIPELINE 0x82E4
+#define GL_SAMPLER 0x82E6
+#define GL_DISPLAY_LIST 0x82E7
+#define GL_MAX_LABEL_LENGTH 0x82E8
+#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES 0x9145
+#define GL_DEBUG_SEVERITY_HIGH 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
+#define GL_DEBUG_SEVERITY_LOW 0x9148
+#define GL_DEBUG_OUTPUT 0x92E0
+
+typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
+typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (void* ptr, GLsizei length, const GLchar* label);
+typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void);
+typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message);
+
+#define glDebugMessageCallback GLEW_GET_FUN(__glewDebugMessageCallback)
+#define glDebugMessageControl GLEW_GET_FUN(__glewDebugMessageControl)
+#define glDebugMessageInsert GLEW_GET_FUN(__glewDebugMessageInsert)
+#define glGetDebugMessageLog GLEW_GET_FUN(__glewGetDebugMessageLog)
+#define glGetObjectLabel GLEW_GET_FUN(__glewGetObjectLabel)
+#define glGetObjectPtrLabel GLEW_GET_FUN(__glewGetObjectPtrLabel)
+#define glObjectLabel GLEW_GET_FUN(__glewObjectLabel)
+#define glObjectPtrLabel GLEW_GET_FUN(__glewObjectPtrLabel)
+#define glPopDebugGroup GLEW_GET_FUN(__glewPopDebugGroup)
+#define glPushDebugGroup GLEW_GET_FUN(__glewPushDebugGroup)
+
+#define GLEW_KHR_debug GLEW_GET_VAR(__GLEW_KHR_debug)
+
+#endif /* GL_KHR_debug */
+
+/* ---------------------------- GL_KHR_no_error ---------------------------- */
+
+#ifndef GL_KHR_no_error
+#define GL_KHR_no_error 1
+
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
+
+#define GLEW_KHR_no_error GLEW_GET_VAR(__GLEW_KHR_no_error)
+
+#endif /* GL_KHR_no_error */
+
+/* --------------------- GL_KHR_parallel_shader_compile -------------------- */
+
+#ifndef GL_KHR_parallel_shader_compile
+#define GL_KHR_parallel_shader_compile 1
+
+#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+#define GL_COMPLETION_STATUS_KHR 0x91B1
+
+typedef void (GLAPIENTRY * PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
+
+#define glMaxShaderCompilerThreadsKHR GLEW_GET_FUN(__glewMaxShaderCompilerThreadsKHR)
+
+#define GLEW_KHR_parallel_shader_compile GLEW_GET_VAR(__GLEW_KHR_parallel_shader_compile)
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+/* ------------------ GL_KHR_robust_buffer_access_behavior ----------------- */
+
+#ifndef GL_KHR_robust_buffer_access_behavior
+#define GL_KHR_robust_buffer_access_behavior 1
+
+#define GLEW_KHR_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_KHR_robust_buffer_access_behavior)
+
+#endif /* GL_KHR_robust_buffer_access_behavior */
+
+/* --------------------------- GL_KHR_robustness --------------------------- */
+
+#ifndef GL_KHR_robustness
+#define GL_KHR_robustness 1
+
+#define GL_CONTEXT_LOST 0x0507
+#define GL_LOSE_CONTEXT_ON_RESET 0x8252
+#define GL_GUILTY_CONTEXT_RESET 0x8253
+#define GL_INNOCENT_CONTEXT_RESET 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
+#define GL_NO_RESET_NOTIFICATION 0x8261
+#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
+
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+
+#define glGetnUniformfv GLEW_GET_FUN(__glewGetnUniformfv)
+#define glGetnUniformiv GLEW_GET_FUN(__glewGetnUniformiv)
+#define glGetnUniformuiv GLEW_GET_FUN(__glewGetnUniformuiv)
+#define glReadnPixels GLEW_GET_FUN(__glewReadnPixels)
+
+#define GLEW_KHR_robustness GLEW_GET_VAR(__GLEW_KHR_robustness)
+
+#endif /* GL_KHR_robustness */
+
+/* ------------------------- GL_KHR_shader_subgroup ------------------------ */
+
+#ifndef GL_KHR_shader_subgroup
+#define GL_KHR_shader_subgroup 1
+
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
+#define GL_SUBGROUP_SIZE_KHR 0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
+
+#define GLEW_KHR_shader_subgroup GLEW_GET_VAR(__GLEW_KHR_shader_subgroup)
+
+#endif /* GL_KHR_shader_subgroup */
+
+/* ------------------ GL_KHR_texture_compression_astc_hdr ------------------ */
+
+#ifndef GL_KHR_texture_compression_astc_hdr
+#define GL_KHR_texture_compression_astc_hdr 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_KHR_texture_compression_astc_hdr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_hdr)
+
+#endif /* GL_KHR_texture_compression_astc_hdr */
+
+/* ------------------ GL_KHR_texture_compression_astc_ldr ------------------ */
+
+#ifndef GL_KHR_texture_compression_astc_ldr
+#define GL_KHR_texture_compression_astc_ldr 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_KHR_texture_compression_astc_ldr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_ldr)
+
+#endif /* GL_KHR_texture_compression_astc_ldr */
+
+/* --------------- GL_KHR_texture_compression_astc_sliced_3d --------------- */
+
+#ifndef GL_KHR_texture_compression_astc_sliced_3d
+#define GL_KHR_texture_compression_astc_sliced_3d 1
+
+#define GLEW_KHR_texture_compression_astc_sliced_3d GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_sliced_3d)
+
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+
+/* -------------------------- GL_KTX_buffer_region ------------------------- */
+
+#ifndef GL_KTX_buffer_region
+#define GL_KTX_buffer_region 1
+
+#define GL_KTX_FRONT_REGION 0x0
+#define GL_KTX_BACK_REGION 0x1
+#define GL_KTX_Z_REGION 0x2
+#define GL_KTX_STENCIL_REGION 0x3
+
+typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region);
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest);
+typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region);
+typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled)
+#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion)
+#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion)
+#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion)
+#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion)
+
+#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region)
+
+#endif /* GL_KTX_buffer_region */
+
+/* ------------------------- GL_MESAX_texture_stack ------------------------ */
+
+#ifndef GL_MESAX_texture_stack
+#define GL_MESAX_texture_stack 1
+
+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+
+#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack)
+
+#endif /* GL_MESAX_texture_stack */
+
+/* ------------------------------ GL_MESA_bgra ----------------------------- */
+
+#ifndef GL_MESA_bgra
+#define GL_MESA_bgra 1
+
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_MESA_bgra GLEW_GET_VAR(__GLEW_MESA_bgra)
+
+#endif /* GL_MESA_bgra */
+
+/* ----------------------- GL_MESA_framebuffer_flip_x ---------------------- */
+
+#ifndef GL_MESA_framebuffer_flip_x
+#define GL_MESA_framebuffer_flip_x 1
+
+#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
+
+#define GLEW_MESA_framebuffer_flip_x GLEW_GET_VAR(__GLEW_MESA_framebuffer_flip_x)
+
+#endif /* GL_MESA_framebuffer_flip_x */
+
+/* ----------------------- GL_MESA_framebuffer_flip_y ---------------------- */
+
+#ifndef GL_MESA_framebuffer_flip_y
+#define GL_MESA_framebuffer_flip_y 1
+
+#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint* params);
+
+#define glFramebufferParameteriMESA GLEW_GET_FUN(__glewFramebufferParameteriMESA)
+#define glGetFramebufferParameterivMESA GLEW_GET_FUN(__glewGetFramebufferParameterivMESA)
+
+#define GLEW_MESA_framebuffer_flip_y GLEW_GET_VAR(__GLEW_MESA_framebuffer_flip_y)
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+/* ---------------------- GL_MESA_framebuffer_swap_xy ---------------------- */
+
+#ifndef GL_MESA_framebuffer_swap_xy
+#define GL_MESA_framebuffer_swap_xy 1
+
+#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
+
+#define GLEW_MESA_framebuffer_swap_xy GLEW_GET_VAR(__GLEW_MESA_framebuffer_swap_xy)
+
+#endif /* GL_MESA_framebuffer_swap_xy */
+
+/* -------------------------- GL_MESA_pack_invert -------------------------- */
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+
+#define GL_PACK_INVERT_MESA 0x8758
+
+#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert)
+
+#endif /* GL_MESA_pack_invert */
+
+/* --------------------- GL_MESA_program_binary_formats -------------------- */
+
+#ifndef GL_MESA_program_binary_formats
+#define GL_MESA_program_binary_formats 1
+
+#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
+
+#define GLEW_MESA_program_binary_formats GLEW_GET_VAR(__GLEW_MESA_program_binary_formats)
+
+#endif /* GL_MESA_program_binary_formats */
+
+/* ------------------------- GL_MESA_resize_buffers ------------------------ */
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+
+typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);
+
+#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA)
+
+#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers)
+
+#endif /* GL_MESA_resize_buffers */
+
+/* -------------------- GL_MESA_shader_integer_functions ------------------- */
+
+#ifndef GL_MESA_shader_integer_functions
+#define GL_MESA_shader_integer_functions 1
+
+#define GLEW_MESA_shader_integer_functions GLEW_GET_VAR(__GLEW_MESA_shader_integer_functions)
+
+#endif /* GL_MESA_shader_integer_functions */
+
+/* ----------------------- GL_MESA_tile_raster_order ----------------------- */
+
+#ifndef GL_MESA_tile_raster_order
+#define GL_MESA_tile_raster_order 1
+
+#define GLEW_MESA_tile_raster_order GLEW_GET_VAR(__GLEW_MESA_tile_raster_order)
+
+#endif /* GL_MESA_tile_raster_order */
+
+/* --------------------------- GL_MESA_window_pos -------------------------- */
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p);
+
+#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA)
+#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA)
+#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA)
+#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA)
+#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA)
+#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA)
+#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA)
+#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA)
+#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA)
+#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA)
+#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA)
+#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA)
+#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA)
+#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA)
+#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA)
+#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA)
+#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA)
+#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA)
+#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA)
+#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA)
+#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA)
+#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA)
+#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA)
+#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA)
+
+#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos)
+
+#endif /* GL_MESA_window_pos */
+
+/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
+
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+#define GL_YCBCR_MESA 0x8757
+
+#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture)
+
+#endif /* GL_MESA_ycbcr_texture */
+
+/* ----------- GL_NVX_blend_equation_advanced_multi_draw_buffers ----------- */
+
+#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers
+#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1
+
+#define GLEW_NVX_blend_equation_advanced_multi_draw_buffers GLEW_GET_VAR(__GLEW_NVX_blend_equation_advanced_multi_draw_buffers)
+
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+
+/* ----------------------- GL_NVX_conditional_render ----------------------- */
+
+#ifndef GL_NVX_conditional_render
+#define GL_NVX_conditional_render 1
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVXPROC) (void);
+
+#define glBeginConditionalRenderNVX GLEW_GET_FUN(__glewBeginConditionalRenderNVX)
+#define glEndConditionalRenderNVX GLEW_GET_FUN(__glewEndConditionalRenderNVX)
+
+#define GLEW_NVX_conditional_render GLEW_GET_VAR(__GLEW_NVX_conditional_render)
+
+#endif /* GL_NVX_conditional_render */
+
+/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */
+
+#ifndef GL_NVX_gpu_memory_info
+#define GL_NVX_gpu_memory_info 1
+
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
+
+#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info)
+
+#endif /* GL_NVX_gpu_memory_info */
+
+/* ------------------------- GL_NVX_gpu_multicast2 ------------------------- */
+
+#ifndef GL_NVX_gpu_multicast2
+#define GL_NVX_gpu_multicast2 1
+
+#define GL_UPLOAD_GPU_MASK_NVX 0x954A
+
+typedef GLsync (GLAPIENTRY * PFNGLASYNCCOPYBUFFERSUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
+typedef GLuint (GLAPIENTRY * PFNGLASYNCCOPYIMAGESUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
+typedef void (GLAPIENTRY * PFNGLMULTICASTSCISSORARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTVIEWPORTARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC) (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+typedef void (GLAPIENTRY * PFNGLUPLOADGPUMASKNVXPROC) (GLbitfield mask);
+
+#define glAsyncCopyBufferSubDataNVX GLEW_GET_FUN(__glewAsyncCopyBufferSubDataNVX)
+#define glAsyncCopyImageSubDataNVX GLEW_GET_FUN(__glewAsyncCopyImageSubDataNVX)
+#define glMulticastScissorArrayvNVX GLEW_GET_FUN(__glewMulticastScissorArrayvNVX)
+#define glMulticastViewportArrayvNVX GLEW_GET_FUN(__glewMulticastViewportArrayvNVX)
+#define glMulticastViewportPositionWScaleNVX GLEW_GET_FUN(__glewMulticastViewportPositionWScaleNVX)
+#define glUploadGpuMaskNVX GLEW_GET_FUN(__glewUploadGpuMaskNVX)
+
+#define GLEW_NVX_gpu_multicast2 GLEW_GET_VAR(__GLEW_NVX_gpu_multicast2)
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+/* ---------------------- GL_NVX_linked_gpu_multicast ---------------------- */
+
+#ifndef GL_NVX_linked_gpu_multicast
+#define GL_NVX_linked_gpu_multicast 1
+
+#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
+#define GL_MAX_LGPU_GPUS_NVX 0x92BA
+
+typedef void (GLAPIENTRY * PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLLGPUINTERLOCKNVXPROC) (void);
+typedef void (GLAPIENTRY * PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+
+#define glLGPUCopyImageSubDataNVX GLEW_GET_FUN(__glewLGPUCopyImageSubDataNVX)
+#define glLGPUInterlockNVX GLEW_GET_FUN(__glewLGPUInterlockNVX)
+#define glLGPUNamedBufferSubDataNVX GLEW_GET_FUN(__glewLGPUNamedBufferSubDataNVX)
+
+#define GLEW_NVX_linked_gpu_multicast GLEW_GET_VAR(__GLEW_NVX_linked_gpu_multicast)
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+/* ------------------------- GL_NVX_progress_fence ------------------------- */
+
+#ifndef GL_NVX_progress_fence
+#define GL_NVX_progress_fence 1
+
+typedef void (GLAPIENTRY * PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC) (GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRESSFENCENVXPROC) (void);
+typedef void (GLAPIENTRY * PFNGLSIGNALSEMAPHOREUI64NVXPROC) (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+typedef void (GLAPIENTRY * PFNGLWAITSEMAPHOREUI64NVXPROC) (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+
+#define glClientWaitSemaphoreui64NVX GLEW_GET_FUN(__glewClientWaitSemaphoreui64NVX)
+#define glCreateProgressFenceNVX GLEW_GET_FUN(__glewCreateProgressFenceNVX)
+#define glSignalSemaphoreui64NVX GLEW_GET_FUN(__glewSignalSemaphoreui64NVX)
+#define glWaitSemaphoreui64NVX GLEW_GET_FUN(__glewWaitSemaphoreui64NVX)
+
+#define GLEW_NVX_progress_fence GLEW_GET_VAR(__GLEW_NVX_progress_fence)
+
+#endif /* GL_NVX_progress_fence */
+
+/* ------------------------ GL_NV_3dvision_settings ------------------------ */
+
+#ifndef GL_NV_3dvision_settings
+#define GL_NV_3dvision_settings 1
+
+#define GL_3DVISION_STEREO_NV 0x90F4
+#define GL_STEREO_SEPARATION_NV 0x90F5
+#define GL_STEREO_CONVERGENCE_NV 0x90F6
+#define GL_STEREO_CUTOFF_NV 0x90F7
+#define GL_STEREO_PROJECTION_NV 0x90F8
+#define GL_STEREO_PROJECTION_PERSPECTIVE_NV 0x90F9
+#define GL_STEREO_PROJECTION_ORTHO_NV 0x90FA
+
+typedef void (GLAPIENTRY * PFNGLSTEREOPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSTEREOPARAMETERINVPROC) (GLenum pname, GLint param);
+
+#define glStereoParameterfNV GLEW_GET_FUN(__glewStereoParameterfNV)
+#define glStereoParameteriNV GLEW_GET_FUN(__glewStereoParameteriNV)
+
+#define GLEW_NV_3dvision_settings GLEW_GET_VAR(__GLEW_NV_3dvision_settings)
+
+#endif /* GL_NV_3dvision_settings */
+
+/* ------------------- GL_NV_EGL_stream_consumer_external ------------------ */
+
+#ifndef GL_NV_EGL_stream_consumer_external
+#define GL_NV_EGL_stream_consumer_external 1
+
+#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
+
+#define GLEW_NV_EGL_stream_consumer_external GLEW_GET_VAR(__GLEW_NV_EGL_stream_consumer_external)
+
+#endif /* GL_NV_EGL_stream_consumer_external */
+
+/* ----------------- GL_NV_alpha_to_coverage_dither_control ---------------- */
+
+#ifndef GL_NV_alpha_to_coverage_dither_control
+#define GL_NV_alpha_to_coverage_dither_control 1
+
+#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
+#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
+#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
+#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
+
+typedef void (GLAPIENTRY * PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode);
+
+#define glAlphaToCoverageDitherControlNV GLEW_GET_FUN(__glewAlphaToCoverageDitherControlNV)
+
+#define GLEW_NV_alpha_to_coverage_dither_control GLEW_GET_VAR(__GLEW_NV_alpha_to_coverage_dither_control)
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+/* ------------------------------- GL_NV_bgr ------------------------------- */
+
+#ifndef GL_NV_bgr
+#define GL_NV_bgr 1
+
+#define GL_BGR_NV 0x80E0
+
+#define GLEW_NV_bgr GLEW_GET_VAR(__GLEW_NV_bgr)
+
+#endif /* GL_NV_bgr */
+
+/* ------------------- GL_NV_bindless_multi_draw_indirect ------------------ */
+
+#ifndef GL_NV_bindless_multi_draw_indirect
+#define GL_NV_bindless_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+
+#define glMultiDrawArraysIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessNV)
+#define glMultiDrawElementsIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessNV)
+
+#define GLEW_NV_bindless_multi_draw_indirect GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect)
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+/* ---------------- GL_NV_bindless_multi_draw_indirect_count --------------- */
+
+#ifndef GL_NV_bindless_multi_draw_indirect_count
+#define GL_NV_bindless_multi_draw_indirect_count 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+
+#define glMultiDrawArraysIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessCountNV)
+#define glMultiDrawElementsIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessCountNV)
+
+#define GLEW_NV_bindless_multi_draw_indirect_count GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect_count)
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+/* ------------------------- GL_NV_bindless_texture ------------------------ */
+
+#ifndef GL_NV_bindless_texture
+#define GL_NV_bindless_texture 1
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
+typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetImageHandleNV GLEW_GET_FUN(__glewGetImageHandleNV)
+#define glGetTextureHandleNV GLEW_GET_FUN(__glewGetTextureHandleNV)
+#define glGetTextureSamplerHandleNV GLEW_GET_FUN(__glewGetTextureSamplerHandleNV)
+#define glIsImageHandleResidentNV GLEW_GET_FUN(__glewIsImageHandleResidentNV)
+#define glIsTextureHandleResidentNV GLEW_GET_FUN(__glewIsTextureHandleResidentNV)
+#define glMakeImageHandleNonResidentNV GLEW_GET_FUN(__glewMakeImageHandleNonResidentNV)
+#define glMakeImageHandleResidentNV GLEW_GET_FUN(__glewMakeImageHandleResidentNV)
+#define glMakeTextureHandleNonResidentNV GLEW_GET_FUN(__glewMakeTextureHandleNonResidentNV)
+#define glMakeTextureHandleResidentNV GLEW_GET_FUN(__glewMakeTextureHandleResidentNV)
+#define glProgramUniformHandleui64NV GLEW_GET_FUN(__glewProgramUniformHandleui64NV)
+#define glProgramUniformHandleui64vNV GLEW_GET_FUN(__glewProgramUniformHandleui64vNV)
+#define glUniformHandleui64NV GLEW_GET_FUN(__glewUniformHandleui64NV)
+#define glUniformHandleui64vNV GLEW_GET_FUN(__glewUniformHandleui64vNV)
+
+#define GLEW_NV_bindless_texture GLEW_GET_VAR(__GLEW_NV_bindless_texture)
+
+#endif /* GL_NV_bindless_texture */
+
+/* --------------------- GL_NV_blend_equation_advanced --------------------- */
+
+#ifndef GL_NV_blend_equation_advanced
+#define GL_NV_blend_equation_advanced 1
+
+#define GL_XOR_NV 0x1506
+#define GL_RED_NV 0x1903
+#define GL_GREEN_NV 0x1904
+#define GL_BLUE_NV 0x1905
+#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+#define GL_BLEND_OVERLAP_NV 0x9281
+#define GL_UNCORRELATED_NV 0x9282
+#define GL_DISJOINT_NV 0x9283
+#define GL_CONJOINT_NV 0x9284
+#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+#define GL_SRC_NV 0x9286
+#define GL_DST_NV 0x9287
+#define GL_SRC_OVER_NV 0x9288
+#define GL_DST_OVER_NV 0x9289
+#define GL_SRC_IN_NV 0x928A
+#define GL_DST_IN_NV 0x928B
+#define GL_SRC_OUT_NV 0x928C
+#define GL_DST_OUT_NV 0x928D
+#define GL_SRC_ATOP_NV 0x928E
+#define GL_DST_ATOP_NV 0x928F
+#define GL_PLUS_NV 0x9291
+#define GL_PLUS_DARKER_NV 0x9292
+#define GL_MULTIPLY_NV 0x9294
+#define GL_SCREEN_NV 0x9295
+#define GL_OVERLAY_NV 0x9296
+#define GL_DARKEN_NV 0x9297
+#define GL_LIGHTEN_NV 0x9298
+#define GL_COLORDODGE_NV 0x9299
+#define GL_COLORBURN_NV 0x929A
+#define GL_HARDLIGHT_NV 0x929B
+#define GL_SOFTLIGHT_NV 0x929C
+#define GL_DIFFERENCE_NV 0x929E
+#define GL_MINUS_NV 0x929F
+#define GL_EXCLUSION_NV 0x92A0
+#define GL_CONTRAST_NV 0x92A1
+#define GL_INVERT_RGB_NV 0x92A3
+#define GL_LINEARDODGE_NV 0x92A4
+#define GL_LINEARBURN_NV 0x92A5
+#define GL_VIVIDLIGHT_NV 0x92A6
+#define GL_LINEARLIGHT_NV 0x92A7
+#define GL_PINLIGHT_NV 0x92A8
+#define GL_HARDMIX_NV 0x92A9
+#define GL_HSL_HUE_NV 0x92AD
+#define GL_HSL_SATURATION_NV 0x92AE
+#define GL_HSL_COLOR_NV 0x92AF
+#define GL_HSL_LUMINOSITY_NV 0x92B0
+#define GL_PLUS_CLAMPED_NV 0x92B1
+#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+#define GL_MINUS_CLAMPED_NV 0x92B3
+#define GL_INVERT_OVG_NV 0x92B4
+
+typedef void (GLAPIENTRY * PFNGLBLENDBARRIERNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
+
+#define glBlendBarrierNV GLEW_GET_FUN(__glewBlendBarrierNV)
+#define glBlendParameteriNV GLEW_GET_FUN(__glewBlendParameteriNV)
+
+#define GLEW_NV_blend_equation_advanced GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced)
+
+#endif /* GL_NV_blend_equation_advanced */
+
+/* ----------------- GL_NV_blend_equation_advanced_coherent ---------------- */
+
+#ifndef GL_NV_blend_equation_advanced_coherent
+#define GL_NV_blend_equation_advanced_coherent 1
+
+#define GLEW_NV_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced_coherent)
+
+#endif /* GL_NV_blend_equation_advanced_coherent */
+
+/* ----------------------- GL_NV_blend_minmax_factor ----------------------- */
+
+#ifndef GL_NV_blend_minmax_factor
+#define GL_NV_blend_minmax_factor 1
+
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+
+#define GLEW_NV_blend_minmax_factor GLEW_GET_VAR(__GLEW_NV_blend_minmax_factor)
+
+#endif /* GL_NV_blend_minmax_factor */
+
+/* --------------------------- GL_NV_blend_square -------------------------- */
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+
+#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square)
+
+#endif /* GL_NV_blend_square */
+
+/* ----------------------- GL_NV_clip_space_w_scaling ---------------------- */
+
+#ifndef GL_NV_clip_space_w_scaling
+#define GL_NV_clip_space_w_scaling 1
+
+#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+
+typedef void (GLAPIENTRY * PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+
+#define glViewportPositionWScaleNV GLEW_GET_FUN(__glewViewportPositionWScaleNV)
+
+#define GLEW_NV_clip_space_w_scaling GLEW_GET_VAR(__GLEW_NV_clip_space_w_scaling)
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+/* --------------------------- GL_NV_command_list -------------------------- */
+
+#ifndef GL_NV_command_list
+#define GL_NV_command_list 1
+
+#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+#define GL_NOP_COMMAND_NV 0x0001
+#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000a
+#define GL_BLEND_COLOR_COMMAND_NV 0x000b
+#define GL_STENCIL_REF_COMMAND_NV 0x000c
+#define GL_LINE_WIDTH_COMMAND_NV 0x000d
+#define GL_POLYGON_OFFSET_COMMAND_NV 0x000e
+#define GL_ALPHA_REF_COMMAND_NV 0x000f
+#define GL_VIEWPORT_COMMAND_NV 0x0010
+#define GL_SCISSOR_COMMAND_NV 0x0011
+#define GL_FRONT_FACE_COMMAND_NV 0x0012
+
+typedef void (GLAPIENTRY * PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);
+typedef void (GLAPIENTRY * PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);
+typedef void (GLAPIENTRY * PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);
+typedef void (GLAPIENTRY * PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint* lists);
+typedef void (GLAPIENTRY * PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint* states);
+typedef void (GLAPIENTRY * PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint* lists);
+typedef void (GLAPIENTRY * PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint* states);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef GLuint (GLAPIENTRY * PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);
+typedef GLushort (GLAPIENTRY * PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);
+typedef GLboolean (GLAPIENTRY * PFNGLISCOMMANDLISTNVPROC) (GLuint list);
+typedef GLboolean (GLAPIENTRY * PFNGLISSTATENVPROC) (GLuint state);
+typedef void (GLAPIENTRY * PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void** indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef void (GLAPIENTRY * PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);
+
+#define glCallCommandListNV GLEW_GET_FUN(__glewCallCommandListNV)
+#define glCommandListSegmentsNV GLEW_GET_FUN(__glewCommandListSegmentsNV)
+#define glCompileCommandListNV GLEW_GET_FUN(__glewCompileCommandListNV)
+#define glCreateCommandListsNV GLEW_GET_FUN(__glewCreateCommandListsNV)
+#define glCreateStatesNV GLEW_GET_FUN(__glewCreateStatesNV)
+#define glDeleteCommandListsNV GLEW_GET_FUN(__glewDeleteCommandListsNV)
+#define glDeleteStatesNV GLEW_GET_FUN(__glewDeleteStatesNV)
+#define glDrawCommandsAddressNV GLEW_GET_FUN(__glewDrawCommandsAddressNV)
+#define glDrawCommandsNV GLEW_GET_FUN(__glewDrawCommandsNV)
+#define glDrawCommandsStatesAddressNV GLEW_GET_FUN(__glewDrawCommandsStatesAddressNV)
+#define glDrawCommandsStatesNV GLEW_GET_FUN(__glewDrawCommandsStatesNV)
+#define glGetCommandHeaderNV GLEW_GET_FUN(__glewGetCommandHeaderNV)
+#define glGetStageIndexNV GLEW_GET_FUN(__glewGetStageIndexNV)
+#define glIsCommandListNV GLEW_GET_FUN(__glewIsCommandListNV)
+#define glIsStateNV GLEW_GET_FUN(__glewIsStateNV)
+#define glListDrawCommandsStatesClientNV GLEW_GET_FUN(__glewListDrawCommandsStatesClientNV)
+#define glStateCaptureNV GLEW_GET_FUN(__glewStateCaptureNV)
+
+#define GLEW_NV_command_list GLEW_GET_VAR(__GLEW_NV_command_list)
+
+#endif /* GL_NV_command_list */
+
+/* ------------------------- GL_NV_compute_program5 ------------------------ */
+
+#ifndef GL_NV_compute_program5
+#define GL_NV_compute_program5 1
+
+#define GL_COMPUTE_PROGRAM_NV 0x90FB
+#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
+
+#define GLEW_NV_compute_program5 GLEW_GET_VAR(__GLEW_NV_compute_program5)
+
+#endif /* GL_NV_compute_program5 */
+
+/* -------------------- GL_NV_compute_shader_derivatives ------------------- */
+
+#ifndef GL_NV_compute_shader_derivatives
+#define GL_NV_compute_shader_derivatives 1
+
+#define GLEW_NV_compute_shader_derivatives GLEW_GET_VAR(__GLEW_NV_compute_shader_derivatives)
+
+#endif /* GL_NV_compute_shader_derivatives */
+
+/* ------------------------ GL_NV_conditional_render ----------------------- */
+
+#ifndef GL_NV_conditional_render
+#define GL_NV_conditional_render 1
+
+#define GL_QUERY_WAIT_NV 0x8E13
+#define GL_QUERY_NO_WAIT_NV 0x8E14
+#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void);
+
+#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV)
+#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV)
+
+#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render)
+
+#endif /* GL_NV_conditional_render */
+
+/* ----------------------- GL_NV_conservative_raster ----------------------- */
+
+#ifndef GL_NV_conservative_raster
+#define GL_NV_conservative_raster 1
+
+#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+
+typedef void (GLAPIENTRY * PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
+
+#define glSubpixelPrecisionBiasNV GLEW_GET_FUN(__glewSubpixelPrecisionBiasNV)
+
+#define GLEW_NV_conservative_raster GLEW_GET_VAR(__GLEW_NV_conservative_raster)
+
+#endif /* GL_NV_conservative_raster */
+
+/* -------------------- GL_NV_conservative_raster_dilate ------------------- */
+
+#ifndef GL_NV_conservative_raster_dilate
+#define GL_NV_conservative_raster_dilate 1
+
+#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+
+typedef void (GLAPIENTRY * PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);
+
+#define glConservativeRasterParameterfNV GLEW_GET_FUN(__glewConservativeRasterParameterfNV)
+
+#define GLEW_NV_conservative_raster_dilate GLEW_GET_VAR(__GLEW_NV_conservative_raster_dilate)
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+/* ------------------- GL_NV_conservative_raster_pre_snap ------------------ */
+
+#ifndef GL_NV_conservative_raster_pre_snap
+#define GL_NV_conservative_raster_pre_snap 1
+
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
+
+#define GLEW_NV_conservative_raster_pre_snap GLEW_GET_VAR(__GLEW_NV_conservative_raster_pre_snap)
+
+#endif /* GL_NV_conservative_raster_pre_snap */
+
+/* -------------- GL_NV_conservative_raster_pre_snap_triangles ------------- */
+
+#ifndef GL_NV_conservative_raster_pre_snap_triangles
+#define GL_NV_conservative_raster_pre_snap_triangles 1
+
+#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+
+typedef void (GLAPIENTRY * PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
+
+#define glConservativeRasterParameteriNV GLEW_GET_FUN(__glewConservativeRasterParameteriNV)
+
+#define GLEW_NV_conservative_raster_pre_snap_triangles GLEW_GET_VAR(__GLEW_NV_conservative_raster_pre_snap_triangles)
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+/* --------------- GL_NV_conservative_raster_underestimation --------------- */
+
+#ifndef GL_NV_conservative_raster_underestimation
+#define GL_NV_conservative_raster_underestimation 1
+
+#define GLEW_NV_conservative_raster_underestimation GLEW_GET_VAR(__GLEW_NV_conservative_raster_underestimation)
+
+#endif /* GL_NV_conservative_raster_underestimation */
+
+/* --------------------------- GL_NV_copy_buffer --------------------------- */
+
+#ifndef GL_NV_copy_buffer
+#define GL_NV_copy_buffer 1
+
+#define GL_COPY_READ_BUFFER_NV 0x8F36
+#define GL_COPY_WRITE_BUFFER_NV 0x8F37
+
+typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
+
+#define glCopyBufferSubDataNV GLEW_GET_FUN(__glewCopyBufferSubDataNV)
+
+#define GLEW_NV_copy_buffer GLEW_GET_VAR(__GLEW_NV_copy_buffer)
+
+#endif /* GL_NV_copy_buffer */
+
+/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+
+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
+
+#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color)
+
+#endif /* GL_NV_copy_depth_to_color */
+
+/* ---------------------------- GL_NV_copy_image --------------------------- */
+
+#ifndef GL_NV_copy_image
+#define GL_NV_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV)
+
+#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image)
+
+#endif /* GL_NV_copy_image */
+
+/* -------------------------- GL_NV_deep_texture3D ------------------------- */
+
+#ifndef GL_NV_deep_texture3D
+#define GL_NV_deep_texture3D 1
+
+#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
+#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
+
+#define GLEW_NV_deep_texture3D GLEW_GET_VAR(__GLEW_NV_deep_texture3D)
+
+#endif /* GL_NV_deep_texture3D */
+
+/* ------------------------ GL_NV_depth_buffer_float ----------------------- */
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_NV_depth_buffer_float 1
+
+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
+typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
+
+#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV)
+#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV)
+#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV)
+
+#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float)
+
+#endif /* GL_NV_depth_buffer_float */
+
+/* --------------------------- GL_NV_depth_clamp --------------------------- */
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+
+#define GL_DEPTH_CLAMP_NV 0x864F
+
+#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp)
+
+#endif /* GL_NV_depth_clamp */
+
+/* ------------------------- GL_NV_depth_nonlinear ------------------------- */
+
+#ifndef GL_NV_depth_nonlinear
+#define GL_NV_depth_nonlinear 1
+
+#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
+
+#define GLEW_NV_depth_nonlinear GLEW_GET_VAR(__GLEW_NV_depth_nonlinear)
+
+#endif /* GL_NV_depth_nonlinear */
+
+/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */
+
+#ifndef GL_NV_depth_range_unclamped
+#define GL_NV_depth_range_unclamped 1
+
+#define GL_SAMPLE_COUNT_BITS_NV 0x8864
+#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865
+#define GL_QUERY_RESULT_NV 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867
+#define GL_SAMPLE_COUNT_NV 0x8914
+
+#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped)
+
+#endif /* GL_NV_depth_range_unclamped */
+
+/* --------------------------- GL_NV_draw_buffers -------------------------- */
+
+#ifndef GL_NV_draw_buffers
+#define GL_NV_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_NV 0x8824
+#define GL_DRAW_BUFFER0_NV 0x8825
+#define GL_DRAW_BUFFER1_NV 0x8826
+#define GL_DRAW_BUFFER2_NV 0x8827
+#define GL_DRAW_BUFFER3_NV 0x8828
+#define GL_DRAW_BUFFER4_NV 0x8829
+#define GL_DRAW_BUFFER5_NV 0x882A
+#define GL_DRAW_BUFFER6_NV 0x882B
+#define GL_DRAW_BUFFER7_NV 0x882C
+#define GL_DRAW_BUFFER8_NV 0x882D
+#define GL_DRAW_BUFFER9_NV 0x882E
+#define GL_DRAW_BUFFER10_NV 0x882F
+#define GL_DRAW_BUFFER11_NV 0x8830
+#define GL_DRAW_BUFFER12_NV 0x8831
+#define GL_DRAW_BUFFER13_NV 0x8832
+#define GL_DRAW_BUFFER14_NV 0x8833
+#define GL_DRAW_BUFFER15_NV 0x8834
+#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
+#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
+#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
+#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
+#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
+#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
+#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
+#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
+#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
+#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
+#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
+#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
+#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
+#define GL_COLOR_ATTACHMENT13_NV 0x8CED
+#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
+#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersNV GLEW_GET_FUN(__glewDrawBuffersNV)
+
+#define GLEW_NV_draw_buffers GLEW_GET_VAR(__GLEW_NV_draw_buffers)
+
+#endif /* GL_NV_draw_buffers */
+
+/* -------------------------- GL_NV_draw_instanced ------------------------- */
+
+#ifndef GL_NV_draw_instanced
+#define GL_NV_draw_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+
+#define glDrawArraysInstancedNV GLEW_GET_FUN(__glewDrawArraysInstancedNV)
+#define glDrawElementsInstancedNV GLEW_GET_FUN(__glewDrawElementsInstancedNV)
+
+#define GLEW_NV_draw_instanced GLEW_GET_VAR(__GLEW_NV_draw_instanced)
+
+#endif /* GL_NV_draw_instanced */
+
+/* --------------------------- GL_NV_draw_texture -------------------------- */
+
+#ifndef GL_NV_draw_texture
+#define GL_NV_draw_texture 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+
+#define glDrawTextureNV GLEW_GET_FUN(__glewDrawTextureNV)
+
+#define GLEW_NV_draw_texture GLEW_GET_VAR(__GLEW_NV_draw_texture)
+
+#endif /* GL_NV_draw_texture */
+
+/* ------------------------ GL_NV_draw_vulkan_image ------------------------ */
+
+#ifndef GL_NV_draw_vulkan_image
+#define GL_NV_draw_vulkan_image 1
+
+typedef void (APIENTRY *GLVULKANPROCNV)(void);
+
+typedef void (GLAPIENTRY * PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+typedef GLVULKANPROCNV (GLAPIENTRY * PFNGLGETVKPROCADDRNVPROC) (const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
+typedef void (GLAPIENTRY * PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+typedef void (GLAPIENTRY * PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+
+#define glDrawVkImageNV GLEW_GET_FUN(__glewDrawVkImageNV)
+#define glGetVkProcAddrNV GLEW_GET_FUN(__glewGetVkProcAddrNV)
+#define glSignalVkFenceNV GLEW_GET_FUN(__glewSignalVkFenceNV)
+#define glSignalVkSemaphoreNV GLEW_GET_FUN(__glewSignalVkSemaphoreNV)
+#define glWaitVkSemaphoreNV GLEW_GET_FUN(__glewWaitVkSemaphoreNV)
+
+#define GLEW_NV_draw_vulkan_image GLEW_GET_VAR(__GLEW_NV_draw_vulkan_image)
+
+#endif /* GL_NV_draw_vulkan_image */
+
+/* ---------------------------- GL_NV_evaluators --------------------------- */
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+
+#define GL_EVAL_2D_NV 0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+#define GL_MAP_TESSELLATION_NV 0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+
+typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
+typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
+typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV)
+#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV)
+#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV)
+#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV)
+#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV)
+#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV)
+#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV)
+#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV)
+#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV)
+
+#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators)
+
+#endif /* GL_NV_evaluators */
+
+/* --------------------- GL_NV_explicit_attrib_location -------------------- */
+
+#ifndef GL_NV_explicit_attrib_location
+#define GL_NV_explicit_attrib_location 1
+
+#define GLEW_NV_explicit_attrib_location GLEW_GET_VAR(__GLEW_NV_explicit_attrib_location)
+
+#endif /* GL_NV_explicit_attrib_location */
+
+/* ----------------------- GL_NV_explicit_multisample ---------------------- */
+
+#ifndef GL_NV_explicit_multisample
+#define GL_NV_explicit_multisample 1
+
+#define GL_SAMPLE_POSITION_NV 0x8E50
+#define GL_SAMPLE_MASK_NV 0x8E51
+#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
+#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+
+typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
+
+#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV)
+#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV)
+#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV)
+
+#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample)
+
+#endif /* GL_NV_explicit_multisample */
+
+/* ---------------------- GL_NV_fbo_color_attachments ---------------------- */
+
+#ifndef GL_NV_fbo_color_attachments
+#define GL_NV_fbo_color_attachments 1
+
+#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
+#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
+#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
+#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
+#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
+#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
+#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
+#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
+#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
+#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
+#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
+#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
+#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
+#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
+#define GL_COLOR_ATTACHMENT13_NV 0x8CED
+#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
+#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
+
+#define GLEW_NV_fbo_color_attachments GLEW_GET_VAR(__GLEW_NV_fbo_color_attachments)
+
+#endif /* GL_NV_fbo_color_attachments */
+
+/* ------------------------------ GL_NV_fence ------------------------------ */
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+
+#define GL_ALL_COMPLETED_NV 0x84F2
+#define GL_FENCE_STATUS_NV 0x84F3
+#define GL_FENCE_CONDITION_NV 0x84F4
+
+typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence);
+
+#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV)
+#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV)
+#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV)
+#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV)
+#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV)
+#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV)
+#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV)
+
+#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence)
+
+#endif /* GL_NV_fence */
+
+/* -------------------------- GL_NV_fill_rectangle ------------------------- */
+
+#ifndef GL_NV_fill_rectangle
+#define GL_NV_fill_rectangle 1
+
+#define GL_FILL_RECTANGLE_NV 0x933C
+
+#define GLEW_NV_fill_rectangle GLEW_GET_VAR(__GLEW_NV_fill_rectangle)
+
+#endif /* GL_NV_fill_rectangle */
+
+/* --------------------------- GL_NV_float_buffer -------------------------- */
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
+
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+
+#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer)
+
+#endif /* GL_NV_float_buffer */
+
+/* --------------------------- GL_NV_fog_distance -------------------------- */
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+
+#define GL_FOG_DISTANCE_MODE_NV 0x855A
+#define GL_EYE_RADIAL_NV 0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
+
+#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance)
+
+#endif /* GL_NV_fog_distance */
+
+/* -------------------- GL_NV_fragment_coverage_to_color ------------------- */
+
+#ifndef GL_NV_fragment_coverage_to_color
+#define GL_NV_fragment_coverage_to_color 1
+
+#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
+
+#define glFragmentCoverageColorNV GLEW_GET_FUN(__glewFragmentCoverageColorNV)
+
+#define GLEW_NV_fragment_coverage_to_color GLEW_GET_VAR(__GLEW_NV_fragment_coverage_to_color)
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+/* ------------------------- GL_NV_fragment_program ------------------------ */
+
+#ifndef GL_NV_fragment_program
+#define GL_NV_fragment_program 1
+
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+#define GL_FRAGMENT_PROGRAM_NV 0x8870
+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]);
+
+#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV)
+#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV)
+#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV)
+#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV)
+#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV)
+#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV)
+
+#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program)
+
+#endif /* GL_NV_fragment_program */
+
+/* ------------------------ GL_NV_fragment_program2 ------------------------ */
+
+#ifndef GL_NV_fragment_program2
+#define GL_NV_fragment_program2 1
+
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
+
+#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2)
+
+#endif /* GL_NV_fragment_program2 */
+
+/* ------------------------ GL_NV_fragment_program4 ------------------------ */
+
+#ifndef GL_NV_fragment_program4
+#define GL_NV_fragment_program4 1
+
+#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4)
+
+#endif /* GL_NV_fragment_program4 */
+
+/* --------------------- GL_NV_fragment_program_option --------------------- */
+
+#ifndef GL_NV_fragment_program_option
+#define GL_NV_fragment_program_option 1
+
+#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option)
+
+#endif /* GL_NV_fragment_program_option */
+
+/* ------------------- GL_NV_fragment_shader_barycentric ------------------- */
+
+#ifndef GL_NV_fragment_shader_barycentric
+#define GL_NV_fragment_shader_barycentric 1
+
+#define GLEW_NV_fragment_shader_barycentric GLEW_GET_VAR(__GLEW_NV_fragment_shader_barycentric)
+
+#endif /* GL_NV_fragment_shader_barycentric */
+
+/* -------------------- GL_NV_fragment_shader_interlock -------------------- */
+
+#ifndef GL_NV_fragment_shader_interlock
+#define GL_NV_fragment_shader_interlock 1
+
+#define GLEW_NV_fragment_shader_interlock GLEW_GET_VAR(__GLEW_NV_fragment_shader_interlock)
+
+#endif /* GL_NV_fragment_shader_interlock */
+
+/* ------------------------- GL_NV_framebuffer_blit ------------------------ */
+
+#ifndef GL_NV_framebuffer_blit
+#define GL_NV_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
+#define GL_READ_FRAMEBUFFER_NV 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferNV GLEW_GET_FUN(__glewBlitFramebufferNV)
+
+#define GLEW_NV_framebuffer_blit GLEW_GET_VAR(__GLEW_NV_framebuffer_blit)
+
+#endif /* GL_NV_framebuffer_blit */
+
+/* -------------------- GL_NV_framebuffer_mixed_samples -------------------- */
+
+#ifndef GL_NV_framebuffer_mixed_samples
+#define GL_NV_framebuffer_mixed_samples 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+
+#define GLEW_NV_framebuffer_mixed_samples GLEW_GET_VAR(__GLEW_NV_framebuffer_mixed_samples)
+
+#endif /* GL_NV_framebuffer_mixed_samples */
+
+/* --------------------- GL_NV_framebuffer_multisample --------------------- */
+
+#ifndef GL_NV_framebuffer_multisample
+#define GL_NV_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
+#define GL_MAX_SAMPLES_NV 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleNV)
+
+#define GLEW_NV_framebuffer_multisample GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample)
+
+#endif /* GL_NV_framebuffer_multisample */
+
+/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV)
+
+#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage)
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+/* ----------------------- GL_NV_generate_mipmap_sRGB ---------------------- */
+
+#ifndef GL_NV_generate_mipmap_sRGB
+#define GL_NV_generate_mipmap_sRGB 1
+
+#define GLEW_NV_generate_mipmap_sRGB GLEW_GET_VAR(__GLEW_NV_generate_mipmap_sRGB)
+
+#endif /* GL_NV_generate_mipmap_sRGB */
+
+/* ------------------------ GL_NV_geometry_program4 ------------------------ */
+
+#ifndef GL_NV_geometry_program4
+#define GL_NV_geometry_program4 1
+
+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
+
+#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV)
+
+#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4)
+
+#endif /* GL_NV_geometry_program4 */
+
+/* ------------------------- GL_NV_geometry_shader4 ------------------------ */
+
+#ifndef GL_NV_geometry_shader4
+#define GL_NV_geometry_shader4 1
+
+#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4)
+
+#endif /* GL_NV_geometry_shader4 */
+
+/* ------------------- GL_NV_geometry_shader_passthrough ------------------- */
+
+#ifndef GL_NV_geometry_shader_passthrough
+#define GL_NV_geometry_shader_passthrough 1
+
+#define GLEW_NV_geometry_shader_passthrough GLEW_GET_VAR(__GLEW_NV_geometry_shader_passthrough)
+
+#endif /* GL_NV_geometry_shader_passthrough */
+
+/* -------------------------- GL_NV_gpu_multicast -------------------------- */
+
+#ifndef GL_NV_gpu_multicast
+#define GL_NV_gpu_multicast 1
+
+#define GL_PER_GPU_STORAGE_BIT_NV 0x0800
+#define GL_MULTICAST_GPUS_NV 0x92BA
+#define GL_PER_GPU_STORAGE_NV 0x9548
+#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
+#define GL_RENDER_GPU_MASK_NV 0x9558
+
+typedef void (GLAPIENTRY * PFNGLMULTICASTBARRIERNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY * PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY * PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask);
+typedef void (GLAPIENTRY * PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask);
+
+#define glMulticastBarrierNV GLEW_GET_FUN(__glewMulticastBarrierNV)
+#define glMulticastBlitFramebufferNV GLEW_GET_FUN(__glewMulticastBlitFramebufferNV)
+#define glMulticastBufferSubDataNV GLEW_GET_FUN(__glewMulticastBufferSubDataNV)
+#define glMulticastCopyBufferSubDataNV GLEW_GET_FUN(__glewMulticastCopyBufferSubDataNV)
+#define glMulticastCopyImageSubDataNV GLEW_GET_FUN(__glewMulticastCopyImageSubDataNV)
+#define glMulticastFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewMulticastFramebufferSampleLocationsfvNV)
+#define glMulticastGetQueryObjecti64vNV GLEW_GET_FUN(__glewMulticastGetQueryObjecti64vNV)
+#define glMulticastGetQueryObjectivNV GLEW_GET_FUN(__glewMulticastGetQueryObjectivNV)
+#define glMulticastGetQueryObjectui64vNV GLEW_GET_FUN(__glewMulticastGetQueryObjectui64vNV)
+#define glMulticastGetQueryObjectuivNV GLEW_GET_FUN(__glewMulticastGetQueryObjectuivNV)
+#define glMulticastWaitSyncNV GLEW_GET_FUN(__glewMulticastWaitSyncNV)
+#define glRenderGpuMaskNV GLEW_GET_FUN(__glewRenderGpuMaskNV)
+
+#define GLEW_NV_gpu_multicast GLEW_GET_VAR(__GLEW_NV_gpu_multicast)
+
+#endif /* GL_NV_gpu_multicast */
+
+/* --------------------------- GL_NV_gpu_program4 -------------------------- */
+
+#ifndef GL_NV_gpu_program4
+#define GL_NV_gpu_program4 1
+
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+
+#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV)
+#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV)
+#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV)
+#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV)
+#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV)
+#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV)
+#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV)
+#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV)
+#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV)
+#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV)
+#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV)
+#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV)
+
+#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4)
+
+#endif /* GL_NV_gpu_program4 */
+
+/* --------------------------- GL_NV_gpu_program5 -------------------------- */
+
+#ifndef GL_NV_gpu_program5
+#define GL_NV_gpu_program5 1
+
+#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
+
+#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5)
+
+#endif /* GL_NV_gpu_program5 */
+
+/* -------------------- GL_NV_gpu_program5_mem_extended -------------------- */
+
+#ifndef GL_NV_gpu_program5_mem_extended
+#define GL_NV_gpu_program5_mem_extended 1
+
+#define GLEW_NV_gpu_program5_mem_extended GLEW_GET_VAR(__GLEW_NV_gpu_program5_mem_extended)
+
+#endif /* GL_NV_gpu_program5_mem_extended */
+
+/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */
+
+#ifndef GL_NV_gpu_program_fp64
+#define GL_NV_gpu_program_fp64 1
+
+#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64)
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+/* --------------------------- GL_NV_gpu_shader5 --------------------------- */
+
+#ifndef GL_NV_gpu_shader5
+#define GL_NV_gpu_shader5 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+
+#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV)
+#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV)
+#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV)
+#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV)
+#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV)
+#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV)
+#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV)
+#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV)
+#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV)
+#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV)
+#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV)
+#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV)
+#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV)
+#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV)
+#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV)
+#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV)
+#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV)
+#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV)
+#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV)
+#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV)
+#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV)
+#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV)
+#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV)
+#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV)
+#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV)
+#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV)
+#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV)
+#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV)
+#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV)
+#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV)
+#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV)
+#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV)
+#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV)
+#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV)
+
+#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5)
+
+#endif /* GL_NV_gpu_shader5 */
+
+/* ---------------------------- GL_NV_half_float --------------------------- */
+
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+
+#define GL_HALF_FLOAT_NV 0x140B
+
+typedef unsigned short GLhalf;
+
+typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue);
+typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha);
+typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz);
+typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y);
+typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z);
+typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w);
+typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight);
+
+#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV)
+#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV)
+#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV)
+#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV)
+#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV)
+#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV)
+#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV)
+#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV)
+#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV)
+#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV)
+#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV)
+#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV)
+#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV)
+#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV)
+#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV)
+#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV)
+#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV)
+#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV)
+#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV)
+#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV)
+#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV)
+#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV)
+#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV)
+#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV)
+#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV)
+#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV)
+#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV)
+#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV)
+#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV)
+#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV)
+#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV)
+#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV)
+#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV)
+#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV)
+#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV)
+#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV)
+#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV)
+#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV)
+#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV)
+#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV)
+#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV)
+#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV)
+#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV)
+#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV)
+#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV)
+#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV)
+
+#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float)
+
+#endif /* GL_NV_half_float */
+
+/* -------------------------- GL_NV_image_formats -------------------------- */
+
+#ifndef GL_NV_image_formats
+#define GL_NV_image_formats 1
+
+#define GLEW_NV_image_formats GLEW_GET_VAR(__GLEW_NV_image_formats)
+
+#endif /* GL_NV_image_formats */
+
+/* ------------------------- GL_NV_instanced_arrays ------------------------ */
+
+#ifndef GL_NV_instanced_arrays
+#define GL_NV_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisorNV GLEW_GET_FUN(__glewVertexAttribDivisorNV)
+
+#define GLEW_NV_instanced_arrays GLEW_GET_VAR(__GLEW_NV_instanced_arrays)
+
+#endif /* GL_NV_instanced_arrays */
+
+/* ------------------- GL_NV_internalformat_sample_query ------------------- */
+
+#ifndef GL_NV_internalformat_sample_query
+#define GL_NV_internalformat_sample_query 1
+
+#define GL_MULTISAMPLES_NV 0x9371
+#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+#define GL_CONFORMANT_NV 0x9374
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params);
+
+#define glGetInternalformatSampleivNV GLEW_GET_FUN(__glewGetInternalformatSampleivNV)
+
+#define GLEW_NV_internalformat_sample_query GLEW_GET_VAR(__GLEW_NV_internalformat_sample_query)
+
+#endif /* GL_NV_internalformat_sample_query */
+
+/* ------------------------ GL_NV_light_max_exponent ----------------------- */
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+
+#define GL_MAX_SHININESS_NV 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
+
+#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent)
+
+#endif /* GL_NV_light_max_exponent */
+
+/* ------------------------ GL_NV_memory_attachment ------------------------ */
+
+#ifndef GL_NV_memory_attachment
+#define GL_NV_memory_attachment 1
+
+#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
+#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
+#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
+#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
+#define GL_MEMORY_ATTACHABLE_NV 0x95A8
+#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
+#define GL_DETACHED_TEXTURES_NV 0x95AA
+#define GL_DETACHED_BUFFERS_NV 0x95AB
+#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC
+#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD
+
+typedef void (GLAPIENTRY * PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);
+
+#define glBufferAttachMemoryNV GLEW_GET_FUN(__glewBufferAttachMemoryNV)
+#define glGetMemoryObjectDetachedResourcesuivNV GLEW_GET_FUN(__glewGetMemoryObjectDetachedResourcesuivNV)
+#define glNamedBufferAttachMemoryNV GLEW_GET_FUN(__glewNamedBufferAttachMemoryNV)
+#define glResetMemoryObjectParameterNV GLEW_GET_FUN(__glewResetMemoryObjectParameterNV)
+#define glTexAttachMemoryNV GLEW_GET_FUN(__glewTexAttachMemoryNV)
+#define glTextureAttachMemoryNV GLEW_GET_FUN(__glewTextureAttachMemoryNV)
+
+#define GLEW_NV_memory_attachment GLEW_GET_VAR(__GLEW_NV_memory_attachment)
+
+#endif /* GL_NV_memory_attachment */
+
+/* ----------------------- GL_NV_memory_object_sparse ---------------------- */
+
+#ifndef GL_NV_memory_object_sparse
+#define GL_NV_memory_object_sparse 1
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+
+#define glBufferPageCommitmentMemNV GLEW_GET_FUN(__glewBufferPageCommitmentMemNV)
+#define glNamedBufferPageCommitmentMemNV GLEW_GET_FUN(__glewNamedBufferPageCommitmentMemNV)
+#define glTexPageCommitmentMemNV GLEW_GET_FUN(__glewTexPageCommitmentMemNV)
+#define glTexturePageCommitmentMemNV GLEW_GET_FUN(__glewTexturePageCommitmentMemNV)
+
+#define GLEW_NV_memory_object_sparse GLEW_GET_VAR(__GLEW_NV_memory_object_sparse)
+
+#endif /* GL_NV_memory_object_sparse */
+
+/* --------------------------- GL_NV_mesh_shader --------------------------- */
+
+#ifndef GL_NV_mesh_shader
+#define GL_NV_mesh_shader 1
+
+#define GL_MESH_SHADER_BIT_NV 0x00000040
+#define GL_TASK_SHADER_BIT_NV 0x00000080
+#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
+#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
+#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
+#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
+#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
+#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
+#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
+#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
+#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
+#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
+#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
+#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
+#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
+#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
+#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
+#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
+#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
+#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
+#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
+#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
+#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
+#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
+#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
+#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
+#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
+#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E
+#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F
+#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
+#define GL_MAX_MESH_VIEWS_NV 0x9557
+#define GL_MESH_SHADER_NV 0x9559
+#define GL_TASK_SHADER_NV 0x955A
+#define GL_MESH_VERTICES_OUT_NV 0x9579
+#define GL_MESH_PRIMITIVES_OUT_NV 0x957A
+#define GL_MESH_OUTPUT_TYPE_NV 0x957B
+#define GL_MESH_SUBROUTINE_NV 0x957C
+#define GL_TASK_SUBROUTINE_NV 0x957D
+#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
+#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
+#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
+#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
+#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
+#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
+
+typedef void (GLAPIENTRY * PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);
+typedef void (GLAPIENTRY * PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
+
+#define glDrawMeshTasksIndirectNV GLEW_GET_FUN(__glewDrawMeshTasksIndirectNV)
+#define glDrawMeshTasksNV GLEW_GET_FUN(__glewDrawMeshTasksNV)
+#define glMultiDrawMeshTasksIndirectCountNV GLEW_GET_FUN(__glewMultiDrawMeshTasksIndirectCountNV)
+#define glMultiDrawMeshTasksIndirectNV GLEW_GET_FUN(__glewMultiDrawMeshTasksIndirectNV)
+
+#define GLEW_NV_mesh_shader GLEW_GET_VAR(__GLEW_NV_mesh_shader)
+
+#endif /* GL_NV_mesh_shader */
+
+/* ----------------------- GL_NV_multisample_coverage ---------------------- */
+
+#ifndef GL_NV_multisample_coverage
+#define GL_NV_multisample_coverage 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+
+#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage)
+
+#endif /* GL_NV_multisample_coverage */
+
+/* --------------------- GL_NV_multisample_filter_hint --------------------- */
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+
+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
+
+#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint)
+
+#endif /* GL_NV_multisample_filter_hint */
+
+/* ----------------------- GL_NV_non_square_matrices ----------------------- */
+
+#ifndef GL_NV_non_square_matrices
+#define GL_NV_non_square_matrices 1
+
+#define GL_FLOAT_MAT2x3_NV 0x8B65
+#define GL_FLOAT_MAT2x4_NV 0x8B66
+#define GL_FLOAT_MAT3x2_NV 0x8B67
+#define GL_FLOAT_MAT3x4_NV 0x8B68
+#define GL_FLOAT_MAT4x2_NV 0x8B69
+#define GL_FLOAT_MAT4x3_NV 0x8B6A
+
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+
+#define glUniformMatrix2x3fvNV GLEW_GET_FUN(__glewUniformMatrix2x3fvNV)
+#define glUniformMatrix2x4fvNV GLEW_GET_FUN(__glewUniformMatrix2x4fvNV)
+#define glUniformMatrix3x2fvNV GLEW_GET_FUN(__glewUniformMatrix3x2fvNV)
+#define glUniformMatrix3x4fvNV GLEW_GET_FUN(__glewUniformMatrix3x4fvNV)
+#define glUniformMatrix4x2fvNV GLEW_GET_FUN(__glewUniformMatrix4x2fvNV)
+#define glUniformMatrix4x3fvNV GLEW_GET_FUN(__glewUniformMatrix4x3fvNV)
+
+#define GLEW_NV_non_square_matrices GLEW_GET_VAR(__GLEW_NV_non_square_matrices)
+
+#endif /* GL_NV_non_square_matrices */
+
+/* ------------------------- GL_NV_occlusion_query ------------------------- */
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+
+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+#define GL_PIXEL_COUNT_NV 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+
+typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+
+#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV)
+#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV)
+#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV)
+#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV)
+#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV)
+#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV)
+#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV)
+
+#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query)
+
+#endif /* GL_NV_occlusion_query */
+
+/* -------------------------- GL_NV_pack_subimage -------------------------- */
+
+#ifndef GL_NV_pack_subimage
+#define GL_NV_pack_subimage 1
+
+#define GL_PACK_ROW_LENGTH_NV 0x0D02
+#define GL_PACK_SKIP_ROWS_NV 0x0D03
+#define GL_PACK_SKIP_PIXELS_NV 0x0D04
+
+#define GLEW_NV_pack_subimage GLEW_GET_VAR(__GLEW_NV_pack_subimage)
+
+#endif /* GL_NV_pack_subimage */
+
+/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_NV 0x84F9
+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
+
+#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil)
+
+#endif /* GL_NV_packed_depth_stencil */
+
+/* --------------------------- GL_NV_packed_float -------------------------- */
+
+#ifndef GL_NV_packed_float
+#define GL_NV_packed_float 1
+
+#define GL_R11F_G11F_B10F_NV 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
+
+#define GLEW_NV_packed_float GLEW_GET_VAR(__GLEW_NV_packed_float)
+
+#endif /* GL_NV_packed_float */
+
+/* ----------------------- GL_NV_packed_float_linear ----------------------- */
+
+#ifndef GL_NV_packed_float_linear
+#define GL_NV_packed_float_linear 1
+
+#define GL_R11F_G11F_B10F_NV 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
+
+#define GLEW_NV_packed_float_linear GLEW_GET_VAR(__GLEW_NV_packed_float_linear)
+
+#endif /* GL_NV_packed_float_linear */
+
+/* --------------------- GL_NV_parameter_buffer_object --------------------- */
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_NV_parameter_buffer_object 1
+
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+
+#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV)
+#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV)
+#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV)
+
+#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object)
+
+#endif /* GL_NV_parameter_buffer_object */
+
+/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */
+
+#ifndef GL_NV_parameter_buffer_object2
+#define GL_NV_parameter_buffer_object2 1
+
+#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2)
+
+#endif /* GL_NV_parameter_buffer_object2 */
+
+/* -------------------------- GL_NV_path_rendering ------------------------- */
+
+#ifndef GL_NV_path_rendering
+#define GL_NV_path_rendering 1
+
+#define GL_CLOSE_PATH_NV 0x00
+#define GL_BOLD_BIT_NV 0x01
+#define GL_GLYPH_WIDTH_BIT_NV 0x01
+#define GL_GLYPH_HEIGHT_BIT_NV 0x02
+#define GL_ITALIC_BIT_NV 0x02
+#define GL_MOVE_TO_NV 0x02
+#define GL_RELATIVE_MOVE_TO_NV 0x03
+#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+#define GL_LINE_TO_NV 0x04
+#define GL_RELATIVE_LINE_TO_NV 0x05
+#define GL_HORIZONTAL_LINE_TO_NV 0x06
+#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+#define GL_VERTICAL_LINE_TO_NV 0x08
+#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+#define GL_QUADRATIC_CURVE_TO_NV 0x0A
+#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+#define GL_CUBIC_CURVE_TO_NV 0x0C
+#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+#define GL_SMALL_CCW_ARC_TO_NV 0x12
+#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+#define GL_SMALL_CW_ARC_TO_NV 0x14
+#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+#define GL_LARGE_CCW_ARC_TO_NV 0x16
+#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+#define GL_LARGE_CW_ARC_TO_NV 0x18
+#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+#define GL_CONIC_CURVE_TO_NV 0x1A
+#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+#define GL_ROUNDED_RECT_NV 0xE8
+#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+#define GL_ROUNDED_RECT2_NV 0xEA
+#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+#define GL_ROUNDED_RECT4_NV 0xEC
+#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+#define GL_ROUNDED_RECT8_NV 0xEE
+#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+#define GL_RESTART_PATH_NV 0xF0
+#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+#define GL_RECT_NV 0xF6
+#define GL_RELATIVE_RECT_NV 0xF7
+#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+#define GL_ARC_TO_NV 0xFE
+#define GL_RELATIVE_ARC_TO_NV 0xFF
+#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PATH_FORMAT_SVG_NV 0x9070
+#define GL_PATH_FORMAT_PS_NV 0x9071
+#define GL_STANDARD_FONT_NAME_NV 0x9072
+#define GL_SYSTEM_FONT_NAME_NV 0x9073
+#define GL_FILE_NAME_NV 0x9074
+#define GL_PATH_STROKE_WIDTH_NV 0x9075
+#define GL_PATH_END_CAPS_NV 0x9076
+#define GL_PATH_INITIAL_END_CAP_NV 0x9077
+#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
+#define GL_PATH_JOIN_STYLE_NV 0x9079
+#define GL_PATH_MITER_LIMIT_NV 0x907A
+#define GL_PATH_DASH_CAPS_NV 0x907B
+#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+#define GL_PATH_DASH_OFFSET_NV 0x907E
+#define GL_PATH_CLIENT_LENGTH_NV 0x907F
+#define GL_PATH_FILL_MODE_NV 0x9080
+#define GL_PATH_FILL_MASK_NV 0x9081
+#define GL_PATH_FILL_COVER_MODE_NV 0x9082
+#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
+#define GL_PATH_STROKE_MASK_NV 0x9084
+#define GL_PATH_STROKE_BOUND_NV 0x9086
+#define GL_COUNT_UP_NV 0x9088
+#define GL_COUNT_DOWN_NV 0x9089
+#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+#define GL_CONVEX_HULL_NV 0x908B
+#define GL_BOUNDING_BOX_NV 0x908D
+#define GL_TRANSLATE_X_NV 0x908E
+#define GL_TRANSLATE_Y_NV 0x908F
+#define GL_TRANSLATE_2D_NV 0x9090
+#define GL_TRANSLATE_3D_NV 0x9091
+#define GL_AFFINE_2D_NV 0x9092
+#define GL_AFFINE_3D_NV 0x9094
+#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+#define GL_UTF8_NV 0x909A
+#define GL_UTF16_NV 0x909B
+#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+#define GL_PATH_COMMAND_COUNT_NV 0x909D
+#define GL_PATH_COORD_COUNT_NV 0x909E
+#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+#define GL_SQUARE_NV 0x90A3
+#define GL_ROUND_NV 0x90A4
+#define GL_TRIANGULAR_NV 0x90A5
+#define GL_BEVEL_NV 0x90A6
+#define GL_MITER_REVERT_NV 0x90A7
+#define GL_MITER_TRUNCATE_NV 0x90A8
+#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
+#define GL_USE_MISSING_GLYPH_NV 0x90AA
+#define GL_PATH_ERROR_POSITION_NV 0x90AB
+#define GL_PATH_FOG_GEN_MODE_NV 0x90AC
+#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+#define GL_ADJACENT_PAIRS_NV 0x90AE
+#define GL_FIRST_TO_REST_NV 0x90AF
+#define GL_PATH_GEN_MODE_NV 0x90B0
+#define GL_PATH_GEN_COEFF_NV 0x90B1
+#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
+#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
+#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+#define GL_MOVE_TO_RESETS_NV 0x90B5
+#define GL_MOVE_TO_CONTINUES_NV 0x90B6
+#define GL_PATH_STENCIL_FUNC_NV 0x90B7
+#define GL_PATH_STENCIL_REF_NV 0x90B8
+#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+#define GL_FONT_UNAVAILABLE_NV 0x936A
+#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
+#define GL_STANDARD_FONT_FORMAT_NV 0x936C
+#define GL_FRAGMENT_INPUT_NV 0x936D
+#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+#define GL_FONT_ASCENDER_BIT_NV 0x00200000
+#define GL_FONT_DESCENDER_BIT_NV 0x00400000
+#define GL_FONT_HEIGHT_BIT_NV 0x00800000
+#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
+typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
+typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte* commands);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat* coords);
+typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat* dashArray);
+typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
+typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
+typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
+typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
+typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path);
+typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
+typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs);
+typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
+typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc);
+typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray);
+typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode);
+typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint* baseAndCount);
+typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY * PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
+typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
+typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
+typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs);
+typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs);
+typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]);
+
+#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV)
+#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV)
+#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV)
+#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV)
+#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV)
+#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV)
+#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV)
+#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV)
+#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV)
+#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV)
+#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV)
+#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV)
+#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV)
+#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV)
+#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV)
+#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV)
+#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV)
+#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV)
+#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV)
+#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV)
+#define glGetProgramResourcefvNV GLEW_GET_FUN(__glewGetProgramResourcefvNV)
+#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV)
+#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV)
+#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV)
+#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV)
+#define glMatrixLoad3x2fNV GLEW_GET_FUN(__glewMatrixLoad3x2fNV)
+#define glMatrixLoad3x3fNV GLEW_GET_FUN(__glewMatrixLoad3x3fNV)
+#define glMatrixLoadTranspose3x3fNV GLEW_GET_FUN(__glewMatrixLoadTranspose3x3fNV)
+#define glMatrixMult3x2fNV GLEW_GET_FUN(__glewMatrixMult3x2fNV)
+#define glMatrixMult3x3fNV GLEW_GET_FUN(__glewMatrixMult3x3fNV)
+#define glMatrixMultTranspose3x3fNV GLEW_GET_FUN(__glewMatrixMultTranspose3x3fNV)
+#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV)
+#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV)
+#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV)
+#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV)
+#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV)
+#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV)
+#define glPathGlyphIndexArrayNV GLEW_GET_FUN(__glewPathGlyphIndexArrayNV)
+#define glPathGlyphIndexRangeNV GLEW_GET_FUN(__glewPathGlyphIndexRangeNV)
+#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV)
+#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV)
+#define glPathMemoryGlyphIndexArrayNV GLEW_GET_FUN(__glewPathMemoryGlyphIndexArrayNV)
+#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV)
+#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV)
+#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV)
+#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV)
+#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV)
+#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV)
+#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV)
+#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV)
+#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV)
+#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV)
+#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV)
+#define glProgramPathFragmentInputGenNV GLEW_GET_FUN(__glewProgramPathFragmentInputGenNV)
+#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV)
+#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV)
+#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV)
+#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV)
+#define glStencilThenCoverFillPathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverFillPathInstancedNV)
+#define glStencilThenCoverFillPathNV GLEW_GET_FUN(__glewStencilThenCoverFillPathNV)
+#define glStencilThenCoverStrokePathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathInstancedNV)
+#define glStencilThenCoverStrokePathNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathNV)
+#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV)
+#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV)
+
+#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering)
+
+#endif /* GL_NV_path_rendering */
+
+/* -------------------- GL_NV_path_rendering_shared_edge ------------------- */
+
+#ifndef GL_NV_path_rendering_shared_edge
+#define GL_NV_path_rendering_shared_edge 1
+
+#define GL_SHARED_EDGE_NV 0xC0
+
+#define GLEW_NV_path_rendering_shared_edge GLEW_GET_VAR(__GLEW_NV_path_rendering_shared_edge)
+
+#endif /* GL_NV_path_rendering_shared_edge */
+
+/* ----------------------- GL_NV_pixel_buffer_object ----------------------- */
+
+#ifndef GL_NV_pixel_buffer_object
+#define GL_NV_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_NV 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
+
+#define GLEW_NV_pixel_buffer_object GLEW_GET_VAR(__GLEW_NV_pixel_buffer_object)
+
+#endif /* GL_NV_pixel_buffer_object */
+
+/* ------------------------- GL_NV_pixel_data_range ------------------------ */
+
+#ifndef GL_NV_pixel_data_range
+#define GL_NV_pixel_data_range 1
+
+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+
+typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void *pointer);
+
+#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV)
+#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV)
+
+#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range)
+
+#endif /* GL_NV_pixel_data_range */
+
+/* ------------------------- GL_NV_platform_binary ------------------------- */
+
+#ifndef GL_NV_platform_binary
+#define GL_NV_platform_binary 1
+
+#define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
+
+#define GLEW_NV_platform_binary GLEW_GET_VAR(__GLEW_NV_platform_binary)
+
+#endif /* GL_NV_platform_binary */
+
+/* --------------------------- GL_NV_point_sprite -------------------------- */
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+
+#define GL_POINT_SPRITE_NV 0x8861
+#define GL_COORD_REPLACE_NV 0x8862
+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params);
+
+#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV)
+#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV)
+
+#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite)
+
+#endif /* GL_NV_point_sprite */
+
+/* --------------------------- GL_NV_polygon_mode -------------------------- */
+
+#ifndef GL_NV_polygon_mode
+#define GL_NV_polygon_mode 1
+
+#define GL_POLYGON_MODE_NV 0x0B40
+#define GL_POINT_NV 0x1B00
+#define GL_LINE_NV 0x1B01
+#define GL_FILL_NV 0x1B02
+#define GL_POLYGON_OFFSET_POINT_NV 0x2A01
+#define GL_POLYGON_OFFSET_LINE_NV 0x2A02
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode);
+
+#define glPolygonModeNV GLEW_GET_FUN(__glewPolygonModeNV)
+
+#define GLEW_NV_polygon_mode GLEW_GET_VAR(__GLEW_NV_polygon_mode)
+
+#endif /* GL_NV_polygon_mode */
+
+/* -------------------------- GL_NV_present_video -------------------------- */
+
+#ifndef GL_NV_present_video
+#define GL_NV_present_video 1
+
+#define GL_FRAME_NV 0x8E26
+#define GL_FIELDS_NV 0x8E27
+#define GL_CURRENT_TIME_NV 0x8E28
+#define GL_NUM_FILL_STREAMS_NV 0x8E29
+#define GL_PRESENT_TIME_NV 0x8E2A
+#define GL_PRESENT_DURATION_NV 0x8E2B
+
+typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+
+#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV)
+#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV)
+#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV)
+#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV)
+#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV)
+#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV)
+
+#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video)
+
+#endif /* GL_NV_present_video */
+
+/* ------------------------ GL_NV_primitive_restart ------------------------ */
+
+#ifndef GL_NV_primitive_restart
+#define GL_NV_primitive_restart 1
+
+#define GL_PRIMITIVE_RESTART_NV 0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void);
+
+#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV)
+#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV)
+
+#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart)
+
+#endif /* GL_NV_primitive_restart */
+
+/* ---------------------- GL_NV_primitive_shading_rate --------------------- */
+
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+
+#define GLEW_NV_primitive_shading_rate GLEW_GET_VAR(__GLEW_NV_primitive_shading_rate)
+
+#endif /* GL_NV_primitive_shading_rate */
+
+/* ------------------------ GL_NV_query_resource_tag ----------------------- */
+
+#ifndef GL_NV_query_resource_tag
+#define GL_NV_query_resource_tag 1
+
+#define GLEW_NV_query_resource_tag GLEW_GET_VAR(__GLEW_NV_query_resource_tag)
+
+#endif /* GL_NV_query_resource_tag */
+
+/* --------------------------- GL_NV_read_buffer --------------------------- */
+
+#ifndef GL_NV_read_buffer
+#define GL_NV_read_buffer 1
+
+#define GL_READ_BUFFER_NV 0x0C02
+
+typedef void (GLAPIENTRY * PFNGLREADBUFFERNVPROC) (GLenum mode);
+
+#define glReadBufferNV GLEW_GET_FUN(__glewReadBufferNV)
+
+#define GLEW_NV_read_buffer GLEW_GET_VAR(__GLEW_NV_read_buffer)
+
+#endif /* GL_NV_read_buffer */
+
+/* ------------------------ GL_NV_read_buffer_front ------------------------ */
+
+#ifndef GL_NV_read_buffer_front
+#define GL_NV_read_buffer_front 1
+
+#define GL_READ_BUFFER_NV 0x0C02
+
+#define GLEW_NV_read_buffer_front GLEW_GET_VAR(__GLEW_NV_read_buffer_front)
+
+#endif /* GL_NV_read_buffer_front */
+
+/* ---------------------------- GL_NV_read_depth --------------------------- */
+
+#ifndef GL_NV_read_depth
+#define GL_NV_read_depth 1
+
+#define GLEW_NV_read_depth GLEW_GET_VAR(__GLEW_NV_read_depth)
+
+#endif /* GL_NV_read_depth */
+
+/* ------------------------ GL_NV_read_depth_stencil ----------------------- */
+
+#ifndef GL_NV_read_depth_stencil
+#define GL_NV_read_depth_stencil 1
+
+#define GLEW_NV_read_depth_stencil GLEW_GET_VAR(__GLEW_NV_read_depth_stencil)
+
+#endif /* GL_NV_read_depth_stencil */
+
+/* --------------------------- GL_NV_read_stencil -------------------------- */
+
+#ifndef GL_NV_read_stencil
+#define GL_NV_read_stencil 1
+
+#define GLEW_NV_read_stencil GLEW_GET_VAR(__GLEW_NV_read_stencil)
+
+#endif /* GL_NV_read_stencil */
+
+/* ------------------------ GL_NV_register_combiners ----------------------- */
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+
+#define GL_REGISTER_COMBINERS_NV 0x8522
+#define GL_VARIABLE_A_NV 0x8523
+#define GL_VARIABLE_B_NV 0x8524
+#define GL_VARIABLE_C_NV 0x8525
+#define GL_VARIABLE_D_NV 0x8526
+#define GL_VARIABLE_E_NV 0x8527
+#define GL_VARIABLE_F_NV 0x8528
+#define GL_VARIABLE_G_NV 0x8529
+#define GL_CONSTANT_COLOR0_NV 0x852A
+#define GL_CONSTANT_COLOR1_NV 0x852B
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_SPARE0_NV 0x852E
+#define GL_SPARE1_NV 0x852F
+#define GL_DISCARD_NV 0x8530
+#define GL_E_TIMES_F_NV 0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV 0x8536
+#define GL_UNSIGNED_INVERT_NV 0x8537
+#define GL_EXPAND_NORMAL_NV 0x8538
+#define GL_EXPAND_NEGATE_NV 0x8539
+#define GL_HALF_BIAS_NORMAL_NV 0x853A
+#define GL_HALF_BIAS_NEGATE_NV 0x853B
+#define GL_SIGNED_IDENTITY_NV 0x853C
+#define GL_SIGNED_NEGATE_NV 0x853D
+#define GL_SCALE_BY_TWO_NV 0x853E
+#define GL_SCALE_BY_FOUR_NV 0x853F
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+#define GL_COMBINER_INPUT_NV 0x8542
+#define GL_COMBINER_MAPPING_NV 0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+#define GL_COMBINER_MUX_SUM_NV 0x8547
+#define GL_COMBINER_SCALE_NV 0x8548
+#define GL_COMBINER_BIAS_NV 0x8549
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
+#define GL_COLOR_SUM_CLAMP_NV 0x854F
+#define GL_COMBINER0_NV 0x8550
+#define GL_COMBINER1_NV 0x8551
+#define GL_COMBINER2_NV 0x8552
+#define GL_COMBINER3_NV 0x8553
+#define GL_COMBINER4_NV 0x8554
+#define GL_COMBINER5_NV 0x8555
+#define GL_COMBINER6_NV 0x8556
+#define GL_COMBINER7_NV 0x8557
+
+typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params);
+
+#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV)
+#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV)
+#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV)
+#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV)
+#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV)
+#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV)
+#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV)
+#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV)
+#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV)
+#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV)
+#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV)
+#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV)
+#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV)
+
+#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners)
+
+#endif /* GL_NV_register_combiners */
+
+/* ----------------------- GL_NV_register_combiners2 ----------------------- */
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+
+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
+
+typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params);
+
+#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV)
+#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV)
+
+#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2)
+
+#endif /* GL_NV_register_combiners2 */
+
+/* ------------------- GL_NV_representative_fragment_test ------------------ */
+
+#ifndef GL_NV_representative_fragment_test
+#define GL_NV_representative_fragment_test 1
+
+#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
+
+#define GLEW_NV_representative_fragment_test GLEW_GET_VAR(__GLEW_NV_representative_fragment_test)
+
+#endif /* GL_NV_representative_fragment_test */
+
+/* ------------------ GL_NV_robustness_video_memory_purge ------------------ */
+
+#ifndef GL_NV_robustness_video_memory_purge
+#define GL_NV_robustness_video_memory_purge 1
+
+#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
+
+#define GLEW_NV_robustness_video_memory_purge GLEW_GET_VAR(__GLEW_NV_robustness_video_memory_purge)
+
+#endif /* GL_NV_robustness_video_memory_purge */
+
+/* --------------------------- GL_NV_sRGB_formats -------------------------- */
+
+#ifndef GL_NV_sRGB_formats
+#define GL_NV_sRGB_formats 1
+
+#define GL_ETC1_SRGB8_NV 0x88EE
+#define GL_SRGB8_NV 0x8C41
+#define GL_SLUMINANCE_ALPHA_NV 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45
+#define GL_SLUMINANCE_NV 0x8C46
+#define GL_SLUMINANCE8_NV 0x8C47
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
+
+#define GLEW_NV_sRGB_formats GLEW_GET_VAR(__GLEW_NV_sRGB_formats)
+
+#endif /* GL_NV_sRGB_formats */
+
+/* ------------------------- GL_NV_sample_locations ------------------------ */
+
+#ifndef GL_NV_sample_locations
+#define GL_NV_sample_locations 1
+
+#define GL_SAMPLE_LOCATION_NV 0x8E50
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
+
+#define glFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewFramebufferSampleLocationsfvNV)
+#define glNamedFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvNV)
+#define glResolveDepthValuesNV GLEW_GET_FUN(__glewResolveDepthValuesNV)
+
+#define GLEW_NV_sample_locations GLEW_GET_VAR(__GLEW_NV_sample_locations)
+
+#endif /* GL_NV_sample_locations */
+
+/* ------------------ GL_NV_sample_mask_override_coverage ------------------ */
+
+#ifndef GL_NV_sample_mask_override_coverage
+#define GL_NV_sample_mask_override_coverage 1
+
+#define GLEW_NV_sample_mask_override_coverage GLEW_GET_VAR(__GLEW_NV_sample_mask_override_coverage)
+
+#endif /* GL_NV_sample_mask_override_coverage */
+
+/* ------------------------ GL_NV_scissor_exclusive ------------------------ */
+
+#ifndef GL_NV_scissor_exclusive
+#define GL_NV_scissor_exclusive 1
+
+#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
+#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
+
+typedef void (GLAPIENTRY * PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glScissorExclusiveArrayvNV GLEW_GET_FUN(__glewScissorExclusiveArrayvNV)
+#define glScissorExclusiveNV GLEW_GET_FUN(__glewScissorExclusiveNV)
+
+#define GLEW_NV_scissor_exclusive GLEW_GET_VAR(__GLEW_NV_scissor_exclusive)
+
+#endif /* GL_NV_scissor_exclusive */
+
+/* ---------------------- GL_NV_shader_atomic_counters --------------------- */
+
+#ifndef GL_NV_shader_atomic_counters
+#define GL_NV_shader_atomic_counters 1
+
+#define GLEW_NV_shader_atomic_counters GLEW_GET_VAR(__GLEW_NV_shader_atomic_counters)
+
+#endif /* GL_NV_shader_atomic_counters */
+
+/* ----------------------- GL_NV_shader_atomic_float ----------------------- */
+
+#ifndef GL_NV_shader_atomic_float
+#define GL_NV_shader_atomic_float 1
+
+#define GLEW_NV_shader_atomic_float GLEW_GET_VAR(__GLEW_NV_shader_atomic_float)
+
+#endif /* GL_NV_shader_atomic_float */
+
+/* ---------------------- GL_NV_shader_atomic_float64 ---------------------- */
+
+#ifndef GL_NV_shader_atomic_float64
+#define GL_NV_shader_atomic_float64 1
+
+#define GLEW_NV_shader_atomic_float64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_float64)
+
+#endif /* GL_NV_shader_atomic_float64 */
+
+/* -------------------- GL_NV_shader_atomic_fp16_vector -------------------- */
+
+#ifndef GL_NV_shader_atomic_fp16_vector
+#define GL_NV_shader_atomic_fp16_vector 1
+
+#define GLEW_NV_shader_atomic_fp16_vector GLEW_GET_VAR(__GLEW_NV_shader_atomic_fp16_vector)
+
+#endif /* GL_NV_shader_atomic_fp16_vector */
+
+/* ----------------------- GL_NV_shader_atomic_int64 ----------------------- */
+
+#ifndef GL_NV_shader_atomic_int64
+#define GL_NV_shader_atomic_int64 1
+
+#define GLEW_NV_shader_atomic_int64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_int64)
+
+#endif /* GL_NV_shader_atomic_int64 */
+
+/* ------------------------ GL_NV_shader_buffer_load ----------------------- */
+
+#ifndef GL_NV_shader_buffer_load
+#define GL_NV_shader_buffer_load 1
+
+#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+#define GL_GPU_ADDRESS_NV 0x8F34
+#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+
+#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV)
+#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV)
+#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV)
+#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV)
+#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV)
+#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV)
+#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV)
+#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV)
+#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV)
+#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV)
+#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV)
+#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV)
+#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV)
+
+#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load)
+
+#endif /* GL_NV_shader_buffer_load */
+
+/* ---------------- GL_NV_shader_noperspective_interpolation --------------- */
+
+#ifndef GL_NV_shader_noperspective_interpolation
+#define GL_NV_shader_noperspective_interpolation 1
+
+#define GLEW_NV_shader_noperspective_interpolation GLEW_GET_VAR(__GLEW_NV_shader_noperspective_interpolation)
+
+#endif /* GL_NV_shader_noperspective_interpolation */
+
+/* ------------------- GL_NV_shader_storage_buffer_object ------------------ */
+
+#ifndef GL_NV_shader_storage_buffer_object
+#define GL_NV_shader_storage_buffer_object 1
+
+#define GLEW_NV_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_NV_shader_storage_buffer_object)
+
+#endif /* GL_NV_shader_storage_buffer_object */
+
+/* ------------------- GL_NV_shader_subgroup_partitioned ------------------- */
+
+#ifndef GL_NV_shader_subgroup_partitioned
+#define GL_NV_shader_subgroup_partitioned 1
+
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+
+#define GLEW_NV_shader_subgroup_partitioned GLEW_GET_VAR(__GLEW_NV_shader_subgroup_partitioned)
+
+#endif /* GL_NV_shader_subgroup_partitioned */
+
+/* --------------------- GL_NV_shader_texture_footprint -------------------- */
+
+#ifndef GL_NV_shader_texture_footprint
+#define GL_NV_shader_texture_footprint 1
+
+#define GLEW_NV_shader_texture_footprint GLEW_GET_VAR(__GLEW_NV_shader_texture_footprint)
+
+#endif /* GL_NV_shader_texture_footprint */
+
+/* ----------------------- GL_NV_shader_thread_group ----------------------- */
+
+#ifndef GL_NV_shader_thread_group
+#define GL_NV_shader_thread_group 1
+
+#define GL_WARP_SIZE_NV 0x9339
+#define GL_WARPS_PER_SM_NV 0x933A
+#define GL_SM_COUNT_NV 0x933B
+
+#define GLEW_NV_shader_thread_group GLEW_GET_VAR(__GLEW_NV_shader_thread_group)
+
+#endif /* GL_NV_shader_thread_group */
+
+/* ---------------------- GL_NV_shader_thread_shuffle ---------------------- */
+
+#ifndef GL_NV_shader_thread_shuffle
+#define GL_NV_shader_thread_shuffle 1
+
+#define GLEW_NV_shader_thread_shuffle GLEW_GET_VAR(__GLEW_NV_shader_thread_shuffle)
+
+#endif /* GL_NV_shader_thread_shuffle */
+
+/* ------------------------ GL_NV_shading_rate_image ----------------------- */
+
+#ifndef GL_NV_shading_rate_image
+#define GL_NV_shading_rate_image 1
+
+#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
+#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
+#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
+#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
+#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
+#define GL_SHADING_RATE_IMAGE_NV 0x9563
+#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
+#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
+#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
+#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
+#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
+#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
+#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
+#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
+#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
+#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
+
+typedef void (GLAPIENTRY * PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum* rate);
+typedef void (GLAPIENTRY * PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint* location);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum* rates);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint* locations);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);
+
+#define glBindShadingRateImageNV GLEW_GET_FUN(__glewBindShadingRateImageNV)
+#define glGetShadingRateImagePaletteNV GLEW_GET_FUN(__glewGetShadingRateImagePaletteNV)
+#define glGetShadingRateSampleLocationivNV GLEW_GET_FUN(__glewGetShadingRateSampleLocationivNV)
+#define glShadingRateImageBarrierNV GLEW_GET_FUN(__glewShadingRateImageBarrierNV)
+#define glShadingRateImagePaletteNV GLEW_GET_FUN(__glewShadingRateImagePaletteNV)
+#define glShadingRateSampleOrderCustomNV GLEW_GET_FUN(__glewShadingRateSampleOrderCustomNV)
+#define glShadingRateSampleOrderNV GLEW_GET_FUN(__glewShadingRateSampleOrderNV)
+
+#define GLEW_NV_shading_rate_image GLEW_GET_VAR(__GLEW_NV_shading_rate_image)
+
+#endif /* GL_NV_shading_rate_image */
+
+/* ---------------------- GL_NV_shadow_samplers_array ---------------------- */
+
+#ifndef GL_NV_shadow_samplers_array
+#define GL_NV_shadow_samplers_array 1
+
+#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
+
+#define GLEW_NV_shadow_samplers_array GLEW_GET_VAR(__GLEW_NV_shadow_samplers_array)
+
+#endif /* GL_NV_shadow_samplers_array */
+
+/* ----------------------- GL_NV_shadow_samplers_cube ---------------------- */
+
+#ifndef GL_NV_shadow_samplers_cube
+#define GL_NV_shadow_samplers_cube 1
+
+#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
+
+#define GLEW_NV_shadow_samplers_cube GLEW_GET_VAR(__GLEW_NV_shadow_samplers_cube)
+
+#endif /* GL_NV_shadow_samplers_cube */
+
+/* ---------------------- GL_NV_stereo_view_rendering ---------------------- */
+
+#ifndef GL_NV_stereo_view_rendering
+#define GL_NV_stereo_view_rendering 1
+
+#define GLEW_NV_stereo_view_rendering GLEW_GET_VAR(__GLEW_NV_stereo_view_rendering)
+
+#endif /* GL_NV_stereo_view_rendering */
+
+/* ---------------------- GL_NV_tessellation_program5 ---------------------- */
+
+#ifndef GL_NV_tessellation_program5
+#define GL_NV_tessellation_program5 1
+
+#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
+#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
+
+#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5)
+
+#endif /* GL_NV_tessellation_program5 */
+
+/* -------------------------- GL_NV_texgen_emboss -------------------------- */
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+
+#define GL_EMBOSS_LIGHT_NV 0x855D
+#define GL_EMBOSS_CONSTANT_NV 0x855E
+#define GL_EMBOSS_MAP_NV 0x855F
+
+#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss)
+
+#endif /* GL_NV_texgen_emboss */
+
+/* ------------------------ GL_NV_texgen_reflection ------------------------ */
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+
+#define GL_NORMAL_MAP_NV 0x8511
+#define GL_REFLECTION_MAP_NV 0x8512
+
+#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection)
+
+#endif /* GL_NV_texgen_reflection */
+
+/* -------------------------- GL_NV_texture_array -------------------------- */
+
+#ifndef GL_NV_texture_array
+#define GL_NV_texture_array 1
+
+#define GL_UNPACK_SKIP_IMAGES_NV 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_NV 0x806E
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_NV 0x88FF
+#define GL_TEXTURE_2D_ARRAY_NV 0x8C1A
+#define GL_TEXTURE_BINDING_2D_ARRAY_NV 0x8C1D
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_NV 0x8CD4
+#define GL_SAMPLER_2D_ARRAY_NV 0x8DC1
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DNVPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERNVPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DNVPROC) (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCompressedTexImage3DNV GLEW_GET_FUN(__glewCompressedTexImage3DNV)
+#define glCompressedTexSubImage3DNV GLEW_GET_FUN(__glewCompressedTexSubImage3DNV)
+#define glCopyTexSubImage3DNV GLEW_GET_FUN(__glewCopyTexSubImage3DNV)
+#define glFramebufferTextureLayerNV GLEW_GET_FUN(__glewFramebufferTextureLayerNV)
+#define glTexImage3DNV GLEW_GET_FUN(__glewTexImage3DNV)
+#define glTexSubImage3DNV GLEW_GET_FUN(__glewTexSubImage3DNV)
+
+#define GLEW_NV_texture_array GLEW_GET_VAR(__GLEW_NV_texture_array)
+
+#endif /* GL_NV_texture_array */
+
+/* ------------------------- GL_NV_texture_barrier ------------------------- */
+
+#ifndef GL_NV_texture_barrier
+#define GL_NV_texture_barrier 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void);
+
+#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV)
+
+#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier)
+
+#endif /* GL_NV_texture_barrier */
+
+/* ----------------------- GL_NV_texture_border_clamp ---------------------- */
+
+#ifndef GL_NV_texture_border_clamp
+#define GL_NV_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_NV 0x1004
+#define GL_CLAMP_TO_BORDER_NV 0x812D
+
+#define GLEW_NV_texture_border_clamp GLEW_GET_VAR(__GLEW_NV_texture_border_clamp)
+
+#endif /* GL_NV_texture_border_clamp */
+
+/* --------------------- GL_NV_texture_compression_latc -------------------- */
+
+#ifndef GL_NV_texture_compression_latc
+#define GL_NV_texture_compression_latc 1
+
+#define GL_COMPRESSED_LUMINANCE_LATC1_NV 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_NV 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_NV 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_NV 0x8C73
+
+#define GLEW_NV_texture_compression_latc GLEW_GET_VAR(__GLEW_NV_texture_compression_latc)
+
+#endif /* GL_NV_texture_compression_latc */
+
+/* --------------------- GL_NV_texture_compression_s3tc -------------------- */
+
+#ifndef GL_NV_texture_compression_s3tc
+#define GL_NV_texture_compression_s3tc 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_NV 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_NV 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_NV 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_NV 0x83F3
+
+#define GLEW_NV_texture_compression_s3tc GLEW_GET_VAR(__GLEW_NV_texture_compression_s3tc)
+
+#endif /* GL_NV_texture_compression_s3tc */
+
+/* ----------------- GL_NV_texture_compression_s3tc_update ----------------- */
+
+#ifndef GL_NV_texture_compression_s3tc_update
+#define GL_NV_texture_compression_s3tc_update 1
+
+#define GLEW_NV_texture_compression_s3tc_update GLEW_GET_VAR(__GLEW_NV_texture_compression_s3tc_update)
+
+#endif /* GL_NV_texture_compression_s3tc_update */
+
+/* --------------------- GL_NV_texture_compression_vtc --------------------- */
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+
+#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc)
+
+#endif /* GL_NV_texture_compression_vtc */
+
+/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+
+#define GL_COMBINE4_NV 0x8503
+#define GL_SOURCE3_RGB_NV 0x8583
+#define GL_SOURCE3_ALPHA_NV 0x858B
+#define GL_OPERAND3_RGB_NV 0x8593
+#define GL_OPERAND3_ALPHA_NV 0x859B
+
+#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4)
+
+#endif /* GL_NV_texture_env_combine4 */
+
+/* ---------------------- GL_NV_texture_expand_normal ---------------------- */
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_NV_texture_expand_normal 1
+
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
+
+#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal)
+
+#endif /* GL_NV_texture_expand_normal */
+
+/* ----------------------- GL_NV_texture_multisample ----------------------- */
+
+#ifndef GL_NV_texture_multisample
+#define GL_NV_texture_multisample 1
+
+#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
+#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+
+#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV)
+#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV)
+#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV)
+#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV)
+#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV)
+#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV)
+
+#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample)
+
+#endif /* GL_NV_texture_multisample */
+
+/* ---------------------- GL_NV_texture_npot_2D_mipmap --------------------- */
+
+#ifndef GL_NV_texture_npot_2D_mipmap
+#define GL_NV_texture_npot_2D_mipmap 1
+
+#define GLEW_NV_texture_npot_2D_mipmap GLEW_GET_VAR(__GLEW_NV_texture_npot_2D_mipmap)
+
+#endif /* GL_NV_texture_npot_2D_mipmap */
+
+/* ------------------------ GL_NV_texture_rectangle ------------------------ */
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
+
+#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle)
+
+#endif /* GL_NV_texture_rectangle */
+
+/* ------------------- GL_NV_texture_rectangle_compressed ------------------ */
+
+#ifndef GL_NV_texture_rectangle_compressed
+#define GL_NV_texture_rectangle_compressed 1
+
+#define GLEW_NV_texture_rectangle_compressed GLEW_GET_VAR(__GLEW_NV_texture_rectangle_compressed)
+
+#endif /* GL_NV_texture_rectangle_compressed */
+
+/* -------------------------- GL_NV_texture_shader ------------------------- */
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_SHADER_CONSISTENT_NV 0x86DD
+#define GL_TEXTURE_SHADER_NV 0x86DE
+#define GL_SHADER_OPERATION_NV 0x86DF
+#define GL_CULL_MODES_NV 0x86E0
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+#define GL_CONST_EYE_NV 0x86E5
+#define GL_PASS_THROUGH_NV 0x86E6
+#define GL_CULL_FRAGMENT_NV 0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+#define GL_DOT_PRODUCT_NV 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV 0x870E
+#define GL_LO_SCALE_NV 0x870F
+#define GL_DS_SCALE_NV 0x8710
+#define GL_DT_SCALE_NV 0x8711
+#define GL_MAGNITUDE_SCALE_NV 0x8712
+#define GL_VIBRANCE_SCALE_NV 0x8713
+#define GL_HI_BIAS_NV 0x8714
+#define GL_LO_BIAS_NV 0x8715
+#define GL_DS_BIAS_NV 0x8716
+#define GL_DT_BIAS_NV 0x8717
+#define GL_MAGNITUDE_BIAS_NV 0x8718
+#define GL_VIBRANCE_BIAS_NV 0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
+#define GL_TEXTURE_HI_SIZE_NV 0x871B
+#define GL_TEXTURE_LO_SIZE_NV 0x871C
+#define GL_TEXTURE_DS_SIZE_NV 0x871D
+#define GL_TEXTURE_DT_SIZE_NV 0x871E
+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
+
+#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader)
+
+#endif /* GL_NV_texture_shader */
+
+/* ------------------------- GL_NV_texture_shader2 ------------------------- */
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+
+#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2)
+
+#endif /* GL_NV_texture_shader2 */
+
+/* ------------------------- GL_NV_texture_shader3 ------------------------- */
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV 0x885E
+#define GL_SIGNED_HILO8_NV 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
+
+#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3)
+
+#endif /* GL_NV_texture_shader3 */
+
+/* ------------------------ GL_NV_timeline_semaphore ----------------------- */
+
+#ifndef GL_NV_timeline_semaphore
+#define GL_NV_timeline_semaphore 1
+
+#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
+#define GL_SEMAPHORE_TYPE_NV 0x95B3
+#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
+#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
+#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+
+typedef void (GLAPIENTRY * PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint* params);
+
+#define glCreateSemaphoresNV GLEW_GET_FUN(__glewCreateSemaphoresNV)
+#define glGetSemaphoreParameterivNV GLEW_GET_FUN(__glewGetSemaphoreParameterivNV)
+#define glSemaphoreParameterivNV GLEW_GET_FUN(__glewSemaphoreParameterivNV)
+
+#define GLEW_NV_timeline_semaphore GLEW_GET_VAR(__GLEW_NV_timeline_semaphore)
+
+#endif /* GL_NV_timeline_semaphore */
+
+/* ------------------------ GL_NV_transform_feedback ----------------------- */
+
+#ifndef GL_NV_transform_feedback
+#define GL_NV_transform_feedback 1
+
+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
+#define GL_TEXTURE_COORD_NV 0x8C79
+#define GL_CLIP_DISTANCE_NV 0x8C7A
+#define GL_VERTEX_ID_NV 0x8C7B
+#define GL_PRIMITIVE_ID_NV 0x8C7C
+#define GL_GENERIC_ATTRIB_NV 0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+#define GL_ACTIVE_VARYINGS_NV 0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+#define GL_RASTERIZER_DISCARD_NV 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+
+typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
+typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+
+#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV)
+#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV)
+#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV)
+#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV)
+#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV)
+#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV)
+#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV)
+#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV)
+#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV)
+#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV)
+#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV)
+
+#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback)
+
+#endif /* GL_NV_transform_feedback */
+
+/* ----------------------- GL_NV_transform_feedback2 ----------------------- */
+
+#ifndef GL_NV_transform_feedback2
+#define GL_NV_transform_feedback2 1
+
+#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+
+typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids);
+typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
+
+#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV)
+#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV)
+#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV)
+#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV)
+#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV)
+#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV)
+#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV)
+
+#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2)
+
+#endif /* GL_NV_transform_feedback2 */
+
+/* ------------------ GL_NV_uniform_buffer_unified_memory ------------------ */
+
+#ifndef GL_NV_uniform_buffer_unified_memory
+#define GL_NV_uniform_buffer_unified_memory 1
+
+#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
+
+#define GLEW_NV_uniform_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_uniform_buffer_unified_memory)
+
+#endif /* GL_NV_uniform_buffer_unified_memory */
+
+/* -------------------------- GL_NV_vdpau_interop -------------------------- */
+
+#ifndef GL_NV_vdpau_interop
+#define GL_NV_vdpau_interop 1
+
+#define GL_SURFACE_STATE_NV 0x86EB
+#define GL_SURFACE_REGISTERED_NV 0x86FD
+#define GL_SURFACE_MAPPED_NV 0x8700
+#define GL_WRITE_DISCARD_NV 0x88BE
+
+typedef GLintptr GLvdpauSurfaceNV;
+
+typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values);
+typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const void*getProcAddress);
+typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces);
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
+typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces);
+typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
+
+#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV)
+#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV)
+#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV)
+#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV)
+#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV)
+#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV)
+#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV)
+#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV)
+#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV)
+#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV)
+
+#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop)
+
+#endif /* GL_NV_vdpau_interop */
+
+/* -------------------------- GL_NV_vdpau_interop2 ------------------------- */
+
+#ifndef GL_NV_vdpau_interop2
+#define GL_NV_vdpau_interop2 1
+
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);
+
+#define glVDPAURegisterVideoSurfaceWithPictureStructureNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceWithPictureStructureNV)
+
+#define GLEW_NV_vdpau_interop2 GLEW_GET_VAR(__GLEW_NV_vdpau_interop2)
+
+#endif /* GL_NV_vdpau_interop2 */
+
+/* ------------------------ GL_NV_vertex_array_range ----------------------- */
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+
+typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void *pointer);
+
+#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV)
+#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV)
+
+#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range)
+
+#endif /* GL_NV_vertex_array_range */
+
+/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+
+#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2)
+
+#endif /* GL_NV_vertex_array_range2 */
+
+/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+#define GL_NV_vertex_attrib_integer_64bit 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+
+#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV)
+#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV)
+#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV)
+#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV)
+#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV)
+#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV)
+#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV)
+#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV)
+#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV)
+#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV)
+#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV)
+#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV)
+#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV)
+#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV)
+#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV)
+#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV)
+#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV)
+#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV)
+#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV)
+
+#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit)
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */
+
+#ifndef GL_NV_vertex_buffer_unified_memory
+#define GL_NV_vertex_buffer_unified_memory 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+
+typedef void (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]);
+typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+
+#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV)
+#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV)
+#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV)
+#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV)
+#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV)
+#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV)
+#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV)
+#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV)
+#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV)
+#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV)
+#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV)
+#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV)
+
+#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory)
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+/* -------------------------- GL_NV_vertex_program ------------------------- */
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+
+#define GL_VERTEX_PROGRAM_NV 0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+#define GL_CURRENT_ATTRIB_NV 0x8626
+#define GL_PROGRAM_LENGTH_NV 0x8627
+#define GL_PROGRAM_STRING_NV 0x8628
+#define GL_MODELVIEW_PROJECTION_NV 0x8629
+#define GL_IDENTITY_NV 0x862A
+#define GL_INVERSE_NV 0x862B
+#define GL_TRANSPOSE_NV 0x862C
+#define GL_INVERSE_TRANSPOSE_NV 0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_TRACK_MATRICES_NV 0x862F
+#define GL_MATRIX0_NV 0x8630
+#define GL_MATRIX1_NV 0x8631
+#define GL_MATRIX2_NV 0x8632
+#define GL_MATRIX3_NV 0x8633
+#define GL_MATRIX4_NV 0x8634
+#define GL_MATRIX5_NV 0x8635
+#define GL_MATRIX6_NV 0x8636
+#define GL_MATRIX7_NV 0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+#define GL_CURRENT_MATRIX_NV 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+#define GL_PROGRAM_PARAMETER_NV 0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+#define GL_PROGRAM_TARGET_NV 0x8646
+#define GL_PROGRAM_RESIDENT_NV 0x8647
+#define GL_TRACK_MATRIX_NV 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+
+typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences);
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v);
+
+#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV)
+#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV)
+#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV)
+#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV)
+#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV)
+#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV)
+#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV)
+#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV)
+#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV)
+#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV)
+#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV)
+#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV)
+#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV)
+#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV)
+#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV)
+#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV)
+#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV)
+#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV)
+#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV)
+#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV)
+#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV)
+#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV)
+#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV)
+#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV)
+#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV)
+#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV)
+#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV)
+#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV)
+#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV)
+#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV)
+#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV)
+#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV)
+#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV)
+#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV)
+#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV)
+#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV)
+#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV)
+#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV)
+#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV)
+#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV)
+#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV)
+#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV)
+#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV)
+#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV)
+#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV)
+#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV)
+#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV)
+#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV)
+#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV)
+#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV)
+#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV)
+#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV)
+#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV)
+#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV)
+#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV)
+#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV)
+#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV)
+#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV)
+#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV)
+#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV)
+#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV)
+#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV)
+#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV)
+#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV)
+
+#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program)
+
+#endif /* GL_NV_vertex_program */
+
+/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+
+#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1)
+
+#endif /* GL_NV_vertex_program1_1 */
+
+/* ------------------------- GL_NV_vertex_program2 ------------------------- */
+
+#ifndef GL_NV_vertex_program2
+#define GL_NV_vertex_program2 1
+
+#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2)
+
+#endif /* GL_NV_vertex_program2 */
+
+/* ---------------------- GL_NV_vertex_program2_option --------------------- */
+
+#ifndef GL_NV_vertex_program2_option
+#define GL_NV_vertex_program2_option 1
+
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+
+#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option)
+
+#endif /* GL_NV_vertex_program2_option */
+
+/* ------------------------- GL_NV_vertex_program3 ------------------------- */
+
+#ifndef GL_NV_vertex_program3
+#define GL_NV_vertex_program3 1
+
+#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+
+#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3)
+
+#endif /* GL_NV_vertex_program3 */
+
+/* ------------------------- GL_NV_vertex_program4 ------------------------- */
+
+#ifndef GL_NV_vertex_program4
+#define GL_NV_vertex_program4 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
+
+#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4)
+
+#endif /* GL_NV_vertex_program4 */
+
+/* -------------------------- GL_NV_video_capture -------------------------- */
+
+#ifndef GL_NV_video_capture
+#define GL_NV_video_capture 1
+
+#define GL_VIDEO_BUFFER_NV 0x9020
+#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
+#define GL_FIELD_UPPER_NV 0x9022
+#define GL_FIELD_LOWER_NV 0x9023
+#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
+#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+#define GL_PARTIAL_SUCCESS_NV 0x902E
+#define GL_SUCCESS_NV 0x902F
+#define GL_FAILURE_NV 0x9030
+#define GL_YCBYCR8_422_NV 0x9031
+#define GL_YCBAYCR8A_4224_NV 0x9032
+#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+
+typedef void (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params);
+typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params);
+
+#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV)
+#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV)
+#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV)
+#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV)
+#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV)
+#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV)
+#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV)
+#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV)
+#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV)
+#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV)
+#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV)
+#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV)
+
+#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture)
+
+#endif /* GL_NV_video_capture */
+
+/* -------------------------- GL_NV_viewport_array ------------------------- */
+
+#ifndef GL_NV_viewport_array
+#define GL_NV_viewport_array 1
+
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_VIEWPORT 0x0BA2
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_MAX_VIEWPORTS_NV 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
+
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY * PFNGLDISABLEINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat * v);
+
+#define glDepthRangeArrayfvNV GLEW_GET_FUN(__glewDepthRangeArrayfvNV)
+#define glDepthRangeIndexedfNV GLEW_GET_FUN(__glewDepthRangeIndexedfNV)
+#define glDisableiNV GLEW_GET_FUN(__glewDisableiNV)
+#define glEnableiNV GLEW_GET_FUN(__glewEnableiNV)
+#define glGetFloati_vNV GLEW_GET_FUN(__glewGetFloati_vNV)
+#define glIsEnablediNV GLEW_GET_FUN(__glewIsEnablediNV)
+#define glScissorArrayvNV GLEW_GET_FUN(__glewScissorArrayvNV)
+#define glScissorIndexedNV GLEW_GET_FUN(__glewScissorIndexedNV)
+#define glScissorIndexedvNV GLEW_GET_FUN(__glewScissorIndexedvNV)
+#define glViewportArrayvNV GLEW_GET_FUN(__glewViewportArrayvNV)
+#define glViewportIndexedfNV GLEW_GET_FUN(__glewViewportIndexedfNV)
+#define glViewportIndexedfvNV GLEW_GET_FUN(__glewViewportIndexedfvNV)
+
+#define GLEW_NV_viewport_array GLEW_GET_VAR(__GLEW_NV_viewport_array)
+
+#endif /* GL_NV_viewport_array */
+
+/* ------------------------- GL_NV_viewport_array2 ------------------------- */
+
+#ifndef GL_NV_viewport_array2
+#define GL_NV_viewport_array2 1
+
+#define GLEW_NV_viewport_array2 GLEW_GET_VAR(__GLEW_NV_viewport_array2)
+
+#endif /* GL_NV_viewport_array2 */
+
+/* ------------------------- GL_NV_viewport_swizzle ------------------------ */
+
+#ifndef GL_NV_viewport_swizzle
+#define GL_NV_viewport_swizzle 1
+
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+
+typedef void (GLAPIENTRY * PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+
+#define glViewportSwizzleNV GLEW_GET_FUN(__glewViewportSwizzleNV)
+
+#define GLEW_NV_viewport_swizzle GLEW_GET_VAR(__GLEW_NV_viewport_swizzle)
+
+#endif /* GL_NV_viewport_swizzle */
+
+/* ---------------------------- GL_OES_EGL_image --------------------------- */
+
+#ifndef GL_OES_EGL_image
+#define GL_OES_EGL_image 1
+
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
+
+#define glEGLImageTargetRenderbufferStorageOES GLEW_GET_FUN(__glewEGLImageTargetRenderbufferStorageOES)
+#define glEGLImageTargetTexture2DOES GLEW_GET_FUN(__glewEGLImageTargetTexture2DOES)
+
+#define GLEW_OES_EGL_image GLEW_GET_VAR(__GLEW_OES_EGL_image)
+
+#endif /* GL_OES_EGL_image */
+
+/* ----------------------- GL_OES_EGL_image_external ----------------------- */
+
+#ifndef GL_OES_EGL_image_external
+#define GL_OES_EGL_image_external 1
+
+#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
+
+#define GLEW_OES_EGL_image_external GLEW_GET_VAR(__GLEW_OES_EGL_image_external)
+
+#endif /* GL_OES_EGL_image_external */
+
+/* -------------------- GL_OES_EGL_image_external_essl3 -------------------- */
+
+#ifndef GL_OES_EGL_image_external_essl3
+#define GL_OES_EGL_image_external_essl3 1
+
+#define GLEW_OES_EGL_image_external_essl3 GLEW_GET_VAR(__GLEW_OES_EGL_image_external_essl3)
+
+#endif /* GL_OES_EGL_image_external_essl3 */
+
+/* --------------------- GL_OES_blend_equation_separate -------------------- */
+
+#ifndef GL_OES_blend_equation_separate
+#define GL_OES_blend_equation_separate 1
+
+#define GL_BLEND_EQUATION_RGB_OES 0x8009
+#define GL_BLEND_EQUATION_ALPHA_OES 0x883D
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha);
+
+#define glBlendEquationSeparateOES GLEW_GET_FUN(__glewBlendEquationSeparateOES)
+
+#define GLEW_OES_blend_equation_separate GLEW_GET_VAR(__GLEW_OES_blend_equation_separate)
+
+#endif /* GL_OES_blend_equation_separate */
+
+/* ----------------------- GL_OES_blend_func_separate ---------------------- */
+
+#ifndef GL_OES_blend_func_separate
+#define GL_OES_blend_func_separate 1
+
+#define GL_BLEND_DST_RGB_OES 0x80C8
+#define GL_BLEND_SRC_RGB_OES 0x80C9
+#define GL_BLEND_DST_ALPHA_OES 0x80CA
+#define GL_BLEND_SRC_ALPHA_OES 0x80CB
+
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+#define glBlendFuncSeparateOES GLEW_GET_FUN(__glewBlendFuncSeparateOES)
+
+#define GLEW_OES_blend_func_separate GLEW_GET_VAR(__GLEW_OES_blend_func_separate)
+
+#endif /* GL_OES_blend_func_separate */
+
+/* ------------------------- GL_OES_blend_subtract ------------------------- */
+
+#ifndef GL_OES_blend_subtract
+#define GL_OES_blend_subtract 1
+
+#define GL_FUNC_ADD_OES 0x8006
+#define GL_BLEND_EQUATION_OES 0x8009
+#define GL_FUNC_SUBTRACT_OES 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONOESPROC) (GLenum mode);
+
+#define glBlendEquationOES GLEW_GET_FUN(__glewBlendEquationOES)
+
+#define GLEW_OES_blend_subtract GLEW_GET_VAR(__GLEW_OES_blend_subtract)
+
+#endif /* GL_OES_blend_subtract */
+
+/* ------------------------ GL_OES_byte_coordinates ------------------------ */
+
+#ifndef GL_OES_byte_coordinates
+#define GL_OES_byte_coordinates 1
+
+#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates)
+
+#endif /* GL_OES_byte_coordinates */
+
+/* ------------------ GL_OES_compressed_ETC1_RGB8_texture ------------------ */
+
+#ifndef GL_OES_compressed_ETC1_RGB8_texture
+#define GL_OES_compressed_ETC1_RGB8_texture 1
+
+#define GL_ETC1_RGB8_OES 0x8D64
+
+#define GLEW_OES_compressed_ETC1_RGB8_texture GLEW_GET_VAR(__GLEW_OES_compressed_ETC1_RGB8_texture)
+
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+
+/* ------------------- GL_OES_compressed_paletted_texture ------------------ */
+
+#ifndef GL_OES_compressed_paletted_texture
+#define GL_OES_compressed_paletted_texture 1
+
+#define GL_PALETTE4_RGB8_OES 0x8B90
+#define GL_PALETTE4_RGBA8_OES 0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
+#define GL_PALETTE4_RGBA4_OES 0x8B93
+#define GL_PALETTE4_RGB5_A1_OES 0x8B94
+#define GL_PALETTE8_RGB8_OES 0x8B95
+#define GL_PALETTE8_RGBA8_OES 0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
+#define GL_PALETTE8_RGBA4_OES 0x8B98
+#define GL_PALETTE8_RGB5_A1_OES 0x8B99
+
+#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture)
+
+#endif /* GL_OES_compressed_paletted_texture */
+
+/* --------------------------- GL_OES_copy_image --------------------------- */
+
+#ifndef GL_OES_copy_image
+#define GL_OES_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAOESPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubDataOES GLEW_GET_FUN(__glewCopyImageSubDataOES)
+
+#define GLEW_OES_copy_image GLEW_GET_VAR(__GLEW_OES_copy_image)
+
+#endif /* GL_OES_copy_image */
+
+/* ----------------------------- GL_OES_depth24 ---------------------------- */
+
+#ifndef GL_OES_depth24
+#define GL_OES_depth24 1
+
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+
+#define GLEW_OES_depth24 GLEW_GET_VAR(__GLEW_OES_depth24)
+
+#endif /* GL_OES_depth24 */
+
+/* ----------------------------- GL_OES_depth32 ---------------------------- */
+
+#ifndef GL_OES_depth32
+#define GL_OES_depth32 1
+
+#define GL_DEPTH_COMPONENT32_OES 0x81A7
+
+#define GLEW_OES_depth32 GLEW_GET_VAR(__GLEW_OES_depth32)
+
+#endif /* GL_OES_depth32 */
+
+/* -------------------------- GL_OES_depth_texture ------------------------- */
+
+#ifndef GL_OES_depth_texture
+#define GL_OES_depth_texture 1
+
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_UNSIGNED_INT 0x1405
+#define GL_DEPTH_COMPONENT 0x1902
+
+#define GLEW_OES_depth_texture GLEW_GET_VAR(__GLEW_OES_depth_texture)
+
+#endif /* GL_OES_depth_texture */
+
+/* --------------------- GL_OES_depth_texture_cube_map --------------------- */
+
+#ifndef GL_OES_depth_texture_cube_map
+#define GL_OES_depth_texture_cube_map 1
+
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_UNSIGNED_INT 0x1405
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_DEPTH_STENCIL_OES 0x84F9
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+
+#define GLEW_OES_depth_texture_cube_map GLEW_GET_VAR(__GLEW_OES_depth_texture_cube_map)
+
+#endif /* GL_OES_depth_texture_cube_map */
+
+/* ---------------------- GL_OES_draw_buffers_indexed ---------------------- */
+
+#ifndef GL_OES_draw_buffers_indexed
+#define GL_OES_draw_buffers_indexed 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIOESPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEIOESPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIOESPROC) (GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index);
+
+#define glBlendEquationSeparateiOES GLEW_GET_FUN(__glewBlendEquationSeparateiOES)
+#define glBlendEquationiOES GLEW_GET_FUN(__glewBlendEquationiOES)
+#define glBlendFuncSeparateiOES GLEW_GET_FUN(__glewBlendFuncSeparateiOES)
+#define glBlendFunciOES GLEW_GET_FUN(__glewBlendFunciOES)
+#define glColorMaskiOES GLEW_GET_FUN(__glewColorMaskiOES)
+#define glDisableiOES GLEW_GET_FUN(__glewDisableiOES)
+#define glEnableiOES GLEW_GET_FUN(__glewEnableiOES)
+#define glIsEnablediOES GLEW_GET_FUN(__glewIsEnablediOES)
+
+#define GLEW_OES_draw_buffers_indexed GLEW_GET_VAR(__GLEW_OES_draw_buffers_indexed)
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+/* -------------------------- GL_OES_draw_texture -------------------------- */
+
+#ifndef GL_OES_draw_texture
+#define GL_OES_draw_texture 1
+
+#define GL_TEXTURE_CROP_RECT_OES 0x8B9D
+
+#define GLEW_OES_draw_texture GLEW_GET_VAR(__GLEW_OES_draw_texture)
+
+#endif /* GL_OES_draw_texture */
+
+/* ----------------------- GL_OES_element_index_uint ----------------------- */
+
+#ifndef GL_OES_element_index_uint
+#define GL_OES_element_index_uint 1
+
+#define GL_UNSIGNED_INT 0x1405
+
+#define GLEW_OES_element_index_uint GLEW_GET_VAR(__GLEW_OES_element_index_uint)
+
+#endif /* GL_OES_element_index_uint */
+
+/* --------------------- GL_OES_extended_matrix_palette -------------------- */
+
+#ifndef GL_OES_extended_matrix_palette
+#define GL_OES_extended_matrix_palette 1
+
+#define GLEW_OES_extended_matrix_palette GLEW_GET_VAR(__GLEW_OES_extended_matrix_palette)
+
+#endif /* GL_OES_extended_matrix_palette */
+
+/* ------------------------ GL_OES_fbo_render_mipmap ----------------------- */
+
+#ifndef GL_OES_fbo_render_mipmap
+#define GL_OES_fbo_render_mipmap 1
+
+#define GLEW_OES_fbo_render_mipmap GLEW_GET_VAR(__GLEW_OES_fbo_render_mipmap)
+
+#endif /* GL_OES_fbo_render_mipmap */
+
+/* --------------------- GL_OES_fragment_precision_high -------------------- */
+
+#ifndef GL_OES_fragment_precision_high
+#define GL_OES_fragment_precision_high 1
+
+#define GLEW_OES_fragment_precision_high GLEW_GET_VAR(__GLEW_OES_fragment_precision_high)
+
+#endif /* GL_OES_fragment_precision_high */
+
+/* ----------------------- GL_OES_framebuffer_object ----------------------- */
+
+#ifndef GL_OES_framebuffer_object
+#define GL_OES_framebuffer_object 1
+
+#define GL_NONE_OES 0
+#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506
+#define GL_RGBA4_OES 0x8056
+#define GL_RGB5_A1_OES 0x8057
+#define GL_DEPTH_COMPONENT16_OES 0x81A5
+#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8
+#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6
+#define GL_RENDERBUFFER_BINDING_OES 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD
+#define GL_COLOR_ATTACHMENT0_OES 0x8CE0
+#define GL_DEPTH_ATTACHMENT_OES 0x8D00
+#define GL_STENCIL_ATTACHMENT_OES 0x8D20
+#define GL_FRAMEBUFFER_OES 0x8D40
+#define GL_RENDERBUFFER_OES 0x8D41
+#define GL_RENDERBUFFER_WIDTH_OES 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44
+#define GL_STENCIL_INDEX1_OES 0x8D46
+#define GL_STENCIL_INDEX4_OES 0x8D47
+#define GL_STENCIL_INDEX8_OES 0x8D48
+#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55
+#define GL_RGB565_OES 0x8D62
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPOESPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebufferOES GLEW_GET_FUN(__glewBindFramebufferOES)
+#define glBindRenderbufferOES GLEW_GET_FUN(__glewBindRenderbufferOES)
+#define glCheckFramebufferStatusOES GLEW_GET_FUN(__glewCheckFramebufferStatusOES)
+#define glDeleteFramebuffersOES GLEW_GET_FUN(__glewDeleteFramebuffersOES)
+#define glDeleteRenderbuffersOES GLEW_GET_FUN(__glewDeleteRenderbuffersOES)
+#define glFramebufferRenderbufferOES GLEW_GET_FUN(__glewFramebufferRenderbufferOES)
+#define glFramebufferTexture2DOES GLEW_GET_FUN(__glewFramebufferTexture2DOES)
+#define glGenFramebuffersOES GLEW_GET_FUN(__glewGenFramebuffersOES)
+#define glGenRenderbuffersOES GLEW_GET_FUN(__glewGenRenderbuffersOES)
+#define glGenerateMipmapOES GLEW_GET_FUN(__glewGenerateMipmapOES)
+#define glGetFramebufferAttachmentParameterivOES GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivOES)
+#define glGetRenderbufferParameterivOES GLEW_GET_FUN(__glewGetRenderbufferParameterivOES)
+#define glIsFramebufferOES GLEW_GET_FUN(__glewIsFramebufferOES)
+#define glIsRenderbufferOES GLEW_GET_FUN(__glewIsRenderbufferOES)
+#define glRenderbufferStorageOES GLEW_GET_FUN(__glewRenderbufferStorageOES)
+
+#define GLEW_OES_framebuffer_object GLEW_GET_VAR(__GLEW_OES_framebuffer_object)
+
+#endif /* GL_OES_framebuffer_object */
+
+/* ----------------------- GL_OES_geometry_point_size ---------------------- */
+
+#ifndef GL_OES_geometry_point_size
+#define GL_OES_geometry_point_size 1
+
+#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+#define GL_LINES_ADJACENCY_OES 0xA
+#define GL_LINE_STRIP_ADJACENCY_OES 0xB
+#define GL_TRIANGLES_ADJACENCY_OES 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+#define GL_UNDEFINED_VERTEX_OES 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+#define GL_PRIMITIVES_GENERATED_OES 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+#define GL_GEOMETRY_SHADER_OES 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
+
+#define GLEW_OES_geometry_point_size GLEW_GET_VAR(__GLEW_OES_geometry_point_size)
+
+#endif /* GL_OES_geometry_point_size */
+
+/* ------------------------- GL_OES_geometry_shader ------------------------ */
+
+#ifndef GL_OES_geometry_shader
+#define GL_OES_geometry_shader 1
+
+#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+#define GL_LINES_ADJACENCY_OES 0xA
+#define GL_LINE_STRIP_ADJACENCY_OES 0xB
+#define GL_TRIANGLES_ADJACENCY_OES 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+#define GL_UNDEFINED_VERTEX_OES 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+#define GL_PRIMITIVES_GENERATED_OES 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+#define GL_GEOMETRY_SHADER_OES 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
+
+#define GLEW_OES_geometry_shader GLEW_GET_VAR(__GLEW_OES_geometry_shader)
+
+#endif /* GL_OES_geometry_shader */
+
+/* ----------------------- GL_OES_get_program_binary ----------------------- */
+
+#ifndef GL_OES_get_program_binary
+#define GL_OES_get_program_binary 1
+
+#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length);
+
+#define glGetProgramBinaryOES GLEW_GET_FUN(__glewGetProgramBinaryOES)
+#define glProgramBinaryOES GLEW_GET_FUN(__glewProgramBinaryOES)
+
+#define GLEW_OES_get_program_binary GLEW_GET_VAR(__GLEW_OES_get_program_binary)
+
+#endif /* GL_OES_get_program_binary */
+
+/* --------------------------- GL_OES_gpu_shader5 -------------------------- */
+
+#ifndef GL_OES_gpu_shader5
+#define GL_OES_gpu_shader5 1
+
+#define GLEW_OES_gpu_shader5 GLEW_GET_VAR(__GLEW_OES_gpu_shader5)
+
+#endif /* GL_OES_gpu_shader5 */
+
+/* ---------------------------- GL_OES_mapbuffer --------------------------- */
+
+#ifndef GL_OES_mapbuffer
+#define GL_OES_mapbuffer 1
+
+#define GL_WRITE_ONLY_OES 0x88B9
+#define GL_BUFFER_ACCESS_OES 0x88BB
+#define GL_BUFFER_MAPPED_OES 0x88BC
+#define GL_BUFFER_MAP_POINTER_OES 0x88BD
+
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void** params);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFEROESPROC) (GLenum target);
+
+#define glGetBufferPointervOES GLEW_GET_FUN(__glewGetBufferPointervOES)
+#define glMapBufferOES GLEW_GET_FUN(__glewMapBufferOES)
+#define glUnmapBufferOES GLEW_GET_FUN(__glewUnmapBufferOES)
+
+#define GLEW_OES_mapbuffer GLEW_GET_VAR(__GLEW_OES_mapbuffer)
+
+#endif /* GL_OES_mapbuffer */
+
+/* --------------------------- GL_OES_matrix_get --------------------------- */
+
+#ifndef GL_OES_matrix_get
+#define GL_OES_matrix_get 1
+
+#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898d
+#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898e
+#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898f
+
+#define GLEW_OES_matrix_get GLEW_GET_VAR(__GLEW_OES_matrix_get)
+
+#endif /* GL_OES_matrix_get */
+
+/* ------------------------- GL_OES_matrix_palette ------------------------- */
+
+#ifndef GL_OES_matrix_palette
+#define GL_OES_matrix_palette 1
+
+#define GL_MAX_VERTEX_UNITS_OES 0x86A4
+#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC
+#define GL_WEIGHT_ARRAY_OES 0x86AD
+#define GL_MATRIX_PALETTE_OES 0x8840
+#define GL_MAX_PALETTE_MATRICES_OES 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843
+#define GL_MATRIX_INDEX_ARRAY_OES 0x8844
+#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E
+#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E
+
+typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+
+#define glCurrentPaletteMatrixOES GLEW_GET_FUN(__glewCurrentPaletteMatrixOES)
+#define glLoadPaletteFromModelViewMatrixOES GLEW_GET_FUN(__glewLoadPaletteFromModelViewMatrixOES)
+#define glMatrixIndexPointerOES GLEW_GET_FUN(__glewMatrixIndexPointerOES)
+#define glWeightPointerOES GLEW_GET_FUN(__glewWeightPointerOES)
+
+#define GLEW_OES_matrix_palette GLEW_GET_VAR(__GLEW_OES_matrix_palette)
+
+#endif /* GL_OES_matrix_palette */
+
+/* ---------------------- GL_OES_packed_depth_stencil ---------------------- */
+
+#ifndef GL_OES_packed_depth_stencil
+#define GL_OES_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_OES 0x84F9
+#define GL_UNSIGNED_INT_24_8_OES 0x84FA
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+
+#define GLEW_OES_packed_depth_stencil GLEW_GET_VAR(__GLEW_OES_packed_depth_stencil)
+
+#endif /* GL_OES_packed_depth_stencil */
+
+/* ------------------------ GL_OES_point_size_array ------------------------ */
+
+#ifndef GL_OES_point_size_array
+#define GL_OES_point_size_array 1
+
+#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
+#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
+#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
+#define GL_POINT_SIZE_ARRAY_OES 0x8B9C
+#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
+
+#define GLEW_OES_point_size_array GLEW_GET_VAR(__GLEW_OES_point_size_array)
+
+#endif /* GL_OES_point_size_array */
+
+/* -------------------------- GL_OES_point_sprite -------------------------- */
+
+#ifndef GL_OES_point_sprite
+#define GL_OES_point_sprite 1
+
+#define GL_POINT_SPRITE_OES 0x8861
+#define GL_COORD_REPLACE_OES 0x8862
+
+#define GLEW_OES_point_sprite GLEW_GET_VAR(__GLEW_OES_point_sprite)
+
+#endif /* GL_OES_point_sprite */
+
+/* --------------------------- GL_OES_read_format -------------------------- */
+
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+
+#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format)
+
+#endif /* GL_OES_read_format */
+
+/* --------------------- GL_OES_required_internalformat -------------------- */
+
+#ifndef GL_OES_required_internalformat
+#define GL_OES_required_internalformat 1
+
+#define GL_ALPHA8_OES 0x803C
+#define GL_LUMINANCE8_OES 0x8040
+#define GL_LUMINANCE4_ALPHA4_OES 0x8043
+#define GL_LUMINANCE8_ALPHA8_OES 0x8045
+#define GL_RGB8_OES 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGBA4_OES 0x8056
+#define GL_RGB5_A1_OES 0x8057
+#define GL_RGBA8_OES 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_DEPTH_COMPONENT16_OES 0x81A5
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+#define GL_DEPTH_COMPONENT32_OES 0x81A7
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+#define GL_RGB565_OES 0x8D62
+
+#define GLEW_OES_required_internalformat GLEW_GET_VAR(__GLEW_OES_required_internalformat)
+
+#endif /* GL_OES_required_internalformat */
+
+/* --------------------------- GL_OES_rgb8_rgba8 --------------------------- */
+
+#ifndef GL_OES_rgb8_rgba8
+#define GL_OES_rgb8_rgba8 1
+
+#define GL_RGB8_OES 0x8051
+#define GL_RGBA8_OES 0x8058
+
+#define GLEW_OES_rgb8_rgba8 GLEW_GET_VAR(__GLEW_OES_rgb8_rgba8)
+
+#endif /* GL_OES_rgb8_rgba8 */
+
+/* ------------------------- GL_OES_sample_shading ------------------------- */
+
+#ifndef GL_OES_sample_shading
+#define GL_OES_sample_shading 1
+
+#define GL_SAMPLE_SHADING_OES 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
+
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value);
+
+#define glMinSampleShadingOES GLEW_GET_FUN(__glewMinSampleShadingOES)
+
+#define GLEW_OES_sample_shading GLEW_GET_VAR(__GLEW_OES_sample_shading)
+
+#endif /* GL_OES_sample_shading */
+
+/* ------------------------ GL_OES_sample_variables ------------------------ */
+
+#ifndef GL_OES_sample_variables
+#define GL_OES_sample_variables 1
+
+#define GLEW_OES_sample_variables GLEW_GET_VAR(__GLEW_OES_sample_variables)
+
+#endif /* GL_OES_sample_variables */
+
+/* ----------------------- GL_OES_shader_image_atomic ---------------------- */
+
+#ifndef GL_OES_shader_image_atomic
+#define GL_OES_shader_image_atomic 1
+
+#define GLEW_OES_shader_image_atomic GLEW_GET_VAR(__GLEW_OES_shader_image_atomic)
+
+#endif /* GL_OES_shader_image_atomic */
+
+/* ------------------------ GL_OES_shader_io_blocks ------------------------ */
+
+#ifndef GL_OES_shader_io_blocks
+#define GL_OES_shader_io_blocks 1
+
+#define GLEW_OES_shader_io_blocks GLEW_GET_VAR(__GLEW_OES_shader_io_blocks)
+
+#endif /* GL_OES_shader_io_blocks */
+
+/* ---------------- GL_OES_shader_multisample_interpolation ---------------- */
+
+#ifndef GL_OES_shader_multisample_interpolation
+#define GL_OES_shader_multisample_interpolation 1
+
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
+
+#define GLEW_OES_shader_multisample_interpolation GLEW_GET_VAR(__GLEW_OES_shader_multisample_interpolation)
+
+#endif /* GL_OES_shader_multisample_interpolation */
+
+/* ------------------------ GL_OES_single_precision ------------------------ */
+
+#ifndef GL_OES_single_precision
+#define GL_OES_single_precision 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES)
+#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES)
+#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES)
+#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES)
+#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES)
+#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES)
+
+#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision)
+
+#endif /* GL_OES_single_precision */
+
+/* ---------------------- GL_OES_standard_derivatives ---------------------- */
+
+#ifndef GL_OES_standard_derivatives
+#define GL_OES_standard_derivatives 1
+
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
+
+#define GLEW_OES_standard_derivatives GLEW_GET_VAR(__GLEW_OES_standard_derivatives)
+
+#endif /* GL_OES_standard_derivatives */
+
+/* ---------------------------- GL_OES_stencil1 ---------------------------- */
+
+#ifndef GL_OES_stencil1
+#define GL_OES_stencil1 1
+
+#define GL_STENCIL_INDEX1_OES 0x8D46
+
+#define GLEW_OES_stencil1 GLEW_GET_VAR(__GLEW_OES_stencil1)
+
+#endif /* GL_OES_stencil1 */
+
+/* ---------------------------- GL_OES_stencil4 ---------------------------- */
+
+#ifndef GL_OES_stencil4
+#define GL_OES_stencil4 1
+
+#define GL_STENCIL_INDEX4_OES 0x8D47
+
+#define GLEW_OES_stencil4 GLEW_GET_VAR(__GLEW_OES_stencil4)
+
+#endif /* GL_OES_stencil4 */
+
+/* ---------------------------- GL_OES_stencil8 ---------------------------- */
+
+#ifndef GL_OES_stencil8
+#define GL_OES_stencil8 1
+
+#define GL_STENCIL_INDEX8_OES 0x8D48
+
+#define GLEW_OES_stencil8 GLEW_GET_VAR(__GLEW_OES_stencil8)
+
+#endif /* GL_OES_stencil8 */
+
+/* ----------------------- GL_OES_surfaceless_context ---------------------- */
+
+#ifndef GL_OES_surfaceless_context
+#define GL_OES_surfaceless_context 1
+
+#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
+
+#define GLEW_OES_surfaceless_context GLEW_GET_VAR(__GLEW_OES_surfaceless_context)
+
+#endif /* GL_OES_surfaceless_context */
+
+/* --------------------- GL_OES_tessellation_point_size -------------------- */
+
+#ifndef GL_OES_tessellation_point_size
+#define GL_OES_tessellation_point_size 1
+
+#define GL_QUADS_OES 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+#define GL_PATCHES_OES 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+#define GL_PATCH_VERTICES_OES 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+#define GL_TESS_GEN_MODE_OES 0x8E76
+#define GL_TESS_GEN_SPACING_OES 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
+#define GL_ISOLINES_OES 0x8E7A
+#define GL_FRACTIONAL_ODD_OES 0x8E7B
+#define GL_FRACTIONAL_EVEN_OES 0x8E7C
+#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
+#define GL_TESS_CONTROL_SHADER_OES 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+#define GL_IS_PER_PATCH_OES 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
+
+#define GLEW_OES_tessellation_point_size GLEW_GET_VAR(__GLEW_OES_tessellation_point_size)
+
+#endif /* GL_OES_tessellation_point_size */
+
+/* ----------------------- GL_OES_tessellation_shader ---------------------- */
+
+#ifndef GL_OES_tessellation_shader
+#define GL_OES_tessellation_shader 1
+
+#define GL_QUADS_OES 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+#define GL_PATCHES_OES 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+#define GL_PATCH_VERTICES_OES 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+#define GL_TESS_GEN_MODE_OES 0x8E76
+#define GL_TESS_GEN_SPACING_OES 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
+#define GL_ISOLINES_OES 0x8E7A
+#define GL_FRACTIONAL_ODD_OES 0x8E7B
+#define GL_FRACTIONAL_EVEN_OES 0x8E7C
+#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
+#define GL_TESS_CONTROL_SHADER_OES 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+#define GL_IS_PER_PATCH_OES 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
+
+#define GLEW_OES_tessellation_shader GLEW_GET_VAR(__GLEW_OES_tessellation_shader)
+
+#endif /* GL_OES_tessellation_shader */
+
+/* --------------------------- GL_OES_texture_3D --------------------------- */
+
+#ifndef GL_OES_texture_3D
+#define GL_OES_texture_3D 1
+
+#define GL_TEXTURE_BINDING_3D_OES 0x806A
+#define GL_TEXTURE_3D_OES 0x806F
+#define GL_TEXTURE_WRAP_R_OES 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCompressedTexImage3DOES GLEW_GET_FUN(__glewCompressedTexImage3DOES)
+#define glCompressedTexSubImage3DOES GLEW_GET_FUN(__glewCompressedTexSubImage3DOES)
+#define glCopyTexSubImage3DOES GLEW_GET_FUN(__glewCopyTexSubImage3DOES)
+#define glFramebufferTexture3DOES GLEW_GET_FUN(__glewFramebufferTexture3DOES)
+#define glTexImage3DOES GLEW_GET_FUN(__glewTexImage3DOES)
+#define glTexSubImage3DOES GLEW_GET_FUN(__glewTexSubImage3DOES)
+
+#define GLEW_OES_texture_3D GLEW_GET_VAR(__GLEW_OES_texture_3D)
+
+#endif /* GL_OES_texture_3D */
+
+/* ---------------------- GL_OES_texture_border_clamp ---------------------- */
+
+#ifndef GL_OES_texture_border_clamp
+#define GL_OES_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_OES 0x1004
+#define GL_CLAMP_TO_BORDER_OES 0x812D
+
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint* params);
+
+#define glGetSamplerParameterIivOES GLEW_GET_FUN(__glewGetSamplerParameterIivOES)
+#define glGetSamplerParameterIuivOES GLEW_GET_FUN(__glewGetSamplerParameterIuivOES)
+#define glGetTexParameterIivOES GLEW_GET_FUN(__glewGetTexParameterIivOES)
+#define glGetTexParameterIuivOES GLEW_GET_FUN(__glewGetTexParameterIuivOES)
+#define glSamplerParameterIivOES GLEW_GET_FUN(__glewSamplerParameterIivOES)
+#define glSamplerParameterIuivOES GLEW_GET_FUN(__glewSamplerParameterIuivOES)
+#define glTexParameterIivOES GLEW_GET_FUN(__glewTexParameterIivOES)
+#define glTexParameterIuivOES GLEW_GET_FUN(__glewTexParameterIuivOES)
+
+#define GLEW_OES_texture_border_clamp GLEW_GET_VAR(__GLEW_OES_texture_border_clamp)
+
+#endif /* GL_OES_texture_border_clamp */
+
+/* ------------------------- GL_OES_texture_buffer ------------------------- */
+
+#ifndef GL_OES_texture_buffer
+#define GL_OES_texture_buffer 1
+
+#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
+#define GL_TEXTURE_BUFFER_OES 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
+#define GL_SAMPLER_BUFFER_OES 0x8DC2
+#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
+#define GL_IMAGE_BUFFER_OES 0x9051
+#define GL_INT_IMAGE_BUFFER_OES 0x905C
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
+#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
+#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+#define glTexBufferOES GLEW_GET_FUN(__glewTexBufferOES)
+#define glTexBufferRangeOES GLEW_GET_FUN(__glewTexBufferRangeOES)
+
+#define GLEW_OES_texture_buffer GLEW_GET_VAR(__GLEW_OES_texture_buffer)
+
+#endif /* GL_OES_texture_buffer */
+
+/* -------------------- GL_OES_texture_compression_astc -------------------- */
+
+#ifndef GL_OES_texture_compression_astc
+#define GL_OES_texture_compression_astc 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_OES_texture_compression_astc GLEW_GET_VAR(__GLEW_OES_texture_compression_astc)
+
+#endif /* GL_OES_texture_compression_astc */
+
+/* ------------------------ GL_OES_texture_cube_map ------------------------ */
+
+#ifndef GL_OES_texture_cube_map
+#define GL_OES_texture_cube_map 1
+
+#define GL_TEXTURE_GEN_MODE_OES 0x2500
+#define GL_NORMAL_MAP_OES 0x8511
+#define GL_REFLECTION_MAP_OES 0x8512
+#define GL_TEXTURE_CUBE_MAP_OES 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C
+#define GL_TEXTURE_GEN_STR_OES 0x8D60
+
+typedef void (GLAPIENTRY * PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed* params);
+
+#define glGetTexGenfvOES GLEW_GET_FUN(__glewGetTexGenfvOES)
+#define glGetTexGenivOES GLEW_GET_FUN(__glewGetTexGenivOES)
+#define glGetTexGenxvOES GLEW_GET_FUN(__glewGetTexGenxvOES)
+#define glTexGenfOES GLEW_GET_FUN(__glewTexGenfOES)
+#define glTexGenfvOES GLEW_GET_FUN(__glewTexGenfvOES)
+#define glTexGeniOES GLEW_GET_FUN(__glewTexGeniOES)
+#define glTexGenivOES GLEW_GET_FUN(__glewTexGenivOES)
+#define glTexGenxOES GLEW_GET_FUN(__glewTexGenxOES)
+#define glTexGenxvOES GLEW_GET_FUN(__glewTexGenxvOES)
+
+#define GLEW_OES_texture_cube_map GLEW_GET_VAR(__GLEW_OES_texture_cube_map)
+
+#endif /* GL_OES_texture_cube_map */
+
+/* --------------------- GL_OES_texture_cube_map_array --------------------- */
+
+#ifndef GL_OES_texture_cube_map_array
+#define GL_OES_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
+#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
+#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
+
+#define GLEW_OES_texture_cube_map_array GLEW_GET_VAR(__GLEW_OES_texture_cube_map_array)
+
+#endif /* GL_OES_texture_cube_map_array */
+
+/* ---------------------- GL_OES_texture_env_crossbar ---------------------- */
+
+#ifndef GL_OES_texture_env_crossbar
+#define GL_OES_texture_env_crossbar 1
+
+#define GLEW_OES_texture_env_crossbar GLEW_GET_VAR(__GLEW_OES_texture_env_crossbar)
+
+#endif /* GL_OES_texture_env_crossbar */
+
+/* --------------------- GL_OES_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_OES_texture_mirrored_repeat
+#define GL_OES_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT 0x8370
+
+#define GLEW_OES_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_OES_texture_mirrored_repeat)
+
+#endif /* GL_OES_texture_mirrored_repeat */
+
+/* -------------------------- GL_OES_texture_npot -------------------------- */
+
+#ifndef GL_OES_texture_npot
+#define GL_OES_texture_npot 1
+
+#define GLEW_OES_texture_npot GLEW_GET_VAR(__GLEW_OES_texture_npot)
+
+#endif /* GL_OES_texture_npot */
+
+/* ------------------------ GL_OES_texture_stencil8 ------------------------ */
+
+#ifndef GL_OES_texture_stencil8
+#define GL_OES_texture_stencil8 1
+
+#define GL_STENCIL_INDEX 0x1901
+#define GL_STENCIL_INDEX8 0x8D48
+
+#define GLEW_OES_texture_stencil8 GLEW_GET_VAR(__GLEW_OES_texture_stencil8)
+
+#endif /* GL_OES_texture_stencil8 */
+
+/* -------------- GL_OES_texture_storage_multisample_2d_array -------------- */
+
+#ifndef GL_OES_texture_storage_multisample_2d_array
+#define GL_OES_texture_storage_multisample_2d_array 1
+
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glTexStorage3DMultisampleOES GLEW_GET_FUN(__glewTexStorage3DMultisampleOES)
+
+#define GLEW_OES_texture_storage_multisample_2d_array GLEW_GET_VAR(__GLEW_OES_texture_storage_multisample_2d_array)
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+/* -------------------------- GL_OES_texture_view -------------------------- */
+
+#ifndef GL_OES_texture_view
+#define GL_OES_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureViewOES GLEW_GET_FUN(__glewTextureViewOES)
+
+#define GLEW_OES_texture_view GLEW_GET_VAR(__GLEW_OES_texture_view)
+
+#endif /* GL_OES_texture_view */
+
+/* ----------------------- GL_OES_vertex_array_object ---------------------- */
+
+#ifndef GL_OES_vertex_array_object
+#define GL_OES_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYOESPROC) (GLuint array);
+
+#define glBindVertexArrayOES GLEW_GET_FUN(__glewBindVertexArrayOES)
+#define glDeleteVertexArraysOES GLEW_GET_FUN(__glewDeleteVertexArraysOES)
+#define glGenVertexArraysOES GLEW_GET_FUN(__glewGenVertexArraysOES)
+#define glIsVertexArrayOES GLEW_GET_FUN(__glewIsVertexArrayOES)
+
+#define GLEW_OES_vertex_array_object GLEW_GET_VAR(__GLEW_OES_vertex_array_object)
+
+#endif /* GL_OES_vertex_array_object */
+
+/* ------------------------ GL_OES_vertex_half_float ----------------------- */
+
+#ifndef GL_OES_vertex_half_float
+#define GL_OES_vertex_half_float 1
+
+#define GL_HALF_FLOAT_OES 0x8D61
+
+#define GLEW_OES_vertex_half_float GLEW_GET_VAR(__GLEW_OES_vertex_half_float)
+
+#endif /* GL_OES_vertex_half_float */
+
+/* --------------------- GL_OES_vertex_type_10_10_10_2 --------------------- */
+
+#ifndef GL_OES_vertex_type_10_10_10_2
+#define GL_OES_vertex_type_10_10_10_2 1
+
+#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
+#define GL_INT_10_10_10_2_OES 0x8DF7
+
+#define GLEW_OES_vertex_type_10_10_10_2 GLEW_GET_VAR(__GLEW_OES_vertex_type_10_10_10_2)
+
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+
+/* ---------------------------- GL_OML_interlace --------------------------- */
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+
+#define GL_INTERLACE_OML 0x8980
+#define GL_INTERLACE_READ_OML 0x8981
+
+#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace)
+
+#endif /* GL_OML_interlace */
+
+/* ---------------------------- GL_OML_resample ---------------------------- */
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+
+#define GL_PACK_RESAMPLE_OML 0x8984
+#define GL_UNPACK_RESAMPLE_OML 0x8985
+#define GL_RESAMPLE_REPLICATE_OML 0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
+#define GL_RESAMPLE_AVERAGE_OML 0x8988
+#define GL_RESAMPLE_DECIMATE_OML 0x8989
+
+#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample)
+
+#endif /* GL_OML_resample */
+
+/* ---------------------------- GL_OML_subsample --------------------------- */
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+
+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
+
+#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample)
+
+#endif /* GL_OML_subsample */
+
+/* ---------------------------- GL_OVR_multiview --------------------------- */
+
+#ifndef GL_OVR_multiview
+#define GL_OVR_multiview 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+#define GL_MAX_VIEWS_OVR 0x9631
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+
+#define glFramebufferTextureMultiviewOVR GLEW_GET_FUN(__glewFramebufferTextureMultiviewOVR)
+#define glNamedFramebufferTextureMultiviewOVR GLEW_GET_FUN(__glewNamedFramebufferTextureMultiviewOVR)
+
+#define GLEW_OVR_multiview GLEW_GET_VAR(__GLEW_OVR_multiview)
+
+#endif /* GL_OVR_multiview */
+
+/* --------------------------- GL_OVR_multiview2 --------------------------- */
+
+#ifndef GL_OVR_multiview2
+#define GL_OVR_multiview2 1
+
+#define GLEW_OVR_multiview2 GLEW_GET_VAR(__GLEW_OVR_multiview2)
+
+#endif /* GL_OVR_multiview2 */
+
+/* ------------ GL_OVR_multiview_multisampled_render_to_texture ------------ */
+
+#ifndef GL_OVR_multiview_multisampled_render_to_texture
+#define GL_OVR_multiview_multisampled_render_to_texture 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+
+#define glFramebufferTextureMultisampleMultiviewOVR GLEW_GET_FUN(__glewFramebufferTextureMultisampleMultiviewOVR)
+
+#define GLEW_OVR_multiview_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_OVR_multiview_multisampled_render_to_texture)
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+/* --------------------------- GL_PGI_misc_hints --------------------------- */
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000
+#define GL_CONSERVE_MEMORY_HINT_PGI 107005
+#define GL_RECLAIM_MEMORY_HINT_PGI 107006
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012
+#define GL_ALWAYS_FAST_HINT_PGI 107020
+#define GL_ALWAYS_SOFT_HINT_PGI 107021
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030
+#define GL_STRICT_LIGHTING_HINT_PGI 107031
+#define GL_STRICT_SCISSOR_HINT_PGI 107032
+#define GL_FULL_STIPPLE_HINT_PGI 107033
+#define GL_CLIP_NEAR_HINT_PGI 107040
+#define GL_CLIP_FAR_HINT_PGI 107041
+#define GL_WIDE_LINE_HINT_PGI 107042
+#define GL_BACK_NORMALS_HINT_PGI 107043
+
+#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints)
+
+#endif /* GL_PGI_misc_hints */
+
+/* -------------------------- GL_PGI_vertex_hints -------------------------- */
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+
+#define GL_VERTEX23_BIT_PGI 0x00000004
+#define GL_VERTEX4_BIT_PGI 0x00000008
+#define GL_COLOR3_BIT_PGI 0x00010000
+#define GL_COLOR4_BIT_PGI 0x00020000
+#define GL_EDGEFLAG_BIT_PGI 0x00040000
+#define GL_INDEX_BIT_PGI 0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
+#define GL_VERTEX_DATA_HINT_PGI 107050
+#define GL_VERTEX_CONSISTENT_HINT_PGI 107051
+#define GL_MATERIAL_SIDE_HINT_PGI 107052
+#define GL_MAX_VERTEX_HINT_PGI 107053
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
+#define GL_NORMAL_BIT_PGI 0x08000000
+#define GL_TEXCOORD1_BIT_PGI 0x10000000
+#define GL_TEXCOORD2_BIT_PGI 0x20000000
+#define GL_TEXCOORD3_BIT_PGI 0x40000000
+#define GL_TEXCOORD4_BIT_PGI 0x80000000
+
+#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints)
+
+#endif /* GL_PGI_vertex_hints */
+
+/* ----------------------- GL_QCOM_YUV_texture_gather ---------------------- */
+
+#ifndef GL_QCOM_YUV_texture_gather
+#define GL_QCOM_YUV_texture_gather 1
+
+#define GLEW_QCOM_YUV_texture_gather GLEW_GET_VAR(__GLEW_QCOM_YUV_texture_gather)
+
+#endif /* GL_QCOM_YUV_texture_gather */
+
+/* --------------------------- GL_QCOM_alpha_test -------------------------- */
+
+#ifndef GL_QCOM_alpha_test
+#define GL_QCOM_alpha_test 1
+
+#define GL_ALPHA_TEST_QCOM 0x0BC0
+#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
+#define GL_ALPHA_TEST_REF_QCOM 0x0BC2
+
+typedef void (GLAPIENTRY * PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
+
+#define glAlphaFuncQCOM GLEW_GET_FUN(__glewAlphaFuncQCOM)
+
+#define GLEW_QCOM_alpha_test GLEW_GET_VAR(__GLEW_QCOM_alpha_test)
+
+#endif /* GL_QCOM_alpha_test */
+
+/* ------------------------ GL_QCOM_binning_control ------------------------ */
+
+#ifndef GL_QCOM_binning_control
+#define GL_QCOM_binning_control 1
+
+#define GL_DONT_CARE 0x1100
+#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
+#define GL_CPU_OPTIMIZED_QCOM 0x8FB1
+#define GL_GPU_OPTIMIZED_QCOM 0x8FB2
+#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
+
+#define GLEW_QCOM_binning_control GLEW_GET_VAR(__GLEW_QCOM_binning_control)
+
+#endif /* GL_QCOM_binning_control */
+
+/* ------------------------- GL_QCOM_driver_control ------------------------ */
+
+#ifndef GL_QCOM_driver_control
+#define GL_QCOM_driver_control 1
+
+typedef void (GLAPIENTRY * PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
+typedef void (GLAPIENTRY * PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
+typedef void (GLAPIENTRY * PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar *driverControlString);
+typedef void (GLAPIENTRY * PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint* num, GLsizei size, GLuint *driverControls);
+
+#define glDisableDriverControlQCOM GLEW_GET_FUN(__glewDisableDriverControlQCOM)
+#define glEnableDriverControlQCOM GLEW_GET_FUN(__glewEnableDriverControlQCOM)
+#define glGetDriverControlStringQCOM GLEW_GET_FUN(__glewGetDriverControlStringQCOM)
+#define glGetDriverControlsQCOM GLEW_GET_FUN(__glewGetDriverControlsQCOM)
+
+#define GLEW_QCOM_driver_control GLEW_GET_VAR(__GLEW_QCOM_driver_control)
+
+#endif /* GL_QCOM_driver_control */
+
+/* -------------------------- GL_QCOM_extended_get ------------------------- */
+
+#ifndef GL_QCOM_extended_get
+#define GL_QCOM_extended_get 1
+
+#define GL_TEXTURE_WIDTH_QCOM 0x8BD2
+#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3
+#define GL_TEXTURE_DEPTH_QCOM 0x8BD4
+#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
+#define GL_TEXTURE_FORMAT_QCOM 0x8BD6
+#define GL_TEXTURE_TYPE_QCOM 0x8BD7
+#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
+#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
+#define GL_TEXTURE_TARGET_QCOM 0x8BDA
+#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
+#define GL_STATE_RESTORE 0x8BDC
+
+typedef void (GLAPIENTRY * PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void** params);
+typedef void (GLAPIENTRY * PFNGLEXTGETBUFFERSQCOMPROC) (GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXTURESQCOMPROC) (GLuint* textures, GLint maxTextures, GLint* numTextures);
+typedef void (GLAPIENTRY * PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
+
+#define glExtGetBufferPointervQCOM GLEW_GET_FUN(__glewExtGetBufferPointervQCOM)
+#define glExtGetBuffersQCOM GLEW_GET_FUN(__glewExtGetBuffersQCOM)
+#define glExtGetFramebuffersQCOM GLEW_GET_FUN(__glewExtGetFramebuffersQCOM)
+#define glExtGetRenderbuffersQCOM GLEW_GET_FUN(__glewExtGetRenderbuffersQCOM)
+#define glExtGetTexLevelParameterivQCOM GLEW_GET_FUN(__glewExtGetTexLevelParameterivQCOM)
+#define glExtGetTexSubImageQCOM GLEW_GET_FUN(__glewExtGetTexSubImageQCOM)
+#define glExtGetTexturesQCOM GLEW_GET_FUN(__glewExtGetTexturesQCOM)
+#define glExtTexObjectStateOverrideiQCOM GLEW_GET_FUN(__glewExtTexObjectStateOverrideiQCOM)
+
+#define GLEW_QCOM_extended_get GLEW_GET_VAR(__GLEW_QCOM_extended_get)
+
+#endif /* GL_QCOM_extended_get */
+
+/* ------------------------- GL_QCOM_extended_get2 ------------------------- */
+
+#ifndef GL_QCOM_extended_get2
+#define GL_QCOM_extended_get2 1
+
+typedef void (GLAPIENTRY * PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+typedef void (GLAPIENTRY * PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+typedef void (GLAPIENTRY * PFNGLEXTGETSHADERSQCOMPROC) (GLuint* shaders, GLint maxShaders, GLint* numShaders);
+typedef GLboolean (GLAPIENTRY * PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
+
+#define glExtGetProgramBinarySourceQCOM GLEW_GET_FUN(__glewExtGetProgramBinarySourceQCOM)
+#define glExtGetProgramsQCOM GLEW_GET_FUN(__glewExtGetProgramsQCOM)
+#define glExtGetShadersQCOM GLEW_GET_FUN(__glewExtGetShadersQCOM)
+#define glExtIsProgramBinaryQCOM GLEW_GET_FUN(__glewExtIsProgramBinaryQCOM)
+
+#define GLEW_QCOM_extended_get2 GLEW_GET_VAR(__GLEW_QCOM_extended_get2)
+
+#endif /* GL_QCOM_extended_get2 */
+
+/* ---------------------- GL_QCOM_frame_extrapolation ---------------------- */
+
+#ifndef GL_QCOM_frame_extrapolation
+#define GL_QCOM_frame_extrapolation 1
+
+typedef void (GLAPIENTRY * PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+
+#define glExtrapolateTex2DQCOM GLEW_GET_FUN(__glewExtrapolateTex2DQCOM)
+
+#define GLEW_QCOM_frame_extrapolation GLEW_GET_VAR(__GLEW_QCOM_frame_extrapolation)
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+/* ---------------------- GL_QCOM_framebuffer_foveated --------------------- */
+
+#ifndef GL_QCOM_framebuffer_foveated
+#define GL_QCOM_framebuffer_foveated 1
+
+#define GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint fbo, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint* providedFeatures);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint fbo, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+#define glFramebufferFoveationConfigQCOM GLEW_GET_FUN(__glewFramebufferFoveationConfigQCOM)
+#define glFramebufferFoveationParametersQCOM GLEW_GET_FUN(__glewFramebufferFoveationParametersQCOM)
+
+#define GLEW_QCOM_framebuffer_foveated GLEW_GET_VAR(__GLEW_QCOM_framebuffer_foveated)
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+/* ----------------------- GL_QCOM_motion_estimation ----------------------- */
+
+#ifndef GL_QCOM_motion_estimation
+#define GL_QCOM_motion_estimation 1
+
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
+
+typedef void (GLAPIENTRY * PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output);
+typedef void (GLAPIENTRY * PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask);
+
+#define glTexEstimateMotionQCOM GLEW_GET_FUN(__glewTexEstimateMotionQCOM)
+#define glTexEstimateMotionRegionsQCOM GLEW_GET_FUN(__glewTexEstimateMotionRegionsQCOM)
+
+#define GLEW_QCOM_motion_estimation GLEW_GET_VAR(__GLEW_QCOM_motion_estimation)
+
+#endif /* GL_QCOM_motion_estimation */
+
+/* ---------------------- GL_QCOM_perfmon_global_mode ---------------------- */
+
+#ifndef GL_QCOM_perfmon_global_mode
+#define GL_QCOM_perfmon_global_mode 1
+
+#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
+
+#define GLEW_QCOM_perfmon_global_mode GLEW_GET_VAR(__GLEW_QCOM_perfmon_global_mode)
+
+#endif /* GL_QCOM_perfmon_global_mode */
+
+/* --------------------- GL_QCOM_render_shared_exponent -------------------- */
+
+#ifndef GL_QCOM_render_shared_exponent
+#define GL_QCOM_render_shared_exponent 1
+
+#define GL_RGB9_E5 0x8C3D
+
+#define GLEW_QCOM_render_shared_exponent GLEW_GET_VAR(__GLEW_QCOM_render_shared_exponent)
+
+#endif /* GL_QCOM_render_shared_exponent */
+
+/* -------------- GL_QCOM_shader_framebuffer_fetch_noncoherent ------------- */
+
+#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent
+#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1
+
+#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void);
+
+#define glFramebufferFetchBarrierQCOM GLEW_GET_FUN(__glewFramebufferFetchBarrierQCOM)
+
+#define GLEW_QCOM_shader_framebuffer_fetch_noncoherent GLEW_GET_VAR(__GLEW_QCOM_shader_framebuffer_fetch_noncoherent)
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+/* ----------------- GL_QCOM_shader_framebuffer_fetch_rate ----------------- */
+
+#ifndef GL_QCOM_shader_framebuffer_fetch_rate
+#define GL_QCOM_shader_framebuffer_fetch_rate 1
+
+#define GLEW_QCOM_shader_framebuffer_fetch_rate GLEW_GET_VAR(__GLEW_QCOM_shader_framebuffer_fetch_rate)
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+
+/* -------------------------- GL_QCOM_shading_rate ------------------------- */
+
+#ifndef GL_QCOM_shading_rate
+#define GL_QCOM_shading_rate 1
+
+#define GL_SHADING_RATE_QCOM 0x96A4
+#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5
+#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6
+#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7
+#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8
+#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9
+#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC
+#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE
+
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEQCOMPROC) (GLenum rate);
+
+#define glShadingRateQCOM GLEW_GET_FUN(__glewShadingRateQCOM)
+
+#define GLEW_QCOM_shading_rate GLEW_GET_VAR(__GLEW_QCOM_shading_rate)
+
+#endif /* GL_QCOM_shading_rate */
+
+/* ------------------------ GL_QCOM_texture_foveated ----------------------- */
+
+#ifndef GL_QCOM_texture_foveated
+#define GL_QCOM_texture_foveated 1
+
+#define GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
+#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
+#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
+#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
+#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+#define glTextureFoveationParametersQCOM GLEW_GET_FUN(__glewTextureFoveationParametersQCOM)
+
+#define GLEW_QCOM_texture_foveated GLEW_GET_VAR(__GLEW_QCOM_texture_foveated)
+
+#endif /* GL_QCOM_texture_foveated */
+
+/* ----------------------- GL_QCOM_texture_foveated2 ----------------------- */
+
+#ifndef GL_QCOM_texture_foveated2
+#define GL_QCOM_texture_foveated2 1
+
+#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0
+
+#define GLEW_QCOM_texture_foveated2 GLEW_GET_VAR(__GLEW_QCOM_texture_foveated2)
+
+#endif /* GL_QCOM_texture_foveated2 */
+
+/* --------------- GL_QCOM_texture_foveated_subsampled_layout -------------- */
+
+#ifndef GL_QCOM_texture_foveated_subsampled_layout
+#define GL_QCOM_texture_foveated_subsampled_layout 1
+
+#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x4
+#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
+
+#define GLEW_QCOM_texture_foveated_subsampled_layout GLEW_GET_VAR(__GLEW_QCOM_texture_foveated_subsampled_layout)
+
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+
+/* ------------------------ GL_QCOM_tiled_rendering ------------------------ */
+
+#ifndef GL_QCOM_tiled_rendering
+#define GL_QCOM_tiled_rendering 1
+
+#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
+#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
+#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
+#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
+#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
+#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
+#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
+#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
+#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
+#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
+#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
+#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
+#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
+#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
+#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
+#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
+#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
+#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
+#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
+#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
+#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
+#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
+#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
+#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
+#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
+#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
+#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
+#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
+#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
+#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
+#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
+#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
+
+typedef void (GLAPIENTRY * PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
+typedef void (GLAPIENTRY * PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+
+#define glEndTilingQCOM GLEW_GET_FUN(__glewEndTilingQCOM)
+#define glStartTilingQCOM GLEW_GET_FUN(__glewStartTilingQCOM)
+
+#define GLEW_QCOM_tiled_rendering GLEW_GET_VAR(__GLEW_QCOM_tiled_rendering)
+
+#endif /* GL_QCOM_tiled_rendering */
+
+/* ---------------------- GL_QCOM_writeonly_rendering ---------------------- */
+
+#ifndef GL_QCOM_writeonly_rendering
+#define GL_QCOM_writeonly_rendering 1
+
+#define GL_WRITEONLY_RENDERING_QCOM 0x8823
+
+#define GLEW_QCOM_writeonly_rendering GLEW_GET_VAR(__GLEW_QCOM_writeonly_rendering)
+
+#endif /* GL_QCOM_writeonly_rendering */
+
+/* ---------------------- GL_REGAL_ES1_0_compatibility --------------------- */
+
+#ifndef GL_REGAL_ES1_0_compatibility
+#define GL_REGAL_ES1_0_compatibility 1
+
+typedef int GLclampx;
+
+typedef void (GLAPIENTRY * PFNGLALPHAFUNCXPROC) (GLenum func, GLclampx ref);
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORXPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHXPROC) (GLclampx depth);
+typedef void (GLAPIENTRY * PFNGLCOLOR4XPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEXPROC) (GLclampx zNear, GLclampx zFar);
+typedef void (GLAPIENTRY * PFNGLFOGXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLFOGXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+typedef void (GLAPIENTRY * PFNGLLIGHTMODELXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLLIGHTMODELXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLLIGHTXPROC) (GLenum light, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLLIGHTXVPROC) (GLenum light, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLLINEWIDTHXPROC) (GLfixed width);
+typedef void (GLAPIENTRY * PFNGLLOADMATRIXXPROC) (const GLfixed* m);
+typedef void (GLAPIENTRY * PFNGLMATERIALXPROC) (GLenum face, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLMATERIALXVPROC) (GLenum face, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLMULTMATRIXXPROC) (const GLfixed* m);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4XPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+typedef void (GLAPIENTRY * PFNGLNORMAL3XPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
+typedef void (GLAPIENTRY * PFNGLORTHOFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+typedef void (GLAPIENTRY * PFNGLORTHOXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+typedef void (GLAPIENTRY * PFNGLPOINTSIZEXPROC) (GLfixed size);
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETXPROC) (GLfixed factor, GLfixed units);
+typedef void (GLAPIENTRY * PFNGLROTATEXPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEXPROC) (GLclampx value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSCALEXPROC) (GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY * PFNGLTEXENVXPROC) (GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTEXENVXVPROC) (GLenum target, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXPROC) (GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTRANSLATEXPROC) (GLfixed x, GLfixed y, GLfixed z);
+
+#define glAlphaFuncx GLEW_GET_FUN(__glewAlphaFuncx)
+#define glClearColorx GLEW_GET_FUN(__glewClearColorx)
+#define glClearDepthx GLEW_GET_FUN(__glewClearDepthx)
+#define glColor4x GLEW_GET_FUN(__glewColor4x)
+#define glDepthRangex GLEW_GET_FUN(__glewDepthRangex)
+#define glFogx GLEW_GET_FUN(__glewFogx)
+#define glFogxv GLEW_GET_FUN(__glewFogxv)
+#define glFrustumf GLEW_GET_FUN(__glewFrustumf)
+#define glFrustumx GLEW_GET_FUN(__glewFrustumx)
+#define glLightModelx GLEW_GET_FUN(__glewLightModelx)
+#define glLightModelxv GLEW_GET_FUN(__glewLightModelxv)
+#define glLightx GLEW_GET_FUN(__glewLightx)
+#define glLightxv GLEW_GET_FUN(__glewLightxv)
+#define glLineWidthx GLEW_GET_FUN(__glewLineWidthx)
+#define glLoadMatrixx GLEW_GET_FUN(__glewLoadMatrixx)
+#define glMaterialx GLEW_GET_FUN(__glewMaterialx)
+#define glMaterialxv GLEW_GET_FUN(__glewMaterialxv)
+#define glMultMatrixx GLEW_GET_FUN(__glewMultMatrixx)
+#define glMultiTexCoord4x GLEW_GET_FUN(__glewMultiTexCoord4x)
+#define glNormal3x GLEW_GET_FUN(__glewNormal3x)
+#define glOrthof GLEW_GET_FUN(__glewOrthof)
+#define glOrthox GLEW_GET_FUN(__glewOrthox)
+#define glPointSizex GLEW_GET_FUN(__glewPointSizex)
+#define glPolygonOffsetx GLEW_GET_FUN(__glewPolygonOffsetx)
+#define glRotatex GLEW_GET_FUN(__glewRotatex)
+#define glSampleCoveragex GLEW_GET_FUN(__glewSampleCoveragex)
+#define glScalex GLEW_GET_FUN(__glewScalex)
+#define glTexEnvx GLEW_GET_FUN(__glewTexEnvx)
+#define glTexEnvxv GLEW_GET_FUN(__glewTexEnvxv)
+#define glTexParameterx GLEW_GET_FUN(__glewTexParameterx)
+#define glTranslatex GLEW_GET_FUN(__glewTranslatex)
+
+#define GLEW_REGAL_ES1_0_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_0_compatibility)
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+/* ---------------------- GL_REGAL_ES1_1_compatibility --------------------- */
+
+#ifndef GL_REGAL_ES1_1_compatibility
+#define GL_REGAL_ES1_1_compatibility 1
+
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEFPROC) (GLenum plane, const GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEXPROC) (GLenum plane, const GLfixed* equation);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFPROC) (GLenum pname, GLfloat eqn[4]);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEXPROC) (GLenum pname, GLfixed eqn[4]);
+typedef void (GLAPIENTRY * PFNGLGETFIXEDVPROC) (GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETLIGHTXVPROC) (GLenum light, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETMATERIALXVPROC) (GLenum face, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXENVXVPROC) (GLenum env, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERXVPROC) (GLenum target, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLPOINTSIZEPOINTEROESPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXVPROC) (GLenum target, GLenum pname, const GLfixed* params);
+
+#define glClipPlanef GLEW_GET_FUN(__glewClipPlanef)
+#define glClipPlanex GLEW_GET_FUN(__glewClipPlanex)
+#define glGetClipPlanef GLEW_GET_FUN(__glewGetClipPlanef)
+#define glGetClipPlanex GLEW_GET_FUN(__glewGetClipPlanex)
+#define glGetFixedv GLEW_GET_FUN(__glewGetFixedv)
+#define glGetLightxv GLEW_GET_FUN(__glewGetLightxv)
+#define glGetMaterialxv GLEW_GET_FUN(__glewGetMaterialxv)
+#define glGetTexEnvxv GLEW_GET_FUN(__glewGetTexEnvxv)
+#define glGetTexParameterxv GLEW_GET_FUN(__glewGetTexParameterxv)
+#define glPointParameterx GLEW_GET_FUN(__glewPointParameterx)
+#define glPointParameterxv GLEW_GET_FUN(__glewPointParameterxv)
+#define glPointSizePointerOES GLEW_GET_FUN(__glewPointSizePointerOES)
+#define glTexParameterxv GLEW_GET_FUN(__glewTexParameterxv)
+
+#define GLEW_REGAL_ES1_1_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_1_compatibility)
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+/* ---------------------------- GL_REGAL_enable ---------------------------- */
+
+#ifndef GL_REGAL_enable
+#define GL_REGAL_enable 1
+
+#define GL_ERROR_REGAL 0x9322
+#define GL_DEBUG_REGAL 0x9323
+#define GL_LOG_REGAL 0x9324
+#define GL_EMULATION_REGAL 0x9325
+#define GL_DRIVER_REGAL 0x9326
+#define GL_MISSING_REGAL 0x9360
+#define GL_TRACE_REGAL 0x9361
+#define GL_CACHE_REGAL 0x9362
+#define GL_CODE_REGAL 0x9363
+#define GL_STATISTICS_REGAL 0x9364
+
+#define GLEW_REGAL_enable GLEW_GET_VAR(__GLEW_REGAL_enable)
+
+#endif /* GL_REGAL_enable */
+
+/* ------------------------- GL_REGAL_error_string ------------------------- */
+
+#ifndef GL_REGAL_error_string
+#define GL_REGAL_error_string 1
+
+typedef const GLchar* (GLAPIENTRY * PFNGLERRORSTRINGREGALPROC) (GLenum error);
+
+#define glErrorStringREGAL GLEW_GET_FUN(__glewErrorStringREGAL)
+
+#define GLEW_REGAL_error_string GLEW_GET_VAR(__GLEW_REGAL_error_string)
+
+#endif /* GL_REGAL_error_string */
+
+/* ------------------------ GL_REGAL_extension_query ----------------------- */
+
+#ifndef GL_REGAL_extension_query
+#define GL_REGAL_extension_query 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLGETEXTENSIONREGALPROC) (const GLchar* ext);
+typedef GLboolean (GLAPIENTRY * PFNGLISSUPPORTEDREGALPROC) (const GLchar* ext);
+
+#define glGetExtensionREGAL GLEW_GET_FUN(__glewGetExtensionREGAL)
+#define glIsSupportedREGAL GLEW_GET_FUN(__glewIsSupportedREGAL)
+
+#define GLEW_REGAL_extension_query GLEW_GET_VAR(__GLEW_REGAL_extension_query)
+
+#endif /* GL_REGAL_extension_query */
+
+/* ------------------------------ GL_REGAL_log ----------------------------- */
+
+#ifndef GL_REGAL_log
+#define GL_REGAL_log 1
+
+#define GL_LOG_ERROR_REGAL 0x9319
+#define GL_LOG_WARNING_REGAL 0x931A
+#define GL_LOG_INFO_REGAL 0x931B
+#define GL_LOG_APP_REGAL 0x931C
+#define GL_LOG_DRIVER_REGAL 0x931D
+#define GL_LOG_INTERNAL_REGAL 0x931E
+#define GL_LOG_DEBUG_REGAL 0x931F
+#define GL_LOG_STATUS_REGAL 0x9320
+#define GL_LOG_HTTP_REGAL 0x9321
+
+typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context);
+
+typedef void (GLAPIENTRY * PFNGLLOGMESSAGECALLBACKREGALPROC) (GLLOGPROCREGAL callback);
+
+#define glLogMessageCallbackREGAL GLEW_GET_FUN(__glewLogMessageCallbackREGAL)
+
+#define GLEW_REGAL_log GLEW_GET_VAR(__GLEW_REGAL_log)
+
+#endif /* GL_REGAL_log */
+
+/* ------------------------- GL_REGAL_proc_address ------------------------- */
+
+#ifndef GL_REGAL_proc_address
+#define GL_REGAL_proc_address 1
+
+typedef void * (GLAPIENTRY * PFNGLGETPROCADDRESSREGALPROC) (const GLchar *name);
+
+#define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#define GLEW_REGAL_proc_address GLEW_GET_VAR(__GLEW_REGAL_proc_address)
+
+#endif /* GL_REGAL_proc_address */
+
+/* ----------------------- GL_REND_screen_coordinates ---------------------- */
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+
+#define GL_SCREEN_COORDINATES_REND 0x8490
+#define GL_INVERTED_SCREEN_W_REND 0x8491
+
+#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates)
+
+#endif /* GL_REND_screen_coordinates */
+
+/* ------------------------------- GL_S3_s3tc ------------------------------ */
+
+#ifndef GL_S3_s3tc
+#define GL_S3_s3tc 1
+
+#define GL_RGB_S3TC 0x83A0
+#define GL_RGB4_S3TC 0x83A1
+#define GL_RGBA_S3TC 0x83A2
+#define GL_RGBA4_S3TC 0x83A3
+#define GL_RGBA_DXT5_S3TC 0x83A4
+#define GL_RGBA4_DXT5_S3TC 0x83A5
+
+#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc)
+
+#endif /* GL_S3_s3tc */
+
+/* ------------------------- GL_SGIS_clip_band_hint ------------------------ */
+
+#ifndef GL_SGIS_clip_band_hint
+#define GL_SGIS_clip_band_hint 1
+
+#define GLEW_SGIS_clip_band_hint GLEW_GET_VAR(__GLEW_SGIS_clip_band_hint)
+
+#endif /* GL_SGIS_clip_band_hint */
+
+/* -------------------------- GL_SGIS_color_range -------------------------- */
+
+#ifndef GL_SGIS_color_range
+#define GL_SGIS_color_range 1
+
+#define GL_EXTENDED_RANGE_SGIS 0x85A5
+#define GL_MIN_RED_SGIS 0x85A6
+#define GL_MAX_RED_SGIS 0x85A7
+#define GL_MIN_GREEN_SGIS 0x85A8
+#define GL_MAX_GREEN_SGIS 0x85A9
+#define GL_MIN_BLUE_SGIS 0x85AA
+#define GL_MAX_BLUE_SGIS 0x85AB
+#define GL_MIN_ALPHA_SGIS 0x85AC
+#define GL_MAX_ALPHA_SGIS 0x85AD
+
+#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range)
+
+#endif /* GL_SGIS_color_range */
+
+/* ------------------------- GL_SGIS_detail_texture ------------------------ */
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+
+typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points);
+
+#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS)
+#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS)
+
+#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture)
+
+#endif /* GL_SGIS_detail_texture */
+
+/* -------------------------- GL_SGIS_fog_function ------------------------- */
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+
+typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points);
+
+#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS)
+#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS)
+
+#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function)
+
+#endif /* GL_SGIS_fog_function */
+
+/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+
+#define GL_GENERATE_MIPMAP_SGIS 0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
+
+#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap)
+
+#endif /* GL_SGIS_generate_mipmap */
+
+/* -------------------------- GL_SGIS_line_texgen -------------------------- */
+
+#ifndef GL_SGIS_line_texgen
+#define GL_SGIS_line_texgen 1
+
+#define GLEW_SGIS_line_texgen GLEW_GET_VAR(__GLEW_SGIS_line_texgen)
+
+#endif /* GL_SGIS_line_texgen */
+
+/* -------------------------- GL_SGIS_multisample -------------------------- */
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+
+#define GL_MULTISAMPLE_SGIS 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+#define GL_SAMPLE_MASK_SGIS 0x80A0
+#define GL_1PASS_SGIS 0x80A1
+#define GL_2PASS_0_SGIS 0x80A2
+#define GL_2PASS_1_SGIS 0x80A3
+#define GL_4PASS_0_SGIS 0x80A4
+#define GL_4PASS_1_SGIS 0x80A5
+#define GL_4PASS_2_SGIS 0x80A6
+#define GL_4PASS_3_SGIS 0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
+#define GL_SAMPLES_SGIS 0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
+
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+
+#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS)
+#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS)
+
+#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample)
+
+#endif /* GL_SGIS_multisample */
+
+/* -------------------------- GL_SGIS_multitexture ------------------------- */
+
+#ifndef GL_SGIS_multitexture
+#define GL_SGIS_multitexture 1
+
+#define GL_SELECTED_TEXTURE_SGIS 0x83C0
+#define GL_SELECTED_TEXTURE_COORD_SET_SGIS 0x83C1
+#define GL_SELECTED_TEXTURE_TRANSFORM_SGIS 0x83C2
+#define GL_MAX_TEXTURES_SGIS 0x83C3
+#define GL_MAX_TEXTURE_COORD_SETS_SGIS 0x83C4
+#define GL_TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS 0x83C5
+#define GL_TEXTURE_ENV_COORD_SET_SGIS 0x83C6
+#define GL_TEXTURE0_SGIS 0x83C7
+#define GL_TEXTURE1_SGIS 0x83C8
+#define GL_TEXTURE2_SGIS 0x83C9
+#define GL_TEXTURE3_SGIS 0x83CA
+
+typedef void (GLAPIENTRY * PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC) (GLint factor);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURECOORDSETSGISPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURESGISPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURETRANSFORMSGISPROC) (GLenum target);
+
+#define glInterleavedTextureCoordSetsSGIS GLEW_GET_FUN(__glewInterleavedTextureCoordSetsSGIS)
+#define glSelectTextureCoordSetSGIS GLEW_GET_FUN(__glewSelectTextureCoordSetSGIS)
+#define glSelectTextureSGIS GLEW_GET_FUN(__glewSelectTextureSGIS)
+#define glSelectTextureTransformSGIS GLEW_GET_FUN(__glewSelectTextureTransformSGIS)
+
+#define GLEW_SGIS_multitexture GLEW_GET_VAR(__GLEW_SGIS_multitexture)
+
+#endif /* GL_SGIS_multitexture */
+
+/* ------------------------- GL_SGIS_pixel_texture ------------------------- */
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+
+#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture)
+
+#endif /* GL_SGIS_pixel_texture */
+
+/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+#define GL_EYE_POINT_SGIS 0x81F4
+#define GL_OBJECT_POINT_SGIS 0x81F5
+#define GL_EYE_LINE_SGIS 0x81F6
+#define GL_OBJECT_LINE_SGIS 0x81F7
+
+#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen)
+
+#endif /* GL_SGIS_point_line_texgen */
+
+/* ----------------------- GL_SGIS_shared_multisample ---------------------- */
+
+#ifndef GL_SGIS_shared_multisample
+#define GL_SGIS_shared_multisample 1
+
+typedef void (GLAPIENTRY * PFNGLMULTISAMPLESUBRECTPOSSGISPROC) (GLint x, GLint y);
+
+#define glMultisampleSubRectPosSGIS GLEW_GET_FUN(__glewMultisampleSubRectPosSGIS)
+
+#define GLEW_SGIS_shared_multisample GLEW_GET_VAR(__GLEW_SGIS_shared_multisample)
+
+#endif /* GL_SGIS_shared_multisample */
+
+/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+
+typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points);
+
+#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS)
+#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS)
+
+#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture)
+
+#endif /* GL_SGIS_sharpen_texture */
+
+/* --------------------------- GL_SGIS_texture4D --------------------------- */
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels);
+
+#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS)
+#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS)
+
+#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D)
+
+#endif /* GL_SGIS_texture4D */
+
+/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
+
+#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp)
+
+#endif /* GL_SGIS_texture_border_clamp */
+
+/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
+
+#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp)
+
+#endif /* GL_SGIS_texture_edge_clamp */
+
+/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+
+typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights);
+typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights);
+
+#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS)
+#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS)
+
+#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4)
+
+#endif /* GL_SGIS_texture_filter4 */
+
+/* -------------------------- GL_SGIS_texture_lod -------------------------- */
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
+
+#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod)
+
+#endif /* GL_SGIS_texture_lod */
+
+/* ------------------------- GL_SGIS_texture_select ------------------------ */
+
+#ifndef GL_SGIS_texture_select
+#define GL_SGIS_texture_select 1
+
+#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select)
+
+#endif /* GL_SGIS_texture_select */
+
+/* ----------------------------- GL_SGIX_async ----------------------------- */
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+
+#define GL_ASYNC_MARKER_SGIX 0x8329
+
+typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp);
+typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp);
+
+#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX)
+#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX)
+#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX)
+#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX)
+#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX)
+#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX)
+
+#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async)
+
+#endif /* GL_SGIX_async */
+
+/* ------------------------ GL_SGIX_async_histogram ------------------------ */
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
+
+#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram)
+
+#endif /* GL_SGIX_async_histogram */
+
+/* -------------------------- GL_SGIX_async_pixel -------------------------- */
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
+
+#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel)
+
+#endif /* GL_SGIX_async_pixel */
+
+/* ----------------------- GL_SGIX_bali_g_instruments ---------------------- */
+
+#ifndef GL_SGIX_bali_g_instruments
+#define GL_SGIX_bali_g_instruments 1
+
+#define GL_BALI_NUM_TRIS_CULLED_INSTRUMENT 0x6080
+#define GL_BALI_NUM_PRIMS_CLIPPED_INSTRUMENT 0x6081
+#define GL_BALI_NUM_PRIMS_REJECT_INSTRUMENT 0x6082
+#define GL_BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT 0x6083
+
+#define GLEW_SGIX_bali_g_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_g_instruments)
+
+#endif /* GL_SGIX_bali_g_instruments */
+
+/* ----------------------- GL_SGIX_bali_r_instruments ---------------------- */
+
+#ifndef GL_SGIX_bali_r_instruments
+#define GL_SGIX_bali_r_instruments 1
+
+#define GL_BALI_FRAGMENTS_GENERATED_INSTRUMENT 0x6090
+#define GL_BALI_DEPTH_PASS_INSTRUMENT 0x6091
+#define GL_BALI_R_CHIP_COUNT 0x6092
+
+#define GLEW_SGIX_bali_r_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_r_instruments)
+
+#endif /* GL_SGIX_bali_r_instruments */
+
+/* --------------------- GL_SGIX_bali_timer_instruments -------------------- */
+
+#ifndef GL_SGIX_bali_timer_instruments
+#define GL_SGIX_bali_timer_instruments 1
+
+#define GLEW_SGIX_bali_timer_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_timer_instruments)
+
+#endif /* GL_SGIX_bali_timer_instruments */
+
+/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+
+#define GL_ALPHA_MIN_SGIX 0x8320
+#define GL_ALPHA_MAX_SGIX 0x8321
+
+#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax)
+
+#endif /* GL_SGIX_blend_alpha_minmax */
+
+/* --------------------------- GL_SGIX_blend_cadd -------------------------- */
+
+#ifndef GL_SGIX_blend_cadd
+#define GL_SGIX_blend_cadd 1
+
+#define GL_FUNC_COMPLEX_ADD_EXT 0x601C
+
+#define GLEW_SGIX_blend_cadd GLEW_GET_VAR(__GLEW_SGIX_blend_cadd)
+
+#endif /* GL_SGIX_blend_cadd */
+
+/* ------------------------ GL_SGIX_blend_cmultiply ------------------------ */
+
+#ifndef GL_SGIX_blend_cmultiply
+#define GL_SGIX_blend_cmultiply 1
+
+#define GL_FUNC_COMPLEX_MULTIPLY_EXT 0x601B
+
+#define GLEW_SGIX_blend_cmultiply GLEW_GET_VAR(__GLEW_SGIX_blend_cmultiply)
+
+#endif /* GL_SGIX_blend_cmultiply */
+
+/* --------------------- GL_SGIX_calligraphic_fragment --------------------- */
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+
+#define GLEW_SGIX_calligraphic_fragment GLEW_GET_VAR(__GLEW_SGIX_calligraphic_fragment)
+
+#endif /* GL_SGIX_calligraphic_fragment */
+
+/* ---------------------------- GL_SGIX_clipmap ---------------------------- */
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+
+#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap)
+
+#endif /* GL_SGIX_clipmap */
+
+/* --------------------- GL_SGIX_color_matrix_accuracy --------------------- */
+
+#ifndef GL_SGIX_color_matrix_accuracy
+#define GL_SGIX_color_matrix_accuracy 1
+
+#define GL_COLOR_MATRIX_HINT 0x8317
+
+#define GLEW_SGIX_color_matrix_accuracy GLEW_GET_VAR(__GLEW_SGIX_color_matrix_accuracy)
+
+#endif /* GL_SGIX_color_matrix_accuracy */
+
+/* --------------------- GL_SGIX_color_table_index_mode -------------------- */
+
+#ifndef GL_SGIX_color_table_index_mode
+#define GL_SGIX_color_table_index_mode 1
+
+#define GLEW_SGIX_color_table_index_mode GLEW_GET_VAR(__GLEW_SGIX_color_table_index_mode)
+
+#endif /* GL_SGIX_color_table_index_mode */
+
+/* ------------------------- GL_SGIX_complex_polar ------------------------- */
+
+#ifndef GL_SGIX_complex_polar
+#define GL_SGIX_complex_polar 1
+
+#define GLEW_SGIX_complex_polar GLEW_GET_VAR(__GLEW_SGIX_complex_polar)
+
+#endif /* GL_SGIX_complex_polar */
+
+/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+
+#define GL_CONVOLUTION_HINT_SGIX 0x8316
+
+#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy)
+
+#endif /* GL_SGIX_convolution_accuracy */
+
+/* ---------------------------- GL_SGIX_cube_map --------------------------- */
+
+#ifndef GL_SGIX_cube_map
+#define GL_SGIX_cube_map 1
+
+#define GL_ENV_MAP_SGIX 0x8340
+#define GL_CUBE_MAP_SGIX 0x8341
+#define GL_CUBE_MAP_ZP_SGIX 0x8342
+#define GL_CUBE_MAP_ZN_SGIX 0x8343
+#define GL_CUBE_MAP_XN_SGIX 0x8344
+#define GL_CUBE_MAP_XP_SGIX 0x8345
+#define GL_CUBE_MAP_YN_SGIX 0x8346
+#define GL_CUBE_MAP_YP_SGIX 0x8347
+#define GL_CUBE_MAP_BINDING_SGIX 0x8348
+
+#define GLEW_SGIX_cube_map GLEW_GET_VAR(__GLEW_SGIX_cube_map)
+
+#endif /* GL_SGIX_cube_map */
+
+/* ------------------------ GL_SGIX_cylinder_texgen ------------------------ */
+
+#ifndef GL_SGIX_cylinder_texgen
+#define GL_SGIX_cylinder_texgen 1
+
+#define GLEW_SGIX_cylinder_texgen GLEW_GET_VAR(__GLEW_SGIX_cylinder_texgen)
+
+#endif /* GL_SGIX_cylinder_texgen */
+
+/* ---------------------------- GL_SGIX_datapipe --------------------------- */
+
+#ifndef GL_SGIX_datapipe
+#define GL_SGIX_datapipe 1
+
+#define GL_GEOMETRY_BIT 0x1
+#define GL_IMAGE_BIT 0x2
+
+typedef void (GLAPIENTRY * PFNGLADDRESSSPACEPROC) (GLenum space, GLbitfield mask);
+typedef GLint (GLAPIENTRY * PFNGLDATAPIPEPROC) (GLenum space);
+
+#define glAddressSpace GLEW_GET_FUN(__glewAddressSpace)
+#define glDataPipe GLEW_GET_FUN(__glewDataPipe)
+
+#define GLEW_SGIX_datapipe GLEW_GET_VAR(__GLEW_SGIX_datapipe)
+
+#endif /* GL_SGIX_datapipe */
+
+/* --------------------------- GL_SGIX_decimation -------------------------- */
+
+#ifndef GL_SGIX_decimation
+#define GL_SGIX_decimation 1
+
+#define GLEW_SGIX_decimation GLEW_GET_VAR(__GLEW_SGIX_decimation)
+
+#endif /* GL_SGIX_decimation */
+
+/* --------------------- GL_SGIX_depth_pass_instrument --------------------- */
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+
+#define GLEW_SGIX_depth_pass_instrument GLEW_GET_VAR(__GLEW_SGIX_depth_pass_instrument)
+
+#endif /* GL_SGIX_depth_pass_instrument */
+
+/* ------------------------- GL_SGIX_depth_texture ------------------------- */
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
+
+#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture)
+
+#endif /* GL_SGIX_depth_texture */
+
+/* ------------------------------ GL_SGIX_dvc ------------------------------ */
+
+#ifndef GL_SGIX_dvc
+#define GL_SGIX_dvc 1
+
+#define GLEW_SGIX_dvc GLEW_GET_VAR(__GLEW_SGIX_dvc)
+
+#endif /* GL_SGIX_dvc */
+
+/* -------------------------- GL_SGIX_flush_raster ------------------------- */
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+
+typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
+
+#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX)
+
+#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster)
+
+#endif /* GL_SGIX_flush_raster */
+
+/* --------------------------- GL_SGIX_fog_blend --------------------------- */
+
+#ifndef GL_SGIX_fog_blend
+#define GL_SGIX_fog_blend 1
+
+#define GL_FOG_BLEND_ALPHA_SGIX 0x81FE
+#define GL_FOG_BLEND_COLOR_SGIX 0x81FF
+
+#define GLEW_SGIX_fog_blend GLEW_GET_VAR(__GLEW_SGIX_fog_blend)
+
+#endif /* GL_SGIX_fog_blend */
+
+/* ---------------------- GL_SGIX_fog_factor_to_alpha ---------------------- */
+
+#ifndef GL_SGIX_fog_factor_to_alpha
+#define GL_SGIX_fog_factor_to_alpha 1
+
+#define GLEW_SGIX_fog_factor_to_alpha GLEW_GET_VAR(__GLEW_SGIX_fog_factor_to_alpha)
+
+#endif /* GL_SGIX_fog_factor_to_alpha */
+
+/* --------------------------- GL_SGIX_fog_layers -------------------------- */
+
+#ifndef GL_SGIX_fog_layers
+#define GL_SGIX_fog_layers 1
+
+#define GL_FOG_TYPE_SGIX 0x8323
+#define GL_UNIFORM_SGIX 0x8324
+#define GL_LAYERED_SGIX 0x8325
+#define GL_FOG_GROUND_PLANE_SGIX 0x8326
+#define GL_FOG_LAYERS_POINTS_SGIX 0x8327
+#define GL_MAX_FOG_LAYERS_POINTS_SGIX 0x8328
+
+typedef void (GLAPIENTRY * PFNGLFOGLAYERSSGIXPROC) (GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETFOGLAYERSSGIXPROC) (GLfloat* points);
+
+#define glFogLayersSGIX GLEW_GET_FUN(__glewFogLayersSGIX)
+#define glGetFogLayersSGIX GLEW_GET_FUN(__glewGetFogLayersSGIX)
+
+#define GLEW_SGIX_fog_layers GLEW_GET_VAR(__GLEW_SGIX_fog_layers)
+
+#endif /* GL_SGIX_fog_layers */
+
+/* --------------------------- GL_SGIX_fog_offset -------------------------- */
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+
+#define GL_FOG_OFFSET_SGIX 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
+
+#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset)
+
+#endif /* GL_SGIX_fog_offset */
+
+/* --------------------------- GL_SGIX_fog_patchy -------------------------- */
+
+#ifndef GL_SGIX_fog_patchy
+#define GL_SGIX_fog_patchy 1
+
+#define GLEW_SGIX_fog_patchy GLEW_GET_VAR(__GLEW_SGIX_fog_patchy)
+
+#endif /* GL_SGIX_fog_patchy */
+
+/* --------------------------- GL_SGIX_fog_scale --------------------------- */
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+
+#define GL_FOG_SCALE_SGIX 0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
+
+#define GLEW_SGIX_fog_scale GLEW_GET_VAR(__GLEW_SGIX_fog_scale)
+
+#endif /* GL_SGIX_fog_scale */
+
+/* -------------------------- GL_SGIX_fog_texture -------------------------- */
+
+#ifndef GL_SGIX_fog_texture
+#define GL_SGIX_fog_texture 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname);
+
+#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX)
+
+#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture)
+
+#endif /* GL_SGIX_fog_texture */
+
+/* -------------------- GL_SGIX_fragment_lighting_space -------------------- */
+
+#ifndef GL_SGIX_fragment_lighting_space
+#define GL_SGIX_fragment_lighting_space 1
+
+#define GL_EYE_SPACE_SGIX 0x8436
+#define GL_TANGENT_SPACE_SGIX 0x8437
+#define GL_OBJECT_SPACE_SGIX 0x8438
+#define GL_FRAGMENT_LIGHT_SPACE_SGIX 0x843D
+
+#define GLEW_SGIX_fragment_lighting_space GLEW_GET_VAR(__GLEW_SGIX_fragment_lighting_space)
+
+#endif /* GL_SGIX_fragment_lighting_space */
+
+/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */
+
+#ifndef GL_SGIX_fragment_specular_lighting
+#define GL_SGIX_fragment_specular_lighting 1
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint* data);
+
+#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX)
+#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX)
+#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX)
+#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX)
+#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX)
+#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX)
+#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX)
+#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX)
+#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX)
+#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX)
+#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX)
+#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX)
+#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX)
+#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX)
+#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX)
+#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX)
+#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX)
+
+#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting)
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+/* ---------------------- GL_SGIX_fragments_instrument --------------------- */
+
+#ifndef GL_SGIX_fragments_instrument
+#define GL_SGIX_fragments_instrument 1
+
+#define GL_FRAGMENTS_INSTRUMENT_SGIX 0x8313
+#define GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX 0x8314
+#define GL_FRAGMENTS_INSTRUMENT_MAX_SGIX 0x8315
+
+#define GLEW_SGIX_fragments_instrument GLEW_GET_VAR(__GLEW_SGIX_fragments_instrument)
+
+#endif /* GL_SGIX_fragments_instrument */
+
+/* --------------------------- GL_SGIX_framezoom --------------------------- */
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+
+#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX)
+
+#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom)
+
+#endif /* GL_SGIX_framezoom */
+
+/* -------------------------- GL_SGIX_icc_texture -------------------------- */
+
+#ifndef GL_SGIX_icc_texture
+#define GL_SGIX_icc_texture 1
+
+#define GL_RGB_ICC_SGIX 0x8460
+#define GL_RGBA_ICC_SGIX 0x8461
+#define GL_ALPHA_ICC_SGIX 0x8462
+#define GL_LUMINANCE_ICC_SGIX 0x8463
+#define GL_INTENSITY_ICC_SGIX 0x8464
+#define GL_LUMINANCE_ALPHA_ICC_SGIX 0x8465
+#define GL_R5_G6_B5_ICC_SGIX 0x8466
+#define GL_R5_G6_B5_A8_ICC_SGIX 0x8467
+#define GL_ALPHA16_ICC_SGIX 0x8468
+#define GL_LUMINANCE16_ICC_SGIX 0x8469
+#define GL_INTENSITY16_ICC_SGIX 0x846A
+#define GL_LUMINANCE16_ALPHA8_ICC_SGIX 0x846B
+
+#define GLEW_SGIX_icc_texture GLEW_GET_VAR(__GLEW_SGIX_icc_texture)
+
+#endif /* GL_SGIX_icc_texture */
+
+/* ------------------------ GL_SGIX_igloo_interface ------------------------ */
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+
+#define GL_IGLOO_FULLSCREEN_SGIX 0x819E
+#define GL_IGLOO_VIEWPORT_OFFSET_SGIX 0x819F
+#define GL_IGLOO_SWAPTMESH_SGIX 0x81A0
+#define GL_IGLOO_COLORNORMAL_SGIX 0x81A1
+#define GL_IGLOO_IRISGL_MODE_SGIX 0x81A2
+#define GL_IGLOO_LMC_COLOR_SGIX 0x81A3
+#define GL_IGLOO_TMESHMODE_SGIX 0x81A4
+#define GL_LIGHT31 0xBEAD
+
+typedef void (GLAPIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, void *param);
+
+#define glIglooInterfaceSGIX GLEW_GET_FUN(__glewIglooInterfaceSGIX)
+
+#define GLEW_SGIX_igloo_interface GLEW_GET_VAR(__GLEW_SGIX_igloo_interface)
+
+#endif /* GL_SGIX_igloo_interface */
+
+/* ----------------------- GL_SGIX_image_compression ----------------------- */
+
+#ifndef GL_SGIX_image_compression
+#define GL_SGIX_image_compression 1
+
+#define GLEW_SGIX_image_compression GLEW_GET_VAR(__GLEW_SGIX_image_compression)
+
+#endif /* GL_SGIX_image_compression */
+
+/* ---------------------- GL_SGIX_impact_pixel_texture --------------------- */
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_SGIX_impact_pixel_texture 1
+
+#define GLEW_SGIX_impact_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_impact_pixel_texture)
+
+#endif /* GL_SGIX_impact_pixel_texture */
+
+/* ------------------------ GL_SGIX_instrument_error ----------------------- */
+
+#ifndef GL_SGIX_instrument_error
+#define GL_SGIX_instrument_error 1
+
+#define GLEW_SGIX_instrument_error GLEW_GET_VAR(__GLEW_SGIX_instrument_error)
+
+#endif /* GL_SGIX_instrument_error */
+
+/* --------------------------- GL_SGIX_interlace --------------------------- */
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+
+#define GL_INTERLACE_SGIX 0x8094
+
+#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace)
+
+#endif /* GL_SGIX_interlace */
+
+/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+
+#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1)
+
+#endif /* GL_SGIX_ir_instrument1 */
+
+/* ----------------------- GL_SGIX_line_quality_hint ----------------------- */
+
+#ifndef GL_SGIX_line_quality_hint
+#define GL_SGIX_line_quality_hint 1
+
+#define GL_LINE_QUALITY_HINT_SGIX 0x835B
+
+#define GLEW_SGIX_line_quality_hint GLEW_GET_VAR(__GLEW_SGIX_line_quality_hint)
+
+#endif /* GL_SGIX_line_quality_hint */
+
+/* ------------------------- GL_SGIX_list_priority ------------------------- */
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+
+#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority)
+
+#endif /* GL_SGIX_list_priority */
+
+/* ----------------------------- GL_SGIX_mpeg1 ----------------------------- */
+
+#ifndef GL_SGIX_mpeg1
+#define GL_SGIX_mpeg1 1
+
+typedef void (GLAPIENTRY * PFNGLALLOCMPEGPREDICTORSSGIXPROC) (GLsizei width, GLsizei height, GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLDELETEMPEGPREDICTORSSGIXPROC) (GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLGENMPEGPREDICTORSSGIXPROC) (GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPARAMETERFVSGIXPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPARAMETERIVSGIXPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPREDICTORSGIXPROC) (GLenum target, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETMPEGQUANTTABLEUBVPROC) (GLenum target, GLubyte* values);
+typedef GLboolean (GLAPIENTRY * PFNGLISMPEGPREDICTORSGIXPROC) (GLuint predictor);
+typedef void (GLAPIENTRY * PFNGLMPEGPREDICTORSGIXPROC) (GLenum target, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLMPEGQUANTTABLEUBVPROC) (GLenum target, GLubyte* values);
+typedef void (GLAPIENTRY * PFNGLSWAPMPEGPREDICTORSSGIXPROC) (GLenum target0, GLenum target1);
+
+#define glAllocMPEGPredictorsSGIX GLEW_GET_FUN(__glewAllocMPEGPredictorsSGIX)
+#define glDeleteMPEGPredictorsSGIX GLEW_GET_FUN(__glewDeleteMPEGPredictorsSGIX)
+#define glGenMPEGPredictorsSGIX GLEW_GET_FUN(__glewGenMPEGPredictorsSGIX)
+#define glGetMPEGParameterfvSGIX GLEW_GET_FUN(__glewGetMPEGParameterfvSGIX)
+#define glGetMPEGParameterivSGIX GLEW_GET_FUN(__glewGetMPEGParameterivSGIX)
+#define glGetMPEGPredictorSGIX GLEW_GET_FUN(__glewGetMPEGPredictorSGIX)
+#define glGetMPEGQuantTableubv GLEW_GET_FUN(__glewGetMPEGQuantTableubv)
+#define glIsMPEGPredictorSGIX GLEW_GET_FUN(__glewIsMPEGPredictorSGIX)
+#define glMPEGPredictorSGIX GLEW_GET_FUN(__glewMPEGPredictorSGIX)
+#define glMPEGQuantTableubv GLEW_GET_FUN(__glewMPEGQuantTableubv)
+#define glSwapMPEGPredictorsSGIX GLEW_GET_FUN(__glewSwapMPEGPredictorsSGIX)
+
+#define GLEW_SGIX_mpeg1 GLEW_GET_VAR(__GLEW_SGIX_mpeg1)
+
+#endif /* GL_SGIX_mpeg1 */
+
+/* ----------------------------- GL_SGIX_mpeg2 ----------------------------- */
+
+#ifndef GL_SGIX_mpeg2
+#define GL_SGIX_mpeg2 1
+
+#define GLEW_SGIX_mpeg2 GLEW_GET_VAR(__GLEW_SGIX_mpeg2)
+
+#endif /* GL_SGIX_mpeg2 */
+
+/* ------------------ GL_SGIX_nonlinear_lighting_pervertex ----------------- */
+
+#ifndef GL_SGIX_nonlinear_lighting_pervertex
+#define GL_SGIX_nonlinear_lighting_pervertex 1
+
+typedef void (GLAPIENTRY * PFNGLGETNONLINLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLint* terms, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETNONLINMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLint* terms, const GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLNONLINLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLint terms, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNONLINMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLint terms, const GLfloat* params);
+
+#define glGetNonlinLightfvSGIX GLEW_GET_FUN(__glewGetNonlinLightfvSGIX)
+#define glGetNonlinMaterialfvSGIX GLEW_GET_FUN(__glewGetNonlinMaterialfvSGIX)
+#define glNonlinLightfvSGIX GLEW_GET_FUN(__glewNonlinLightfvSGIX)
+#define glNonlinMaterialfvSGIX GLEW_GET_FUN(__glewNonlinMaterialfvSGIX)
+
+#define GLEW_SGIX_nonlinear_lighting_pervertex GLEW_GET_VAR(__GLEW_SGIX_nonlinear_lighting_pervertex)
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+/* --------------------------- GL_SGIX_nurbs_eval -------------------------- */
+
+#ifndef GL_SGIX_nurbs_eval
+#define GL_SGIX_nurbs_eval 1
+
+#define GL_MAP1_VERTEX_3_NURBS_SGIX 0x81CB
+#define GL_MAP1_VERTEX_4_NURBS_SGIX 0x81CC
+#define GL_MAP1_INDEX_NURBS_SGIX 0x81CD
+#define GL_MAP1_COLOR_4_NURBS_SGIX 0x81CE
+#define GL_MAP1_NORMAL_NURBS_SGIX 0x81CF
+#define GL_MAP1_TEXTURE_COORD_1_NURBS_SGIX 0x81E0
+#define GL_MAP1_TEXTURE_COORD_2_NURBS_SGIX 0x81E1
+#define GL_MAP1_TEXTURE_COORD_3_NURBS_SGIX 0x81E2
+#define GL_MAP1_TEXTURE_COORD_4_NURBS_SGIX 0x81E3
+#define GL_MAP2_VERTEX_3_NURBS_SGIX 0x81E4
+#define GL_MAP2_VERTEX_4_NURBS_SGIX 0x81E5
+#define GL_MAP2_INDEX_NURBS_SGIX 0x81E6
+#define GL_MAP2_COLOR_4_NURBS_SGIX 0x81E7
+#define GL_MAP2_NORMAL_NURBS_SGIX 0x81E8
+#define GL_MAP2_TEXTURE_COORD_1_NURBS_SGIX 0x81E9
+#define GL_MAP2_TEXTURE_COORD_2_NURBS_SGIX 0x81EA
+#define GL_MAP2_TEXTURE_COORD_3_NURBS_SGIX 0x81EB
+#define GL_MAP2_TEXTURE_COORD_4_NURBS_SGIX 0x81EC
+#define GL_NURBS_KNOT_COUNT_SGIX 0x81ED
+#define GL_NURBS_KNOT_VECTOR_SGIX 0x81EE
+
+#define GLEW_SGIX_nurbs_eval GLEW_GET_VAR(__GLEW_SGIX_nurbs_eval)
+
+#endif /* GL_SGIX_nurbs_eval */
+
+/* ---------------------- GL_SGIX_occlusion_instrument --------------------- */
+
+#ifndef GL_SGIX_occlusion_instrument
+#define GL_SGIX_occlusion_instrument 1
+
+#define GL_OCCLUSION_INSTRUMENT_SGIX 0x6060
+
+#define GLEW_SGIX_occlusion_instrument GLEW_GET_VAR(__GLEW_SGIX_occlusion_instrument)
+
+#endif /* GL_SGIX_occlusion_instrument */
+
+/* ------------------------- GL_SGIX_packed_6bytes ------------------------- */
+
+#ifndef GL_SGIX_packed_6bytes
+#define GL_SGIX_packed_6bytes 1
+
+#define GLEW_SGIX_packed_6bytes GLEW_GET_VAR(__GLEW_SGIX_packed_6bytes)
+
+#endif /* GL_SGIX_packed_6bytes */
+
+/* ------------------------- GL_SGIX_pixel_texture ------------------------- */
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+
+typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+
+#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX)
+
+#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture)
+
+#endif /* GL_SGIX_pixel_texture */
+
+/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */
+
+#ifndef GL_SGIX_pixel_texture_bits
+#define GL_SGIX_pixel_texture_bits 1
+
+#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits)
+
+#endif /* GL_SGIX_pixel_texture_bits */
+
+/* ----------------------- GL_SGIX_pixel_texture_lod ----------------------- */
+
+#ifndef GL_SGIX_pixel_texture_lod
+#define GL_SGIX_pixel_texture_lod 1
+
+#define GLEW_SGIX_pixel_texture_lod GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_lod)
+
+#endif /* GL_SGIX_pixel_texture_lod */
+
+/* -------------------------- GL_SGIX_pixel_tiles -------------------------- */
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+
+#define GLEW_SGIX_pixel_tiles GLEW_GET_VAR(__GLEW_SGIX_pixel_tiles)
+
+#endif /* GL_SGIX_pixel_tiles */
+
+/* ------------------------- GL_SGIX_polynomial_ffd ------------------------ */
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x1
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x2
+
+typedef void (GLAPIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+
+#define glDeformSGIX GLEW_GET_FUN(__glewDeformSGIX)
+#define glLoadIdentityDeformationMapSGIX GLEW_GET_FUN(__glewLoadIdentityDeformationMapSGIX)
+
+#define GLEW_SGIX_polynomial_ffd GLEW_GET_VAR(__GLEW_SGIX_polynomial_ffd)
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+/* --------------------------- GL_SGIX_quad_mesh --------------------------- */
+
+#ifndef GL_SGIX_quad_mesh
+#define GL_SGIX_quad_mesh 1
+
+typedef void (GLAPIENTRY * PFNGLMESHBREADTHSGIXPROC) (GLint breadth);
+typedef void (GLAPIENTRY * PFNGLMESHSTRIDESGIXPROC) (GLint stride);
+
+#define glMeshBreadthSGIX GLEW_GET_FUN(__glewMeshBreadthSGIX)
+#define glMeshStrideSGIX GLEW_GET_FUN(__glewMeshStrideSGIX)
+
+#define GLEW_SGIX_quad_mesh GLEW_GET_VAR(__GLEW_SGIX_quad_mesh)
+
+#endif /* GL_SGIX_quad_mesh */
+
+/* ------------------------ GL_SGIX_reference_plane ------------------------ */
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+
+typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation);
+
+#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX)
+
+#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane)
+
+#endif /* GL_SGIX_reference_plane */
+
+/* ---------------------------- GL_SGIX_resample --------------------------- */
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+
+#define GL_PACK_RESAMPLE_SGIX 0x842E
+#define GL_UNPACK_RESAMPLE_SGIX 0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
+#define GL_RESAMPLE_REPLICATE_SGIX 0x8433
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
+
+#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample)
+
+#endif /* GL_SGIX_resample */
+
+/* ------------------------- GL_SGIX_scalebias_hint ------------------------ */
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+
+#define GL_SCALEBIAS_HINT_SGIX 0x8322
+
+#define GLEW_SGIX_scalebias_hint GLEW_GET_VAR(__GLEW_SGIX_scalebias_hint)
+
+#endif /* GL_SGIX_scalebias_hint */
+
+/* ----------------------------- GL_SGIX_shadow ---------------------------- */
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+
+#define GL_TEXTURE_COMPARE_SGIX 0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
+
+#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow)
+
+#endif /* GL_SGIX_shadow */
+
+/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
+
+#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient)
+
+#endif /* GL_SGIX_shadow_ambient */
+
+/* ------------------------------ GL_SGIX_slim ----------------------------- */
+
+#ifndef GL_SGIX_slim
+#define GL_SGIX_slim 1
+
+#define GL_PACK_MAX_COMPRESSED_SIZE_SGIX 0x831B
+#define GL_SLIM8U_SGIX 0x831D
+#define GL_SLIM10U_SGIX 0x831E
+#define GL_SLIM12S_SGIX 0x831F
+
+#define GLEW_SGIX_slim GLEW_GET_VAR(__GLEW_SGIX_slim)
+
+#endif /* GL_SGIX_slim */
+
+/* ------------------------ GL_SGIX_spotlight_cutoff ----------------------- */
+
+#ifndef GL_SGIX_spotlight_cutoff
+#define GL_SGIX_spotlight_cutoff 1
+
+#define GL_SPOT_CUTOFF_DELTA_SGIX 0x8193
+
+#define GLEW_SGIX_spotlight_cutoff GLEW_GET_VAR(__GLEW_SGIX_spotlight_cutoff)
+
+#endif /* GL_SGIX_spotlight_cutoff */
+
+/* ----------------------------- GL_SGIX_sprite ---------------------------- */
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params);
+
+#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX)
+#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX)
+#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX)
+#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX)
+
+#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite)
+
+#endif /* GL_SGIX_sprite */
+
+/* -------------------------- GL_SGIX_subdiv_patch ------------------------- */
+
+#ifndef GL_SGIX_subdiv_patch
+#define GL_SGIX_subdiv_patch 1
+
+#define GLEW_SGIX_subdiv_patch GLEW_GET_VAR(__GLEW_SGIX_subdiv_patch)
+
+#endif /* GL_SGIX_subdiv_patch */
+
+/* --------------------------- GL_SGIX_subsample --------------------------- */
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
+
+#define GLEW_SGIX_subsample GLEW_GET_VAR(__GLEW_SGIX_subsample)
+
+#endif /* GL_SGIX_subsample */
+
+/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+
+typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
+
+#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX)
+
+#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer)
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+/* ------------------------ GL_SGIX_texture_add_env ------------------------ */
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+
+#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env)
+
+#endif /* GL_SGIX_texture_add_env */
+
+/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
+
+#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp)
+
+#endif /* GL_SGIX_texture_coordinate_clamp */
+
+/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+
+#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias)
+
+#endif /* GL_SGIX_texture_lod_bias */
+
+/* ------------------- GL_SGIX_texture_mipmap_anisotropic ------------------ */
+
+#ifndef GL_SGIX_texture_mipmap_anisotropic
+#define GL_SGIX_texture_mipmap_anisotropic 1
+
+#define GL_TEXTURE_MIPMAP_ANISOTROPY_SGIX 0x832E
+#define GL_MAX_MIPMAP_ANISOTROPY_SGIX 0x832F
+
+#define GLEW_SGIX_texture_mipmap_anisotropic GLEW_GET_VAR(__GLEW_SGIX_texture_mipmap_anisotropic)
+
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+
+/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+
+#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer)
+
+#endif /* GL_SGIX_texture_multi_buffer */
+
+/* ------------------------- GL_SGIX_texture_phase ------------------------- */
+
+#ifndef GL_SGIX_texture_phase
+#define GL_SGIX_texture_phase 1
+
+#define GL_PHASE_SGIX 0x832A
+
+#define GLEW_SGIX_texture_phase GLEW_GET_VAR(__GLEW_SGIX_texture_phase)
+
+#endif /* GL_SGIX_texture_phase */
+
+/* ------------------------- GL_SGIX_texture_range ------------------------- */
+
+#ifndef GL_SGIX_texture_range
+#define GL_SGIX_texture_range 1
+
+#define GL_RGB_SIGNED_SGIX 0x85E0
+#define GL_RGBA_SIGNED_SGIX 0x85E1
+#define GL_ALPHA_SIGNED_SGIX 0x85E2
+#define GL_LUMINANCE_SIGNED_SGIX 0x85E3
+#define GL_INTENSITY_SIGNED_SGIX 0x85E4
+#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5
+#define GL_RGB16_SIGNED_SGIX 0x85E6
+#define GL_RGBA16_SIGNED_SGIX 0x85E7
+#define GL_ALPHA16_SIGNED_SGIX 0x85E8
+#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9
+#define GL_INTENSITY16_SIGNED_SGIX 0x85EA
+#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB
+#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC
+#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED
+#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE
+#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF
+#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0
+#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1
+#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2
+#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3
+#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4
+#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5
+#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6
+#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7
+#define GL_MIN_LUMINANCE_SGIS 0x85F8
+#define GL_MAX_LUMINANCE_SGIS 0x85F9
+#define GL_MIN_INTENSITY_SGIS 0x85FA
+#define GL_MAX_INTENSITY_SGIS 0x85FB
+
+#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range)
+
+#endif /* GL_SGIX_texture_range */
+
+/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+
+#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias)
+
+#endif /* GL_SGIX_texture_scale_bias */
+
+/* ---------------------- GL_SGIX_texture_supersample ---------------------- */
+
+#ifndef GL_SGIX_texture_supersample
+#define GL_SGIX_texture_supersample 1
+
+#define GLEW_SGIX_texture_supersample GLEW_GET_VAR(__GLEW_SGIX_texture_supersample)
+
+#endif /* GL_SGIX_texture_supersample */
+
+/* --------------------------- GL_SGIX_vector_ops -------------------------- */
+
+#ifndef GL_SGIX_vector_ops
+#define GL_SGIX_vector_ops 1
+
+typedef void (GLAPIENTRY * PFNGLGETVECTOROPERATIONSGIXPROC) (GLenum operation);
+typedef void (GLAPIENTRY * PFNGLVECTOROPERATIONSGIXPROC) (GLenum operation);
+
+#define glGetVectorOperationSGIX GLEW_GET_FUN(__glewGetVectorOperationSGIX)
+#define glVectorOperationSGIX GLEW_GET_FUN(__glewVectorOperationSGIX)
+
+#define GLEW_SGIX_vector_ops GLEW_GET_VAR(__GLEW_SGIX_vector_ops)
+
+#endif /* GL_SGIX_vector_ops */
+
+/* ---------------------- GL_SGIX_vertex_array_object ---------------------- */
+
+#ifndef GL_SGIX_vertex_array_object
+#define GL_SGIX_vertex_array_object 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC) (GLsizei n, const GLuint* arrays, GLboolean* residences);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYSGIXPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSSGIXPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSSGIXPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYSGIXPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC) (GLsizei n, const GLuint* arrays, const GLclampf* priorities);
+
+#define glAreVertexArraysResidentSGIX GLEW_GET_FUN(__glewAreVertexArraysResidentSGIX)
+#define glBindVertexArraySGIX GLEW_GET_FUN(__glewBindVertexArraySGIX)
+#define glDeleteVertexArraysSGIX GLEW_GET_FUN(__glewDeleteVertexArraysSGIX)
+#define glGenVertexArraysSGIX GLEW_GET_FUN(__glewGenVertexArraysSGIX)
+#define glIsVertexArraySGIX GLEW_GET_FUN(__glewIsVertexArraySGIX)
+#define glPrioritizeVertexArraysSGIX GLEW_GET_FUN(__glewPrioritizeVertexArraysSGIX)
+
+#define GLEW_SGIX_vertex_array_object GLEW_GET_VAR(__GLEW_SGIX_vertex_array_object)
+
+#endif /* GL_SGIX_vertex_array_object */
+
+/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+
+#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip)
+
+#endif /* GL_SGIX_vertex_preclip */
+
+/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */
+
+#ifndef GL_SGIX_vertex_preclip_hint
+#define GL_SGIX_vertex_preclip_hint 1
+
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+
+#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint)
+
+#endif /* GL_SGIX_vertex_preclip_hint */
+
+/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+
+#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb)
+
+#endif /* GL_SGIX_ycrcb */
+
+/* ------------------------ GL_SGIX_ycrcb_subsample ------------------------ */
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+
+#define GLEW_SGIX_ycrcb_subsample GLEW_GET_VAR(__GLEW_SGIX_ycrcb_subsample)
+
+#endif /* GL_SGIX_ycrcb_subsample */
+
+/* ----------------------------- GL_SGIX_ycrcba ---------------------------- */
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+
+#define GL_YCRCB_SGIX 0x8318
+#define GL_YCRCBA_SGIX 0x8319
+
+#define GLEW_SGIX_ycrcba GLEW_GET_VAR(__GLEW_SGIX_ycrcba)
+
+#endif /* GL_SGIX_ycrcba */
+
+/* -------------------------- GL_SGI_color_matrix -------------------------- */
+
+#ifndef GL_SGI_color_matrix
+#define GL_SGI_color_matrix 1
+
+#define GL_COLOR_MATRIX_SGI 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+
+#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix)
+
+#endif /* GL_SGI_color_matrix */
+
+/* --------------------------- GL_SGI_color_table -------------------------- */
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+
+#define GL_COLOR_TABLE_SGI 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
+
+#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI)
+#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI)
+#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI)
+#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI)
+#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI)
+#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI)
+#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI)
+
+#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table)
+
+#endif /* GL_SGI_color_table */
+
+/* ----------------------------- GL_SGI_complex ---------------------------- */
+
+#ifndef GL_SGI_complex
+#define GL_SGI_complex 1
+
+#define GLEW_SGI_complex GLEW_GET_VAR(__GLEW_SGI_complex)
+
+#endif /* GL_SGI_complex */
+
+/* -------------------------- GL_SGI_complex_type -------------------------- */
+
+#ifndef GL_SGI_complex_type
+#define GL_SGI_complex_type 1
+
+#define GL_COMPLEX_UNSIGNED_BYTE_SGI 0x81BD
+#define GL_COMPLEX_BYTE_SGI 0x81BE
+#define GL_COMPLEX_UNSIGNED_SHORT_SGI 0x81BF
+#define GL_COMPLEX_SHORT_SGI 0x81C0
+#define GL_COMPLEX_UNSIGNED_INT_SGI 0x81C1
+#define GL_COMPLEX_INT_SGI 0x81C2
+#define GL_COMPLEX_FLOAT_SGI 0x81C3
+
+#define GLEW_SGI_complex_type GLEW_GET_VAR(__GLEW_SGI_complex_type)
+
+#endif /* GL_SGI_complex_type */
+
+/* ------------------------------- GL_SGI_fft ------------------------------ */
+
+#ifndef GL_SGI_fft
+#define GL_SGI_fft 1
+
+#define GL_PIXEL_TRANSFORM_OPERATOR_SGI 0x81C4
+#define GL_CONVOLUTION_SGI 0x81C5
+#define GL_FFT_1D_SGI 0x81C6
+#define GL_PIXEL_TRANSFORM_SGI 0x81C7
+#define GL_MAX_FFT_WIDTH_SGI 0x81C8
+
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFSGIPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERISGIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMSGIPROC) (GLenum target);
+
+#define glGetPixelTransformParameterfvSGI GLEW_GET_FUN(__glewGetPixelTransformParameterfvSGI)
+#define glGetPixelTransformParameterivSGI GLEW_GET_FUN(__glewGetPixelTransformParameterivSGI)
+#define glPixelTransformParameterfSGI GLEW_GET_FUN(__glewPixelTransformParameterfSGI)
+#define glPixelTransformParameterfvSGI GLEW_GET_FUN(__glewPixelTransformParameterfvSGI)
+#define glPixelTransformParameteriSGI GLEW_GET_FUN(__glewPixelTransformParameteriSGI)
+#define glPixelTransformParameterivSGI GLEW_GET_FUN(__glewPixelTransformParameterivSGI)
+#define glPixelTransformSGI GLEW_GET_FUN(__glewPixelTransformSGI)
+
+#define GLEW_SGI_fft GLEW_GET_VAR(__GLEW_SGI_fft)
+
+#endif /* GL_SGI_fft */
+
+/* ----------------------- GL_SGI_texture_color_table ---------------------- */
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
+
+#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table)
+
+#endif /* GL_SGI_texture_color_table */
+
+/* ------------------------- GL_SUNX_constant_data ------------------------- */
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+
+typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);
+
+#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX)
+
+#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data)
+
+#endif /* GL_SUNX_constant_data */
+
+/* -------------------- GL_SUN_convolution_border_modes -------------------- */
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+
+#define GL_WRAP_BORDER_SUN 0x81D4
+
+#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes)
+
+#endif /* GL_SUN_convolution_border_modes */
+
+/* -------------------------- GL_SUN_global_alpha -------------------------- */
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+
+#define GL_GLOBAL_ALPHA_SUN 0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+
+#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN)
+#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN)
+#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN)
+#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN)
+#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN)
+#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN)
+#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN)
+#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN)
+
+#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha)
+
+#endif /* GL_SUN_global_alpha */
+
+/* --------------------------- GL_SUN_mesh_array --------------------------- */
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+
+#define GL_QUAD_MESH_SUN 0x8614
+#define GL_TRIANGLE_MESH_SUN 0x8615
+
+#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array)
+
+#endif /* GL_SUN_mesh_array */
+
+/* ------------------------ GL_SUN_read_video_pixels ----------------------- */
+
+#ifndef GL_SUN_read_video_pixels
+#define GL_SUN_read_video_pixels 1
+
+typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels);
+
+#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN)
+
+#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels)
+
+#endif /* GL_SUN_read_video_pixels */
+
+/* --------------------------- GL_SUN_slice_accum -------------------------- */
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+
+#define GL_SLICE_ACCUM_SUN 0x85CC
+
+#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum)
+
+#endif /* GL_SUN_slice_accum */
+
+/* -------------------------- GL_SUN_triangle_list ------------------------- */
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+
+#define GL_RESTART_SUN 0x01
+#define GL_REPLACE_MIDDLE_SUN 0x02
+#define GL_REPLACE_OLDEST_SUN 0x03
+#define GL_TRIANGLE_LIST_SUN 0x81D7
+#define GL_REPLACEMENT_CODE_SUN 0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN 0x85C4
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
+#define GL_R1UI_C3F_V3F_SUN 0x85C6
+#define GL_R1UI_N3F_V3F_SUN 0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+#define GL_R1UI_T2F_V3F_SUN 0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code);
+
+#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN)
+#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN)
+#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN)
+#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN)
+#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN)
+#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN)
+#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN)
+
+#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list)
+
+#endif /* GL_SUN_triangle_list */
+
+/* ----------------------------- GL_SUN_vertex ----------------------------- */
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v);
+
+#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN)
+#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN)
+#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN)
+#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN)
+#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN)
+#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN)
+#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN)
+#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN)
+#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN)
+#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN)
+#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN)
+#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN)
+#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN)
+#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN)
+#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN)
+#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN)
+#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN)
+#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN)
+#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN)
+#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN)
+#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN)
+#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN)
+#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN)
+#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN)
+#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN)
+
+#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex)
+
+#endif /* GL_SUN_vertex */
+
+/* -------------------------- GL_VIV_shader_binary ------------------------- */
+
+#ifndef GL_VIV_shader_binary
+#define GL_VIV_shader_binary 1
+
+#define GL_SHADER_BINARY_VIV 0x8FC4
+
+#define GLEW_VIV_shader_binary GLEW_GET_VAR(__GLEW_VIV_shader_binary)
+
+#endif /* GL_VIV_shader_binary */
+
+/* -------------------------- GL_WIN_phong_shading ------------------------- */
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+
+#define GL_PHONG_WIN 0x80EA
+#define GL_PHONG_HINT_WIN 0x80EB
+
+#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading)
+
+#endif /* GL_WIN_phong_shading */
+
+/* ------------------------- GL_WIN_scene_markerXXX ------------------------ */
+
+#ifndef GL_WIN_scene_markerXXX
+#define GL_WIN_scene_markerXXX 1
+
+#define GLEW_WIN_scene_markerXXX GLEW_GET_VAR(__GLEW_WIN_scene_markerXXX)
+
+#endif /* GL_WIN_scene_markerXXX */
+
+/* -------------------------- GL_WIN_specular_fog -------------------------- */
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
+
+#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog)
+
+#endif /* GL_WIN_specular_fog */
+
+/* ---------------------------- GL_WIN_swap_hint --------------------------- */
+
+#ifndef GL_WIN_swap_hint
+#define GL_WIN_swap_hint 1
+
+typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN)
+
+#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint)
+
+#endif /* GL_WIN_swap_hint */
+
+/* ------------------------------------------------------------------------- */
+
+
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D;
+
+GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture;
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv;
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage;
+
+GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate;
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer;
+GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData;
+GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries;
+GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery;
+GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers;
+GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv;
+GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv;
+GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer;
+GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer;
+
+GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader;
+GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate;
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram;
+GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader;
+GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray;
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray;
+GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform;
+GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders;
+GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv;
+GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog;
+GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource;
+GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv;
+GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram;
+GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader;
+GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram;
+GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource;
+GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate;
+GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate;
+GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer;
+
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender;
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback;
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation;
+GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski;
+GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei;
+GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback;
+GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation;
+GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv;
+GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced;
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex;
+GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci;
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus;
+GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEPROC __glewGetnCompressedTexImage;
+GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEPROC __glewGetnTexImage;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVPROC __glewGetnUniformdv;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC __glewMultiDrawArraysIndirectCount;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC __glewMultiDrawElementsIndirectCount;
+GLEW_FUN_EXPORT PFNGLSPECIALIZESHADERPROC __glewSpecializeShader;
+
+GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD;
+
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewNamedRenderbufferStorageMultisampleAdvancedAMD;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewRenderbufferStorageMultisampleAdvancedAMD;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewFramebufferSamplePositionsfvAMD;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC __glewGetFramebufferParameterfvAMD;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC __glewGetNamedFramebufferParameterfvAMD;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewNamedFramebufferSamplePositionsfvAMD;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD;
+
+GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD;
+GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD;
+GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD;
+
+GLEW_FUN_EXPORT PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD;
+
+GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD;
+GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD;
+GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD;
+GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD;
+GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD;
+
+GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD;
+
+GLEW_FUN_EXPORT PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD;
+
+GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD;
+GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE;
+GLEW_FUN_EXPORT PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE;
+GLEW_FUN_EXPORT PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE;
+GLEW_FUN_EXPORT PFNGLISQUERYANGLEPROC __glewIsQueryANGLE;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE;
+
+GLEW_FUN_EXPORT PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE;
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURELEVELSAPPLEPROC __glewCopyTextureLevelsAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE;
+GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE;
+GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE;
+GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __glewRenderbufferStorageMultisampleAPPLE;
+GLEW_FUN_EXPORT PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __glewResolveMultisampleFramebufferAPPLE;
+
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE;
+GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE;
+GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCAPPLEPROC __glewClientWaitSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLDELETESYNCAPPLEPROC __glewDeleteSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLFENCESYNCAPPLEPROC __glewFenceSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VAPPLEPROC __glewGetInteger64vAPPLE;
+GLEW_FUN_EXPORT PFNGLGETSYNCIVAPPLEPROC __glewGetSyncivAPPLE;
+GLEW_FUN_EXPORT PFNGLISSYNCAPPLEPROC __glewIsSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLWAITSYNCAPPLEPROC __glewWaitSyncAPPLE;
+
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE;
+GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE;
+
+GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE;
+GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef;
+GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat;
+GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler;
+GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary;
+
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVEBOUNDINGBOXARBPROC __glewPrimitiveBoundingBoxARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB;
+GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEPROC __glewBufferStorage;
+
+GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB;
+
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERDATAPROC __glewClearBufferData;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEPROC __glewClearTexImage;
+GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage;
+
+GLEW_FUN_EXPORT PFNGLCLIPCONTROLPROC __glewClipControl;
+
+GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB;
+
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute;
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect;
+
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB;
+
+GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB;
+
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit;
+GLEW_FUN_EXPORT PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer;
+GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLCREATEBUFFERSPROC __glewCreateBuffers;
+GLEW_FUN_EXPORT PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines;
+GLEW_FUN_EXPORT PFNGLCREATEQUERIESPROC __glewCreateQueries;
+GLEW_FUN_EXPORT PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers;
+GLEW_FUN_EXPORT PFNGLCREATESAMPLERSPROC __glewCreateSamplers;
+GLEW_FUN_EXPORT PFNGLCREATETEXTURESPROC __glewCreateTextures;
+GLEW_FUN_EXPORT PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange;
+GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv;
+GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData;
+GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERPROC __glewTextureBuffer;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange;
+GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer;
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary;
+GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri;
+
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage;
+
+GLEW_FUN_EXPORT PFNGLSPECIALIZESHADERARBPROC __glewSpecializeShaderARB;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv;
+GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d;
+GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d;
+GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d;
+GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d;
+GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VARBPROC __glewGetUniformi64vARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VARBPROC __glewGetUniformui64vARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMI64VARBPROC __glewGetnUniformi64vARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUI64VARBPROC __glewGetnUniformui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64ARBPROC __glewProgramUniform1i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VARBPROC __glewProgramUniform1i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64ARBPROC __glewProgramUniform1ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VARBPROC __glewProgramUniform1ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64ARBPROC __glewProgramUniform2i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VARBPROC __glewProgramUniform2i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64ARBPROC __glewProgramUniform2ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VARBPROC __glewProgramUniform2ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64ARBPROC __glewProgramUniform3i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VARBPROC __glewProgramUniform3i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64ARBPROC __glewProgramUniform3ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VARBPROC __glewProgramUniform3ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64ARBPROC __glewProgramUniform4i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VARBPROC __glewProgramUniform4i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64ARBPROC __glewProgramUniform4ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VARBPROC __glewProgramUniform4ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64ARBPROC __glewUniform1i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64VARBPROC __glewUniform1i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64ARBPROC __glewUniform1ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VARBPROC __glewUniform1ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64ARBPROC __glewUniform2i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64VARBPROC __glewUniform2i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64ARBPROC __glewUniform2ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VARBPROC __glewUniform2ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64ARBPROC __glewUniform3i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64VARBPROC __glewUniform3i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64ARBPROC __glewUniform3ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VARBPROC __glewUniform3ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64ARBPROC __glewUniform4i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64VARBPROC __glewUniform4i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64ARBPROC __glewUniform4ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VARBPROC __glewUniform4ui64vARB;
+
+GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv;
+GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter;
+GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram;
+GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax;
+GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram;
+GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax;
+GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v;
+
+GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData;
+GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData;
+GLEW_FUN_EXPORT PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer;
+GLEW_FUN_EXPORT PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer;
+GLEW_FUN_EXPORT PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage;
+GLEW_FUN_EXPORT PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage;
+
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange;
+
+GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange;
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures;
+GLEW_FUN_EXPORT PFNGLBINDSAMPLERSPROC __glewBindSamplers;
+GLEW_FUN_EXPORT PFNGLBINDTEXTURESPROC __glewBindTextures;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect;
+
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB;
+
+GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB;
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB;
+GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB;
+GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB;
+GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB;
+
+GLEW_FUN_EXPORT PFNGLMAXSHADERCOMPILERTHREADSARBPROC __glewMaxShaderCompilerThreadsARB;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPPROC __glewPolygonOffsetClamp;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv;
+
+GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB;
+GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB;
+GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB;
+GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB;
+GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB;
+GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB;
+GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB;
+GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB;
+GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB;
+
+GLEW_FUN_EXPORT PFNGLEVALUATEDEPTHVALUESARBPROC __glewEvaluateDepthValuesARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewFramebufferSampleLocationsfvARB;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewNamedFramebufferSampleLocationsfvARB;
+
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB;
+
+GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler;
+GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers;
+GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv;
+GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv;
+
+GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram;
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv;
+GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline;
+
+GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv;
+
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture;
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier;
+
+GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB;
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB;
+GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB;
+GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB;
+GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB;
+GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB;
+GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB;
+GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB;
+GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB;
+GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB;
+GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB;
+
+GLEW_FUN_EXPORT PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding;
+
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv;
+GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv;
+
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB;
+GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB;
+GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB;
+GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB;
+
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync;
+GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync;
+GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v;
+GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv;
+GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync;
+GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync;
+
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv;
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERPROC __glewTextureBarrier;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB;
+
+GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv;
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWPROC __glewTextureView;
+
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter;
+
+GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback;
+GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback;
+GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback;
+GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback;
+GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream;
+GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed;
+GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv;
+
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced;
+
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv;
+GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices;
+GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor;
+
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB;
+GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB;
+GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB;
+GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB;
+GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB;
+
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB;
+GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB;
+
+GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB;
+GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB;
+GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB;
+
+GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui;
+GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv;
+
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v;
+GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv;
+GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv;
+
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI;
+GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI;
+
+GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI;
+GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI;
+GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI;
+GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI;
+
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI;
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI;
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI;
+GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI;
+GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI;
+GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI;
+GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI;
+GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI;
+
+GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI;
+
+GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI;
+GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI;
+
+GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI;
+GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI;
+
+GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI;
+GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI;
+GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI;
+GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI;
+
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI;
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI;
+
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC __glewEGLImageTargetTexStorageEXT;
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC __glewEGLImageTargetTextureStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __glewDrawArraysInstancedBaseInstanceEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseInstanceEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseVertexBaseInstanceEXT;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __glewBindFragDataLocationIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXEXTPROC __glewGetFragDataIndexEXT;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __glewGetProgramResourceLocationIndexEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEEXTPROC __glewBufferStorageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEEXTPROC __glewClearTexImageEXT;
+GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEEXTPROC __glewClearTexSubImageEXT;
+
+GLEW_FUN_EXPORT PFNGLCLIPCONTROLEXTPROC __glewClipControlEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT;
+
+GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT;
+GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT;
+
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT;
+GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT;
+
+GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT;
+GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAEXTPROC __glewCopyImageSubDataEXT;
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT;
+GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT;
+
+GLEW_FUN_EXPORT PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT;
+GLEW_FUN_EXPORT PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT;
+
+GLEW_FUN_EXPORT PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT;
+GLEW_FUN_EXPORT PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT;
+GLEW_FUN_EXPORT PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT;
+
+GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT;
+GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT;
+GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT;
+GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT;
+GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT;
+GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT;
+GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT;
+GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT;
+GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT;
+
+GLEW_FUN_EXPORT PFNGLDISCARDFRAMEBUFFEREXTPROC __glewDiscardFramebufferEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYEXTPROC __glewBeginQueryEXT;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESEXTPROC __glewDeleteQueriesEXT;
+GLEW_FUN_EXPORT PFNGLENDQUERYEXTPROC __glewEndQueryEXT;
+GLEW_FUN_EXPORT PFNGLGENQUERIESEXTPROC __glewGenQueriesEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VEXTPROC __glewGetInteger64vEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVEXTPROC __glewGetQueryObjectivEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVEXTPROC __glewGetQueryObjectuivEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVEXTPROC __glewGetQueryivEXT;
+GLEW_FUN_EXPORT PFNGLISQUERYEXTPROC __glewIsQueryEXT;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTEREXTPROC __glewQueryCounterEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSEXTPROC __glewDrawBuffersEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT;
+GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIEXTPROC __glewBlendEquationSeparateiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIEXTPROC __glewBlendEquationiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIEXTPROC __glewBlendFuncSeparateiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIEXTPROC __glewBlendFunciEXT;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIEXTPROC __glewColorMaskiEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEIEXTPROC __glewDisableiEXT;
+GLEW_FUN_EXPORT PFNGLENABLEIEXTPROC __glewEnableiEXT;
+GLEW_FUN_EXPORT PFNGLISENABLEDIEXTPROC __glewIsEnablediEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXEXTPROC __glewDrawElementsBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __glewDrawElementsInstancedBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __glewDrawRangeElementsBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __glewMultiDrawElementsBaseVertexEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKEXTPROC __glewDrawTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC __glewDrawTransformFeedbackInstancedEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEEXTERNALEXTPROC __glewBufferStorageExternalEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC __glewNamedBufferStorageExternalEXT;
+
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT;
+GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT;
+GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT;
+GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT;
+GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT;
+GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT;
+
+GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT;
+
+GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISOREXTPROC __glewVertexAttribDivisorEXT;
+
+GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT;
+
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC __glewFlushMappedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEEXTPROC __glewMapBufferRangeEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEMEMEXTPROC __glewBufferStorageMemEXT;
+GLEW_FUN_EXPORT PFNGLCREATEMEMORYOBJECTSEXTPROC __glewCreateMemoryObjectsEXT;
+GLEW_FUN_EXPORT PFNGLDELETEMEMORYOBJECTSEXTPROC __glewDeleteMemoryObjectsEXT;
+GLEW_FUN_EXPORT PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC __glewGetMemoryObjectParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETUNSIGNEDBYTEI_VEXTPROC __glewGetUnsignedBytei_vEXT;
+GLEW_FUN_EXPORT PFNGLGETUNSIGNEDBYTEVEXTPROC __glewGetUnsignedBytevEXT;
+GLEW_FUN_EXPORT PFNGLISMEMORYOBJECTEXTPROC __glewIsMemoryObjectEXT;
+GLEW_FUN_EXPORT PFNGLMEMORYOBJECTPARAMETERIVEXTPROC __glewMemoryObjectParameterivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC __glewNamedBufferStorageMemEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM1DEXTPROC __glewTexStorageMem1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM2DEXTPROC __glewTexStorageMem2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC __glewTexStorageMem2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM3DEXTPROC __glewTexStorageMem3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC __glewTexStorageMem3DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM1DEXTPROC __glewTextureStorageMem1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM2DEXTPROC __glewTextureStorageMem2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC __glewTextureStorageMem2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM3DEXTPROC __glewTextureStorageMem3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC __glewTextureStorageMem3DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYFDEXTPROC __glewImportMemoryFdEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC __glewImportMemoryWin32HandleEXT;
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYWIN32NAMEEXTPROC __glewImportMemoryWin32NameEXT;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC __glewMultiDrawArraysIndirectEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC __glewMultiDrawElementsIndirectEXT;
+
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __glewFramebufferTexture2DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSINDEXEDEXTPROC __glewDrawBuffersIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGERI_VEXTPROC __glewGetIntegeri_vEXT;
+GLEW_FUN_EXPORT PFNGLREADBUFFERINDEXEDEXTPROC __glewReadBufferIndexedEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT;
+
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVEBOUNDINGBOXEXTPROC __glewPrimitiveBoundingBoxEXT;
+
+GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT;
+
+GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV;
+GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV;
+GLEW_FUN_EXPORT PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV;
+GLEW_FUN_EXPORT PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSEXTPROC __glewGetGraphicsResetStatusEXT;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVEXTPROC __glewGetnUniformfvEXT;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVEXTPROC __glewGetnUniformivEXT;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSEXTPROC __glewReadnPixelsEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT;
+GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT;
+
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLDELETESEMAPHORESEXTPROC __glewDeleteSemaphoresEXT;
+GLEW_FUN_EXPORT PFNGLGENSEMAPHORESEXTPROC __glewGenSemaphoresEXT;
+GLEW_FUN_EXPORT PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC __glewGetSemaphoreParameterui64vEXT;
+GLEW_FUN_EXPORT PFNGLISSEMAPHOREEXTPROC __glewIsSemaphoreEXT;
+GLEW_FUN_EXPORT PFNGLSEMAPHOREPARAMETERUI64VEXTPROC __glewSemaphoreParameterui64vEXT;
+GLEW_FUN_EXPORT PFNGLSIGNALSEMAPHOREEXTPROC __glewSignalSemaphoreEXT;
+GLEW_FUN_EXPORT PFNGLWAITSEMAPHOREEXTPROC __glewWaitSemaphoreEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREFDEXTPROC __glewImportSemaphoreFdEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC __glewImportSemaphoreWin32HandleEXT;
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC __glewImportSemaphoreWin32NameEXT;
+
+GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT;
+GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC __glewFramebufferFetchBarrierEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT;
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC __glewClearPixelLocalStorageuiEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewFramebufferPixelLocalStorageSizeEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewGetFramebufferPixelLocalStorageSizeEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTEXTPROC __glewTexPageCommitmentEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT;
+
+GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIEXTPROC __glewPatchParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT;
+
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVEXTPROC __glewGetSamplerParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVEXTPROC __glewGetSamplerParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVEXTPROC __glewSamplerParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVEXTPROC __glewSamplerParameterIuivEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT;
+GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT;
+
+GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT;
+GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT;
+GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT;
+GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT;
+GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DEXTPROC __glewTexStorage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DEXTPROC __glewTexStorage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DEXTPROC __glewTexStorage3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEATTRIBS2DEXTPROC __glewTexStorageAttribs2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEATTRIBS3DEXTPROC __glewTexStorageAttribs3DEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWEXTPROC __glewTextureViewEXT;
+
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT;
+
+GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT;
+GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT;
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT;
+GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDARRAYSETEXTPROC __glewBindArraySetEXT;
+GLEW_FUN_EXPORT PFNGLCREATEARRAYSETEXTPROC __glewCreateArraySetExt;
+GLEW_FUN_EXPORT PFNGLDELETEARRAYSETSEXTPROC __glewDeleteArraySetsEXT;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT;
+GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT;
+GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT;
+GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT;
+GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT;
+GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT;
+GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT;
+GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT;
+GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT;
+GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT;
+
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT;
+
+GLEW_FUN_EXPORT PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC __glewAcquireKeyedMutexWin32EXT;
+GLEW_FUN_EXPORT PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC __glewReleaseKeyedMutexWin32EXT;
+
+GLEW_FUN_EXPORT PFNGLWINDOWRECTANGLESEXTPROC __glewWindowRectanglesEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY;
+
+GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP;
+GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP;
+
+GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM;
+GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM;
+
+GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM;
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM;
+GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM;
+
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEIMGPROC __glewGetTextureHandleIMG;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEIMGPROC __glewGetTextureSamplerHandleIMG;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC __glewProgramUniformHandleui64IMG;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC __glewProgramUniformHandleui64vIMG;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64IMGPROC __glewUniformHandleui64IMG;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VIMGPROC __glewUniformHandleui64vIMG;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC __glewFramebufferTexture2DDownsampleIMG;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC __glewFramebufferTextureLayerDownsampleIMG;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC __glewFramebufferTexture2DMultisampleIMG;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC __glewRenderbufferStorageMultisampleIMG;
+
+GLEW_FUN_EXPORT PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC __glewApplyFramebufferAttachmentCMAAINTEL;
+
+GLEW_FUN_EXPORT PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL;
+GLEW_FUN_EXPORT PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL;
+GLEW_FUN_EXPORT PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL;
+
+GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL;
+
+GLEW_FUN_EXPORT PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL;
+GLEW_FUN_EXPORT PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL;
+
+GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL;
+GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL;
+
+GLEW_FUN_EXPORT PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog;
+GLEW_FUN_EXPORT PFNGLGETOBJECTLABELPROC __glewGetObjectLabel;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel;
+GLEW_FUN_EXPORT PFNGLOBJECTLABELPROC __glewObjectLabel;
+GLEW_FUN_EXPORT PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel;
+GLEW_FUN_EXPORT PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup;
+GLEW_FUN_EXPORT PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup;
+
+GLEW_FUN_EXPORT PFNGLMAXSHADERCOMPILERTHREADSKHRPROC __glewMaxShaderCompilerThreadsKHR;
+
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSPROC __glewReadnPixels;
+
+GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion;
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion;
+GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion;
+GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIMESAPROC __glewFramebufferParameteriMESA;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC __glewGetFramebufferParameterivMESA;
+
+GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA;
+
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX;
+
+GLEW_FUN_EXPORT PFNGLASYNCCOPYBUFFERSUBDATANVXPROC __glewAsyncCopyBufferSubDataNVX;
+GLEW_FUN_EXPORT PFNGLASYNCCOPYIMAGESUBDATANVXPROC __glewAsyncCopyImageSubDataNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTSCISSORARRAYVNVXPROC __glewMulticastScissorArrayvNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTVIEWPORTARRAYVNVXPROC __glewMulticastViewportArrayvNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC __glewMulticastViewportPositionWScaleNVX;
+GLEW_FUN_EXPORT PFNGLUPLOADGPUMASKNVXPROC __glewUploadGpuMaskNVX;
+
+GLEW_FUN_EXPORT PFNGLLGPUCOPYIMAGESUBDATANVXPROC __glewLGPUCopyImageSubDataNVX;
+GLEW_FUN_EXPORT PFNGLLGPUINTERLOCKNVXPROC __glewLGPUInterlockNVX;
+GLEW_FUN_EXPORT PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC __glewLGPUNamedBufferSubDataNVX;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC __glewClientWaitSemaphoreui64NVX;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRESSFENCENVXPROC __glewCreateProgressFenceNVX;
+GLEW_FUN_EXPORT PFNGLSIGNALSEMAPHOREUI64NVXPROC __glewSignalSemaphoreui64NVX;
+GLEW_FUN_EXPORT PFNGLWAITSEMAPHOREUI64NVXPROC __glewWaitSemaphoreui64NVX;
+
+GLEW_FUN_EXPORT PFNGLSTEREOPARAMETERFNVPROC __glewStereoParameterfNV;
+GLEW_FUN_EXPORT PFNGLSTEREOPARAMETERINVPROC __glewStereoParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC __glewAlphaToCoverageDitherControlNV;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV;
+GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV;
+
+GLEW_FUN_EXPORT PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV;
+GLEW_FUN_EXPORT PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLVIEWPORTPOSITIONWSCALENVPROC __glewViewportPositionWScaleNV;
+
+GLEW_FUN_EXPORT PFNGLCALLCOMMANDLISTNVPROC __glewCallCommandListNV;
+GLEW_FUN_EXPORT PFNGLCOMMANDLISTSEGMENTSNVPROC __glewCommandListSegmentsNV;
+GLEW_FUN_EXPORT PFNGLCOMPILECOMMANDLISTNVPROC __glewCompileCommandListNV;
+GLEW_FUN_EXPORT PFNGLCREATECOMMANDLISTSNVPROC __glewCreateCommandListsNV;
+GLEW_FUN_EXPORT PFNGLCREATESTATESNVPROC __glewCreateStatesNV;
+GLEW_FUN_EXPORT PFNGLDELETECOMMANDLISTSNVPROC __glewDeleteCommandListsNV;
+GLEW_FUN_EXPORT PFNGLDELETESTATESNVPROC __glewDeleteStatesNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSADDRESSNVPROC __glewDrawCommandsAddressNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSNVPROC __glewDrawCommandsNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC __glewDrawCommandsStatesAddressNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSSTATESNVPROC __glewDrawCommandsStatesNV;
+GLEW_FUN_EXPORT PFNGLGETCOMMANDHEADERNVPROC __glewGetCommandHeaderNV;
+GLEW_FUN_EXPORT PFNGLGETSTAGEINDEXNVPROC __glewGetStageIndexNV;
+GLEW_FUN_EXPORT PFNGLISCOMMANDLISTNVPROC __glewIsCommandListNV;
+GLEW_FUN_EXPORT PFNGLISSTATENVPROC __glewIsStateNV;
+GLEW_FUN_EXPORT PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC __glewListDrawCommandsStatesClientNV;
+GLEW_FUN_EXPORT PFNGLSTATECAPTURENVPROC __glewStateCaptureNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV;
+
+GLEW_FUN_EXPORT PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV;
+
+GLEW_FUN_EXPORT PFNGLCONSERVATIVERASTERPARAMETERFNVPROC __glewConservativeRasterParameterfNV;
+
+GLEW_FUN_EXPORT PFNGLCONSERVATIVERASTERPARAMETERINVPROC __glewConservativeRasterParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATANVPROC __glewCopyBufferSubDataNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV;
+GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSNVPROC __glewDrawBuffersNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDNVPROC __glewDrawArraysInstancedNV;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDNVPROC __glewDrawElementsInstancedNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWVKIMAGENVPROC __glewDrawVkImageNV;
+GLEW_FUN_EXPORT PFNGLGETVKPROCADDRNVPROC __glewGetVkProcAddrNV;
+GLEW_FUN_EXPORT PFNGLSIGNALVKFENCENVPROC __glewSignalVkFenceNV;
+GLEW_FUN_EXPORT PFNGLSIGNALVKSEMAPHORENVPROC __glewSignalVkSemaphoreNV;
+GLEW_FUN_EXPORT PFNGLWAITVKSEMAPHORENVPROC __glewWaitVkSemaphoreNV;
+
+GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV;
+GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV;
+GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV;
+GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV;
+GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV;
+GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV;
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV;
+GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV;
+
+GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV;
+GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV;
+GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV;
+GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV;
+GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV;
+GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV;
+GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERNVPROC __glewBlitFramebufferNV;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC __glewRenderbufferStorageMultisampleNV;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV;
+
+GLEW_FUN_EXPORT PFNGLMULTICASTBARRIERNVPROC __glewMulticastBarrierNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTBLITFRAMEBUFFERNVPROC __glewMulticastBlitFramebufferNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTBUFFERSUBDATANVPROC __glewMulticastBufferSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC __glewMulticastCopyBufferSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTCOPYIMAGESUBDATANVPROC __glewMulticastCopyImageSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewMulticastFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC __glewMulticastGetQueryObjecti64vNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTIVNVPROC __glewMulticastGetQueryObjectivNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC __glewMulticastGetQueryObjectui64vNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC __glewMulticastGetQueryObjectuivNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTWAITSYNCNVPROC __glewMulticastWaitSyncNV;
+GLEW_FUN_EXPORT PFNGLRENDERGPUMASKNVPROC __glewRenderGpuMaskNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV;
+
+GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV;
+GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV;
+GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV;
+GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV;
+GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV;
+GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORNVPROC __glewVertexAttribDivisorNV;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERATTACHMEMORYNVPROC __glewBufferAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC __glewGetMemoryObjectDetachedResourcesuivNV;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERATTACHMEMORYNVPROC __glewNamedBufferAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLRESETMEMORYOBJECTPARAMETERNVPROC __glewResetMemoryObjectParameterNV;
+GLEW_FUN_EXPORT PFNGLTEXATTACHMEMORYNVPROC __glewTexAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREATTACHMEMORYNVPROC __glewTextureAttachMemoryNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTMEMNVPROC __glewBufferPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC __glewNamedBufferPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTMEMNVPROC __glewTexPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC __glewTexturePageCommitmentMemNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWMESHTASKSINDIRECTNVPROC __glewDrawMeshTasksIndirectNV;
+GLEW_FUN_EXPORT PFNGLDRAWMESHTASKSNVPROC __glewDrawMeshTasksNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC __glewMultiDrawMeshTasksIndirectCountNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC __glewMultiDrawMeshTasksIndirectNV;
+
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVNVPROC __glewUniformMatrix2x3fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVNVPROC __glewUniformMatrix2x4fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVNVPROC __glewUniformMatrix3x2fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVNVPROC __glewUniformMatrix3x4fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVNVPROC __glewUniformMatrix4x2fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVNVPROC __glewUniformMatrix4x3fvNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV;
+GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV;
+GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV;
+GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV;
+GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV;
+GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV;
+GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV;
+GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV;
+GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV;
+GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV;
+GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV;
+GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV;
+GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV;
+GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV;
+GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV;
+GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV;
+GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV;
+GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV;
+GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV;
+GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV;
+GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV;
+GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV;
+GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV;
+GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV;
+GLEW_FUN_EXPORT PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV;
+GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV;
+GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV;
+GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV;
+GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV;
+GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV;
+GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV;
+GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV;
+GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV;
+GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV;
+
+GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV;
+GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONMODENVPROC __glewPolygonModeNV;
+
+GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV;
+GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV;
+GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV;
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV;
+
+GLEW_FUN_EXPORT PFNGLREADBUFFERNVPROC __glewReadBufferNV;
+
+GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV;
+GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV;
+GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLRESOLVEDEPTHVALUESNVPROC __glewResolveDepthValuesNV;
+
+GLEW_FUN_EXPORT PFNGLSCISSOREXCLUSIVEARRAYVNVPROC __glewScissorExclusiveArrayvNV;
+GLEW_FUN_EXPORT PFNGLSCISSOREXCLUSIVENVPROC __glewScissorExclusiveNV;
+
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV;
+GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV;
+GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV;
+
+GLEW_FUN_EXPORT PFNGLBINDSHADINGRATEIMAGENVPROC __glewBindShadingRateImageNV;
+GLEW_FUN_EXPORT PFNGLGETSHADINGRATEIMAGEPALETTENVPROC __glewGetShadingRateImagePaletteNV;
+GLEW_FUN_EXPORT PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC __glewGetShadingRateSampleLocationivNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATEIMAGEBARRIERNVPROC __glewShadingRateImageBarrierNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATEIMAGEPALETTENVPROC __glewShadingRateImagePaletteNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC __glewShadingRateSampleOrderCustomNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATESAMPLEORDERNVPROC __glewShadingRateSampleOrderNV;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DNVPROC __glewCompressedTexImage3DNV;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC __glewCompressedTexSubImage3DNV;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DNVPROC __glewCopyTexSubImage3DNV;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERNVPROC __glewFramebufferTextureLayerNV;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DNVPROC __glewTexImage3DNV;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DNVPROC __glewTexSubImage3DNV;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV;
+
+GLEW_FUN_EXPORT PFNGLCREATESEMAPHORESNVPROC __glewCreateSemaphoresNV;
+GLEW_FUN_EXPORT PFNGLGETSEMAPHOREPARAMETERIVNVPROC __glewGetSemaphoreParameterivNV;
+GLEW_FUN_EXPORT PFNGLSEMAPHOREPARAMETERIVNVPROC __glewSemaphoreParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV;
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV;
+GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV;
+
+GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV;
+GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV;
+
+GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV;
+GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV;
+GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV;
+GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV;
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV;
+GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV;
+GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV;
+
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC __glewVDPAURegisterVideoSurfaceWithPictureStructureNV;
+
+GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV;
+GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV;
+GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV;
+GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV;
+GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV;
+
+GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV;
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV;
+GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV;
+GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV;
+GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV;
+GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV;
+GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV;
+GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV;
+GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV;
+GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYFVNVPROC __glewDepthRangeArrayfvNV;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDFNVPROC __glewDepthRangeIndexedfNV;
+GLEW_FUN_EXPORT PFNGLDISABLEINVPROC __glewDisableiNV;
+GLEW_FUN_EXPORT PFNGLENABLEINVPROC __glewEnableiNV;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VNVPROC __glewGetFloati_vNV;
+GLEW_FUN_EXPORT PFNGLISENABLEDINVPROC __glewIsEnablediNV;
+GLEW_FUN_EXPORT PFNGLSCISSORARRAYVNVPROC __glewScissorArrayvNV;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDNVPROC __glewScissorIndexedNV;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVNVPROC __glewScissorIndexedvNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVNVPROC __glewViewportArrayvNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFNVPROC __glewViewportIndexedfNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVNVPROC __glewViewportIndexedfvNV;
+
+GLEW_FUN_EXPORT PFNGLVIEWPORTSWIZZLENVPROC __glewViewportSwizzleNV;
+
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __glewEGLImageTargetRenderbufferStorageOES;
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXTURE2DOESPROC __glewEGLImageTargetTexture2DOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEOESPROC __glewBlendEquationSeparateOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEOESPROC __glewBlendFuncSeparateOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONOESPROC __glewBlendEquationOES;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAOESPROC __glewCopyImageSubDataOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIOESPROC __glewBlendEquationSeparateiOES;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIOESPROC __glewBlendEquationiOES;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIOESPROC __glewBlendFuncSeparateiOES;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIOESPROC __glewBlendFunciOES;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIOESPROC __glewColorMaskiOES;
+GLEW_FUN_EXPORT PFNGLDISABLEIOESPROC __glewDisableiOES;
+GLEW_FUN_EXPORT PFNGLENABLEIOESPROC __glewEnableiOES;
+GLEW_FUN_EXPORT PFNGLISENABLEDIOESPROC __glewIsEnablediOES;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEROESPROC __glewBindFramebufferOES;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEROESPROC __glewBindRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSOESPROC __glewCheckFramebufferStatusOES;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSOESPROC __glewDeleteFramebuffersOES;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSOESPROC __glewDeleteRenderbuffersOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEROESPROC __glewFramebufferRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DOESPROC __glewFramebufferTexture2DOES;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSOESPROC __glewGenFramebuffersOES;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSOESPROC __glewGenRenderbuffersOES;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPOESPROC __glewGenerateMipmapOES;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC __glewGetFramebufferAttachmentParameterivOES;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVOESPROC __glewGetRenderbufferParameterivOES;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEROESPROC __glewIsFramebufferOES;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFEROESPROC __glewIsRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEOESPROC __glewRenderbufferStorageOES;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYOESPROC __glewGetProgramBinaryOES;
+GLEW_FUN_EXPORT PFNGLPROGRAMBINARYOESPROC __glewProgramBinaryOES;
+
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVOESPROC __glewGetBufferPointervOES;
+GLEW_FUN_EXPORT PFNGLMAPBUFFEROESPROC __glewMapBufferOES;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFEROESPROC __glewUnmapBufferOES;
+
+GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXOESPROC __glewCurrentPaletteMatrixOES;
+GLEW_FUN_EXPORT PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC __glewLoadPaletteFromModelViewMatrixOES;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTEROESPROC __glewMatrixIndexPointerOES;
+GLEW_FUN_EXPORT PFNGLWEIGHTPOINTEROESPROC __glewWeightPointerOES;
+
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGOESPROC __glewMinSampleShadingOES;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES;
+GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES;
+GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES;
+GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DOESPROC __glewCompressedTexImage3DOES;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __glewCompressedTexSubImage3DOES;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DOESPROC __glewCopyTexSubImage3DOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DOESPROC __glewFramebufferTexture3DOES;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DOESPROC __glewTexImage3DOES;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DOESPROC __glewTexSubImage3DOES;
+
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVOESPROC __glewGetSamplerParameterIivOES;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVOESPROC __glewGetSamplerParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVOESPROC __glewGetTexParameterIivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVOESPROC __glewGetTexParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVOESPROC __glewSamplerParameterIivOES;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVOESPROC __glewSamplerParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVOESPROC __glewTexParameterIivOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVOESPROC __glewTexParameterIuivOES;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFEROESPROC __glewTexBufferOES;
+GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEOESPROC __glewTexBufferRangeOES;
+
+GLEW_FUN_EXPORT PFNGLGETTEXGENFVOESPROC __glewGetTexGenfvOES;
+GLEW_FUN_EXPORT PFNGLGETTEXGENIVOESPROC __glewGetTexGenivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXGENXVOESPROC __glewGetTexGenxvOES;
+GLEW_FUN_EXPORT PFNGLTEXGENFOESPROC __glewTexGenfOES;
+GLEW_FUN_EXPORT PFNGLTEXGENFVOESPROC __glewTexGenfvOES;
+GLEW_FUN_EXPORT PFNGLTEXGENIOESPROC __glewTexGeniOES;
+GLEW_FUN_EXPORT PFNGLTEXGENIVOESPROC __glewTexGenivOES;
+GLEW_FUN_EXPORT PFNGLTEXGENXOESPROC __glewTexGenxOES;
+GLEW_FUN_EXPORT PFNGLTEXGENXVOESPROC __glewTexGenxvOES;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC __glewTexStorage3DMultisampleOES;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWOESPROC __glewTextureViewOES;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYOESPROC __glewBindVertexArrayOES;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSOESPROC __glewDeleteVertexArraysOES;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSOESPROC __glewGenVertexArraysOES;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYOESPROC __glewIsVertexArrayOES;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewFramebufferTextureMultiviewOVR;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewNamedFramebufferTextureMultiviewOVR;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __glewFramebufferTextureMultisampleMultiviewOVR;
+
+GLEW_FUN_EXPORT PFNGLALPHAFUNCQCOMPROC __glewAlphaFuncQCOM;
+
+GLEW_FUN_EXPORT PFNGLDISABLEDRIVERCONTROLQCOMPROC __glewDisableDriverControlQCOM;
+GLEW_FUN_EXPORT PFNGLENABLEDRIVERCONTROLQCOMPROC __glewEnableDriverControlQCOM;
+GLEW_FUN_EXPORT PFNGLGETDRIVERCONTROLSTRINGQCOMPROC __glewGetDriverControlStringQCOM;
+GLEW_FUN_EXPORT PFNGLGETDRIVERCONTROLSQCOMPROC __glewGetDriverControlsQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTGETBUFFERPOINTERVQCOMPROC __glewExtGetBufferPointervQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETBUFFERSQCOMPROC __glewExtGetBuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETFRAMEBUFFERSQCOMPROC __glewExtGetFramebuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETRENDERBUFFERSQCOMPROC __glewExtGetRenderbuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC __glewExtGetTexLevelParameterivQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXSUBIMAGEQCOMPROC __glewExtGetTexSubImageQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXTURESQCOMPROC __glewExtGetTexturesQCOM;
+GLEW_FUN_EXPORT PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC __glewExtTexObjectStateOverrideiQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC __glewExtGetProgramBinarySourceQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETPROGRAMSQCOMPROC __glewExtGetProgramsQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETSHADERSQCOMPROC __glewExtGetShadersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTISPROGRAMBINARYQCOMPROC __glewExtIsProgramBinaryQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTRAPOLATETEX2DQCOMPROC __glewExtrapolateTex2DQCOM;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC __glewFramebufferFoveationConfigQCOM;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC __glewFramebufferFoveationParametersQCOM;
+
+GLEW_FUN_EXPORT PFNGLTEXESTIMATEMOTIONQCOMPROC __glewTexEstimateMotionQCOM;
+GLEW_FUN_EXPORT PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC __glewTexEstimateMotionRegionsQCOM;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC __glewFramebufferFetchBarrierQCOM;
+
+GLEW_FUN_EXPORT PFNGLSHADINGRATEQCOMPROC __glewShadingRateQCOM;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC __glewTextureFoveationParametersQCOM;
+
+GLEW_FUN_EXPORT PFNGLENDTILINGQCOMPROC __glewEndTilingQCOM;
+GLEW_FUN_EXPORT PFNGLSTARTTILINGQCOMPROC __glewStartTilingQCOM;
+
+GLEW_FUN_EXPORT PFNGLALPHAFUNCXPROC __glewAlphaFuncx;
+GLEW_FUN_EXPORT PFNGLCLEARCOLORXPROC __glewClearColorx;
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHXPROC __glewClearDepthx;
+GLEW_FUN_EXPORT PFNGLCOLOR4XPROC __glewColor4x;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEXPROC __glewDepthRangex;
+GLEW_FUN_EXPORT PFNGLFOGXPROC __glewFogx;
+GLEW_FUN_EXPORT PFNGLFOGXVPROC __glewFogxv;
+GLEW_FUN_EXPORT PFNGLFRUSTUMFPROC __glewFrustumf;
+GLEW_FUN_EXPORT PFNGLFRUSTUMXPROC __glewFrustumx;
+GLEW_FUN_EXPORT PFNGLLIGHTMODELXPROC __glewLightModelx;
+GLEW_FUN_EXPORT PFNGLLIGHTMODELXVPROC __glewLightModelxv;
+GLEW_FUN_EXPORT PFNGLLIGHTXPROC __glewLightx;
+GLEW_FUN_EXPORT PFNGLLIGHTXVPROC __glewLightxv;
+GLEW_FUN_EXPORT PFNGLLINEWIDTHXPROC __glewLineWidthx;
+GLEW_FUN_EXPORT PFNGLLOADMATRIXXPROC __glewLoadMatrixx;
+GLEW_FUN_EXPORT PFNGLMATERIALXPROC __glewMaterialx;
+GLEW_FUN_EXPORT PFNGLMATERIALXVPROC __glewMaterialxv;
+GLEW_FUN_EXPORT PFNGLMULTMATRIXXPROC __glewMultMatrixx;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x;
+GLEW_FUN_EXPORT PFNGLNORMAL3XPROC __glewNormal3x;
+GLEW_FUN_EXPORT PFNGLORTHOFPROC __glewOrthof;
+GLEW_FUN_EXPORT PFNGLORTHOXPROC __glewOrthox;
+GLEW_FUN_EXPORT PFNGLPOINTSIZEXPROC __glewPointSizex;
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx;
+GLEW_FUN_EXPORT PFNGLROTATEXPROC __glewRotatex;
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex;
+GLEW_FUN_EXPORT PFNGLSCALEXPROC __glewScalex;
+GLEW_FUN_EXPORT PFNGLTEXENVXPROC __glewTexEnvx;
+GLEW_FUN_EXPORT PFNGLTEXENVXVPROC __glewTexEnvxv;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERXPROC __glewTexParameterx;
+GLEW_FUN_EXPORT PFNGLTRANSLATEXPROC __glewTranslatex;
+
+GLEW_FUN_EXPORT PFNGLCLIPPLANEFPROC __glewClipPlanef;
+GLEW_FUN_EXPORT PFNGLCLIPPLANEXPROC __glewClipPlanex;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex;
+GLEW_FUN_EXPORT PFNGLGETFIXEDVPROC __glewGetFixedv;
+GLEW_FUN_EXPORT PFNGLGETLIGHTXVPROC __glewGetLightxv;
+GLEW_FUN_EXPORT PFNGLGETMATERIALXVPROC __glewGetMaterialxv;
+GLEW_FUN_EXPORT PFNGLGETTEXENVXVPROC __glewGetTexEnvxv;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXPROC __glewPointParameterx;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv;
+GLEW_FUN_EXPORT PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERXVPROC __glewTexParameterxv;
+
+GLEW_FUN_EXPORT PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL;
+
+GLEW_FUN_EXPORT PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL;
+GLEW_FUN_EXPORT PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL;
+
+GLEW_FUN_EXPORT PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL;
+
+GLEW_FUN_EXPORT PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL;
+
+GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS;
+GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS;
+GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS;
+GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS;
+
+GLEW_FUN_EXPORT PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC __glewInterleavedTextureCoordSetsSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURECOORDSETSGISPROC __glewSelectTextureCoordSetSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURESGISPROC __glewSelectTextureSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURETRANSFORMSGISPROC __glewSelectTextureTransformSGIS;
+
+GLEW_FUN_EXPORT PFNGLMULTISAMPLESUBRECTPOSSGISPROC __glewMultisampleSubRectPosSGIS;
+
+GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS;
+GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS;
+
+GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS;
+GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX;
+GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX;
+GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX;
+GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX;
+GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX;
+GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX;
+
+GLEW_FUN_EXPORT PFNGLADDRESSSPACEPROC __glewAddressSpace;
+GLEW_FUN_EXPORT PFNGLDATAPIPEPROC __glewDataPipe;
+
+GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX;
+
+GLEW_FUN_EXPORT PFNGLFOGLAYERSSGIXPROC __glewFogLayersSGIX;
+GLEW_FUN_EXPORT PFNGLGETFOGLAYERSSGIXPROC __glewGetFogLayersSGIX;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX;
+
+GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX;
+
+GLEW_FUN_EXPORT PFNGLIGLOOINTERFACESGIXPROC __glewIglooInterfaceSGIX;
+
+GLEW_FUN_EXPORT PFNGLALLOCMPEGPREDICTORSSGIXPROC __glewAllocMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLDELETEMPEGPREDICTORSSGIXPROC __glewDeleteMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLGENMPEGPREDICTORSSGIXPROC __glewGenMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPARAMETERFVSGIXPROC __glewGetMPEGParameterfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPARAMETERIVSGIXPROC __glewGetMPEGParameterivSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPREDICTORSGIXPROC __glewGetMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGQUANTTABLEUBVPROC __glewGetMPEGQuantTableubv;
+GLEW_FUN_EXPORT PFNGLISMPEGPREDICTORSGIXPROC __glewIsMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLMPEGPREDICTORSGIXPROC __glewMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLMPEGQUANTTABLEUBVPROC __glewMPEGQuantTableubv;
+GLEW_FUN_EXPORT PFNGLSWAPMPEGPREDICTORSSGIXPROC __glewSwapMPEGPredictorsSGIX;
+
+GLEW_FUN_EXPORT PFNGLGETNONLINLIGHTFVSGIXPROC __glewGetNonlinLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETNONLINMATERIALFVSGIXPROC __glewGetNonlinMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLNONLINLIGHTFVSGIXPROC __glewNonlinLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLNONLINMATERIALFVSGIXPROC __glewNonlinMaterialfvSGIX;
+
+GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX;
+
+GLEW_FUN_EXPORT PFNGLDEFORMSGIXPROC __glewDeformSGIX;
+GLEW_FUN_EXPORT PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC __glewLoadIdentityDeformationMapSGIX;
+
+GLEW_FUN_EXPORT PFNGLMESHBREADTHSGIXPROC __glewMeshBreadthSGIX;
+GLEW_FUN_EXPORT PFNGLMESHSTRIDESGIXPROC __glewMeshStrideSGIX;
+
+GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX;
+
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX;
+
+GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX;
+
+GLEW_FUN_EXPORT PFNGLGETVECTOROPERATIONSGIXPROC __glewGetVectorOperationSGIX;
+GLEW_FUN_EXPORT PFNGLVECTOROPERATIONSGIXPROC __glewVectorOperationSGIX;
+
+GLEW_FUN_EXPORT PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC __glewAreVertexArraysResidentSGIX;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYSGIXPROC __glewBindVertexArraySGIX;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSSGIXPROC __glewDeleteVertexArraysSGIX;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSSGIXPROC __glewGenVertexArraysSGIX;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYSGIXPROC __glewIsVertexArraySGIX;
+GLEW_FUN_EXPORT PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC __glewPrioritizeVertexArraysSGIX;
+
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI;
+GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI;
+
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC __glewGetPixelTransformParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC __glewGetPixelTransformParameterivSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFSGIPROC __glewPixelTransformParameterfSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC __glewPixelTransformParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERISGIPROC __glewPixelTransformParameteriSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC __glewPixelTransformParameterivSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMSGIPROC __glewPixelTransformSGI;
+
+GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX;
+
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN;
+
+GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN;
+
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN;
+
+GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN;
+
+GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_4;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_5;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_6;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_compressed_3DC_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_compressed_ATC_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_framebuffer_multisample_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_framebuffer_sample_positions;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gcn_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_half_float_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int16;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_interleaved_elements;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_occlusion_query_event;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_pinned_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_program_binary_Z400;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_query_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_atomic_counter_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_ballot;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_explicit_vertex_parameter;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_image_load_store_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_value_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_trinary_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_stencil_operation_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_gather_bias_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback4;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_layer;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_viewport_index;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANDROID_extension_pack_es31a;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_pack_reverse_row_order;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt1;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt5;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_usage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_translated_shader_source;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_clip_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_color_buffer_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_copy_texture_levels;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_2D_limited_npot;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_format_BGRA8888;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_max_level;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_1_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_2_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_arrays_of_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_buffer_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clip_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_variable_group_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conditional_render_inverted;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cull_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_derivative_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_direct_state_access;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_enhanced_layouts;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_uniform_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_layer_viewport;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader_interlock;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_no_attachments;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_texture_sub_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gl_spirv;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_indirect_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_invalidate_subdata;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_bind;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_parallel_shader_compile;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pipeline_statistics_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_polygon_offset_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_post_depth_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_program_interface_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_query_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robust_buffer_access_behavior;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_application_isolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_share_group_isolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_locations;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cubemap_per_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counter_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_ballot;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_clock;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_draw_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_group_vote;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_storage_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_image_samples;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_viewport_layer_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_spirv_extensions;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_stencil_texturing;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_barrier;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_filter_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_filter_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_levels;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_overflow_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_binding;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_mali_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_mali_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_rgba8;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_shader_framebuffer_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_shader_framebuffer_fetch_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_texture_unnormalized_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams;
+GLEW_VAR_EXPORT GLboolean __GLEW_DMP_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_DMP_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_external_wrap_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_storage_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_YUV_target;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_base_instance;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_buffer_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clear_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_cull_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_buffer_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compressed_ETC1_RGB8_sub_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_label;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_discard_framebuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_disjoint_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers_indexed;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_elements_base_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_external_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_float_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_frag_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_map_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object_fd;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object_win32;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiple_textures;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisampled_render_to_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_tessellation_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_occlusion_query_boolean;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_post_depth_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_primitive_bounding_box;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_protected_textures;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pvrtc_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_raster_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_read_format_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_render_snorm;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sRGB_write_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore_fd;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore_win32;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_framebuffer_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_framebuffer_fetch_non_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_group_vote;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_formatted;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_implicit_conversions;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_integer_mix;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_io_blocks;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_non_constant_global_initializers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_pixel_local_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_pixel_local_storage2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_samples_identical;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_samplers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_static_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_tessellation_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_astc_decode_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_bptc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc_srgb;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_format_BGRA8888;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_format_sRGB_override;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp_to_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_norm16;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_query_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rg;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_R8;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_RG8;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shadow_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_storage_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_type_2_10_10_10_REV;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_unpack_subimage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_setXXX;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_win32_keyed_mutex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_window_rectangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_FJ_shader_binary_GCCSO;
+GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator;
+GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_framebuffer_downsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_read_format;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_compression_pvrtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_compression_pvrtc2;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_env_enhanced_fixed_function;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_filter_cubic;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_tile_region_protection;
+GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_blackhole_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_conservative_rasterization;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_fragment_shader_ordering;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_framebuffer_CMAA;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_map_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_performance_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_shader_integer_functions2;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_context_flush_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_debug;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_no_error;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_parallel_shader_compile;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robust_buffer_access_behavior;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_shader_subgroup;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_hdr;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_ldr;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_sliced_3d;
+GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_flip_x;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_flip_y;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_swap_xy;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_program_binary_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_shader_integer_functions;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_tile_raster_order;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_blend_equation_advanced_multi_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_conditional_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_multicast2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_linked_gpu_multicast;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_progress_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_3dvision_settings;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_EGL_stream_consumer_external;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_alpha_to_coverage_dither_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bgr;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect_count;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_minmax_factor;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_clip_space_w_scaling;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_command_list;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_shader_derivatives;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_dilate;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_pre_snap;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_pre_snap_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_underestimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_deep_texture3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_nonlinear;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_vulkan_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_attrib_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fbo_color_attachments;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fill_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_coverage_to_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_barycentric;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_interlock;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_mixed_samples;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_generate_mipmap_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader_passthrough;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_multicast;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5_mem_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_image_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_internalformat_sample_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_memory_attachment;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_memory_object_sparse;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_mesh_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_non_square_matrices;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pack_subimage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_float_linear;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering_shared_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_platform_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_polygon_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_shading_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_query_resource_tag;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_buffer_front;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_representative_fragment_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_robustness_video_memory_purge;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sRGB_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_locations;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_mask_override_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_scissor_exclusive;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_counters;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_fp16_vector;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_noperspective_interpolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_storage_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_subgroup_partitioned;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_texture_footprint;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_group;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_shuffle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shading_rate_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shadow_samplers_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shadow_samplers_cube;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_stereo_view_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_latc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_s3tc_update;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_npot_2D_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle_compressed;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_timeline_semaphore;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_uniform_buffer_unified_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image_external;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image_external_essl3;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_equation_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_func_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_subtract;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_ETC1_RGB8_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth24;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth32;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_draw_buffers_indexed;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_draw_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_element_index_uint;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_extended_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_fbo_render_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_fragment_precision_high;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_geometry_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_get_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_mapbuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_matrix_get;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_point_size_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_required_internalformat;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_rgb8_rgba8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_sample_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_sample_variables;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_image_atomic;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_io_blocks;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_multisample_interpolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_standard_derivatives;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil1;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil4;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_surfaceless_context;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_tessellation_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_compression_astc;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_env_crossbar;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_npot;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_storage_multisample_2d_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_type_10_10_10_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview2;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints;
+GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_YUV_texture_gather;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_alpha_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_binning_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_driver_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_extended_get;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_extended_get2;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_frame_extrapolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_framebuffer_foveated;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_motion_estimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_perfmon_global_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_render_shared_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shader_framebuffer_fetch_noncoherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shader_framebuffer_fetch_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shading_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated2;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated_subsampled_layout;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_tiled_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_writeonly_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_0_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_1_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_enable;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_error_string;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_extension_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_log;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_proc_address;
+GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_clip_band_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_line_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multitexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_shared_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_g_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_r_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_timer_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_cadd;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_cmultiply;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_calligraphic_fragment;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_color_matrix_accuracy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_color_table_index_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_complex_polar;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_cylinder_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_datapipe;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_decimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_pass_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_dvc;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_factor_to_alpha;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_layers;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_patchy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_scale;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_lighting_space;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragments_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_icc_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_igloo_interface;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_image_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_impact_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_instrument_error;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_line_quality_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_mpeg1;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_mpeg2;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_nonlinear_lighting_pervertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_nurbs_eval;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_occlusion_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_packed_6bytes;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_tiles;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_polynomial_ffd;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_quad_mesh;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_scalebias_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_slim;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_spotlight_cutoff;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_subdiv_patch;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_mipmap_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_phase;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_supersample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vector_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcba;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_complex;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_complex_type;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_fft;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_VIV_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_scene_markerXXX;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint;
+/* ------------------------------------------------------------------------- */
+
+/* error codes */
+#define GLEW_OK 0
+#define GLEW_NO_ERROR 0
+#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */
+#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */
+#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */
+#define GLEW_ERROR_NO_GLX_DISPLAY 4 /* Need GLX display for GLX support */
+
+/* string codes */
+#define GLEW_VERSION 1
+#define GLEW_VERSION_MAJOR 2
+#define GLEW_VERSION_MINOR 3
+#define GLEW_VERSION_MICRO 4
+
+/* ------------------------------------------------------------------------- */
+
+/* GLEW version info */
+
+/*
+VERSION 2.2.0
+VERSION_MAJOR 2
+VERSION_MINOR 2
+VERSION_MICRO 0
+*/
+
+/* API */
+GLEWAPI GLenum GLEWAPIENTRY glewInit (void);
+GLEWAPI GLenum GLEWAPIENTRY glewContextInit (void);
+GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name);
+#define glewIsExtensionSupported(x) glewIsSupported(x)
+
+#ifndef GLEW_GET_VAR
+#define GLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLEW_GET_FUN
+#define GLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean glewExperimental;
+GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef GLEW_APIENTRY_DEFINED
+#undef GLEW_APIENTRY_DEFINED
+#undef APIENTRY
+#endif
+
+#ifdef GLEW_CALLBACK_DEFINED
+#undef GLEW_CALLBACK_DEFINED
+#undef CALLBACK
+#endif
+
+#ifdef GLEW_WINGDIAPI_DEFINED
+#undef GLEW_WINGDIAPI_DEFINED
+#undef WINGDIAPI
+#endif
+
+#undef GLAPI
+/* #undef GLEWAPI */
+
+#endif /* __glew_h__ */
diff --git a/glew/include/GL/glxew.h b/glew/include/GL/glxew.h
new file mode 100644
index 0000000..bb3c45b
--- /dev/null
+++ b/glew/include/GL/glxew.h
@@ -0,0 +1,1843 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __glxew_h__
+#define __glxew_h__
+#define __GLXEW_H__
+
+#ifdef __glxext_h_
+#error glxext.h included before glxew.h
+#endif
+
+#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__)
+#error glx.h included before glxew.h
+#endif
+
+#define __glxext_h_
+
+#define GLX_H
+#define __GLX_glx_h__
+#define __glx_h__
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmd.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ---------------------------- GLX_VERSION_1_0 --------------------------- */
+
+#ifndef GLX_VERSION_1_0
+#define GLX_VERSION_1_0 1
+
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+#define GLX_BAD_SCREEN 1
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_BAD_VALUE 6
+#define GLX_BAD_ENUM 7
+
+typedef XID GLXDrawable;
+typedef XID GLXPixmap;
+#ifdef __sun
+typedef struct __glXContextRec *GLXContext;
+#else
+typedef struct __GLXcontextRec *GLXContext;
+#endif
+
+typedef unsigned int GLXVideoDeviceNV;
+
+extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase);
+extern Bool glXQueryVersion (Display *dpy, int *major, int *minor);
+extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value);
+extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList);
+extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap);
+extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix);
+extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
+extern void glXDestroyContext (Display *dpy, GLXContext ctx);
+extern Bool glXIsDirect (Display *dpy, GLXContext ctx);
+extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask);
+extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx);
+extern GLXContext glXGetCurrentContext (void);
+extern GLXDrawable glXGetCurrentDrawable (void);
+extern void glXWaitGL (void);
+extern void glXWaitX (void);
+extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable);
+extern void glXUseXFont (Font font, int first, int count, int listBase);
+
+#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0)
+
+#endif /* GLX_VERSION_1_0 */
+
+/* ---------------------------- GLX_VERSION_1_1 --------------------------- */
+
+#ifndef GLX_VERSION_1_1
+#define GLX_VERSION_1_1
+
+#define GLX_VENDOR 0x1
+#define GLX_VERSION 0x2
+#define GLX_EXTENSIONS 0x3
+
+extern const char* glXQueryExtensionsString (Display *dpy, int screen);
+extern const char* glXGetClientString (Display *dpy, int name);
+extern const char* glXQueryServerString (Display *dpy, int screen, int name);
+
+#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1)
+
+#endif /* GLX_VERSION_1_1 */
+
+/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */
+
+#ifndef GLX_VERSION_1_2
+#define GLX_VERSION_1_2 1
+
+typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
+
+#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay)
+
+#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2)
+
+#endif /* GLX_VERSION_1_2 */
+
+/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */
+
+#ifndef GLX_VERSION_1_3
+#define GLX_VERSION_1_3 1
+
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_NONE 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_VISUAL_ID 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+#define GLX_DONT_CARE 0xFFFFFFFF
+
+typedef XID GLXFBConfigID;
+typedef XID GLXPbuffer;
+typedef XID GLXWindow;
+typedef struct __GLXFBConfigRec *GLXFBConfig;
+
+typedef struct {
+ int event_type;
+ int draw_type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ GLXDrawable drawable;
+ unsigned int buffer_mask;
+ unsigned int aux_buffer;
+ int x, y;
+ int width, height;
+ int count;
+} GLXPbufferClobberEvent;
+typedef union __GLXEvent {
+ GLXPbufferClobberEvent glxpbufferclobber;
+ long pad[24];
+} GLXEvent;
+
+typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
+typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
+typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
+typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
+typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
+typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
+typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
+typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
+typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
+typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
+typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
+typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
+
+#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig)
+#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext)
+#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer)
+#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap)
+#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow)
+#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer)
+#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap)
+#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow)
+#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable)
+#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib)
+#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs)
+#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent)
+#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig)
+#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent)
+#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext)
+#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable)
+#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent)
+
+#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3)
+
+#endif /* GLX_VERSION_1_3 */
+
+/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */
+
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+
+#define GLX_SAMPLE_BUFFERS 100000
+#define GLX_SAMPLES 100001
+
+extern void ( * glXGetProcAddress (const GLubyte *procName)) (void);
+
+#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4)
+
+#endif /* GLX_VERSION_1_4 */
+
+/* -------------------------- GLX_3DFX_multisample ------------------------- */
+
+#ifndef GLX_3DFX_multisample
+#define GLX_3DFX_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
+#define GLX_SAMPLES_3DFX 0x8051
+
+#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample)
+
+#endif /* GLX_3DFX_multisample */
+
+/* ------------------------ GLX_AMD_gpu_association ------------------------ */
+
+#ifndef GLX_AMD_gpu_association
+#define GLX_AMD_gpu_association 1
+
+#define GLX_GPU_VENDOR_AMD 0x1F00
+#define GLX_GPU_RENDERER_STRING_AMD 0x1F01
+#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define GLX_GPU_RAM_AMD 0x21A3
+#define GLX_GPU_CLOCK_AMD 0x21A4
+#define GLX_GPU_NUM_PIPES_AMD 0x21A5
+#define GLX_GPU_NUM_SIMD_AMD 0x21A6
+#define GLX_GPU_NUM_RB_AMD 0x21A7
+#define GLX_GPU_NUM_SPI_AMD 0x21A8
+
+typedef void ( * PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list);
+typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int* attribList);
+typedef Bool ( * PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx);
+typedef unsigned int ( * PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx);
+typedef GLXContext ( * PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
+typedef unsigned int ( * PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int* ids);
+typedef int ( * PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void* data);
+typedef Bool ( * PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx);
+
+#define glXBlitContextFramebufferAMD GLXEW_GET_FUN(__glewXBlitContextFramebufferAMD)
+#define glXCreateAssociatedContextAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAMD)
+#define glXCreateAssociatedContextAttribsAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAttribsAMD)
+#define glXDeleteAssociatedContextAMD GLXEW_GET_FUN(__glewXDeleteAssociatedContextAMD)
+#define glXGetContextGPUIDAMD GLXEW_GET_FUN(__glewXGetContextGPUIDAMD)
+#define glXGetCurrentAssociatedContextAMD GLXEW_GET_FUN(__glewXGetCurrentAssociatedContextAMD)
+#define glXGetGPUIDsAMD GLXEW_GET_FUN(__glewXGetGPUIDsAMD)
+#define glXGetGPUInfoAMD GLXEW_GET_FUN(__glewXGetGPUInfoAMD)
+#define glXMakeAssociatedContextCurrentAMD GLXEW_GET_FUN(__glewXMakeAssociatedContextCurrentAMD)
+
+#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association)
+
+#endif /* GLX_AMD_gpu_association */
+
+/* --------------------- GLX_ARB_context_flush_control --------------------- */
+
+#ifndef GLX_ARB_context_flush_control
+#define GLX_ARB_context_flush_control 1
+
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
+
+#define GLXEW_ARB_context_flush_control GLXEW_GET_VAR(__GLXEW_ARB_context_flush_control)
+
+#endif /* GLX_ARB_context_flush_control */
+
+/* ------------------------- GLX_ARB_create_context ------------------------ */
+
+#ifndef GLX_ARB_create_context
+#define GLX_ARB_create_context 1
+
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define GLX_CONTEXT_FLAGS_ARB 0x2094
+
+typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int* attrib_list);
+
+#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB)
+
+#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context)
+
+#endif /* GLX_ARB_create_context */
+
+/* -------------------- GLX_ARB_create_context_no_error -------------------- */
+
+#ifndef GLX_ARB_create_context_no_error
+#define GLX_ARB_create_context_no_error 1
+
+#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
+
+#define GLXEW_ARB_create_context_no_error GLXEW_GET_VAR(__GLXEW_ARB_create_context_no_error)
+
+#endif /* GLX_ARB_create_context_no_error */
+
+/* --------------------- GLX_ARB_create_context_profile -------------------- */
+
+#ifndef GLX_ARB_create_context_profile
+#define GLX_ARB_create_context_profile 1
+
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
+
+#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile)
+
+#endif /* GLX_ARB_create_context_profile */
+
+/* ------------------- GLX_ARB_create_context_robustness ------------------- */
+
+#ifndef GLX_ARB_create_context_robustness
+#define GLX_ARB_create_context_robustness 1
+
+#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261
+
+#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness)
+
+#endif /* GLX_ARB_create_context_robustness */
+
+/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_ARB_fbconfig_float 1
+
+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
+
+#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float)
+
+#endif /* GLX_ARB_fbconfig_float */
+
+/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */
+
+#ifndef GLX_ARB_framebuffer_sRGB
+#define GLX_ARB_framebuffer_sRGB 1
+
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
+
+#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB)
+
+#endif /* GLX_ARB_framebuffer_sRGB */
+
+/* ------------------------ GLX_ARB_get_proc_address ----------------------- */
+
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
+
+extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
+
+#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address)
+
+#endif /* GLX_ARB_get_proc_address */
+
+/* -------------------------- GLX_ARB_multisample -------------------------- */
+
+#ifndef GLX_ARB_multisample
+#define GLX_ARB_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_ARB 100000
+#define GLX_SAMPLES_ARB 100001
+
+#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample)
+
+#endif /* GLX_ARB_multisample */
+
+/* ---------------- GLX_ARB_robustness_application_isolation --------------- */
+
+#ifndef GLX_ARB_robustness_application_isolation
+#define GLX_ARB_robustness_application_isolation 1
+
+#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define GLXEW_ARB_robustness_application_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_application_isolation)
+
+#endif /* GLX_ARB_robustness_application_isolation */
+
+/* ---------------- GLX_ARB_robustness_share_group_isolation --------------- */
+
+#ifndef GLX_ARB_robustness_share_group_isolation
+#define GLX_ARB_robustness_share_group_isolation 1
+
+#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define GLXEW_ARB_robustness_share_group_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_share_group_isolation)
+
+#endif /* GLX_ARB_robustness_share_group_isolation */
+
+/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */
+
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_ARB_vertex_buffer_object 1
+
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+
+#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object)
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
+/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */
+
+#ifndef GLX_ATI_pixel_format_float
+#define GLX_ATI_pixel_format_float 1
+
+#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100
+
+#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float)
+
+#endif /* GLX_ATI_pixel_format_float */
+
+/* ------------------------- GLX_ATI_render_texture ------------------------ */
+
+#ifndef GLX_ATI_render_texture
+#define GLX_ATI_render_texture 1
+
+#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800
+#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801
+#define GLX_TEXTURE_FORMAT_ATI 0x9802
+#define GLX_TEXTURE_TARGET_ATI 0x9803
+#define GLX_MIPMAP_TEXTURE_ATI 0x9804
+#define GLX_TEXTURE_RGB_ATI 0x9805
+#define GLX_TEXTURE_RGBA_ATI 0x9806
+#define GLX_NO_TEXTURE_ATI 0x9807
+#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808
+#define GLX_TEXTURE_1D_ATI 0x9809
+#define GLX_TEXTURE_2D_ATI 0x980A
+#define GLX_MIPMAP_LEVEL_ATI 0x980B
+#define GLX_CUBE_MAP_FACE_ATI 0x980C
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
+#define GLX_FRONT_LEFT_ATI 0x9813
+#define GLX_FRONT_RIGHT_ATI 0x9814
+#define GLX_BACK_LEFT_ATI 0x9815
+#define GLX_BACK_RIGHT_ATI 0x9816
+#define GLX_AUX0_ATI 0x9817
+#define GLX_AUX1_ATI 0x9818
+#define GLX_AUX2_ATI 0x9819
+#define GLX_AUX3_ATI 0x981A
+#define GLX_AUX4_ATI 0x981B
+#define GLX_AUX5_ATI 0x981C
+#define GLX_AUX6_ATI 0x981D
+#define GLX_AUX7_ATI 0x981E
+#define GLX_AUX8_ATI 0x981F
+#define GLX_AUX9_ATI 0x9820
+#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821
+#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822
+
+typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer);
+typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer);
+
+#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI)
+#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI)
+#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI)
+
+#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture)
+
+#endif /* GLX_ATI_render_texture */
+
+/* --------------------------- GLX_EXT_buffer_age -------------------------- */
+
+#ifndef GLX_EXT_buffer_age
+#define GLX_EXT_buffer_age 1
+
+#define GLX_BACK_BUFFER_AGE_EXT 0x20F4
+
+#define GLXEW_EXT_buffer_age GLXEW_GET_VAR(__GLXEW_EXT_buffer_age)
+
+#endif /* GLX_EXT_buffer_age */
+
+/* ------------------------ GLX_EXT_context_priority ----------------------- */
+
+#ifndef GLX_EXT_context_priority
+#define GLX_EXT_context_priority 1
+
+#define GLX_CONTEXT_PRIORITY_LEVEL_EXT 0x3100
+#define GLX_CONTEXT_PRIORITY_HIGH_EXT 0x3101
+#define GLX_CONTEXT_PRIORITY_MEDIUM_EXT 0x3102
+#define GLX_CONTEXT_PRIORITY_LOW_EXT 0x3103
+
+#define GLXEW_EXT_context_priority GLXEW_GET_VAR(__GLXEW_EXT_context_priority)
+
+#endif /* GLX_EXT_context_priority */
+
+/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */
+
+#ifndef GLX_EXT_create_context_es2_profile
+#define GLX_EXT_create_context_es2_profile 1
+
+#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+
+#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile)
+
+#endif /* GLX_EXT_create_context_es2_profile */
+
+/* ------------------- GLX_EXT_create_context_es_profile ------------------- */
+
+#ifndef GLX_EXT_create_context_es_profile
+#define GLX_EXT_create_context_es_profile 1
+
+#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
+
+#define GLXEW_EXT_create_context_es_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es_profile)
+
+#endif /* GLX_EXT_create_context_es_profile */
+
+/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_EXT_fbconfig_packed_float 1
+
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
+
+#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float)
+
+#endif /* GLX_EXT_fbconfig_packed_float */
+
+/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_EXT_framebuffer_sRGB 1
+
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+
+#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB)
+
+#endif /* GLX_EXT_framebuffer_sRGB */
+
+/* ----------------------- GLX_EXT_get_drawable_type ----------------------- */
+
+#ifndef GLX_EXT_get_drawable_type
+#define GLX_EXT_get_drawable_type 1
+
+#define GLX_DRAWABLE_TYPE 0x8010
+
+#define GLXEW_EXT_get_drawable_type GLXEW_GET_VAR(__GLXEW_EXT_get_drawable_type)
+
+#endif /* GLX_EXT_get_drawable_type */
+
+/* ------------------------- GLX_EXT_import_context ------------------------ */
+
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+
+#define GLX_SHARE_CONTEXT_EXT 0x800A
+#define GLX_VISUAL_ID_EXT 0x800B
+#define GLX_SCREEN_EXT 0x800C
+
+typedef XID GLXContextID;
+
+typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context);
+typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
+typedef Display* ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
+typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID);
+typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute, int* value);
+
+#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT)
+#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT)
+#define glXGetCurrentDisplayEXT GLXEW_GET_FUN(__glewXGetCurrentDisplayEXT)
+#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT)
+#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT)
+
+#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context)
+
+#endif /* GLX_EXT_import_context */
+
+/* ---------------------------- GLX_EXT_libglvnd --------------------------- */
+
+#ifndef GLX_EXT_libglvnd
+#define GLX_EXT_libglvnd 1
+
+#define GLX_VENDOR_NAMES_EXT 0x20F6
+
+#define GLXEW_EXT_libglvnd GLXEW_GET_VAR(__GLXEW_EXT_libglvnd)
+
+#endif /* GLX_EXT_libglvnd */
+
+/* ----------------------- GLX_EXT_no_config_context ----------------------- */
+
+#ifndef GLX_EXT_no_config_context
+#define GLX_EXT_no_config_context 1
+
+#define GLXEW_EXT_no_config_context GLXEW_GET_VAR(__GLXEW_EXT_no_config_context)
+
+#endif /* GLX_EXT_no_config_context */
+
+/* -------------------------- GLX_EXT_scene_marker ------------------------- */
+
+#ifndef GLX_EXT_scene_marker
+#define GLX_EXT_scene_marker 1
+
+#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker)
+
+#endif /* GLX_EXT_scene_marker */
+
+/* -------------------------- GLX_EXT_stereo_tree -------------------------- */
+
+#ifndef GLX_EXT_stereo_tree
+#define GLX_EXT_stereo_tree 1
+
+#define GLX_STEREO_NOTIFY_EXT 0x00000000
+#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
+#define GLX_STEREO_TREE_EXT 0x20F5
+
+#define GLXEW_EXT_stereo_tree GLXEW_GET_VAR(__GLXEW_EXT_stereo_tree)
+
+#endif /* GLX_EXT_stereo_tree */
+
+/* -------------------------- GLX_EXT_swap_control ------------------------- */
+
+#ifndef GLX_EXT_swap_control
+#define GLX_EXT_swap_control 1
+
+#define GLX_SWAP_INTERVAL_EXT 0x20F1
+#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+
+typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval);
+
+#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT)
+
+#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control)
+
+#endif /* GLX_EXT_swap_control */
+
+/* ----------------------- GLX_EXT_swap_control_tear ----------------------- */
+
+#ifndef GLX_EXT_swap_control_tear
+#define GLX_EXT_swap_control_tear 1
+
+#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3
+
+#define GLXEW_EXT_swap_control_tear GLXEW_GET_VAR(__GLXEW_EXT_swap_control_tear)
+
+#endif /* GLX_EXT_swap_control_tear */
+
+/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_EXT_texture_from_pixmap 1
+
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_EXT 0x20DE
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_EXT 0x20E0
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+
+typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* dpy, GLXDrawable drawable, int buffer, const int* attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* dpy, GLXDrawable drawable, int buffer);
+
+#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT)
+#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT)
+
+#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap)
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+/* -------------------------- GLX_EXT_visual_info -------------------------- */
+
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info 1
+
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+#define GLX_NONE_EXT 0x8000
+#define GLX_TRUE_COLOR_EXT 0x8002
+#define GLX_DIRECT_COLOR_EXT 0x8003
+#define GLX_PSEUDO_COLOR_EXT 0x8004
+#define GLX_STATIC_COLOR_EXT 0x8005
+#define GLX_GRAY_SCALE_EXT 0x8006
+#define GLX_STATIC_GRAY_EXT 0x8007
+#define GLX_TRANSPARENT_RGB_EXT 0x8008
+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+
+#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info)
+
+#endif /* GLX_EXT_visual_info */
+
+/* ------------------------- GLX_EXT_visual_rating ------------------------- */
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating 1
+
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+#define GLX_SLOW_VISUAL_EXT 0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+
+#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating)
+
+#endif /* GLX_EXT_visual_rating */
+
+/* -------------------------- GLX_INTEL_swap_event ------------------------- */
+
+#ifndef GLX_INTEL_swap_event
+#define GLX_INTEL_swap_event 1
+
+#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+#define GLX_COPY_COMPLETE_INTEL 0x8181
+#define GLX_FLIP_COMPLETE_INTEL 0x8182
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+
+#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event)
+
+#endif /* GLX_INTEL_swap_event */
+
+/* -------------------------- GLX_MESA_agp_offset -------------------------- */
+
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+
+typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer);
+
+#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA)
+
+#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset)
+
+#endif /* GLX_MESA_agp_offset */
+
+/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */
+
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+
+typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height);
+
+#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA)
+
+#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer)
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */
+
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
+
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap);
+
+#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA)
+
+#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap)
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+/* ------------------------ GLX_MESA_query_renderer ------------------------ */
+
+#ifndef GLX_MESA_query_renderer
+#define GLX_MESA_query_renderer 1
+
+#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
+#define GLX_RENDERER_VERSION_MESA 0x8185
+#define GLX_RENDERER_ACCELERATED_MESA 0x8186
+#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+
+typedef Bool ( * PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int* value);
+typedef const char* ( * PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
+typedef Bool ( * PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display* dpy, int screen, int renderer, int attribute, unsigned int* value);
+typedef const char* ( * PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display* dpy, int screen, int renderer, int attribute);
+
+#define glXQueryCurrentRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererIntegerMESA)
+#define glXQueryCurrentRendererStringMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererStringMESA)
+#define glXQueryRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryRendererIntegerMESA)
+#define glXQueryRendererStringMESA GLXEW_GET_FUN(__glewXQueryRendererStringMESA)
+
+#define GLXEW_MESA_query_renderer GLXEW_GET_VAR(__GLXEW_MESA_query_renderer)
+
+#endif /* GLX_MESA_query_renderer */
+
+/* ------------------------ GLX_MESA_release_buffers ----------------------- */
+
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
+
+typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable drawable);
+
+#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA)
+
+#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers)
+
+#endif /* GLX_MESA_release_buffers */
+
+/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+
+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+
+typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode);
+
+#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA)
+
+#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode)
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+/* ------------------------- GLX_MESA_swap_control ------------------------- */
+
+#ifndef GLX_MESA_swap_control
+#define GLX_MESA_swap_control 1
+
+typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void);
+typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval);
+
+#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA)
+#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA)
+
+#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control)
+
+#endif /* GLX_MESA_swap_control */
+
+/* --------------------------- GLX_NV_copy_buffer -------------------------- */
+
+#ifndef GLX_NV_copy_buffer
+#define GLX_NV_copy_buffer 1
+
+typedef void ( * PFNGLXCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void ( * PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+#define glXCopyBufferSubDataNV GLXEW_GET_FUN(__glewXCopyBufferSubDataNV)
+#define glXNamedCopyBufferSubDataNV GLXEW_GET_FUN(__glewXNamedCopyBufferSubDataNV)
+
+#define GLXEW_NV_copy_buffer GLXEW_GET_VAR(__GLXEW_NV_copy_buffer)
+
+#endif /* GLX_NV_copy_buffer */
+
+/* --------------------------- GLX_NV_copy_image --------------------------- */
+
+#ifndef GLX_NV_copy_image
+#define GLX_NV_copy_image 1
+
+typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV)
+
+#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image)
+
+#endif /* GLX_NV_copy_image */
+
+/* ------------------------ GLX_NV_delay_before_swap ----------------------- */
+
+#ifndef GLX_NV_delay_before_swap
+#define GLX_NV_delay_before_swap 1
+
+typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds);
+
+#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV)
+
+#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap)
+
+#endif /* GLX_NV_delay_before_swap */
+
+/* -------------------------- GLX_NV_float_buffer -------------------------- */
+
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+
+#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer)
+
+#endif /* GLX_NV_float_buffer */
+
+/* ------------------------ GLX_NV_multigpu_context ------------------------ */
+
+#ifndef GLX_NV_multigpu_context
+#define GLX_NV_multigpu_context 1
+
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+
+#define GLXEW_NV_multigpu_context GLXEW_GET_VAR(__GLXEW_NV_multigpu_context)
+
+#endif /* GLX_NV_multigpu_context */
+
+/* ---------------------- GLX_NV_multisample_coverage ---------------------- */
+
+#ifndef GLX_NV_multisample_coverage
+#define GLX_NV_multisample_coverage 1
+
+#define GLX_COLOR_SAMPLES_NV 0x20B3
+#define GLX_COVERAGE_SAMPLES_NV 100001
+
+#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage)
+
+#endif /* GLX_NV_multisample_coverage */
+
+/* -------------------------- GLX_NV_present_video ------------------------- */
+
+#ifndef GLX_NV_present_video
+#define GLX_NV_present_video 1
+
+#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+
+typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int* attrib_list);
+typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display* dpy, int screen, int* nelements);
+
+#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV)
+#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV)
+
+#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video)
+
+#endif /* GLX_NV_present_video */
+
+/* ------------------ GLX_NV_robustness_video_memory_purge ----------------- */
+
+#ifndef GLX_NV_robustness_video_memory_purge
+#define GLX_NV_robustness_video_memory_purge 1
+
+#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
+
+#define GLXEW_NV_robustness_video_memory_purge GLXEW_GET_VAR(__GLXEW_NV_robustness_video_memory_purge)
+
+#endif /* GLX_NV_robustness_video_memory_purge */
+
+/* --------------------------- GLX_NV_swap_group --------------------------- */
+
+#ifndef GLX_NV_swap_group
+#define GLX_NV_swap_group 1
+
+typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier);
+typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group);
+typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint* count);
+typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers);
+typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier);
+typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen);
+
+#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV)
+#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV)
+#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV)
+#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV)
+#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV)
+#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV)
+
+#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group)
+
+#endif /* GLX_NV_swap_group */
+
+/* ----------------------- GLX_NV_vertex_array_range ----------------------- */
+
+#ifndef GLX_NV_vertex_array_range
+#define GLX_NV_vertex_array_range 1
+
+typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority);
+typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer);
+
+#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV)
+#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV)
+
+#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range)
+
+#endif /* GLX_NV_vertex_array_range */
+
+/* -------------------------- GLX_NV_video_capture ------------------------- */
+
+#ifndef GLX_NV_video_capture
+#define GLX_NV_video_capture 1
+
+#define GLX_DEVICE_ID_NV 0x20CD
+#define GLX_UNIQUE_ID_NV 0x20CE
+#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+
+typedef XID GLXVideoCaptureDeviceNV;
+
+typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+typedef GLXVideoCaptureDeviceNV* ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int* nelements);
+typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device);
+typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value);
+typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device);
+
+#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV)
+#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV)
+#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV)
+#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV)
+#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV)
+
+#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture)
+
+#endif /* GLX_NV_video_capture */
+
+/* ---------------------------- GLX_NV_video_out --------------------------- */
+
+#ifndef GLX_NV_video_out
+#define GLX_NV_video_out 1
+
+#define GLX_VIDEO_OUT_COLOR_NV 0x20C3
+#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define GLX_VIDEO_OUT_FRAME_NV 0x20C8
+#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+
+typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice);
+typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo);
+typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice);
+typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf);
+typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock);
+
+#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV)
+#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV)
+#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV)
+#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV)
+#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV)
+#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV)
+
+#define GLXEW_NV_video_out GLXEW_GET_VAR(__GLXEW_NV_video_out)
+
+#endif /* GLX_NV_video_out */
+
+/* -------------------------- GLX_OML_swap_method -------------------------- */
+
+#ifndef GLX_OML_swap_method
+#define GLX_OML_swap_method 1
+
+#define GLX_SWAP_METHOD_OML 0x8060
+#define GLX_SWAP_EXCHANGE_OML 0x8061
+#define GLX_SWAP_COPY_OML 0x8062
+#define GLX_SWAP_UNDEFINED_OML 0x8063
+
+#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method)
+
+#endif /* GLX_OML_swap_method */
+
+/* -------------------------- GLX_OML_sync_control ------------------------- */
+
+#ifndef GLX_OML_sync_control
+#define GLX_OML_sync_control 1
+
+typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator);
+typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc);
+typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc);
+typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc);
+
+#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML)
+#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML)
+#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML)
+#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML)
+#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML)
+
+#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control)
+
+#endif /* GLX_OML_sync_control */
+
+/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */
+
+#ifndef GLX_SGIS_blended_overlay
+#define GLX_SGIS_blended_overlay 1
+
+#define GLX_BLENDED_RGBA_SGIS 0x8025
+
+#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay)
+
+#endif /* GLX_SGIS_blended_overlay */
+
+/* -------------------------- GLX_SGIS_color_range ------------------------- */
+
+#ifndef GLX_SGIS_color_range
+#define GLX_SGIS_color_range 1
+
+#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range)
+
+#endif /* GLX_SGIS_color_range */
+
+/* -------------------------- GLX_SGIS_multisample ------------------------- */
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SGIS_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_SGIS 100000
+#define GLX_SAMPLES_SGIS 100001
+
+#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample)
+
+#endif /* GLX_SGIS_multisample */
+
+/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */
+
+#ifndef GLX_SGIS_shared_multisample
+#define GLX_SGIS_shared_multisample 1
+
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
+
+#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample)
+
+#endif /* GLX_SGIS_shared_multisample */
+
+/* --------------------------- GLX_SGIX_fbconfig --------------------------- */
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_SGIX_fbconfig 1
+
+#define GLX_RGBA_BIT_SGIX 0x00000001
+#define GLX_WINDOW_BIT_SGIX 0x00000001
+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+#define GLX_PIXMAP_BIT_SGIX 0x00000002
+#define GLX_SCREEN_EXT 0x800C
+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
+#define GLX_RENDER_TYPE_SGIX 0x8011
+#define GLX_X_RENDERABLE_SGIX 0x8012
+#define GLX_FBCONFIG_ID_SGIX 0x8013
+#define GLX_RGBA_TYPE_SGIX 0x8014
+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+
+typedef XID GLXFBConfigIDSGIX;
+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+
+typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display* dpy, int screen, int* attrib_list, int* nelements);
+typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int* value);
+typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo* vis);
+typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config);
+
+#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX)
+#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX)
+#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX)
+#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX)
+#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX)
+#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX)
+
+#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig)
+
+#endif /* GLX_SGIX_fbconfig */
+
+/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_SGIX_hyperpipe 1
+
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+#define GLX_PIPE_RECT_SGIX 0x00000001
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+#define GLX_BAD_HYPERPIPE_SGIX 92
+#define GLX_HYPERPIPE_ID_SGIX 0x8030
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int networkId;
+} GLXHyperpipeNetworkSGIX;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int XOrigin;
+ int YOrigin;
+ int maxHeight;
+ int maxWidth;
+} GLXPipeRectLimits;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int channel;
+ unsigned int participationType;
+ int timeSlice;
+} GLXHyperpipeConfigSGIX;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int srcXOrigin;
+ int srcYOrigin;
+ int srcWidth;
+ int srcHeight;
+ int destXOrigin;
+ int destYOrigin;
+ int destWidth;
+ int destHeight;
+} GLXPipeRect;
+
+typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
+typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
+typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
+typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
+typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
+typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
+
+#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX)
+#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX)
+#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX)
+#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX)
+#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX)
+#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX)
+#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX)
+#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX)
+
+#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe)
+
+#endif /* GLX_SGIX_hyperpipe */
+
+/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_SGIX_pbuffer 1
+
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+#define GLX_PBUFFER_BIT_SGIX 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
+#define GLX_WIDTH_SGIX 0x801D
+#define GLX_HEIGHT_SGIX 0x801E
+#define GLX_EVENT_MASK_SGIX 0x801F
+#define GLX_DAMAGED_SGIX 0x8020
+#define GLX_SAVED_SGIX 0x8021
+#define GLX_WINDOW_SGIX 0x8022
+#define GLX_PBUFFER_SGIX 0x8023
+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+
+typedef XID GLXPbufferSGIX;
+typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX;
+
+typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list);
+typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbufferSGIX pbuf);
+typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long* mask);
+typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value);
+typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask);
+
+#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX)
+#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX)
+#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX)
+#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX)
+#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX)
+
+#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer)
+
+#endif /* GLX_SGIX_pbuffer */
+
+/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */
+
+#ifndef GLX_SGIX_swap_barrier
+#define GLX_SGIX_swap_barrier 1
+
+typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display* dpy, GLXDrawable drawable, int barrier);
+typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display* dpy, int screen, int* max);
+
+#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX)
+#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX)
+
+#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier)
+
+#endif /* GLX_SGIX_swap_barrier */
+
+/* -------------------------- GLX_SGIX_swap_group -------------------------- */
+
+#ifndef GLX_SGIX_swap_group
+#define GLX_SGIX_swap_group 1
+
+typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display* dpy, GLXDrawable drawable, GLXDrawable member);
+
+#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX)
+
+#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group)
+
+#endif /* GLX_SGIX_swap_group */
+
+/* ------------------------- GLX_SGIX_video_resize ------------------------- */
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SGIX_video_resize 1
+
+#define GLX_SYNC_FRAME_SGIX 0x00000000
+#define GLX_SYNC_SWAP_SGIX 0x00000001
+
+typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window);
+typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h);
+typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype);
+typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int* x, int* y, int* w, int* h);
+typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh);
+
+#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX)
+#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX)
+#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX)
+#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX)
+#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX)
+
+#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize)
+
+#endif /* GLX_SGIX_video_resize */
+
+/* ---------------------- GLX_SGIX_visual_select_group --------------------- */
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_SGIX_visual_select_group 1
+
+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
+
+#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group)
+
+#endif /* GLX_SGIX_visual_select_group */
+
+/* ---------------------------- GLX_SGI_cushion ---------------------------- */
+
+#ifndef GLX_SGI_cushion
+#define GLX_SGI_cushion 1
+
+typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion);
+
+#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI)
+
+#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion)
+
+#endif /* GLX_SGI_cushion */
+
+/* ----------------------- GLX_SGI_make_current_read ----------------------- */
+
+#ifndef GLX_SGI_make_current_read
+#define GLX_SGI_make_current_read 1
+
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
+typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+
+#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI)
+#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI)
+
+#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read)
+
+#endif /* GLX_SGI_make_current_read */
+
+/* -------------------------- GLX_SGI_swap_control ------------------------- */
+
+#ifndef GLX_SGI_swap_control
+#define GLX_SGI_swap_control 1
+
+typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
+
+#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI)
+
+#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control)
+
+#endif /* GLX_SGI_swap_control */
+
+/* --------------------------- GLX_SGI_video_sync -------------------------- */
+
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+
+typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count);
+typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count);
+
+#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI)
+#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI)
+
+#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync)
+
+#endif /* GLX_SGI_video_sync */
+
+/* --------------------- GLX_SUN_get_transparent_index --------------------- */
+
+#ifndef GLX_SUN_get_transparent_index
+#define GLX_SUN_get_transparent_index 1
+
+typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long* pTransparentIndex);
+
+#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN)
+
+#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index)
+
+#endif /* GLX_SUN_get_transparent_index */
+
+/* -------------------------- GLX_SUN_video_resize ------------------------- */
+
+#ifndef GLX_SUN_video_resize
+#define GLX_SUN_video_resize 1
+
+#define GLX_VIDEO_RESIZE_SUN 0x8171
+#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD
+
+typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor);
+typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor);
+
+#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN)
+#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN)
+
+#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize)
+
+#endif /* GLX_SUN_video_resize */
+
+/* ------------------------------------------------------------------------- */
+
+#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay;
+
+GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig;
+GLXEW_FUN_EXPORT PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext;
+GLXEW_FUN_EXPORT PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer;
+GLXEW_FUN_EXPORT PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap;
+GLXEW_FUN_EXPORT PFNGLXCREATEWINDOWPROC __glewXCreateWindow;
+GLXEW_FUN_EXPORT PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer;
+GLXEW_FUN_EXPORT PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap;
+GLXEW_FUN_EXPORT PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs;
+GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent;
+GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig;
+GLXEW_FUN_EXPORT PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent;
+GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTPROC __glewXQueryContext;
+GLXEW_FUN_EXPORT PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable;
+GLXEW_FUN_EXPORT PFNGLXSELECTEVENTPROC __glewXSelectEvent;
+
+GLXEW_FUN_EXPORT PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD;
+GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD;
+GLXEW_FUN_EXPORT PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD;
+GLXEW_FUN_EXPORT PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD;
+GLXEW_FUN_EXPORT PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD;
+
+GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB;
+
+GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI;
+GLXEW_FUN_EXPORT PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI;
+GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI;
+
+GLXEW_FUN_EXPORT PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT;
+GLXEW_FUN_EXPORT PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYEXTPROC __glewXGetCurrentDisplayEXT;
+GLXEW_FUN_EXPORT PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT;
+GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT;
+
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT;
+
+GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT;
+GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT;
+
+GLXEW_FUN_EXPORT PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA;
+
+GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA;
+
+GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA;
+
+GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA;
+
+GLXEW_FUN_EXPORT PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA;
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV;
+GLXEW_FUN_EXPORT PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV;
+
+GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV;
+GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV;
+GLXEW_FUN_EXPORT PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV;
+
+GLXEW_FUN_EXPORT PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV;
+GLXEW_FUN_EXPORT PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV;
+GLXEW_FUN_EXPORT PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV;
+GLXEW_FUN_EXPORT PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV;
+GLXEW_FUN_EXPORT PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV;
+
+GLXEW_FUN_EXPORT PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML;
+GLXEW_FUN_EXPORT PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML;
+GLXEW_FUN_EXPORT PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML;
+GLXEW_FUN_EXPORT PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML;
+GLXEW_FUN_EXPORT PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML;
+
+GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX;
+GLXEW_FUN_EXPORT PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX;
+GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX;
+GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXCUSHIONSGIPROC __glewXCushionSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI;
+GLXEW_FUN_EXPORT PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI;
+
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI;
+GLXEW_FUN_EXPORT PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN;
+
+GLXEW_FUN_EXPORT PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN;
+GLXEW_FUN_EXPORT PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_3;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_4;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_3DFX_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_AMD_gpu_association;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_context_flush_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_no_error;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_robustness;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_fbconfig_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_get_proc_address;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_application_isolation;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_share_group_isolation;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_pixel_format_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_render_texture;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_buffer_age;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_context_priority;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_get_drawable_type;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_libglvnd;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_no_config_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_stereo_tree;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_info;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_rating;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_query_renderer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multigpu_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_robustness_video_memory_purge;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_out;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_color_range;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_shared_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_fbconfig;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_hyperpipe;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_pbuffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_barrier;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_video_resize;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_visual_select_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_cushion;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_make_current_read;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_video_sync;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_get_transparent_index;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_video_resize;
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY glxewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name);
+
+#ifndef GLXEW_GET_VAR
+#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLXEW_GET_FUN
+#define GLXEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glxew_h__ */
diff --git a/glew/include/GL/wglew.h b/glew/include/GL/wglew.h
new file mode 100644
index 0000000..7e2d090
--- /dev/null
+++ b/glew/include/GL/wglew.h
@@ -0,0 +1,1468 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __wglew_h__
+#define __wglew_h__
+#define __WGLEW_H__
+
+#ifdef __wglext_h_
+#error wglext.h included before wglew.h
+#endif
+
+#define __wglext_h_
+
+#if !defined(WINAPI)
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+#include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+#endif
+
+/*
+ * GLEW_STATIC needs to be set when using the static version.
+ * GLEW_BUILD is set when building the DLL version.
+ */
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -------------------------- WGL_3DFX_multisample ------------------------- */
+
+#ifndef WGL_3DFX_multisample
+#define WGL_3DFX_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
+#define WGL_SAMPLES_3DFX 0x2061
+
+#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample)
+
+#endif /* WGL_3DFX_multisample */
+
+/* ------------------------- WGL_3DL_stereo_control ------------------------ */
+
+#ifndef WGL_3DL_stereo_control
+#define WGL_3DL_stereo_control 1
+
+#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
+#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
+#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
+#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
+
+typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
+
+#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL)
+
+#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control)
+
+#endif /* WGL_3DL_stereo_control */
+
+/* ------------------------ WGL_AMD_gpu_association ------------------------ */
+
+#ifndef WGL_AMD_gpu_association
+#define WGL_AMD_gpu_association 1
+
+#define WGL_GPU_VENDOR_AMD 0x1F00
+#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
+#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define WGL_GPU_RAM_AMD 0x21A3
+#define WGL_GPU_CLOCK_AMD 0x21A4
+#define WGL_GPU_NUM_PIPES_AMD 0x21A5
+#define WGL_GPU_NUM_SIMD_AMD 0x21A6
+#define WGL_GPU_NUM_RB_AMD 0x21A7
+#define WGL_GPU_NUM_SPI_AMD 0x21A8
+
+typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList);
+typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
+typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
+typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
+typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids);
+typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data);
+typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
+
+#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD)
+#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD)
+#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD)
+#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD)
+#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD)
+#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD)
+#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD)
+#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD)
+#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD)
+
+#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association)
+
+#endif /* WGL_AMD_gpu_association */
+
+/* ------------------------- WGL_ARB_buffer_region ------------------------- */
+
+#ifndef WGL_ARB_buffer_region
+#define WGL_ARB_buffer_region 1
+
+#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
+#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
+#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
+#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
+
+typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
+typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
+typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
+typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
+
+#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB)
+#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB)
+#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB)
+#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB)
+
+#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region)
+
+#endif /* WGL_ARB_buffer_region */
+
+/* --------------------- WGL_ARB_context_flush_control --------------------- */
+
+#ifndef WGL_ARB_context_flush_control
+#define WGL_ARB_context_flush_control 1
+
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
+
+#define WGLEW_ARB_context_flush_control WGLEW_GET_VAR(__WGLEW_ARB_context_flush_control)
+
+#endif /* WGL_ARB_context_flush_control */
+
+/* ------------------------- WGL_ARB_create_context ------------------------ */
+
+#ifndef WGL_ARB_create_context
+#define WGL_ARB_create_context 1
+
+#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
+#define WGL_CONTEXT_FLAGS_ARB 0x2094
+#define ERROR_INVALID_VERSION_ARB 0x2095
+
+typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList);
+
+#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB)
+
+#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context)
+
+#endif /* WGL_ARB_create_context */
+
+/* -------------------- WGL_ARB_create_context_no_error -------------------- */
+
+#ifndef WGL_ARB_create_context_no_error
+#define WGL_ARB_create_context_no_error 1
+
+#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
+
+#define WGLEW_ARB_create_context_no_error WGLEW_GET_VAR(__WGLEW_ARB_create_context_no_error)
+
+#endif /* WGL_ARB_create_context_no_error */
+
+/* --------------------- WGL_ARB_create_context_profile -------------------- */
+
+#ifndef WGL_ARB_create_context_profile
+#define WGL_ARB_create_context_profile 1
+
+#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define ERROR_INVALID_PROFILE_ARB 0x2096
+#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
+
+#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile)
+
+#endif /* WGL_ARB_create_context_profile */
+
+/* ------------------- WGL_ARB_create_context_robustness ------------------- */
+
+#ifndef WGL_ARB_create_context_robustness
+#define WGL_ARB_create_context_robustness 1
+
+#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
+
+#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness)
+
+#endif /* WGL_ARB_create_context_robustness */
+
+/* ----------------------- WGL_ARB_extensions_string ----------------------- */
+
+#ifndef WGL_ARB_extensions_string
+#define WGL_ARB_extensions_string 1
+
+typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
+
+#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB)
+
+#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string)
+
+#endif /* WGL_ARB_extensions_string */
+
+/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */
+
+#ifndef WGL_ARB_framebuffer_sRGB
+#define WGL_ARB_framebuffer_sRGB 1
+
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
+
+#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB)
+
+#endif /* WGL_ARB_framebuffer_sRGB */
+
+/* ----------------------- WGL_ARB_make_current_read ----------------------- */
+
+#ifndef WGL_ARB_make_current_read
+#define WGL_ARB_make_current_read 1
+
+#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+
+#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB)
+#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB)
+
+#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read)
+
+#endif /* WGL_ARB_make_current_read */
+
+/* -------------------------- WGL_ARB_multisample -------------------------- */
+
+#ifndef WGL_ARB_multisample
+#define WGL_ARB_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_ARB 0x2041
+#define WGL_SAMPLES_ARB 0x2042
+
+#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample)
+
+#endif /* WGL_ARB_multisample */
+
+/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */
+
+#ifndef WGL_ARB_pbuffer
+#define WGL_ARB_pbuffer 1
+
+#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
+#define WGL_PBUFFER_LARGEST_ARB 0x2033
+#define WGL_PBUFFER_WIDTH_ARB 0x2034
+#define WGL_PBUFFER_HEIGHT_ARB 0x2035
+#define WGL_PBUFFER_LOST_ARB 0x2036
+
+DECLARE_HANDLE(HPBUFFERARB);
+
+typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
+
+#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB)
+#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB)
+#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB)
+#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB)
+#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB)
+
+#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer)
+
+#endif /* WGL_ARB_pbuffer */
+
+/* -------------------------- WGL_ARB_pixel_format ------------------------- */
+
+#ifndef WGL_ARB_pixel_format
+#define WGL_ARB_pixel_format 1
+
+#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
+#define WGL_DRAW_TO_WINDOW_ARB 0x2001
+#define WGL_DRAW_TO_BITMAP_ARB 0x2002
+#define WGL_ACCELERATION_ARB 0x2003
+#define WGL_NEED_PALETTE_ARB 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
+#define WGL_SWAP_METHOD_ARB 0x2007
+#define WGL_NUMBER_OVERLAYS_ARB 0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
+#define WGL_TRANSPARENT_ARB 0x200A
+#define WGL_SHARE_DEPTH_ARB 0x200C
+#define WGL_SHARE_STENCIL_ARB 0x200D
+#define WGL_SHARE_ACCUM_ARB 0x200E
+#define WGL_SUPPORT_GDI_ARB 0x200F
+#define WGL_SUPPORT_OPENGL_ARB 0x2010
+#define WGL_DOUBLE_BUFFER_ARB 0x2011
+#define WGL_STEREO_ARB 0x2012
+#define WGL_PIXEL_TYPE_ARB 0x2013
+#define WGL_COLOR_BITS_ARB 0x2014
+#define WGL_RED_BITS_ARB 0x2015
+#define WGL_RED_SHIFT_ARB 0x2016
+#define WGL_GREEN_BITS_ARB 0x2017
+#define WGL_GREEN_SHIFT_ARB 0x2018
+#define WGL_BLUE_BITS_ARB 0x2019
+#define WGL_BLUE_SHIFT_ARB 0x201A
+#define WGL_ALPHA_BITS_ARB 0x201B
+#define WGL_ALPHA_SHIFT_ARB 0x201C
+#define WGL_ACCUM_BITS_ARB 0x201D
+#define WGL_ACCUM_RED_BITS_ARB 0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
+#define WGL_DEPTH_BITS_ARB 0x2022
+#define WGL_STENCIL_BITS_ARB 0x2023
+#define WGL_AUX_BUFFERS_ARB 0x2024
+#define WGL_NO_ACCELERATION_ARB 0x2025
+#define WGL_GENERIC_ACCELERATION_ARB 0x2026
+#define WGL_FULL_ACCELERATION_ARB 0x2027
+#define WGL_SWAP_EXCHANGE_ARB 0x2028
+#define WGL_SWAP_COPY_ARB 0x2029
+#define WGL_SWAP_UNDEFINED_ARB 0x202A
+#define WGL_TYPE_RGBA_ARB 0x202B
+#define WGL_TYPE_COLORINDEX_ARB 0x202C
+#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT* pfValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues);
+
+#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB)
+#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB)
+#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB)
+
+#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format)
+
+#endif /* WGL_ARB_pixel_format */
+
+/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */
+
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_ARB_pixel_format_float 1
+
+#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
+
+#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float)
+
+#endif /* WGL_ARB_pixel_format_float */
+
+/* ------------------------- WGL_ARB_render_texture ------------------------ */
+
+#ifndef WGL_ARB_render_texture
+#define WGL_ARB_render_texture 1
+
+#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
+#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
+#define WGL_TEXTURE_FORMAT_ARB 0x2072
+#define WGL_TEXTURE_TARGET_ARB 0x2073
+#define WGL_MIPMAP_TEXTURE_ARB 0x2074
+#define WGL_TEXTURE_RGB_ARB 0x2075
+#define WGL_TEXTURE_RGBA_ARB 0x2076
+#define WGL_NO_TEXTURE_ARB 0x2077
+#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
+#define WGL_TEXTURE_1D_ARB 0x2079
+#define WGL_TEXTURE_2D_ARB 0x207A
+#define WGL_MIPMAP_LEVEL_ARB 0x207B
+#define WGL_CUBE_MAP_FACE_ARB 0x207C
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
+#define WGL_FRONT_LEFT_ARB 0x2083
+#define WGL_FRONT_RIGHT_ARB 0x2084
+#define WGL_BACK_LEFT_ARB 0x2085
+#define WGL_BACK_RIGHT_ARB 0x2086
+#define WGL_AUX0_ARB 0x2087
+#define WGL_AUX1_ARB 0x2088
+#define WGL_AUX2_ARB 0x2089
+#define WGL_AUX3_ARB 0x208A
+#define WGL_AUX4_ARB 0x208B
+#define WGL_AUX5_ARB 0x208C
+#define WGL_AUX6_ARB 0x208D
+#define WGL_AUX7_ARB 0x208E
+#define WGL_AUX8_ARB 0x208F
+#define WGL_AUX9_ARB 0x2090
+
+typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList);
+
+#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB)
+#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB)
+#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB)
+
+#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture)
+
+#endif /* WGL_ARB_render_texture */
+
+/* ---------------- WGL_ARB_robustness_application_isolation --------------- */
+
+#ifndef WGL_ARB_robustness_application_isolation
+#define WGL_ARB_robustness_application_isolation 1
+
+#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define WGLEW_ARB_robustness_application_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_application_isolation)
+
+#endif /* WGL_ARB_robustness_application_isolation */
+
+/* ---------------- WGL_ARB_robustness_share_group_isolation --------------- */
+
+#ifndef WGL_ARB_robustness_share_group_isolation
+#define WGL_ARB_robustness_share_group_isolation 1
+
+#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define WGLEW_ARB_robustness_share_group_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_share_group_isolation)
+
+#endif /* WGL_ARB_robustness_share_group_isolation */
+
+/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */
+
+#ifndef WGL_ATI_pixel_format_float
+#define WGL_ATI_pixel_format_float 1
+
+#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
+#define GL_RGBA_FLOAT_MODE_ATI 0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+
+#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float)
+
+#endif /* WGL_ATI_pixel_format_float */
+
+/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */
+
+#ifndef WGL_ATI_render_texture_rectangle
+#define WGL_ATI_render_texture_rectangle 1
+
+#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5
+
+#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle)
+
+#endif /* WGL_ATI_render_texture_rectangle */
+
+/* --------------------------- WGL_EXT_colorspace -------------------------- */
+
+#ifndef WGL_EXT_colorspace
+#define WGL_EXT_colorspace 1
+
+#define WGL_COLORSPACE_SRGB_EXT 0x3089
+#define WGL_COLORSPACE_LINEAR_EXT 0x308A
+#define WGL_COLORSPACE_EXT 0x309D
+
+#define WGLEW_EXT_colorspace WGLEW_GET_VAR(__WGLEW_EXT_colorspace)
+
+#endif /* WGL_EXT_colorspace */
+
+/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */
+
+#ifndef WGL_EXT_create_context_es2_profile
+#define WGL_EXT_create_context_es2_profile 1
+
+#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+
+#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile)
+
+#endif /* WGL_EXT_create_context_es2_profile */
+
+/* ------------------- WGL_EXT_create_context_es_profile ------------------- */
+
+#ifndef WGL_EXT_create_context_es_profile
+#define WGL_EXT_create_context_es_profile 1
+
+#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
+
+#define WGLEW_EXT_create_context_es_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es_profile)
+
+#endif /* WGL_EXT_create_context_es_profile */
+
+/* -------------------------- WGL_EXT_depth_float -------------------------- */
+
+#ifndef WGL_EXT_depth_float
+#define WGL_EXT_depth_float 1
+
+#define WGL_DEPTH_FLOAT_EXT 0x2040
+
+#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float)
+
+#endif /* WGL_EXT_depth_float */
+
+/* ---------------------- WGL_EXT_display_color_table ---------------------- */
+
+#ifndef WGL_EXT_display_color_table
+#define WGL_EXT_display_color_table 1
+
+typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort* table, GLuint length);
+
+#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT)
+#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT)
+#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT)
+#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT)
+
+#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table)
+
+#endif /* WGL_EXT_display_color_table */
+
+/* ----------------------- WGL_EXT_extensions_string ----------------------- */
+
+#ifndef WGL_EXT_extensions_string
+#define WGL_EXT_extensions_string 1
+
+typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
+
+#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT)
+
+#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string)
+
+#endif /* WGL_EXT_extensions_string */
+
+/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */
+
+#ifndef WGL_EXT_framebuffer_sRGB
+#define WGL_EXT_framebuffer_sRGB 1
+
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
+
+#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB)
+
+#endif /* WGL_EXT_framebuffer_sRGB */
+
+/* ----------------------- WGL_EXT_make_current_read ----------------------- */
+
+#ifndef WGL_EXT_make_current_read
+#define WGL_EXT_make_current_read 1
+
+#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+
+#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT)
+#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT)
+
+#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read)
+
+#endif /* WGL_EXT_make_current_read */
+
+/* -------------------------- WGL_EXT_multisample -------------------------- */
+
+#ifndef WGL_EXT_multisample
+#define WGL_EXT_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_EXT 0x2041
+#define WGL_SAMPLES_EXT 0x2042
+
+#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample)
+
+#endif /* WGL_EXT_multisample */
+
+/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */
+
+#ifndef WGL_EXT_pbuffer
+#define WGL_EXT_pbuffer 1
+
+#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
+#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
+#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
+#define WGL_PBUFFER_LARGEST_EXT 0x2033
+#define WGL_PBUFFER_WIDTH_EXT 0x2034
+#define WGL_PBUFFER_HEIGHT_EXT 0x2035
+
+DECLARE_HANDLE(HPBUFFEREXT);
+
+typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
+
+#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT)
+#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT)
+#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT)
+#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT)
+#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT)
+
+#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer)
+
+#endif /* WGL_EXT_pbuffer */
+
+/* -------------------------- WGL_EXT_pixel_format ------------------------- */
+
+#ifndef WGL_EXT_pixel_format
+#define WGL_EXT_pixel_format 1
+
+#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
+#define WGL_DRAW_TO_WINDOW_EXT 0x2001
+#define WGL_DRAW_TO_BITMAP_EXT 0x2002
+#define WGL_ACCELERATION_EXT 0x2003
+#define WGL_NEED_PALETTE_EXT 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
+#define WGL_SWAP_METHOD_EXT 0x2007
+#define WGL_NUMBER_OVERLAYS_EXT 0x2008
+#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
+#define WGL_TRANSPARENT_EXT 0x200A
+#define WGL_TRANSPARENT_VALUE_EXT 0x200B
+#define WGL_SHARE_DEPTH_EXT 0x200C
+#define WGL_SHARE_STENCIL_EXT 0x200D
+#define WGL_SHARE_ACCUM_EXT 0x200E
+#define WGL_SUPPORT_GDI_EXT 0x200F
+#define WGL_SUPPORT_OPENGL_EXT 0x2010
+#define WGL_DOUBLE_BUFFER_EXT 0x2011
+#define WGL_STEREO_EXT 0x2012
+#define WGL_PIXEL_TYPE_EXT 0x2013
+#define WGL_COLOR_BITS_EXT 0x2014
+#define WGL_RED_BITS_EXT 0x2015
+#define WGL_RED_SHIFT_EXT 0x2016
+#define WGL_GREEN_BITS_EXT 0x2017
+#define WGL_GREEN_SHIFT_EXT 0x2018
+#define WGL_BLUE_BITS_EXT 0x2019
+#define WGL_BLUE_SHIFT_EXT 0x201A
+#define WGL_ALPHA_BITS_EXT 0x201B
+#define WGL_ALPHA_SHIFT_EXT 0x201C
+#define WGL_ACCUM_BITS_EXT 0x201D
+#define WGL_ACCUM_RED_BITS_EXT 0x201E
+#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
+#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
+#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
+#define WGL_DEPTH_BITS_EXT 0x2022
+#define WGL_STENCIL_BITS_EXT 0x2023
+#define WGL_AUX_BUFFERS_EXT 0x2024
+#define WGL_NO_ACCELERATION_EXT 0x2025
+#define WGL_GENERIC_ACCELERATION_EXT 0x2026
+#define WGL_FULL_ACCELERATION_EXT 0x2027
+#define WGL_SWAP_EXCHANGE_EXT 0x2028
+#define WGL_SWAP_COPY_EXT 0x2029
+#define WGL_SWAP_UNDEFINED_EXT 0x202A
+#define WGL_TYPE_RGBA_EXT 0x202B
+#define WGL_TYPE_COLORINDEX_EXT 0x202C
+
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT* pfValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int* piValues);
+
+#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT)
+#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT)
+#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT)
+
+#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format)
+
+#endif /* WGL_EXT_pixel_format */
+
+/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */
+
+#ifndef WGL_EXT_pixel_format_packed_float
+#define WGL_EXT_pixel_format_packed_float 1
+
+#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
+
+#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float)
+
+#endif /* WGL_EXT_pixel_format_packed_float */
+
+/* -------------------------- WGL_EXT_swap_control ------------------------- */
+
+#ifndef WGL_EXT_swap_control
+#define WGL_EXT_swap_control 1
+
+typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
+typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
+
+#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT)
+#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT)
+
+#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control)
+
+#endif /* WGL_EXT_swap_control */
+
+/* ----------------------- WGL_EXT_swap_control_tear ----------------------- */
+
+#ifndef WGL_EXT_swap_control_tear
+#define WGL_EXT_swap_control_tear 1
+
+#define WGLEW_EXT_swap_control_tear WGLEW_GET_VAR(__WGLEW_EXT_swap_control_tear)
+
+#endif /* WGL_EXT_swap_control_tear */
+
+/* --------------------- WGL_I3D_digital_video_control --------------------- */
+
+#ifndef WGL_I3D_digital_video_control
+#define WGL_I3D_digital_video_control 1
+
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
+#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
+#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
+
+typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue);
+
+#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D)
+#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D)
+
+#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control)
+
+#endif /* WGL_I3D_digital_video_control */
+
+/* ----------------------------- WGL_I3D_gamma ----------------------------- */
+
+#ifndef WGL_I3D_gamma
+#define WGL_I3D_gamma 1
+
+#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
+#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
+
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT* puGreen, USHORT* puBlue);
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT* puGreen, const USHORT* puBlue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue);
+
+#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D)
+#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D)
+#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D)
+#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D)
+
+#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma)
+
+#endif /* WGL_I3D_gamma */
+
+/* ---------------------------- WGL_I3D_genlock ---------------------------- */
+
+#ifndef WGL_I3D_genlock
+#define WGL_I3D_genlock 1
+
+#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
+#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
+#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
+#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
+#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
+#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
+#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
+#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
+#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
+
+typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource);
+typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag);
+typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT* uMaxPixelDelay);
+
+#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D)
+#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D)
+#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D)
+#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D)
+#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D)
+#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D)
+#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D)
+#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D)
+#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D)
+#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D)
+#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D)
+#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D)
+
+#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock)
+
+#endif /* WGL_I3D_genlock */
+
+/* -------------------------- WGL_I3D_image_buffer ------------------------- */
+
+#ifndef WGL_I3D_image_buffer
+#define WGL_I3D_image_buffer 1
+
+#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
+#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
+
+typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE* pEvent, const LPVOID* pAddress, const DWORD* pSize, UINT count);
+typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
+typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
+typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID* pAddress, UINT count);
+
+#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D)
+#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D)
+#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D)
+#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D)
+
+#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer)
+
+#endif /* WGL_I3D_image_buffer */
+
+/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */
+
+#ifndef WGL_I3D_swap_frame_lock
+#define WGL_I3D_swap_frame_lock 1
+
+typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag);
+
+#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D)
+#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D)
+#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D)
+#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D)
+
+#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock)
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */
+
+#ifndef WGL_I3D_swap_frame_usage
+#define WGL_I3D_swap_frame_usage 1
+
+typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD* pMissedFrames, float* pLastMissedUsage);
+
+#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D)
+#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D)
+#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D)
+#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D)
+
+#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage)
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+/* --------------------------- WGL_NV_DX_interop --------------------------- */
+
+#ifndef WGL_NV_DX_interop
+#define WGL_NV_DX_interop 1
+
+#define WGL_ACCESS_READ_ONLY_NV 0x00000000
+#define WGL_ACCESS_READ_WRITE_NV 0x00000001
+#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
+
+typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
+typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects);
+typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access);
+typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice);
+typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access);
+typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle);
+typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects);
+typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
+
+#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV)
+#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV)
+#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV)
+#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV)
+#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV)
+#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV)
+#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV)
+#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV)
+
+#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop)
+
+#endif /* WGL_NV_DX_interop */
+
+/* --------------------------- WGL_NV_DX_interop2 -------------------------- */
+
+#ifndef WGL_NV_DX_interop2
+#define WGL_NV_DX_interop2 1
+
+#define WGLEW_NV_DX_interop2 WGLEW_GET_VAR(__WGLEW_NV_DX_interop2)
+
+#endif /* WGL_NV_DX_interop2 */
+
+/* --------------------------- WGL_NV_copy_image --------------------------- */
+
+#ifndef WGL_NV_copy_image
+#define WGL_NV_copy_image 1
+
+typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV)
+
+#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image)
+
+#endif /* WGL_NV_copy_image */
+
+/* ------------------------ WGL_NV_delay_before_swap ----------------------- */
+
+#ifndef WGL_NV_delay_before_swap
+#define WGL_NV_delay_before_swap 1
+
+typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds);
+
+#define wglDelayBeforeSwapNV WGLEW_GET_FUN(__wglewDelayBeforeSwapNV)
+
+#define WGLEW_NV_delay_before_swap WGLEW_GET_VAR(__WGLEW_NV_delay_before_swap)
+
+#endif /* WGL_NV_delay_before_swap */
+
+/* -------------------------- WGL_NV_float_buffer -------------------------- */
+
+#ifndef WGL_NV_float_buffer
+#define WGL_NV_float_buffer 1
+
+#define WGL_FLOAT_COMPONENTS_NV 0x20B0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
+#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
+#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
+#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
+
+#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer)
+
+#endif /* WGL_NV_float_buffer */
+
+/* -------------------------- WGL_NV_gpu_affinity -------------------------- */
+
+#ifndef WGL_NV_gpu_affinity
+#define WGL_NV_gpu_affinity 1
+
+#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
+#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
+
+DECLARE_HANDLE(HGPUNV);
+typedef struct _GPU_DEVICE {
+ DWORD cb;
+ CHAR DeviceName[32];
+ CHAR DeviceString[128];
+ DWORD Flags;
+ RECT rcVirtualScreen;
+} GPU_DEVICE, *PGPU_DEVICE;
+
+typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
+typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
+typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
+typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
+typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
+
+#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV)
+#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV)
+#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV)
+#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV)
+#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV)
+
+#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity)
+
+#endif /* WGL_NV_gpu_affinity */
+
+/* ------------------------ WGL_NV_multigpu_context ------------------------ */
+
+#ifndef WGL_NV_multigpu_context
+#define WGL_NV_multigpu_context 1
+
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+
+#define WGLEW_NV_multigpu_context WGLEW_GET_VAR(__WGLEW_NV_multigpu_context)
+
+#endif /* WGL_NV_multigpu_context */
+
+/* ---------------------- WGL_NV_multisample_coverage ---------------------- */
+
+#ifndef WGL_NV_multisample_coverage
+#define WGL_NV_multisample_coverage 1
+
+#define WGL_COVERAGE_SAMPLES_NV 0x2042
+#define WGL_COLOR_SAMPLES_NV 0x20B9
+
+#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage)
+
+#endif /* WGL_NV_multisample_coverage */
+
+/* -------------------------- WGL_NV_present_video ------------------------- */
+
+#ifndef WGL_NV_present_video
+#define WGL_NV_present_video 1
+
+#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
+
+DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList);
+typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList);
+typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue);
+
+#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV)
+#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV)
+#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV)
+
+#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video)
+
+#endif /* WGL_NV_present_video */
+
+/* ---------------------- WGL_NV_render_depth_texture ---------------------- */
+
+#ifndef WGL_NV_render_depth_texture
+#define WGL_NV_render_depth_texture 1
+
+#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
+#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+#define WGL_DEPTH_COMPONENT_NV 0x20A7
+
+#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture)
+
+#endif /* WGL_NV_render_depth_texture */
+
+/* -------------------- WGL_NV_render_texture_rectangle -------------------- */
+
+#ifndef WGL_NV_render_texture_rectangle
+#define WGL_NV_render_texture_rectangle 1
+
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
+
+#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle)
+
+#endif /* WGL_NV_render_texture_rectangle */
+
+/* --------------------------- WGL_NV_swap_group --------------------------- */
+
+#ifndef WGL_NV_swap_group
+#define WGL_NV_swap_group 1
+
+typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
+typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count);
+typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint* maxBarriers);
+typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint* barrier);
+typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
+
+#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV)
+#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV)
+#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV)
+#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV)
+#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV)
+#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV)
+
+#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group)
+
+#endif /* WGL_NV_swap_group */
+
+/* ----------------------- WGL_NV_vertex_array_range ----------------------- */
+
+#ifndef WGL_NV_vertex_array_range
+#define WGL_NV_vertex_array_range 1
+
+typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void* pointer);
+
+#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV)
+#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV)
+
+#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range)
+
+#endif /* WGL_NV_vertex_array_range */
+
+/* -------------------------- WGL_NV_video_capture ------------------------- */
+
+#ifndef WGL_NV_video_capture
+#define WGL_NV_video_capture 1
+
+#define WGL_UNIQUE_ID_NV 0x20CE
+#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+
+DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
+typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList);
+typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+
+#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV)
+#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV)
+#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV)
+#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV)
+#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV)
+
+#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture)
+
+#endif /* WGL_NV_video_capture */
+
+/* -------------------------- WGL_NV_video_output -------------------------- */
+
+#ifndef WGL_NV_video_output
+#define WGL_NV_video_output 1
+
+#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
+#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
+#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
+#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
+#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
+#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
+#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define WGL_VIDEO_OUT_FRAME 0x20C8
+#define WGL_VIDEO_OUT_FIELD_1 0x20C9
+#define WGL_VIDEO_OUT_FIELD_2 0x20CA
+#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
+#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
+
+DECLARE_HANDLE(HPVIDEODEV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock);
+
+#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV)
+#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV)
+#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV)
+#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV)
+#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV)
+#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV)
+
+#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output)
+
+#endif /* WGL_NV_video_output */
+
+/* -------------------------- WGL_OML_sync_control ------------------------- */
+
+#ifndef WGL_OML_sync_control
+#define WGL_OML_sync_control 1
+
+typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32* denominator);
+typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64* msc, INT64* sbc);
+typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64* msc, INT64* sbc);
+typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64* msc, INT64* sbc);
+
+#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML)
+#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML)
+#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML)
+#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML)
+#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML)
+#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML)
+
+#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control)
+
+#endif /* WGL_OML_sync_control */
+
+/* ------------------------------------------------------------------------- */
+
+#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+WGLEW_FUN_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL;
+
+WGLEW_FUN_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD;
+WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD;
+WGLEW_FUN_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD;
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD;
+WGLEW_FUN_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD;
+WGLEW_FUN_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB;
+
+WGLEW_FUN_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB;
+
+WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB;
+
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB;
+WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB;
+WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB;
+WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB;
+WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB;
+WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB;
+
+WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB;
+
+WGLEW_FUN_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB;
+WGLEW_FUN_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB;
+WGLEW_FUN_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB;
+
+WGLEW_FUN_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT;
+WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT;
+WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT;
+
+WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT;
+WGLEW_FUN_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D;
+WGLEW_FUN_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D;
+
+WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D;
+WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D;
+WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D;
+WGLEW_FUN_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D;
+
+WGLEW_FUN_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D;
+WGLEW_FUN_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D;
+WGLEW_FUN_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D;
+WGLEW_FUN_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D;
+
+WGLEW_FUN_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D;
+WGLEW_FUN_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D;
+WGLEW_FUN_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV;
+WGLEW_FUN_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV;
+WGLEW_FUN_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV;
+WGLEW_FUN_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV;
+WGLEW_FUN_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV;
+WGLEW_FUN_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV;
+
+WGLEW_FUN_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV;
+
+WGLEW_FUN_EXPORT PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV;
+WGLEW_FUN_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV;
+WGLEW_FUN_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV;
+WGLEW_FUN_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV;
+
+WGLEW_FUN_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV;
+WGLEW_FUN_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV;
+WGLEW_FUN_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV;
+WGLEW_FUN_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV;
+
+WGLEW_FUN_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML;
+WGLEW_FUN_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML;
+WGLEW_FUN_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML;
+WGLEW_FUN_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML;
+WGLEW_FUN_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML;
+WGLEW_FUN_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_3DFX_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_3DL_stereo_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_AMD_gpu_association;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_buffer_region;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_context_flush_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_no_error;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_robustness;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_extensions_string;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_make_current_read;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pbuffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_render_texture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_application_isolation;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_share_group_isolation;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_pixel_format_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_colorspace;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_depth_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_display_color_table;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_extensions_string;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_make_current_read;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pbuffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control_tear;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_digital_video_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_gamma;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_genlock;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_image_buffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop2;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_copy_image;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_delay_before_swap;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_float_buffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_gpu_affinity;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multigpu_context;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multisample_coverage;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_present_video;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_depth_texture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_swap_group;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_vertex_array_range;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_capture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_output;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_OML_sync_control;
+/* ------------------------------------------------------------------------- */
+
+GLEWAPI GLenum GLEWAPIENTRY wglewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name);
+
+#ifndef WGLEW_GET_VAR
+#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef WGLEW_GET_FUN
+#define WGLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef GLEWAPI
+
+#endif /* __wglew_h__ */
diff --git a/glew/original-readme.md b/glew/original-readme.md
new file mode 100644
index 0000000..e31eb73
--- /dev/null
+++ b/glew/original-readme.md
@@ -0,0 +1,255 @@
+# GLEW - The OpenGL Extension Wrangler Library
+
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform. OpenGL core and extension functionality is exposed in a single header file. GLEW has been tested on a variety of operating systems, including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.
+
+![](http://glew.sourceforge.net/glew.png)
+
+http://glew.sourceforge.net/
+
+https://github.com/nigels-com/glew
+
+[![Gitter](https://badges.gitter.im/nigels-com/glew.svg)](https://gitter.im/nigels-com/glew?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+[![Download](https://img.shields.io/sourceforge/dm/glew.svg)](https://sourceforge.net/projects/glew/files/latest/download)
+
+## Table of Contents
+
+* [Downloads](#downloads)
+ * [Recent snapshots](#recent-snapshots)
+* [Build](#build)
+ * [Linux and Mac](#linux-and-mac)
+ * [Using GNU Make](#using-gnu-make)
+ * [Install build tools](#install-build-tools)
+ * [Build](#build-1)
+ * [Linux EGL](#linux-egl)
+ * [Linux OSMesa](#linux-osmesa)
+ * [Linux mingw-w64](#linux-mingw-w64)
+ * [Using cmake](#using-cmake)
+ * [Install build tools](#install-build-tools-1)
+ * [Build](#build-2)
+ * [Windows](#windows)
+ * [Visual Studio](#visual-studio)
+ * [MSYS/Mingw](#msysmingw)
+ * [MSYS2/Mingw-w64](#msys2mingw-w64)
+* [glewinfo](#glewinfo)
+* [Code Generation](#code-generation)
+* [Authors](#authors)
+* [Contributions](#contributions)
+* [Copyright and Licensing](#copyright-and-licensing)
+
+## Downloads
+
+Current release is [2.2.0](https://github.com/nigels-com/glew/releases/tag/glew-2.2.0).
+[(Change Log)](http://glew.sourceforge.net/log.html)
+
+Sources available as
+[ZIP](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip) or
+[TGZ](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz).
+
+Windows binaries for [32-bit and 64-bit](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip).
+
+### Recent snapshots
+
+Snapshots may contain new features, bug-fixes or new OpenGL extensions ahead of tested, official releases.
+
+[glew-20220402.tgz](https://sourceforge.net/projects/glew/files/glew/snapshots/glew-20220402.tgz/download) *GLEW 2.2.0 - with fix for glCreateProgressFenceNVX*
+
+## Build
+
+It is highly recommended to build from a tgz or zip release snapshot.
+The code generation workflow is a complex brew of gnu make, perl and python, that works best on Linux or Mac.
+The code generation is known to work on Windows using [MSYS2](https://www.msys2.org/).
+For most end-users of GLEW the official releases are the best choice, with first class support.
+
+### Linux and Mac
+
+#### Using GNU Make
+
+GNU make is the primary build system for GLEW, historically.
+It includes targets for building the sources and headers, for maintenance purposes.
+
+##### Install build tools
+
+Debian/Ubuntu/Mint: `$ sudo apt-get install build-essential libxmu-dev libxi-dev libgl-dev`
+
+RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel`
+
+FreeBSD: `# pkg install xorg lang/gcc git cmake gmake bash python perl5`
+
+##### Build
+
+ $ make
+ $ sudo make install
+ $ make clean
+
+Targets: `all, glew.lib (sub-targets: glew.lib.shared, glew.lib.static), glew.bin, clean, install, uninstall`
+
+Variables: `SYSTEM=linux-clang, GLEW_DEST=/usr/local, STRIP=`
+
+_Note: you may need to call `make` in the **auto** folder first_
+
+##### Linux EGL
+
+ $ sudo apt install libegl1-mesa-dev
+ $ make SYSTEM=linux-egl
+
+##### Linux OSMesa
+
+ $ sudo apt install libosmesa-dev
+ $ make SYSTEM=linux-osmesa
+
+##### Linux mingw-w64
+
+ $ sudo apt install mingw-w64
+ $ make SYSTEM=linux-mingw32
+ $ make SYSTEM=linux-mingw64
+
+#### Using cmake
+
+The cmake build is mostly contributor maintained.
+Due to the multitude of use cases this is maintained on a _best effort_ basis.
+Pull requests are welcome.
+
+*CMake 2.8.12 or higher is required.*
+
+##### Install build tools
+
+Debian/Ubuntu/Mint: `$ sudo apt-get install build-essential libxmu-dev libxi-dev libgl-dev cmake git`
+
+RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel cmake git`
+
+##### Build
+
+ $ cd build
+ $ cmake ./cmake
+ $ make -j4
+
+| Target | Description |
+| ---------- | ----------- |
+| glew | Build the glew shared library. |
+| glew_s | Build the glew static library. |
+| glewinfo | Build the `glewinfo` executable (requires `BUILD_UTILS` to be `ON`). |
+| visualinfo | Build the `visualinfo` executable (requires `BUILD_UTILS` to be `ON`). |
+| install | Install all enabled targets into `CMAKE_INSTALL_PREFIX`. |
+| clean | Clean up build artifacts. |
+| all | Build all enabled targets (default target). |
+
+| Variables | Description |
+| --------------- | ----------- |
+| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
+| GLEW_REGAL | Build in Regal mode. |
+| GLEW_OSMESA | Build in off-screen Mesa mode. |
+| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
+
+### Windows
+
+#### Visual Studio
+
+Use the provided Visual Studio project file in build/vc15/
+
+Projects for vc6, vc10, vc12 and vc14 are also provided
+
+#### MSYS/Mingw
+
+Available from [Mingw](http://www.mingw.org/)
+
+Requirements: bash, make, gcc
+
+ $ mingw32-make
+ $ mingw32-make install
+ $ mingw32-make install.all
+
+Alternative toolchain: `SYSTEM=mingw-win32`
+
+#### MSYS2/Mingw-w64
+
+Available from [Msys2](http://msys2.github.io/) and/or [Mingw-w64](http://mingw-w64.org/)
+
+Requirements: bash, make, gcc
+
+ $ pacman -S gcc make mingw-w64-i686-gcc mingw-w64-x86_64-gcc
+ $ make
+ $ make install
+ $ make install.all
+
+Alternative toolchain: `SYSTEM=msys, SYSTEM=msys-win32, SYSTEM=msys-win64`
+
+## glewinfo
+
+`glewinfo` is a command-line tool useful for inspecting the capabilities of an
+OpenGL implementation and GLEW support for that. Please include `glewinfo.txt`
+with bug reports, as appropriate.
+
+ ---------------------------
+ GLEW Extension Info
+ ---------------------------
+
+ GLEW version 2.0.0
+ Reporting capabilities of pixelformat 3
+ Running on a Intel(R) HD Graphics 3000 from Intel
+ OpenGL version 3.1.0 - Build 9.17.10.4229 is supported
+
+ GL_VERSION_1_1: OK
+ ---------------
+
+ GL_VERSION_1_2: OK
+ ---------------
+ glCopyTexSubImage3D: OK
+ glDrawRangeElements: OK
+ glTexImage3D: OK
+ glTexSubImage3D: OK
+
+ ...
+
+## Code Generation
+
+A Unix or Mac environment is needed for building GLEW from scratch to
+include new extensions, or customize the code generation. The extension
+data is regenerated from the top level source directory with:
+
+ make extensions
+
+An alternative to generating the GLEW sources from scratch is to
+download a pre-generated (unsupported) snapshot:
+
+https://sourceforge.net/projects/glew/files/glew/snapshots/
+
+## Authors
+
+GLEW is currently maintained by [Nigel Stewart](https://github.com/nigels-com)
+with bug fixes, new OpenGL extension support and new releases.
+
+GLEW was developed by [Milan Ikits](http://www.cs.utah.edu/~ikits/)
+and [Marcelo Magallon](http://wwwvis.informatik.uni-stuttgart.de/~magallon/).
+Aaron Lefohn, Joe Kniss, and Chris Wyman were the first users and also
+assisted with the design and debugging process.
+
+The acronym GLEW originates from Aaron Lefohn.
+Pasi K&auml;rkk&auml;inen identified and fixed several problems with
+GLX and SDL. Nate Robins created the `wglinfo` utility, to
+which modifications were made by Michael Wimmer.
+
+## Contributions
+
+GLEW welcomes community contributions. Typically these are co-ordinated
+via [Issues](https://github.com/nigels-com/glew/issues) or
+[Pull Requests](https://github.com/nigels-com/glew/pulls) in the
+GitHub web interface.
+
+Be sure to mention platform and compiler toolchain details when filing
+a bug report. The output of `glewinfo` can be quite useful for discussion
+also.
+
+Generally GLEW is usually released once a year, around the time of the Siggraph
+computer graphics conference. If you're not using the current release
+version of GLEW, be sure to check if the issue or bug is fixed there.
+
+## Copyright and Licensing
+
+GLEW is originally derived from the EXTGL project by Lev Povalahev.
+The source code is licensed under the
+[Modified BSD License](http://glew.sourceforge.net/glew.txt), the
+[Mesa 3-D License](http://glew.sourceforge.net/mesa.txt) (MIT) and the
+[Khronos License](http://glew.sourceforge.net/khronos.txt) (MIT).
+
+The automatic code generation scripts are released under the
+[GNU GPL](http://glew.sourceforge.net/gpl.txt).
diff --git a/glew/src/glew.c b/glew/src/glew.c
new file mode 100644
index 0000000..7d9fb02
--- /dev/null
+++ b/glew/src/glew.c
@@ -0,0 +1,32522 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#if defined(GLEW_OSMESA)
+# define GLAPI extern
+# include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+# include <GL/eglew.h>
+#elif defined(_WIN32)
+/*
+ * If NOGDI is defined, wingdi.h won't be included by windows.h, and thus
+ * wglGetProcAddress won't be declared. It will instead be implicitly declared,
+ * potentially incorrectly, which we don't want.
+ */
+# if defined(NOGDI)
+# undef NOGDI
+# endif
+# include <GL/wglew.h>
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+# include <GL/glxew.h>
+#endif
+
+#include <stddef.h> /* For size_t */
+
+#if defined(GLEW_EGL)
+#elif defined(GLEW_REGAL)
+
+/* In GLEW_REGAL mode we call directly into the linked
+ libRegal.so glGetProcAddressREGAL for looking up
+ the GL function pointers. */
+
+# undef glGetProcAddressREGAL
+# ifdef WIN32
+extern void * __stdcall glGetProcAddressREGAL(const GLchar *name);
+static void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# else
+extern void * glGetProcAddressREGAL(const GLchar *name);
+static void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# endif
+# define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void* dlGetProcAddress (const GLubyte* name)
+{
+ static void* h = NULL;
+ static void* gpa;
+
+ if (h == NULL)
+ {
+ if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
+ gpa = dlsym(h, "glXGetProcAddress");
+ }
+
+ if (gpa != NULL)
+ return ((void*(*)(const GLubyte*))gpa)(name);
+ else
+ return dlsym(h, (const char*)name);
+}
+#endif /* __sgi || __sun || GLEW_APPLE_GLX */
+
+#if defined(__APPLE__)
+#include <stdlib.h>
+#include <string.h>
+#include <AvailabilityMacros.h>
+
+#ifdef MAC_OS_X_VERSION_10_3
+
+#include <dlfcn.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static void* image = NULL;
+ void* addr;
+ if (NULL == image)
+ {
+ image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
+ }
+ if( !image ) return NULL;
+ addr = dlsym(image, (const char*)name);
+ if( addr ) return addr;
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#else
+
+#include <mach-o/dyld.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static const struct mach_header* image = NULL;
+ NSSymbol symbol;
+ char* symbolName;
+ if (NULL == image)
+ {
+ image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
+ }
+ /* prepend a '_' for the Unix C symbol mangling convention */
+ symbolName = malloc(strlen((const char*)name) + 2);
+ strcpy(symbolName+1, (const char*)name);
+ symbolName[0] = '_';
+ symbol = NULL;
+ /* if (NSIsSymbolNameDefined(symbolName))
+ symbol = NSLookupAndBindSymbol(symbolName); */
+ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;
+ free(symbolName);
+ if( symbol ) return NSAddressOfSymbol(symbol);
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#endif /* MAC_OS_X_VERSION_10_3 */
+#endif /* __APPLE__ */
+
+/*
+ * Define glewGetProcAddress.
+ */
+#if defined(GLEW_REGAL)
+# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
+#elif defined(GLEW_OSMESA)
+# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
+#elif defined(GLEW_EGL)
+# define glewGetProcAddress(name) eglGetProcAddress((const char *)name)
+#elif defined(_WIN32)
+# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+# define glewGetProcAddress(name) NSGLGetProcAddress(name)
+#elif defined(__sgi) || defined(__sun) || defined(__HAIKU__)
+# define glewGetProcAddress(name) dlGetProcAddress(name)
+#elif defined(__ANDROID__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#elif defined(__native_client__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#else /* __linux */
+# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)
+#endif
+
+/*
+ * Redefine GLEW_GET_VAR etc without const cast
+ */
+
+#undef GLEW_GET_VAR
+# define GLEW_GET_VAR(x) (x)
+
+#ifdef WGLEW_GET_VAR
+# undef WGLEW_GET_VAR
+# define WGLEW_GET_VAR(x) (x)
+#endif /* WGLEW_GET_VAR */
+
+#ifdef GLXEW_GET_VAR
+# undef GLXEW_GET_VAR
+# define GLXEW_GET_VAR(x) (x)
+#endif /* GLXEW_GET_VAR */
+
+#ifdef EGLEW_GET_VAR
+# undef EGLEW_GET_VAR
+# define EGLEW_GET_VAR(x) (x)
+#endif /* EGLEW_GET_VAR */
+
+/*
+ * GLEW, just like OpenGL or GLU, does not rely on the standard C library.
+ * These functions implement the functionality required in this file.
+ */
+
+static GLuint _glewStrLen (const GLubyte* s)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0') i++;
+ return i;
+}
+
+static GLuint _glewStrCLen (const GLubyte* s, GLubyte c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) i++;
+ return i;
+}
+
+static GLuint _glewStrCopy(char *d, const char *s, char c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) { d[i] = s[i]; i++; }
+ d[i] = '\0';
+ return i;
+}
+
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n)
+{
+ GLuint i=0;
+ if(a == NULL || b == NULL)
+ return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE;
+ while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++;
+ return i == n ? GL_TRUE : GL_FALSE;
+}
+#endif
+#endif
+
+static GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t'))
+ {
+ (*a)++;
+ (*na)--;
+ }
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame2 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t'))
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+/*
+ * Search for name in the extensions string. Use of strstr()
+ * is not sufficient because extension names can be prefixes of
+ * other extension names. Could use strtok() but the constant
+ * string returned by glGetString might be in read-only memory.
+ */
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end)
+{
+ const GLubyte* p;
+ GLuint len = _glewStrLen((const GLubyte*)name);
+ p = start;
+ while (p < end)
+ {
+ GLuint n = _glewStrCLen(p, ' ');
+ if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
+ p += n+1;
+ }
+ return GL_FALSE;
+}
+#endif
+#endif
+
+PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL;
+PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL;
+PFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL;
+PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL;
+
+PFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL;
+PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL;
+PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL;
+PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL;
+PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL;
+PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL;
+PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL;
+PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL;
+PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL;
+PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL;
+PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL;
+PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL;
+PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL;
+PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL;
+PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL;
+PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL;
+PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL;
+PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL;
+PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL;
+PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL;
+PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL;
+PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL;
+PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL;
+PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL;
+PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL;
+PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL;
+PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL;
+PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL;
+PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL;
+PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL;
+PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL;
+PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL;
+PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL;
+PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL;
+PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL;
+PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL;
+PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL;
+PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL;
+PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL;
+PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL;
+PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL;
+PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL;
+
+PFNGLBLENDCOLORPROC __glewBlendColor = NULL;
+PFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL;
+PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL;
+PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL;
+PFNGLFOGCOORDDPROC __glewFogCoordd = NULL;
+PFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL;
+PFNGLFOGCOORDFPROC __glewFogCoordf = NULL;
+PFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL;
+PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL;
+PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL;
+PFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL;
+PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL;
+PFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL;
+PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL;
+PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL;
+PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL;
+PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL;
+PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL;
+PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL;
+PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL;
+PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL;
+PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL;
+PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL;
+PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL;
+PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL;
+PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL;
+PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL;
+PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL;
+PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL;
+PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL;
+PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL;
+PFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL;
+PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL;
+PFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL;
+PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL;
+PFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL;
+PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL;
+PFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL;
+PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL;
+PFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL;
+PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL;
+PFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL;
+PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL;
+PFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL;
+PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL;
+PFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL;
+PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL;
+
+PFNGLBEGINQUERYPROC __glewBeginQuery = NULL;
+PFNGLBINDBUFFERPROC __glewBindBuffer = NULL;
+PFNGLBUFFERDATAPROC __glewBufferData = NULL;
+PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL;
+PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL;
+PFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL;
+PFNGLENDQUERYPROC __glewEndQuery = NULL;
+PFNGLGENBUFFERSPROC __glewGenBuffers = NULL;
+PFNGLGENQUERIESPROC __glewGenQueries = NULL;
+PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL;
+PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL;
+PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL;
+PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL;
+PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL;
+PFNGLGETQUERYIVPROC __glewGetQueryiv = NULL;
+PFNGLISBUFFERPROC __glewIsBuffer = NULL;
+PFNGLISQUERYPROC __glewIsQuery = NULL;
+PFNGLMAPBUFFERPROC __glewMapBuffer = NULL;
+PFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL;
+
+PFNGLATTACHSHADERPROC __glewAttachShader = NULL;
+PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL;
+PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL;
+PFNGLCOMPILESHADERPROC __glewCompileShader = NULL;
+PFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL;
+PFNGLCREATESHADERPROC __glewCreateShader = NULL;
+PFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL;
+PFNGLDELETESHADERPROC __glewDeleteShader = NULL;
+PFNGLDETACHSHADERPROC __glewDetachShader = NULL;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL;
+PFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL;
+PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL;
+PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL;
+PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL;
+PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL;
+PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL;
+PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL;
+PFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL;
+PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL;
+PFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL;
+PFNGLGETSHADERIVPROC __glewGetShaderiv = NULL;
+PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL;
+PFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL;
+PFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL;
+PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL;
+PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL;
+PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL;
+PFNGLISPROGRAMPROC __glewIsProgram = NULL;
+PFNGLISSHADERPROC __glewIsShader = NULL;
+PFNGLLINKPROGRAMPROC __glewLinkProgram = NULL;
+PFNGLSHADERSOURCEPROC __glewShaderSource = NULL;
+PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL;
+PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL;
+PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL;
+PFNGLUNIFORM1FPROC __glewUniform1f = NULL;
+PFNGLUNIFORM1FVPROC __glewUniform1fv = NULL;
+PFNGLUNIFORM1IPROC __glewUniform1i = NULL;
+PFNGLUNIFORM1IVPROC __glewUniform1iv = NULL;
+PFNGLUNIFORM2FPROC __glewUniform2f = NULL;
+PFNGLUNIFORM2FVPROC __glewUniform2fv = NULL;
+PFNGLUNIFORM2IPROC __glewUniform2i = NULL;
+PFNGLUNIFORM2IVPROC __glewUniform2iv = NULL;
+PFNGLUNIFORM3FPROC __glewUniform3f = NULL;
+PFNGLUNIFORM3FVPROC __glewUniform3fv = NULL;
+PFNGLUNIFORM3IPROC __glewUniform3i = NULL;
+PFNGLUNIFORM3IVPROC __glewUniform3iv = NULL;
+PFNGLUNIFORM4FPROC __glewUniform4f = NULL;
+PFNGLUNIFORM4FVPROC __glewUniform4fv = NULL;
+PFNGLUNIFORM4IPROC __glewUniform4i = NULL;
+PFNGLUNIFORM4IVPROC __glewUniform4iv = NULL;
+PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL;
+PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL;
+PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL;
+PFNGLUSEPROGRAMPROC __glewUseProgram = NULL;
+PFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL;
+PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL;
+PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL;
+PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL;
+PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL;
+PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL;
+PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL;
+PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL;
+PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL;
+PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL;
+PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL;
+PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL;
+PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL;
+PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL;
+PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL;
+PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL;
+PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL;
+PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL;
+PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL;
+PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL;
+PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL;
+PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL;
+PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL;
+PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL;
+PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL;
+PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL;
+PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL;
+PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL;
+PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL;
+PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL;
+PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL;
+PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL;
+PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL;
+PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL;
+PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL;
+PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL;
+PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL;
+PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL;
+
+PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL;
+PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL;
+PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL;
+PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL;
+PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL;
+PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL;
+
+PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL;
+PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL;
+PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL;
+PFNGLCLAMPCOLORPROC __glewClampColor = NULL;
+PFNGLCLEARBUFFERFIPROC __glewClearBufferfi = NULL;
+PFNGLCLEARBUFFERFVPROC __glewClearBufferfv = NULL;
+PFNGLCLEARBUFFERIVPROC __glewClearBufferiv = NULL;
+PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv = NULL;
+PFNGLCOLORMASKIPROC __glewColorMaski = NULL;
+PFNGLDISABLEIPROC __glewDisablei = NULL;
+PFNGLENABLEIPROC __glewEnablei = NULL;
+PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender = NULL;
+PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback = NULL;
+PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v = NULL;
+PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation = NULL;
+PFNGLGETSTRINGIPROC __glewGetStringi = NULL;
+PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv = NULL;
+PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying = NULL;
+PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv = NULL;
+PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv = NULL;
+PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv = NULL;
+PFNGLISENABLEDIPROC __glewIsEnabledi = NULL;
+PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv = NULL;
+PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings = NULL;
+PFNGLUNIFORM1UIPROC __glewUniform1ui = NULL;
+PFNGLUNIFORM1UIVPROC __glewUniform1uiv = NULL;
+PFNGLUNIFORM2UIPROC __glewUniform2ui = NULL;
+PFNGLUNIFORM2UIVPROC __glewUniform2uiv = NULL;
+PFNGLUNIFORM3UIPROC __glewUniform3ui = NULL;
+PFNGLUNIFORM3UIVPROC __glewUniform3uiv = NULL;
+PFNGLUNIFORM4UIPROC __glewUniform4ui = NULL;
+PFNGLUNIFORM4UIVPROC __glewUniform4uiv = NULL;
+PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i = NULL;
+PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv = NULL;
+PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui = NULL;
+PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv = NULL;
+PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i = NULL;
+PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv = NULL;
+PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui = NULL;
+PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv = NULL;
+PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i = NULL;
+PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv = NULL;
+PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui = NULL;
+PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv = NULL;
+PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv = NULL;
+PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i = NULL;
+PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv = NULL;
+PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv = NULL;
+PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv = NULL;
+PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui = NULL;
+PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv = NULL;
+PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv = NULL;
+PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced = NULL;
+PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced = NULL;
+PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex = NULL;
+PFNGLTEXBUFFERPROC __glewTexBuffer = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture = NULL;
+PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v = NULL;
+PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v = NULL;
+
+PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei = NULL;
+PFNGLBLENDEQUATIONIPROC __glewBlendEquationi = NULL;
+PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei = NULL;
+PFNGLBLENDFUNCIPROC __glewBlendFunci = NULL;
+PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus = NULL;
+PFNGLGETNCOMPRESSEDTEXIMAGEPROC __glewGetnCompressedTexImage = NULL;
+PFNGLGETNTEXIMAGEPROC __glewGetnTexImage = NULL;
+PFNGLGETNUNIFORMDVPROC __glewGetnUniformdv = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC __glewMultiDrawArraysIndirectCount = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC __glewMultiDrawElementsIndirectCount = NULL;
+PFNGLSPECIALIZESHADERPROC __glewSpecializeShader = NULL;
+
+PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD = NULL;
+PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD = NULL;
+PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD = NULL;
+PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD = NULL;
+
+PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD = NULL;
+PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD = NULL;
+PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD = NULL;
+PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD = NULL;
+
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewNamedRenderbufferStorageMultisampleAdvancedAMD = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewRenderbufferStorageMultisampleAdvancedAMD = NULL;
+
+PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewFramebufferSamplePositionsfvAMD = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC __glewGetFramebufferParameterfvAMD = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC __glewGetNamedFramebufferParameterfvAMD = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewNamedFramebufferSamplePositionsfvAMD = NULL;
+
+PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD = NULL;
+
+PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD = NULL;
+PFNGLGENNAMESAMDPROC __glewGenNamesAMD = NULL;
+PFNGLISNAMEAMDPROC __glewIsNameAMD = NULL;
+
+PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD = NULL;
+
+PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD = NULL;
+PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD = NULL;
+PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD = NULL;
+PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD = NULL;
+PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD = NULL;
+PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD = NULL;
+PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD = NULL;
+
+PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD = NULL;
+
+PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD = NULL;
+PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD = NULL;
+
+PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD = NULL;
+
+PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD = NULL;
+PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD = NULL;
+
+PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE = NULL;
+PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE = NULL;
+PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE = NULL;
+
+PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE = NULL;
+PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE = NULL;
+PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE = NULL;
+PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE = NULL;
+PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE = NULL;
+PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE = NULL;
+PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE = NULL;
+PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE = NULL;
+PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE = NULL;
+PFNGLISQUERYANGLEPROC __glewIsQueryANGLE = NULL;
+PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE = NULL;
+
+PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE = NULL;
+
+PFNGLCOPYTEXTURELEVELSAPPLEPROC __glewCopyTextureLevelsAPPLE = NULL;
+
+PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE = NULL;
+PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE = NULL;
+PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE = NULL;
+PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE = NULL;
+PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE = NULL;
+
+PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE = NULL;
+PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE = NULL;
+PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE = NULL;
+PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE = NULL;
+PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE = NULL;
+PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE = NULL;
+PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE = NULL;
+PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE = NULL;
+
+PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __glewRenderbufferStorageMultisampleAPPLE = NULL;
+PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __glewResolveMultisampleFramebufferAPPLE = NULL;
+
+PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE = NULL;
+PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE = NULL;
+PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE = NULL;
+
+PFNGLCLIENTWAITSYNCAPPLEPROC __glewClientWaitSyncAPPLE = NULL;
+PFNGLDELETESYNCAPPLEPROC __glewDeleteSyncAPPLE = NULL;
+PFNGLFENCESYNCAPPLEPROC __glewFenceSyncAPPLE = NULL;
+PFNGLGETINTEGER64VAPPLEPROC __glewGetInteger64vAPPLE = NULL;
+PFNGLGETSYNCIVAPPLEPROC __glewGetSyncivAPPLE = NULL;
+PFNGLISSYNCAPPLEPROC __glewIsSyncAPPLE = NULL;
+PFNGLWAITSYNCAPPLEPROC __glewWaitSyncAPPLE = NULL;
+
+PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE = NULL;
+PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE = NULL;
+
+PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE = NULL;
+PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE = NULL;
+PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE = NULL;
+PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE = NULL;
+
+PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE = NULL;
+PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE = NULL;
+PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE = NULL;
+
+PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE = NULL;
+PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE = NULL;
+PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE = NULL;
+
+PFNGLCLEARDEPTHFPROC __glewClearDepthf = NULL;
+PFNGLDEPTHRANGEFPROC __glewDepthRangef = NULL;
+PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat = NULL;
+PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler = NULL;
+PFNGLSHADERBINARYPROC __glewShaderBinary = NULL;
+
+PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion = NULL;
+
+PFNGLPRIMITIVEBOUNDINGBOXARBPROC __glewPrimitiveBoundingBoxARB = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance = NULL;
+
+PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB = NULL;
+PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB = NULL;
+PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB = NULL;
+PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB = NULL;
+PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB = NULL;
+PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB = NULL;
+PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB = NULL;
+PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB = NULL;
+PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB = NULL;
+PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB = NULL;
+PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB = NULL;
+PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB = NULL;
+PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB = NULL;
+PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB = NULL;
+
+PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed = NULL;
+PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex = NULL;
+
+PFNGLBUFFERSTORAGEPROC __glewBufferStorage = NULL;
+
+PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB = NULL;
+
+PFNGLCLEARBUFFERDATAPROC __glewClearBufferData = NULL;
+PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData = NULL;
+PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT = NULL;
+PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT = NULL;
+
+PFNGLCLEARTEXIMAGEPROC __glewClearTexImage = NULL;
+PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage = NULL;
+
+PFNGLCLIPCONTROLPROC __glewClipControl = NULL;
+
+PFNGLCLAMPCOLORARBPROC __glewClampColorARB = NULL;
+
+PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute = NULL;
+PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect = NULL;
+
+PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB = NULL;
+
+PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData = NULL;
+
+PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB = NULL;
+PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB = NULL;
+PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB = NULL;
+PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB = NULL;
+
+PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit = NULL;
+PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer = NULL;
+PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus = NULL;
+PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData = NULL;
+PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D = NULL;
+PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData = NULL;
+PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D = NULL;
+PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D = NULL;
+PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D = NULL;
+PFNGLCREATEBUFFERSPROC __glewCreateBuffers = NULL;
+PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers = NULL;
+PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines = NULL;
+PFNGLCREATEQUERIESPROC __glewCreateQueries = NULL;
+PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers = NULL;
+PFNGLCREATESAMPLERSPROC __glewCreateSamplers = NULL;
+PFNGLCREATETEXTURESPROC __glewCreateTextures = NULL;
+PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks = NULL;
+PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays = NULL;
+PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib = NULL;
+PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib = NULL;
+PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange = NULL;
+PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap = NULL;
+PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv = NULL;
+PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv = NULL;
+PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData = NULL;
+PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv = NULL;
+PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv = NULL;
+PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v = NULL;
+PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv = NULL;
+PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v = NULL;
+PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv = NULL;
+PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage = NULL;
+PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv = NULL;
+PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv = NULL;
+PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv = NULL;
+PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv = NULL;
+PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv = NULL;
+PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv = NULL;
+PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v = NULL;
+PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v = NULL;
+PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv = NULL;
+PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv = NULL;
+PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv = NULL;
+PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv = NULL;
+PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData = NULL;
+PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData = NULL;
+PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer = NULL;
+PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange = NULL;
+PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData = NULL;
+PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage = NULL;
+PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData = NULL;
+PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers = NULL;
+PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri = NULL;
+PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample = NULL;
+PFNGLTEXTUREBUFFERPROC __glewTextureBuffer = NULL;
+PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange = NULL;
+PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv = NULL;
+PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv = NULL;
+PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf = NULL;
+PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv = NULL;
+PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri = NULL;
+PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv = NULL;
+PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D = NULL;
+PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D = NULL;
+PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample = NULL;
+PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D = NULL;
+PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample = NULL;
+PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D = NULL;
+PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D = NULL;
+PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D = NULL;
+PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase = NULL;
+PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange = NULL;
+PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer = NULL;
+PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding = NULL;
+PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat = NULL;
+PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat = NULL;
+PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat = NULL;
+PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor = NULL;
+PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer = NULL;
+PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer = NULL;
+PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers = NULL;
+
+PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB = NULL;
+PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB = NULL;
+PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB = NULL;
+PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB = NULL;
+
+PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex = NULL;
+PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex = NULL;
+PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex = NULL;
+
+PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect = NULL;
+PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect = NULL;
+
+PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT = NULL;
+
+PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer = NULL;
+PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer = NULL;
+PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus = NULL;
+PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers = NULL;
+PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer = NULL;
+PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer = NULL;
+PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers = NULL;
+PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers = NULL;
+PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv = NULL;
+PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer = NULL;
+PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer = NULL;
+PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB = NULL;
+PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB = NULL;
+PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB = NULL;
+
+PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary = NULL;
+PFNGLPROGRAMBINARYPROC __glewProgramBinary = NULL;
+PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri = NULL;
+
+PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage = NULL;
+PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage = NULL;
+
+PFNGLSPECIALIZESHADERARBPROC __glewSpecializeShaderARB = NULL;
+
+PFNGLGETUNIFORMDVPROC __glewGetUniformdv = NULL;
+PFNGLUNIFORM1DPROC __glewUniform1d = NULL;
+PFNGLUNIFORM1DVPROC __glewUniform1dv = NULL;
+PFNGLUNIFORM2DPROC __glewUniform2d = NULL;
+PFNGLUNIFORM2DVPROC __glewUniform2dv = NULL;
+PFNGLUNIFORM3DPROC __glewUniform3d = NULL;
+PFNGLUNIFORM3DVPROC __glewUniform3dv = NULL;
+PFNGLUNIFORM4DPROC __glewUniform4d = NULL;
+PFNGLUNIFORM4DVPROC __glewUniform4dv = NULL;
+PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv = NULL;
+PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv = NULL;
+PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv = NULL;
+PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv = NULL;
+PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv = NULL;
+PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv = NULL;
+PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv = NULL;
+PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv = NULL;
+PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv = NULL;
+
+PFNGLGETUNIFORMI64VARBPROC __glewGetUniformi64vARB = NULL;
+PFNGLGETUNIFORMUI64VARBPROC __glewGetUniformui64vARB = NULL;
+PFNGLGETNUNIFORMI64VARBPROC __glewGetnUniformi64vARB = NULL;
+PFNGLGETNUNIFORMUI64VARBPROC __glewGetnUniformui64vARB = NULL;
+PFNGLPROGRAMUNIFORM1I64ARBPROC __glewProgramUniform1i64ARB = NULL;
+PFNGLPROGRAMUNIFORM1I64VARBPROC __glewProgramUniform1i64vARB = NULL;
+PFNGLPROGRAMUNIFORM1UI64ARBPROC __glewProgramUniform1ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM1UI64VARBPROC __glewProgramUniform1ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM2I64ARBPROC __glewProgramUniform2i64ARB = NULL;
+PFNGLPROGRAMUNIFORM2I64VARBPROC __glewProgramUniform2i64vARB = NULL;
+PFNGLPROGRAMUNIFORM2UI64ARBPROC __glewProgramUniform2ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM2UI64VARBPROC __glewProgramUniform2ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM3I64ARBPROC __glewProgramUniform3i64ARB = NULL;
+PFNGLPROGRAMUNIFORM3I64VARBPROC __glewProgramUniform3i64vARB = NULL;
+PFNGLPROGRAMUNIFORM3UI64ARBPROC __glewProgramUniform3ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM3UI64VARBPROC __glewProgramUniform3ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM4I64ARBPROC __glewProgramUniform4i64ARB = NULL;
+PFNGLPROGRAMUNIFORM4I64VARBPROC __glewProgramUniform4i64vARB = NULL;
+PFNGLPROGRAMUNIFORM4UI64ARBPROC __glewProgramUniform4ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM4UI64VARBPROC __glewProgramUniform4ui64vARB = NULL;
+PFNGLUNIFORM1I64ARBPROC __glewUniform1i64ARB = NULL;
+PFNGLUNIFORM1I64VARBPROC __glewUniform1i64vARB = NULL;
+PFNGLUNIFORM1UI64ARBPROC __glewUniform1ui64ARB = NULL;
+PFNGLUNIFORM1UI64VARBPROC __glewUniform1ui64vARB = NULL;
+PFNGLUNIFORM2I64ARBPROC __glewUniform2i64ARB = NULL;
+PFNGLUNIFORM2I64VARBPROC __glewUniform2i64vARB = NULL;
+PFNGLUNIFORM2UI64ARBPROC __glewUniform2ui64ARB = NULL;
+PFNGLUNIFORM2UI64VARBPROC __glewUniform2ui64vARB = NULL;
+PFNGLUNIFORM3I64ARBPROC __glewUniform3i64ARB = NULL;
+PFNGLUNIFORM3I64VARBPROC __glewUniform3i64vARB = NULL;
+PFNGLUNIFORM3UI64ARBPROC __glewUniform3ui64ARB = NULL;
+PFNGLUNIFORM3UI64VARBPROC __glewUniform3ui64vARB = NULL;
+PFNGLUNIFORM4I64ARBPROC __glewUniform4i64ARB = NULL;
+PFNGLUNIFORM4I64VARBPROC __glewUniform4i64vARB = NULL;
+PFNGLUNIFORM4UI64ARBPROC __glewUniform4ui64ARB = NULL;
+PFNGLUNIFORM4UI64VARBPROC __glewUniform4ui64vARB = NULL;
+
+PFNGLCOLORSUBTABLEPROC __glewColorSubTable = NULL;
+PFNGLCOLORTABLEPROC __glewColorTable = NULL;
+PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv = NULL;
+PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv = NULL;
+PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D = NULL;
+PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D = NULL;
+PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf = NULL;
+PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv = NULL;
+PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri = NULL;
+PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv = NULL;
+PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable = NULL;
+PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable = NULL;
+PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D = NULL;
+PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D = NULL;
+PFNGLGETCOLORTABLEPROC __glewGetColorTable = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv = NULL;
+PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter = NULL;
+PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv = NULL;
+PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv = NULL;
+PFNGLGETHISTOGRAMPROC __glewGetHistogram = NULL;
+PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv = NULL;
+PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv = NULL;
+PFNGLGETMINMAXPROC __glewGetMinmax = NULL;
+PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv = NULL;
+PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv = NULL;
+PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter = NULL;
+PFNGLHISTOGRAMPROC __glewHistogram = NULL;
+PFNGLMINMAXPROC __glewMinmax = NULL;
+PFNGLRESETHISTOGRAMPROC __glewResetHistogram = NULL;
+PFNGLRESETMINMAXPROC __glewResetMinmax = NULL;
+PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB = NULL;
+PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB = NULL;
+PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB = NULL;
+
+PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ = NULL;
+
+PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v = NULL;
+
+PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData = NULL;
+PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData = NULL;
+PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer = NULL;
+PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer = NULL;
+PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage = NULL;
+PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage = NULL;
+
+PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange = NULL;
+PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange = NULL;
+
+PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB = NULL;
+PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB = NULL;
+PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB = NULL;
+PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB = NULL;
+PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB = NULL;
+
+PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase = NULL;
+PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange = NULL;
+PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures = NULL;
+PFNGLBINDSAMPLERSPROC __glewBindSamplers = NULL;
+PFNGLBINDTEXTURESPROC __glewBindTextures = NULL;
+PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect = NULL;
+
+PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB = NULL;
+
+PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB = NULL;
+PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB = NULL;
+PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB = NULL;
+PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB = NULL;
+PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB = NULL;
+PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB = NULL;
+PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB = NULL;
+PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB = NULL;
+PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB = NULL;
+PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB = NULL;
+PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB = NULL;
+PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB = NULL;
+PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB = NULL;
+PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB = NULL;
+PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB = NULL;
+PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB = NULL;
+PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB = NULL;
+PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB = NULL;
+PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB = NULL;
+PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB = NULL;
+PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB = NULL;
+PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB = NULL;
+PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB = NULL;
+PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB = NULL;
+PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB = NULL;
+PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB = NULL;
+PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB = NULL;
+PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB = NULL;
+PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB = NULL;
+PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB = NULL;
+PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB = NULL;
+PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB = NULL;
+PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB = NULL;
+PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB = NULL;
+
+PFNGLBEGINQUERYARBPROC __glewBeginQueryARB = NULL;
+PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB = NULL;
+PFNGLENDQUERYARBPROC __glewEndQueryARB = NULL;
+PFNGLGENQUERIESARBPROC __glewGenQueriesARB = NULL;
+PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB = NULL;
+PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB = NULL;
+PFNGLGETQUERYIVARBPROC __glewGetQueryivARB = NULL;
+PFNGLISQUERYARBPROC __glewIsQueryARB = NULL;
+
+PFNGLMAXSHADERCOMPILERTHREADSARBPROC __glewMaxShaderCompilerThreadsARB = NULL;
+
+PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB = NULL;
+PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB = NULL;
+
+PFNGLPOLYGONOFFSETCLAMPPROC __glewPolygonOffsetClamp = NULL;
+
+PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv = NULL;
+PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex = NULL;
+PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName = NULL;
+PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv = NULL;
+
+PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB = NULL;
+PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB = NULL;
+PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB = NULL;
+PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB = NULL;
+PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB = NULL;
+PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB = NULL;
+PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB = NULL;
+PFNGLGETNMAPIVARBPROC __glewGetnMapivARB = NULL;
+PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB = NULL;
+PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB = NULL;
+PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB = NULL;
+PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB = NULL;
+PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB = NULL;
+PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB = NULL;
+PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB = NULL;
+PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB = NULL;
+PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB = NULL;
+PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB = NULL;
+PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB = NULL;
+PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB = NULL;
+
+PFNGLEVALUATEDEPTHVALUESARBPROC __glewEvaluateDepthValuesARB = NULL;
+PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewFramebufferSampleLocationsfvARB = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewNamedFramebufferSampleLocationsfvARB = NULL;
+
+PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB = NULL;
+
+PFNGLBINDSAMPLERPROC __glewBindSampler = NULL;
+PFNGLDELETESAMPLERSPROC __glewDeleteSamplers = NULL;
+PFNGLGENSAMPLERSPROC __glewGenSamplers = NULL;
+PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv = NULL;
+PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv = NULL;
+PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv = NULL;
+PFNGLISSAMPLERPROC __glewIsSampler = NULL;
+PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv = NULL;
+PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv = NULL;
+PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf = NULL;
+PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv = NULL;
+PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri = NULL;
+PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv = NULL;
+
+PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram = NULL;
+PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline = NULL;
+PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv = NULL;
+PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines = NULL;
+PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines = NULL;
+PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog = NULL;
+PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv = NULL;
+PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline = NULL;
+PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d = NULL;
+PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv = NULL;
+PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f = NULL;
+PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv = NULL;
+PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i = NULL;
+PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv = NULL;
+PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui = NULL;
+PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv = NULL;
+PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d = NULL;
+PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv = NULL;
+PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f = NULL;
+PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv = NULL;
+PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i = NULL;
+PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv = NULL;
+PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui = NULL;
+PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv = NULL;
+PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d = NULL;
+PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv = NULL;
+PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f = NULL;
+PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv = NULL;
+PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i = NULL;
+PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv = NULL;
+PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui = NULL;
+PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv = NULL;
+PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d = NULL;
+PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv = NULL;
+PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f = NULL;
+PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv = NULL;
+PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i = NULL;
+PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv = NULL;
+PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui = NULL;
+PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv = NULL;
+PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages = NULL;
+PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline = NULL;
+
+PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv = NULL;
+
+PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture = NULL;
+PFNGLMEMORYBARRIERPROC __glewMemoryBarrier = NULL;
+
+PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB = NULL;
+PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB = NULL;
+PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB = NULL;
+PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB = NULL;
+PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB = NULL;
+PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB = NULL;
+PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB = NULL;
+PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB = NULL;
+PFNGLGETHANDLEARBPROC __glewGetHandleARB = NULL;
+PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB = NULL;
+PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB = NULL;
+PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB = NULL;
+PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB = NULL;
+PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB = NULL;
+PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB = NULL;
+PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB = NULL;
+PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB = NULL;
+PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB = NULL;
+PFNGLUNIFORM1FARBPROC __glewUniform1fARB = NULL;
+PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB = NULL;
+PFNGLUNIFORM1IARBPROC __glewUniform1iARB = NULL;
+PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB = NULL;
+PFNGLUNIFORM2FARBPROC __glewUniform2fARB = NULL;
+PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB = NULL;
+PFNGLUNIFORM2IARBPROC __glewUniform2iARB = NULL;
+PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB = NULL;
+PFNGLUNIFORM3FARBPROC __glewUniform3fARB = NULL;
+PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB = NULL;
+PFNGLUNIFORM3IARBPROC __glewUniform3iARB = NULL;
+PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB = NULL;
+PFNGLUNIFORM4FARBPROC __glewUniform4fARB = NULL;
+PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB = NULL;
+PFNGLUNIFORM4IARBPROC __glewUniform4iARB = NULL;
+PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB = NULL;
+PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB = NULL;
+PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB = NULL;
+PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB = NULL;
+PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB = NULL;
+PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB = NULL;
+
+PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding = NULL;
+
+PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv = NULL;
+PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv = NULL;
+PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex = NULL;
+PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation = NULL;
+PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv = NULL;
+PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv = NULL;
+
+PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB = NULL;
+PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB = NULL;
+PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB = NULL;
+PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB = NULL;
+
+PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB = NULL;
+
+PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB = NULL;
+
+PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync = NULL;
+PFNGLDELETESYNCPROC __glewDeleteSync = NULL;
+PFNGLFENCESYNCPROC __glewFenceSync = NULL;
+PFNGLGETINTEGER64VPROC __glewGetInteger64v = NULL;
+PFNGLGETSYNCIVPROC __glewGetSynciv = NULL;
+PFNGLISSYNCPROC __glewIsSync = NULL;
+PFNGLWAITSYNCPROC __glewWaitSync = NULL;
+
+PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv = NULL;
+PFNGLPATCHPARAMETERIPROC __glewPatchParameteri = NULL;
+
+PFNGLTEXTUREBARRIERPROC __glewTextureBarrier = NULL;
+
+PFNGLTEXBUFFERARBPROC __glewTexBufferARB = NULL;
+
+PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange = NULL;
+PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB = NULL;
+PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB = NULL;
+PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB = NULL;
+PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB = NULL;
+
+PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv = NULL;
+PFNGLSAMPLEMASKIPROC __glewSampleMaski = NULL;
+PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample = NULL;
+
+PFNGLTEXSTORAGE1DPROC __glewTexStorage1D = NULL;
+PFNGLTEXSTORAGE2DPROC __glewTexStorage2D = NULL;
+PFNGLTEXSTORAGE3DPROC __glewTexStorage3D = NULL;
+
+PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample = NULL;
+PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample = NULL;
+PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT = NULL;
+
+PFNGLTEXTUREVIEWPROC __glewTextureView = NULL;
+
+PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v = NULL;
+PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v = NULL;
+PFNGLQUERYCOUNTERPROC __glewQueryCounter = NULL;
+
+PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback = NULL;
+PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback = NULL;
+PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks = NULL;
+PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback = NULL;
+PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback = NULL;
+PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback = NULL;
+
+PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream = NULL;
+PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed = NULL;
+PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv = NULL;
+
+PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced = NULL;
+
+PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB = NULL;
+PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB = NULL;
+PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB = NULL;
+PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB = NULL;
+
+PFNGLBINDBUFFERBASEPROC __glewBindBufferBase = NULL;
+PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange = NULL;
+PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName = NULL;
+PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv = NULL;
+PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName = NULL;
+PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv = NULL;
+PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v = NULL;
+PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex = NULL;
+PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices = NULL;
+PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding = NULL;
+
+PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray = NULL;
+PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays = NULL;
+PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays = NULL;
+PFNGLISVERTEXARRAYPROC __glewIsVertexArray = NULL;
+
+PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv = NULL;
+PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d = NULL;
+PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv = NULL;
+PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d = NULL;
+PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv = NULL;
+PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d = NULL;
+PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv = NULL;
+PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d = NULL;
+PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv = NULL;
+PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer = NULL;
+
+PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer = NULL;
+PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT = NULL;
+PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding = NULL;
+PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat = NULL;
+PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat = NULL;
+PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat = NULL;
+PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor = NULL;
+
+PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB = NULL;
+PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB = NULL;
+PFNGLWEIGHTBVARBPROC __glewWeightbvARB = NULL;
+PFNGLWEIGHTDVARBPROC __glewWeightdvARB = NULL;
+PFNGLWEIGHTFVARBPROC __glewWeightfvARB = NULL;
+PFNGLWEIGHTIVARBPROC __glewWeightivARB = NULL;
+PFNGLWEIGHTSVARBPROC __glewWeightsvARB = NULL;
+PFNGLWEIGHTUBVARBPROC __glewWeightubvARB = NULL;
+PFNGLWEIGHTUIVARBPROC __glewWeightuivARB = NULL;
+PFNGLWEIGHTUSVARBPROC __glewWeightusvARB = NULL;
+
+PFNGLBINDBUFFERARBPROC __glewBindBufferARB = NULL;
+PFNGLBUFFERDATAARBPROC __glewBufferDataARB = NULL;
+PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB = NULL;
+PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB = NULL;
+PFNGLGENBUFFERSARBPROC __glewGenBuffersARB = NULL;
+PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB = NULL;
+PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB = NULL;
+PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB = NULL;
+PFNGLISBUFFERARBPROC __glewIsBufferARB = NULL;
+PFNGLMAPBUFFERARBPROC __glewMapBufferARB = NULL;
+PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB = NULL;
+
+PFNGLBINDPROGRAMARBPROC __glewBindProgramARB = NULL;
+PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB = NULL;
+PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB = NULL;
+PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB = NULL;
+PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB = NULL;
+PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB = NULL;
+PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB = NULL;
+PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB = NULL;
+PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB = NULL;
+PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB = NULL;
+PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB = NULL;
+PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB = NULL;
+PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB = NULL;
+PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB = NULL;
+PFNGLISPROGRAMARBPROC __glewIsProgramARB = NULL;
+PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB = NULL;
+PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB = NULL;
+PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB = NULL;
+PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB = NULL;
+PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB = NULL;
+PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB = NULL;
+PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB = NULL;
+PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB = NULL;
+PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB = NULL;
+PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB = NULL;
+PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB = NULL;
+PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB = NULL;
+PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB = NULL;
+PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB = NULL;
+PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB = NULL;
+PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB = NULL;
+PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB = NULL;
+PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB = NULL;
+PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB = NULL;
+PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB = NULL;
+PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB = NULL;
+PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB = NULL;
+PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB = NULL;
+PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB = NULL;
+PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB = NULL;
+PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB = NULL;
+PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB = NULL;
+PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB = NULL;
+PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB = NULL;
+PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB = NULL;
+PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB = NULL;
+PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB = NULL;
+PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB = NULL;
+PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB = NULL;
+PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB = NULL;
+PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB = NULL;
+PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB = NULL;
+PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB = NULL;
+PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB = NULL;
+PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB = NULL;
+PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB = NULL;
+PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB = NULL;
+
+PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB = NULL;
+PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB = NULL;
+PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB = NULL;
+
+PFNGLCOLORP3UIPROC __glewColorP3ui = NULL;
+PFNGLCOLORP3UIVPROC __glewColorP3uiv = NULL;
+PFNGLCOLORP4UIPROC __glewColorP4ui = NULL;
+PFNGLCOLORP4UIVPROC __glewColorP4uiv = NULL;
+PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui = NULL;
+PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv = NULL;
+PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui = NULL;
+PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv = NULL;
+PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui = NULL;
+PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv = NULL;
+PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui = NULL;
+PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv = NULL;
+PFNGLNORMALP3UIPROC __glewNormalP3ui = NULL;
+PFNGLNORMALP3UIVPROC __glewNormalP3uiv = NULL;
+PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui = NULL;
+PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv = NULL;
+PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui = NULL;
+PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv = NULL;
+PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui = NULL;
+PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv = NULL;
+PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui = NULL;
+PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv = NULL;
+PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui = NULL;
+PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv = NULL;
+PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui = NULL;
+PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv = NULL;
+PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui = NULL;
+PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv = NULL;
+PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui = NULL;
+PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv = NULL;
+PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui = NULL;
+PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv = NULL;
+PFNGLVERTEXP2UIPROC __glewVertexP2ui = NULL;
+PFNGLVERTEXP2UIVPROC __glewVertexP2uiv = NULL;
+PFNGLVERTEXP3UIPROC __glewVertexP3ui = NULL;
+PFNGLVERTEXP3UIVPROC __glewVertexP3uiv = NULL;
+PFNGLVERTEXP4UIPROC __glewVertexP4ui = NULL;
+PFNGLVERTEXP4UIVPROC __glewVertexP4uiv = NULL;
+
+PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv = NULL;
+PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed = NULL;
+PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v = NULL;
+PFNGLGETFLOATI_VPROC __glewGetFloati_v = NULL;
+PFNGLSCISSORARRAYVPROC __glewScissorArrayv = NULL;
+PFNGLSCISSORINDEXEDPROC __glewScissorIndexed = NULL;
+PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv = NULL;
+PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv = NULL;
+PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf = NULL;
+PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv = NULL;
+
+PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB = NULL;
+PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB = NULL;
+PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB = NULL;
+PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB = NULL;
+PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB = NULL;
+PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB = NULL;
+PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB = NULL;
+PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB = NULL;
+PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB = NULL;
+PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB = NULL;
+PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB = NULL;
+PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB = NULL;
+PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB = NULL;
+PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB = NULL;
+PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB = NULL;
+PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB = NULL;
+
+PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI = NULL;
+
+PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI = NULL;
+PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI = NULL;
+PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI = NULL;
+
+PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI = NULL;
+PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI = NULL;
+PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI = NULL;
+PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI = NULL;
+
+PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI = NULL;
+PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI = NULL;
+PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI = NULL;
+PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI = NULL;
+PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI = NULL;
+PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI = NULL;
+PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI = NULL;
+PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI = NULL;
+PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI = NULL;
+PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI = NULL;
+PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI = NULL;
+PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI = NULL;
+PFNGLSAMPLEMAPATIPROC __glewSampleMapATI = NULL;
+PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI = NULL;
+
+PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI = NULL;
+PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI = NULL;
+
+PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI = NULL;
+PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI = NULL;
+
+PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI = NULL;
+PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI = NULL;
+
+PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI = NULL;
+PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI = NULL;
+PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI = NULL;
+PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI = NULL;
+PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI = NULL;
+PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI = NULL;
+PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI = NULL;
+PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI = NULL;
+PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI = NULL;
+PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI = NULL;
+PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI = NULL;
+PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI = NULL;
+
+PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI = NULL;
+PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI = NULL;
+PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI = NULL;
+
+PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI = NULL;
+PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI = NULL;
+PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI = NULL;
+PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI = NULL;
+PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI = NULL;
+PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI = NULL;
+PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI = NULL;
+PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI = NULL;
+PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI = NULL;
+PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI = NULL;
+PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI = NULL;
+PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI = NULL;
+PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI = NULL;
+PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI = NULL;
+PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI = NULL;
+PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI = NULL;
+PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI = NULL;
+PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI = NULL;
+PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI = NULL;
+PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI = NULL;
+PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI = NULL;
+PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI = NULL;
+PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI = NULL;
+PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI = NULL;
+PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI = NULL;
+PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI = NULL;
+PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI = NULL;
+PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI = NULL;
+PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI = NULL;
+PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI = NULL;
+PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI = NULL;
+PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI = NULL;
+PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI = NULL;
+PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI = NULL;
+PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI = NULL;
+PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI = NULL;
+PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI = NULL;
+PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI = NULL;
+PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI = NULL;
+PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI = NULL;
+PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI = NULL;
+PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI = NULL;
+PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI = NULL;
+PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI = NULL;
+PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI = NULL;
+
+PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC __glewEGLImageTargetTexStorageEXT = NULL;
+PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC __glewEGLImageTargetTextureStorageEXT = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __glewDrawArraysInstancedBaseInstanceEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseInstanceEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseVertexBaseInstanceEXT = NULL;
+
+PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT = NULL;
+PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT = NULL;
+PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT = NULL;
+
+PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT = NULL;
+
+PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __glewBindFragDataLocationIndexedEXT = NULL;
+PFNGLGETFRAGDATAINDEXEXTPROC __glewGetFragDataIndexEXT = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __glewGetProgramResourceLocationIndexEXT = NULL;
+
+PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT = NULL;
+
+PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT = NULL;
+
+PFNGLBUFFERSTORAGEEXTPROC __glewBufferStorageEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT = NULL;
+
+PFNGLCLEARTEXIMAGEEXTPROC __glewClearTexImageEXT = NULL;
+PFNGLCLEARTEXSUBIMAGEEXTPROC __glewClearTexSubImageEXT = NULL;
+
+PFNGLCLIPCONTROLEXTPROC __glewClipControlEXT = NULL;
+
+PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT = NULL;
+PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT = NULL;
+
+PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT = NULL;
+PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT = NULL;
+
+PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT = NULL;
+PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT = NULL;
+PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT = NULL;
+PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT = NULL;
+PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT = NULL;
+PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT = NULL;
+PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT = NULL;
+PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT = NULL;
+PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT = NULL;
+
+PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT = NULL;
+PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT = NULL;
+
+PFNGLCOPYIMAGESUBDATAEXTPROC __glewCopyImageSubDataEXT = NULL;
+
+PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT = NULL;
+PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT = NULL;
+
+PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT = NULL;
+PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT = NULL;
+
+PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT = NULL;
+PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT = NULL;
+
+PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT = NULL;
+PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT = NULL;
+PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT = NULL;
+
+PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT = NULL;
+
+PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT = NULL;
+PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT = NULL;
+PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT = NULL;
+PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT = NULL;
+PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT = NULL;
+PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT = NULL;
+PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT = NULL;
+PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT = NULL;
+PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT = NULL;
+PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT = NULL;
+PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT = NULL;
+PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT = NULL;
+PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT = NULL;
+PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT = NULL;
+PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT = NULL;
+PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT = NULL;
+PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT = NULL;
+PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT = NULL;
+PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT = NULL;
+PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT = NULL;
+PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT = NULL;
+PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT = NULL;
+PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT = NULL;
+PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT = NULL;
+PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT = NULL;
+PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT = NULL;
+PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT = NULL;
+PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT = NULL;
+PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT = NULL;
+PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT = NULL;
+PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT = NULL;
+PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT = NULL;
+PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT = NULL;
+PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT = NULL;
+PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT = NULL;
+PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT = NULL;
+PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT = NULL;
+PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT = NULL;
+PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT = NULL;
+PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT = NULL;
+PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT = NULL;
+PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT = NULL;
+PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT = NULL;
+PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT = NULL;
+PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT = NULL;
+PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT = NULL;
+PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT = NULL;
+PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT = NULL;
+PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT = NULL;
+PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT = NULL;
+PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT = NULL;
+PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT = NULL;
+PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT = NULL;
+PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT = NULL;
+PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT = NULL;
+PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT = NULL;
+PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT = NULL;
+PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT = NULL;
+PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT = NULL;
+PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT = NULL;
+PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT = NULL;
+PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT = NULL;
+PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT = NULL;
+PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT = NULL;
+PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT = NULL;
+PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT = NULL;
+PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT = NULL;
+PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT = NULL;
+PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT = NULL;
+PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT = NULL;
+PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT = NULL;
+PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT = NULL;
+PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT = NULL;
+PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT = NULL;
+PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT = NULL;
+PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT = NULL;
+PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT = NULL;
+PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT = NULL;
+PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT = NULL;
+PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT = NULL;
+PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT = NULL;
+PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT = NULL;
+PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT = NULL;
+PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT = NULL;
+PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT = NULL;
+PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT = NULL;
+PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT = NULL;
+PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT = NULL;
+PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT = NULL;
+PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT = NULL;
+PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT = NULL;
+PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT = NULL;
+PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT = NULL;
+PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT = NULL;
+PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT = NULL;
+PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT = NULL;
+PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT = NULL;
+PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT = NULL;
+PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT = NULL;
+PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT = NULL;
+PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT = NULL;
+PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT = NULL;
+PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT = NULL;
+PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT = NULL;
+PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT = NULL;
+PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT = NULL;
+PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT = NULL;
+PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT = NULL;
+PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT = NULL;
+PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT = NULL;
+PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT = NULL;
+PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT = NULL;
+PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT = NULL;
+PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT = NULL;
+PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT = NULL;
+PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT = NULL;
+PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT = NULL;
+PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT = NULL;
+PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT = NULL;
+PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT = NULL;
+PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT = NULL;
+PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT = NULL;
+PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT = NULL;
+PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT = NULL;
+PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT = NULL;
+PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT = NULL;
+PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT = NULL;
+PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT = NULL;
+PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT = NULL;
+PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT = NULL;
+PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT = NULL;
+PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT = NULL;
+PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT = NULL;
+PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT = NULL;
+PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT = NULL;
+PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT = NULL;
+PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT = NULL;
+PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT = NULL;
+PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT = NULL;
+PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT = NULL;
+PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT = NULL;
+PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT = NULL;
+PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT = NULL;
+PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT = NULL;
+PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT = NULL;
+PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT = NULL;
+
+PFNGLDISCARDFRAMEBUFFEREXTPROC __glewDiscardFramebufferEXT = NULL;
+
+PFNGLBEGINQUERYEXTPROC __glewBeginQueryEXT = NULL;
+PFNGLDELETEQUERIESEXTPROC __glewDeleteQueriesEXT = NULL;
+PFNGLENDQUERYEXTPROC __glewEndQueryEXT = NULL;
+PFNGLGENQUERIESEXTPROC __glewGenQueriesEXT = NULL;
+PFNGLGETINTEGER64VEXTPROC __glewGetInteger64vEXT = NULL;
+PFNGLGETQUERYOBJECTIVEXTPROC __glewGetQueryObjectivEXT = NULL;
+PFNGLGETQUERYOBJECTUIVEXTPROC __glewGetQueryObjectuivEXT = NULL;
+PFNGLGETQUERYIVEXTPROC __glewGetQueryivEXT = NULL;
+PFNGLISQUERYEXTPROC __glewIsQueryEXT = NULL;
+PFNGLQUERYCOUNTEREXTPROC __glewQueryCounterEXT = NULL;
+
+PFNGLDRAWBUFFERSEXTPROC __glewDrawBuffersEXT = NULL;
+
+PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT = NULL;
+PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT = NULL;
+PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT = NULL;
+PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT = NULL;
+PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT = NULL;
+PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIEXTPROC __glewBlendEquationSeparateiEXT = NULL;
+PFNGLBLENDEQUATIONIEXTPROC __glewBlendEquationiEXT = NULL;
+PFNGLBLENDFUNCSEPARATEIEXTPROC __glewBlendFuncSeparateiEXT = NULL;
+PFNGLBLENDFUNCIEXTPROC __glewBlendFunciEXT = NULL;
+PFNGLCOLORMASKIEXTPROC __glewColorMaskiEXT = NULL;
+PFNGLDISABLEIEXTPROC __glewDisableiEXT = NULL;
+PFNGLENABLEIEXTPROC __glewEnableiEXT = NULL;
+PFNGLISENABLEDIEXTPROC __glewIsEnablediEXT = NULL;
+
+PFNGLDRAWELEMENTSBASEVERTEXEXTPROC __glewDrawElementsBaseVertexEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __glewDrawElementsInstancedBaseVertexEXT = NULL;
+PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __glewDrawRangeElementsBaseVertexEXT = NULL;
+PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __glewMultiDrawElementsBaseVertexEXT = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT = NULL;
+
+PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT = NULL;
+
+PFNGLDRAWTRANSFORMFEEDBACKEXTPROC __glewDrawTransformFeedbackEXT = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC __glewDrawTransformFeedbackInstancedEXT = NULL;
+
+PFNGLBUFFERSTORAGEEXTERNALEXTPROC __glewBufferStorageExternalEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC __glewNamedBufferStorageExternalEXT = NULL;
+
+PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT = NULL;
+PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT = NULL;
+PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT = NULL;
+PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT = NULL;
+PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT = NULL;
+
+PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT = NULL;
+PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT = NULL;
+PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT = NULL;
+PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT = NULL;
+PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT = NULL;
+PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT = NULL;
+PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT = NULL;
+PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT = NULL;
+PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT = NULL;
+PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT = NULL;
+PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT = NULL;
+PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT = NULL;
+PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT = NULL;
+PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT = NULL;
+
+PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT = NULL;
+
+PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT = NULL;
+PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT = NULL;
+PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT = NULL;
+PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT = NULL;
+PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT = NULL;
+PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT = NULL;
+PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT = NULL;
+PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT = NULL;
+PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT = NULL;
+PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT = NULL;
+PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT = NULL;
+PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT = NULL;
+
+PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT = NULL;
+PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT = NULL;
+
+PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT = NULL;
+PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT = NULL;
+PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT = NULL;
+PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT = NULL;
+PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT = NULL;
+PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT = NULL;
+PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT = NULL;
+PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT = NULL;
+PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT = NULL;
+PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT = NULL;
+PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT = NULL;
+PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT = NULL;
+PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT = NULL;
+PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT = NULL;
+PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT = NULL;
+PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT = NULL;
+PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT = NULL;
+PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT = NULL;
+PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT = NULL;
+PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT = NULL;
+PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT = NULL;
+PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT = NULL;
+PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT = NULL;
+PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT = NULL;
+PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT = NULL;
+PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT = NULL;
+PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT = NULL;
+PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT = NULL;
+PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT = NULL;
+PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT = NULL;
+PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT = NULL;
+PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT = NULL;
+PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT = NULL;
+PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT = NULL;
+
+PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT = NULL;
+PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT = NULL;
+PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT = NULL;
+PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT = NULL;
+PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT = NULL;
+PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT = NULL;
+PFNGLHISTOGRAMEXTPROC __glewHistogramEXT = NULL;
+PFNGLMINMAXEXTPROC __glewMinmaxEXT = NULL;
+PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT = NULL;
+PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT = NULL;
+
+PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT = NULL;
+
+PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT = NULL;
+
+PFNGLVERTEXATTRIBDIVISOREXTPROC __glewVertexAttribDivisorEXT = NULL;
+
+PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT = NULL;
+PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT = NULL;
+PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT = NULL;
+
+PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC __glewFlushMappedBufferRangeEXT = NULL;
+PFNGLMAPBUFFERRANGEEXTPROC __glewMapBufferRangeEXT = NULL;
+
+PFNGLBUFFERSTORAGEMEMEXTPROC __glewBufferStorageMemEXT = NULL;
+PFNGLCREATEMEMORYOBJECTSEXTPROC __glewCreateMemoryObjectsEXT = NULL;
+PFNGLDELETEMEMORYOBJECTSEXTPROC __glewDeleteMemoryObjectsEXT = NULL;
+PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC __glewGetMemoryObjectParameterivEXT = NULL;
+PFNGLGETUNSIGNEDBYTEI_VEXTPROC __glewGetUnsignedBytei_vEXT = NULL;
+PFNGLGETUNSIGNEDBYTEVEXTPROC __glewGetUnsignedBytevEXT = NULL;
+PFNGLISMEMORYOBJECTEXTPROC __glewIsMemoryObjectEXT = NULL;
+PFNGLMEMORYOBJECTPARAMETERIVEXTPROC __glewMemoryObjectParameterivEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC __glewNamedBufferStorageMemEXT = NULL;
+PFNGLTEXSTORAGEMEM1DEXTPROC __glewTexStorageMem1DEXT = NULL;
+PFNGLTEXSTORAGEMEM2DEXTPROC __glewTexStorageMem2DEXT = NULL;
+PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC __glewTexStorageMem2DMultisampleEXT = NULL;
+PFNGLTEXSTORAGEMEM3DEXTPROC __glewTexStorageMem3DEXT = NULL;
+PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC __glewTexStorageMem3DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGEMEM1DEXTPROC __glewTextureStorageMem1DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM2DEXTPROC __glewTextureStorageMem2DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC __glewTextureStorageMem2DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGEMEM3DEXTPROC __glewTextureStorageMem3DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC __glewTextureStorageMem3DMultisampleEXT = NULL;
+
+PFNGLIMPORTMEMORYFDEXTPROC __glewImportMemoryFdEXT = NULL;
+
+PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC __glewImportMemoryWin32HandleEXT = NULL;
+PFNGLIMPORTMEMORYWIN32NAMEEXTPROC __glewImportMemoryWin32NameEXT = NULL;
+
+PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT = NULL;
+PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC __glewMultiDrawArraysIndirectEXT = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC __glewMultiDrawElementsIndirectEXT = NULL;
+
+PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT = NULL;
+PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __glewFramebufferTexture2DMultisampleEXT = NULL;
+
+PFNGLDRAWBUFFERSINDEXEDEXTPROC __glewDrawBuffersIndexedEXT = NULL;
+PFNGLGETINTEGERI_VEXTPROC __glewGetIntegeri_vEXT = NULL;
+PFNGLREADBUFFERINDEXEDEXTPROC __glewReadBufferIndexedEXT = NULL;
+
+PFNGLCOLORTABLEEXTPROC __glewColorTableEXT = NULL;
+PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT = NULL;
+
+PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT = NULL;
+PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT = NULL;
+
+PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT = NULL;
+PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT = NULL;
+
+PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT = NULL;
+
+PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT = NULL;
+
+PFNGLPRIMITIVEBOUNDINGBOXEXTPROC __glewPrimitiveBoundingBoxEXT = NULL;
+
+PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT = NULL;
+
+PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV = NULL;
+PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV = NULL;
+PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV = NULL;
+PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSEXTPROC __glewGetGraphicsResetStatusEXT = NULL;
+PFNGLGETNUNIFORMFVEXTPROC __glewGetnUniformfvEXT = NULL;
+PFNGLGETNUNIFORMIVEXTPROC __glewGetnUniformivEXT = NULL;
+PFNGLREADNPIXELSEXTPROC __glewReadnPixelsEXT = NULL;
+
+PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT = NULL;
+PFNGLENDSCENEEXTPROC __glewEndSceneEXT = NULL;
+
+PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT = NULL;
+PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT = NULL;
+PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT = NULL;
+PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT = NULL;
+PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT = NULL;
+PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT = NULL;
+PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT = NULL;
+PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT = NULL;
+PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT = NULL;
+PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT = NULL;
+PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT = NULL;
+PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT = NULL;
+PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT = NULL;
+PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT = NULL;
+PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT = NULL;
+PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT = NULL;
+PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT = NULL;
+
+PFNGLDELETESEMAPHORESEXTPROC __glewDeleteSemaphoresEXT = NULL;
+PFNGLGENSEMAPHORESEXTPROC __glewGenSemaphoresEXT = NULL;
+PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC __glewGetSemaphoreParameterui64vEXT = NULL;
+PFNGLISSEMAPHOREEXTPROC __glewIsSemaphoreEXT = NULL;
+PFNGLSEMAPHOREPARAMETERUI64VEXTPROC __glewSemaphoreParameterui64vEXT = NULL;
+PFNGLSIGNALSEMAPHOREEXTPROC __glewSignalSemaphoreEXT = NULL;
+PFNGLWAITSEMAPHOREEXTPROC __glewWaitSemaphoreEXT = NULL;
+
+PFNGLIMPORTSEMAPHOREFDEXTPROC __glewImportSemaphoreFdEXT = NULL;
+
+PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC __glewImportSemaphoreWin32HandleEXT = NULL;
+PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC __glewImportSemaphoreWin32NameEXT = NULL;
+
+PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT = NULL;
+PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT = NULL;
+PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT = NULL;
+
+PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC __glewFramebufferFetchBarrierEXT = NULL;
+
+PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT = NULL;
+PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT = NULL;
+
+PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC __glewClearPixelLocalStorageuiEXT = NULL;
+PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewFramebufferPixelLocalStorageSizeEXT = NULL;
+PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewGetFramebufferPixelLocalStorageSizeEXT = NULL;
+
+PFNGLTEXPAGECOMMITMENTEXTPROC __glewTexPageCommitmentEXT = NULL;
+PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT = NULL;
+
+PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT = NULL;
+
+PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT = NULL;
+PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT = NULL;
+PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT = NULL;
+
+PFNGLPATCHPARAMETERIEXTPROC __glewPatchParameteriEXT = NULL;
+
+PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT = NULL;
+
+PFNGLGETSAMPLERPARAMETERIIVEXTPROC __glewGetSamplerParameterIivEXT = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVEXTPROC __glewGetSamplerParameterIuivEXT = NULL;
+PFNGLSAMPLERPARAMETERIIVEXTPROC __glewSamplerParameterIivEXT = NULL;
+PFNGLSAMPLERPARAMETERIUIVEXTPROC __glewSamplerParameterIuivEXT = NULL;
+
+PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT = NULL;
+
+PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT = NULL;
+PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT = NULL;
+PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT = NULL;
+PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT = NULL;
+PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT = NULL;
+PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT = NULL;
+
+PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT = NULL;
+PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT = NULL;
+PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT = NULL;
+PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT = NULL;
+PFNGLISTEXTUREEXTPROC __glewIsTextureEXT = NULL;
+PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT = NULL;
+
+PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT = NULL;
+
+PFNGLTEXSTORAGE1DEXTPROC __glewTexStorage1DEXT = NULL;
+PFNGLTEXSTORAGE2DEXTPROC __glewTexStorage2DEXT = NULL;
+PFNGLTEXSTORAGE3DEXTPROC __glewTexStorage3DEXT = NULL;
+PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT = NULL;
+PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT = NULL;
+PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT = NULL;
+
+PFNGLTEXSTORAGEATTRIBS2DEXTPROC __glewTexStorageAttribs2DEXT = NULL;
+PFNGLTEXSTORAGEATTRIBS3DEXTPROC __glewTexStorageAttribs3DEXT = NULL;
+
+PFNGLTEXTUREVIEWEXTPROC __glewTextureViewEXT = NULL;
+
+PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT = NULL;
+PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT = NULL;
+
+PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT = NULL;
+PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT = NULL;
+PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT = NULL;
+PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT = NULL;
+PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT = NULL;
+
+PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT = NULL;
+PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT = NULL;
+PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT = NULL;
+PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT = NULL;
+PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT = NULL;
+PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT = NULL;
+PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT = NULL;
+PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT = NULL;
+
+PFNGLBINDARRAYSETEXTPROC __glewBindArraySetEXT = NULL;
+PFNGLCREATEARRAYSETEXTPROC __glewCreateArraySetExt = NULL;
+PFNGLDELETEARRAYSETSEXTPROC __glewDeleteArraySetsEXT = NULL;
+
+PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT = NULL;
+PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT = NULL;
+PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT = NULL;
+PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT = NULL;
+PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT = NULL;
+PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT = NULL;
+PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT = NULL;
+PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT = NULL;
+PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT = NULL;
+PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT = NULL;
+
+PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT = NULL;
+PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT = NULL;
+PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT = NULL;
+PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT = NULL;
+PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT = NULL;
+PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT = NULL;
+PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT = NULL;
+PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT = NULL;
+PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT = NULL;
+PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT = NULL;
+PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT = NULL;
+PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT = NULL;
+PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT = NULL;
+PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT = NULL;
+PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT = NULL;
+PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT = NULL;
+PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT = NULL;
+PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT = NULL;
+PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT = NULL;
+PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT = NULL;
+PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT = NULL;
+PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT = NULL;
+PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT = NULL;
+PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT = NULL;
+PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT = NULL;
+PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT = NULL;
+PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT = NULL;
+PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT = NULL;
+PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT = NULL;
+PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT = NULL;
+PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT = NULL;
+PFNGLSWIZZLEEXTPROC __glewSwizzleEXT = NULL;
+PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT = NULL;
+PFNGLVARIANTBVEXTPROC __glewVariantbvEXT = NULL;
+PFNGLVARIANTDVEXTPROC __glewVariantdvEXT = NULL;
+PFNGLVARIANTFVEXTPROC __glewVariantfvEXT = NULL;
+PFNGLVARIANTIVEXTPROC __glewVariantivEXT = NULL;
+PFNGLVARIANTSVEXTPROC __glewVariantsvEXT = NULL;
+PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT = NULL;
+PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT = NULL;
+PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT = NULL;
+PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT = NULL;
+
+PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT = NULL;
+PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT = NULL;
+PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT = NULL;
+
+PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC __glewAcquireKeyedMutexWin32EXT = NULL;
+PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC __glewReleaseKeyedMutexWin32EXT = NULL;
+
+PFNGLWINDOWRECTANGLESEXTPROC __glewWindowRectanglesEXT = NULL;
+
+PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT = NULL;
+
+PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY = NULL;
+
+PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY = NULL;
+
+PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP = NULL;
+PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP = NULL;
+
+PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM = NULL;
+PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM = NULL;
+
+PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM = NULL;
+PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM = NULL;
+PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM = NULL;
+PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM = NULL;
+PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM = NULL;
+PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM = NULL;
+PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM = NULL;
+PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM = NULL;
+
+PFNGLGETTEXTUREHANDLEIMGPROC __glewGetTextureHandleIMG = NULL;
+PFNGLGETTEXTURESAMPLERHANDLEIMGPROC __glewGetTextureSamplerHandleIMG = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC __glewProgramUniformHandleui64IMG = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC __glewProgramUniformHandleui64vIMG = NULL;
+PFNGLUNIFORMHANDLEUI64IMGPROC __glewUniformHandleui64IMG = NULL;
+PFNGLUNIFORMHANDLEUI64VIMGPROC __glewUniformHandleui64vIMG = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC __glewFramebufferTexture2DDownsampleIMG = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC __glewFramebufferTextureLayerDownsampleIMG = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC __glewFramebufferTexture2DMultisampleIMG = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC __glewRenderbufferStorageMultisampleIMG = NULL;
+
+PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC __glewApplyFramebufferAttachmentCMAAINTEL = NULL;
+
+PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL = NULL;
+PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL = NULL;
+PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL = NULL;
+
+PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL = NULL;
+PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL = NULL;
+PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL = NULL;
+PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL = NULL;
+
+PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL = NULL;
+PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL = NULL;
+PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL = NULL;
+PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL = NULL;
+PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL = NULL;
+PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL = NULL;
+PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL = NULL;
+PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL = NULL;
+PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL = NULL;
+PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL = NULL;
+
+PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL = NULL;
+PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL = NULL;
+
+PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback = NULL;
+PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl = NULL;
+PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert = NULL;
+PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog = NULL;
+PFNGLGETOBJECTLABELPROC __glewGetObjectLabel = NULL;
+PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel = NULL;
+PFNGLOBJECTLABELPROC __glewObjectLabel = NULL;
+PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel = NULL;
+PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup = NULL;
+PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup = NULL;
+
+PFNGLMAXSHADERCOMPILERTHREADSKHRPROC __glewMaxShaderCompilerThreadsKHR = NULL;
+
+PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv = NULL;
+PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv = NULL;
+PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv = NULL;
+PFNGLREADNPIXELSPROC __glewReadnPixels = NULL;
+
+PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled = NULL;
+PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion = NULL;
+PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion = NULL;
+PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion = NULL;
+PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion = NULL;
+
+PFNGLFRAMEBUFFERPARAMETERIMESAPROC __glewFramebufferParameteriMESA = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC __glewGetFramebufferParameterivMESA = NULL;
+
+PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA = NULL;
+
+PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA = NULL;
+PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA = NULL;
+PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA = NULL;
+PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA = NULL;
+PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA = NULL;
+PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA = NULL;
+PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA = NULL;
+PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA = NULL;
+PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA = NULL;
+PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA = NULL;
+PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA = NULL;
+PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA = NULL;
+PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA = NULL;
+PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA = NULL;
+PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA = NULL;
+PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA = NULL;
+PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA = NULL;
+PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA = NULL;
+PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA = NULL;
+PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA = NULL;
+PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA = NULL;
+PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA = NULL;
+PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA = NULL;
+PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA = NULL;
+
+PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX = NULL;
+PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX = NULL;
+
+PFNGLASYNCCOPYBUFFERSUBDATANVXPROC __glewAsyncCopyBufferSubDataNVX = NULL;
+PFNGLASYNCCOPYIMAGESUBDATANVXPROC __glewAsyncCopyImageSubDataNVX = NULL;
+PFNGLMULTICASTSCISSORARRAYVNVXPROC __glewMulticastScissorArrayvNVX = NULL;
+PFNGLMULTICASTVIEWPORTARRAYVNVXPROC __glewMulticastViewportArrayvNVX = NULL;
+PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC __glewMulticastViewportPositionWScaleNVX = NULL;
+PFNGLUPLOADGPUMASKNVXPROC __glewUploadGpuMaskNVX = NULL;
+
+PFNGLLGPUCOPYIMAGESUBDATANVXPROC __glewLGPUCopyImageSubDataNVX = NULL;
+PFNGLLGPUINTERLOCKNVXPROC __glewLGPUInterlockNVX = NULL;
+PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC __glewLGPUNamedBufferSubDataNVX = NULL;
+
+PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC __glewClientWaitSemaphoreui64NVX = NULL;
+PFNGLCREATEPROGRESSFENCENVXPROC __glewCreateProgressFenceNVX = NULL;
+PFNGLSIGNALSEMAPHOREUI64NVXPROC __glewSignalSemaphoreui64NVX = NULL;
+PFNGLWAITSEMAPHOREUI64NVXPROC __glewWaitSemaphoreui64NVX = NULL;
+
+PFNGLSTEREOPARAMETERFNVPROC __glewStereoParameterfNV = NULL;
+PFNGLSTEREOPARAMETERINVPROC __glewStereoParameteriNV = NULL;
+
+PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC __glewAlphaToCoverageDitherControlNV = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV = NULL;
+
+PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV = NULL;
+PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV = NULL;
+PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV = NULL;
+PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV = NULL;
+PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV = NULL;
+PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV = NULL;
+PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV = NULL;
+PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV = NULL;
+PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV = NULL;
+PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV = NULL;
+PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV = NULL;
+
+PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV = NULL;
+PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV = NULL;
+
+PFNGLVIEWPORTPOSITIONWSCALENVPROC __glewViewportPositionWScaleNV = NULL;
+
+PFNGLCALLCOMMANDLISTNVPROC __glewCallCommandListNV = NULL;
+PFNGLCOMMANDLISTSEGMENTSNVPROC __glewCommandListSegmentsNV = NULL;
+PFNGLCOMPILECOMMANDLISTNVPROC __glewCompileCommandListNV = NULL;
+PFNGLCREATECOMMANDLISTSNVPROC __glewCreateCommandListsNV = NULL;
+PFNGLCREATESTATESNVPROC __glewCreateStatesNV = NULL;
+PFNGLDELETECOMMANDLISTSNVPROC __glewDeleteCommandListsNV = NULL;
+PFNGLDELETESTATESNVPROC __glewDeleteStatesNV = NULL;
+PFNGLDRAWCOMMANDSADDRESSNVPROC __glewDrawCommandsAddressNV = NULL;
+PFNGLDRAWCOMMANDSNVPROC __glewDrawCommandsNV = NULL;
+PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC __glewDrawCommandsStatesAddressNV = NULL;
+PFNGLDRAWCOMMANDSSTATESNVPROC __glewDrawCommandsStatesNV = NULL;
+PFNGLGETCOMMANDHEADERNVPROC __glewGetCommandHeaderNV = NULL;
+PFNGLGETSTAGEINDEXNVPROC __glewGetStageIndexNV = NULL;
+PFNGLISCOMMANDLISTNVPROC __glewIsCommandListNV = NULL;
+PFNGLISSTATENVPROC __glewIsStateNV = NULL;
+PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC __glewListDrawCommandsStatesClientNV = NULL;
+PFNGLSTATECAPTURENVPROC __glewStateCaptureNV = NULL;
+
+PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV = NULL;
+PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV = NULL;
+
+PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV = NULL;
+
+PFNGLCONSERVATIVERASTERPARAMETERFNVPROC __glewConservativeRasterParameterfNV = NULL;
+
+PFNGLCONSERVATIVERASTERPARAMETERINVPROC __glewConservativeRasterParameteriNV = NULL;
+
+PFNGLCOPYBUFFERSUBDATANVPROC __glewCopyBufferSubDataNV = NULL;
+
+PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV = NULL;
+
+PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV = NULL;
+PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV = NULL;
+PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV = NULL;
+
+PFNGLDRAWBUFFERSNVPROC __glewDrawBuffersNV = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDNVPROC __glewDrawArraysInstancedNV = NULL;
+PFNGLDRAWELEMENTSINSTANCEDNVPROC __glewDrawElementsInstancedNV = NULL;
+
+PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV = NULL;
+
+PFNGLDRAWVKIMAGENVPROC __glewDrawVkImageNV = NULL;
+PFNGLGETVKPROCADDRNVPROC __glewGetVkProcAddrNV = NULL;
+PFNGLSIGNALVKFENCENVPROC __glewSignalVkFenceNV = NULL;
+PFNGLSIGNALVKSEMAPHORENVPROC __glewSignalVkSemaphoreNV = NULL;
+PFNGLWAITVKSEMAPHORENVPROC __glewWaitVkSemaphoreNV = NULL;
+
+PFNGLEVALMAPSNVPROC __glewEvalMapsNV = NULL;
+PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV = NULL;
+PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV = NULL;
+PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV = NULL;
+PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV = NULL;
+PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV = NULL;
+PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV = NULL;
+PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV = NULL;
+PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV = NULL;
+
+PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV = NULL;
+PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV = NULL;
+PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV = NULL;
+
+PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV = NULL;
+PFNGLFINISHFENCENVPROC __glewFinishFenceNV = NULL;
+PFNGLGENFENCESNVPROC __glewGenFencesNV = NULL;
+PFNGLGETFENCEIVNVPROC __glewGetFenceivNV = NULL;
+PFNGLISFENCENVPROC __glewIsFenceNV = NULL;
+PFNGLSETFENCENVPROC __glewSetFenceNV = NULL;
+PFNGLTESTFENCENVPROC __glewTestFenceNV = NULL;
+
+PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV = NULL;
+
+PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV = NULL;
+PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV = NULL;
+
+PFNGLBLITFRAMEBUFFERNVPROC __glewBlitFramebufferNV = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC __glewRenderbufferStorageMultisampleNV = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV = NULL;
+
+PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV = NULL;
+
+PFNGLMULTICASTBARRIERNVPROC __glewMulticastBarrierNV = NULL;
+PFNGLMULTICASTBLITFRAMEBUFFERNVPROC __glewMulticastBlitFramebufferNV = NULL;
+PFNGLMULTICASTBUFFERSUBDATANVPROC __glewMulticastBufferSubDataNV = NULL;
+PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC __glewMulticastCopyBufferSubDataNV = NULL;
+PFNGLMULTICASTCOPYIMAGESUBDATANVPROC __glewMulticastCopyImageSubDataNV = NULL;
+PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewMulticastFramebufferSampleLocationsfvNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC __glewMulticastGetQueryObjecti64vNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTIVNVPROC __glewMulticastGetQueryObjectivNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC __glewMulticastGetQueryObjectui64vNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC __glewMulticastGetQueryObjectuivNV = NULL;
+PFNGLMULTICASTWAITSYNCNVPROC __glewMulticastWaitSyncNV = NULL;
+PFNGLRENDERGPUMASKNVPROC __glewRenderGpuMaskNV = NULL;
+
+PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV = NULL;
+PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV = NULL;
+PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV = NULL;
+
+PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV = NULL;
+PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV = NULL;
+PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV = NULL;
+PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV = NULL;
+PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV = NULL;
+PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV = NULL;
+PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV = NULL;
+PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV = NULL;
+PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV = NULL;
+PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV = NULL;
+PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV = NULL;
+PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV = NULL;
+PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV = NULL;
+PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV = NULL;
+PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV = NULL;
+PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV = NULL;
+PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV = NULL;
+PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV = NULL;
+PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV = NULL;
+PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV = NULL;
+PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV = NULL;
+PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV = NULL;
+PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV = NULL;
+PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV = NULL;
+PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV = NULL;
+PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV = NULL;
+PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV = NULL;
+PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV = NULL;
+PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV = NULL;
+PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV = NULL;
+PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV = NULL;
+
+PFNGLCOLOR3HNVPROC __glewColor3hNV = NULL;
+PFNGLCOLOR3HVNVPROC __glewColor3hvNV = NULL;
+PFNGLCOLOR4HNVPROC __glewColor4hNV = NULL;
+PFNGLCOLOR4HVNVPROC __glewColor4hvNV = NULL;
+PFNGLFOGCOORDHNVPROC __glewFogCoordhNV = NULL;
+PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV = NULL;
+PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV = NULL;
+PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV = NULL;
+PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV = NULL;
+PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV = NULL;
+PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV = NULL;
+PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV = NULL;
+PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV = NULL;
+PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV = NULL;
+PFNGLNORMAL3HNVPROC __glewNormal3hNV = NULL;
+PFNGLNORMAL3HVNVPROC __glewNormal3hvNV = NULL;
+PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV = NULL;
+PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV = NULL;
+PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV = NULL;
+PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV = NULL;
+PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV = NULL;
+PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV = NULL;
+PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV = NULL;
+PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV = NULL;
+PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV = NULL;
+PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV = NULL;
+PFNGLVERTEX2HNVPROC __glewVertex2hNV = NULL;
+PFNGLVERTEX2HVNVPROC __glewVertex2hvNV = NULL;
+PFNGLVERTEX3HNVPROC __glewVertex3hNV = NULL;
+PFNGLVERTEX3HVNVPROC __glewVertex3hvNV = NULL;
+PFNGLVERTEX4HNVPROC __glewVertex4hNV = NULL;
+PFNGLVERTEX4HVNVPROC __glewVertex4hvNV = NULL;
+PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV = NULL;
+PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV = NULL;
+PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV = NULL;
+PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV = NULL;
+PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV = NULL;
+PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV = NULL;
+PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV = NULL;
+PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV = NULL;
+PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV = NULL;
+PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV = NULL;
+PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV = NULL;
+PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV = NULL;
+PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV = NULL;
+PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV = NULL;
+
+PFNGLVERTEXATTRIBDIVISORNVPROC __glewVertexAttribDivisorNV = NULL;
+
+PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV = NULL;
+
+PFNGLBUFFERATTACHMEMORYNVPROC __glewBufferAttachMemoryNV = NULL;
+PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC __glewGetMemoryObjectDetachedResourcesuivNV = NULL;
+PFNGLNAMEDBUFFERATTACHMEMORYNVPROC __glewNamedBufferAttachMemoryNV = NULL;
+PFNGLRESETMEMORYOBJECTPARAMETERNVPROC __glewResetMemoryObjectParameterNV = NULL;
+PFNGLTEXATTACHMEMORYNVPROC __glewTexAttachMemoryNV = NULL;
+PFNGLTEXTUREATTACHMEMORYNVPROC __glewTextureAttachMemoryNV = NULL;
+
+PFNGLBUFFERPAGECOMMITMENTMEMNVPROC __glewBufferPageCommitmentMemNV = NULL;
+PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC __glewNamedBufferPageCommitmentMemNV = NULL;
+PFNGLTEXPAGECOMMITMENTMEMNVPROC __glewTexPageCommitmentMemNV = NULL;
+PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC __glewTexturePageCommitmentMemNV = NULL;
+
+PFNGLDRAWMESHTASKSINDIRECTNVPROC __glewDrawMeshTasksIndirectNV = NULL;
+PFNGLDRAWMESHTASKSNVPROC __glewDrawMeshTasksNV = NULL;
+PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC __glewMultiDrawMeshTasksIndirectCountNV = NULL;
+PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC __glewMultiDrawMeshTasksIndirectNV = NULL;
+
+PFNGLUNIFORMMATRIX2X3FVNVPROC __glewUniformMatrix2x3fvNV = NULL;
+PFNGLUNIFORMMATRIX2X4FVNVPROC __glewUniformMatrix2x4fvNV = NULL;
+PFNGLUNIFORMMATRIX3X2FVNVPROC __glewUniformMatrix3x2fvNV = NULL;
+PFNGLUNIFORMMATRIX3X4FVNVPROC __glewUniformMatrix3x4fvNV = NULL;
+PFNGLUNIFORMMATRIX4X2FVNVPROC __glewUniformMatrix4x2fvNV = NULL;
+PFNGLUNIFORMMATRIX4X3FVNVPROC __glewUniformMatrix4x3fvNV = NULL;
+
+PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV = NULL;
+PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV = NULL;
+PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV = NULL;
+PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV = NULL;
+PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV = NULL;
+PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV = NULL;
+PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV = NULL;
+
+PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV = NULL;
+PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV = NULL;
+PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV = NULL;
+
+PFNGLCOPYPATHNVPROC __glewCopyPathNV = NULL;
+PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV = NULL;
+PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV = NULL;
+PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV = NULL;
+PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV = NULL;
+PFNGLDELETEPATHSNVPROC __glewDeletePathsNV = NULL;
+PFNGLGENPATHSNVPROC __glewGenPathsNV = NULL;
+PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV = NULL;
+PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV = NULL;
+PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV = NULL;
+PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV = NULL;
+PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV = NULL;
+PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV = NULL;
+PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV = NULL;
+PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV = NULL;
+PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV = NULL;
+PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV = NULL;
+PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV = NULL;
+PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV = NULL;
+PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV = NULL;
+PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV = NULL;
+PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV = NULL;
+PFNGLISPATHNVPROC __glewIsPathNV = NULL;
+PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV = NULL;
+PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV = NULL;
+PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV = NULL;
+PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV = NULL;
+PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV = NULL;
+PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV = NULL;
+PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV = NULL;
+PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV = NULL;
+PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV = NULL;
+PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV = NULL;
+PFNGLPATHCOORDSNVPROC __glewPathCoordsNV = NULL;
+PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV = NULL;
+PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV = NULL;
+PFNGLPATHFOGGENNVPROC __glewPathFogGenNV = NULL;
+PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV = NULL;
+PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV = NULL;
+PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV = NULL;
+PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV = NULL;
+PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV = NULL;
+PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV = NULL;
+PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV = NULL;
+PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV = NULL;
+PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV = NULL;
+PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV = NULL;
+PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV = NULL;
+PFNGLPATHSTRINGNVPROC __glewPathStringNV = NULL;
+PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV = NULL;
+PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV = NULL;
+PFNGLPATHTEXGENNVPROC __glewPathTexGenNV = NULL;
+PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV = NULL;
+PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV = NULL;
+PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV = NULL;
+PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV = NULL;
+PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV = NULL;
+PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV = NULL;
+PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV = NULL;
+PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV = NULL;
+PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV = NULL;
+PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV = NULL;
+PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV = NULL;
+PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV = NULL;
+
+PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV = NULL;
+PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV = NULL;
+
+PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV = NULL;
+PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV = NULL;
+
+PFNGLPOLYGONMODENVPROC __glewPolygonModeNV = NULL;
+
+PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV = NULL;
+PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV = NULL;
+PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV = NULL;
+PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV = NULL;
+PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV = NULL;
+PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV = NULL;
+
+PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV = NULL;
+PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV = NULL;
+
+PFNGLREADBUFFERNVPROC __glewReadBufferNV = NULL;
+
+PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV = NULL;
+PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV = NULL;
+PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV = NULL;
+PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV = NULL;
+PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV = NULL;
+PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV = NULL;
+PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV = NULL;
+PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV = NULL;
+PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV = NULL;
+PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV = NULL;
+PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV = NULL;
+PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV = NULL;
+PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV = NULL;
+
+PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV = NULL;
+PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV = NULL;
+
+PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV = NULL;
+PFNGLRESOLVEDEPTHVALUESNVPROC __glewResolveDepthValuesNV = NULL;
+
+PFNGLSCISSOREXCLUSIVEARRAYVNVPROC __glewScissorExclusiveArrayvNV = NULL;
+PFNGLSCISSOREXCLUSIVENVPROC __glewScissorExclusiveNV = NULL;
+
+PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV = NULL;
+PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV = NULL;
+PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV = NULL;
+PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV = NULL;
+PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV = NULL;
+PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV = NULL;
+PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV = NULL;
+PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV = NULL;
+PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV = NULL;
+PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV = NULL;
+PFNGLUNIFORMUI64NVPROC __glewUniformui64NV = NULL;
+PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV = NULL;
+
+PFNGLBINDSHADINGRATEIMAGENVPROC __glewBindShadingRateImageNV = NULL;
+PFNGLGETSHADINGRATEIMAGEPALETTENVPROC __glewGetShadingRateImagePaletteNV = NULL;
+PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC __glewGetShadingRateSampleLocationivNV = NULL;
+PFNGLSHADINGRATEIMAGEBARRIERNVPROC __glewShadingRateImageBarrierNV = NULL;
+PFNGLSHADINGRATEIMAGEPALETTENVPROC __glewShadingRateImagePaletteNV = NULL;
+PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC __glewShadingRateSampleOrderCustomNV = NULL;
+PFNGLSHADINGRATESAMPLEORDERNVPROC __glewShadingRateSampleOrderNV = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE3DNVPROC __glewCompressedTexImage3DNV = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC __glewCompressedTexSubImage3DNV = NULL;
+PFNGLCOPYTEXSUBIMAGE3DNVPROC __glewCopyTexSubImage3DNV = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERNVPROC __glewFramebufferTextureLayerNV = NULL;
+PFNGLTEXIMAGE3DNVPROC __glewTexImage3DNV = NULL;
+PFNGLTEXSUBIMAGE3DNVPROC __glewTexSubImage3DNV = NULL;
+
+PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV = NULL;
+
+PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV = NULL;
+PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV = NULL;
+
+PFNGLCREATESEMAPHORESNVPROC __glewCreateSemaphoresNV = NULL;
+PFNGLGETSEMAPHOREPARAMETERIVNVPROC __glewGetSemaphoreParameterivNV = NULL;
+PFNGLSEMAPHOREPARAMETERIVNVPROC __glewSemaphoreParameterivNV = NULL;
+
+PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV = NULL;
+PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV = NULL;
+PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV = NULL;
+PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV = NULL;
+PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV = NULL;
+PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV = NULL;
+PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV = NULL;
+PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV = NULL;
+PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV = NULL;
+
+PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV = NULL;
+PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV = NULL;
+PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV = NULL;
+PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV = NULL;
+PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV = NULL;
+PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV = NULL;
+
+PFNGLVDPAUFININVPROC __glewVDPAUFiniNV = NULL;
+PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV = NULL;
+PFNGLVDPAUINITNVPROC __glewVDPAUInitNV = NULL;
+PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV = NULL;
+PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV = NULL;
+PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV = NULL;
+PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV = NULL;
+PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV = NULL;
+PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV = NULL;
+PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV = NULL;
+
+PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC __glewVDPAURegisterVideoSurfaceWithPictureStructureNV = NULL;
+
+PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV = NULL;
+PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV = NULL;
+
+PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV = NULL;
+PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV = NULL;
+PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV = NULL;
+PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV = NULL;
+PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV = NULL;
+PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV = NULL;
+PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV = NULL;
+PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV = NULL;
+PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV = NULL;
+PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV = NULL;
+PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV = NULL;
+PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV = NULL;
+PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV = NULL;
+PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV = NULL;
+PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV = NULL;
+PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV = NULL;
+PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV = NULL;
+PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV = NULL;
+PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV = NULL;
+
+PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV = NULL;
+PFNGLCOLORFORMATNVPROC __glewColorFormatNV = NULL;
+PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV = NULL;
+PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV = NULL;
+PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV = NULL;
+PFNGLINDEXFORMATNVPROC __glewIndexFormatNV = NULL;
+PFNGLNORMALFORMATNVPROC __glewNormalFormatNV = NULL;
+PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV = NULL;
+PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV = NULL;
+PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV = NULL;
+PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV = NULL;
+PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV = NULL;
+
+PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV = NULL;
+PFNGLBINDPROGRAMNVPROC __glewBindProgramNV = NULL;
+PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV = NULL;
+PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV = NULL;
+PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV = NULL;
+PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV = NULL;
+PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV = NULL;
+PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV = NULL;
+PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV = NULL;
+PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV = NULL;
+PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV = NULL;
+PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV = NULL;
+PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV = NULL;
+PFNGLISPROGRAMNVPROC __glewIsProgramNV = NULL;
+PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV = NULL;
+PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV = NULL;
+PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV = NULL;
+PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV = NULL;
+PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV = NULL;
+PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV = NULL;
+PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV = NULL;
+PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV = NULL;
+PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV = NULL;
+PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV = NULL;
+PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV = NULL;
+PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV = NULL;
+PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV = NULL;
+PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV = NULL;
+PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV = NULL;
+PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV = NULL;
+PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV = NULL;
+PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV = NULL;
+PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV = NULL;
+PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV = NULL;
+PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV = NULL;
+PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV = NULL;
+PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV = NULL;
+PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV = NULL;
+PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV = NULL;
+PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV = NULL;
+PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV = NULL;
+PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV = NULL;
+PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV = NULL;
+PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV = NULL;
+PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV = NULL;
+PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV = NULL;
+PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV = NULL;
+PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV = NULL;
+PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV = NULL;
+PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV = NULL;
+PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV = NULL;
+PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV = NULL;
+PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV = NULL;
+PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV = NULL;
+PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV = NULL;
+PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV = NULL;
+PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV = NULL;
+PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV = NULL;
+PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV = NULL;
+PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV = NULL;
+PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV = NULL;
+PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV = NULL;
+PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV = NULL;
+
+PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV = NULL;
+PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV = NULL;
+PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV = NULL;
+PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV = NULL;
+PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV = NULL;
+PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV = NULL;
+
+PFNGLDEPTHRANGEARRAYFVNVPROC __glewDepthRangeArrayfvNV = NULL;
+PFNGLDEPTHRANGEINDEXEDFNVPROC __glewDepthRangeIndexedfNV = NULL;
+PFNGLDISABLEINVPROC __glewDisableiNV = NULL;
+PFNGLENABLEINVPROC __glewEnableiNV = NULL;
+PFNGLGETFLOATI_VNVPROC __glewGetFloati_vNV = NULL;
+PFNGLISENABLEDINVPROC __glewIsEnablediNV = NULL;
+PFNGLSCISSORARRAYVNVPROC __glewScissorArrayvNV = NULL;
+PFNGLSCISSORINDEXEDNVPROC __glewScissorIndexedNV = NULL;
+PFNGLSCISSORINDEXEDVNVPROC __glewScissorIndexedvNV = NULL;
+PFNGLVIEWPORTARRAYVNVPROC __glewViewportArrayvNV = NULL;
+PFNGLVIEWPORTINDEXEDFNVPROC __glewViewportIndexedfNV = NULL;
+PFNGLVIEWPORTINDEXEDFVNVPROC __glewViewportIndexedfvNV = NULL;
+
+PFNGLVIEWPORTSWIZZLENVPROC __glewViewportSwizzleNV = NULL;
+
+PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __glewEGLImageTargetRenderbufferStorageOES = NULL;
+PFNGLEGLIMAGETARGETTEXTURE2DOESPROC __glewEGLImageTargetTexture2DOES = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEOESPROC __glewBlendEquationSeparateOES = NULL;
+
+PFNGLBLENDFUNCSEPARATEOESPROC __glewBlendFuncSeparateOES = NULL;
+
+PFNGLBLENDEQUATIONOESPROC __glewBlendEquationOES = NULL;
+
+PFNGLCOPYIMAGESUBDATAOESPROC __glewCopyImageSubDataOES = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIOESPROC __glewBlendEquationSeparateiOES = NULL;
+PFNGLBLENDEQUATIONIOESPROC __glewBlendEquationiOES = NULL;
+PFNGLBLENDFUNCSEPARATEIOESPROC __glewBlendFuncSeparateiOES = NULL;
+PFNGLBLENDFUNCIOESPROC __glewBlendFunciOES = NULL;
+PFNGLCOLORMASKIOESPROC __glewColorMaskiOES = NULL;
+PFNGLDISABLEIOESPROC __glewDisableiOES = NULL;
+PFNGLENABLEIOESPROC __glewEnableiOES = NULL;
+PFNGLISENABLEDIOESPROC __glewIsEnablediOES = NULL;
+
+PFNGLBINDFRAMEBUFFEROESPROC __glewBindFramebufferOES = NULL;
+PFNGLBINDRENDERBUFFEROESPROC __glewBindRenderbufferOES = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSOESPROC __glewCheckFramebufferStatusOES = NULL;
+PFNGLDELETEFRAMEBUFFERSOESPROC __glewDeleteFramebuffersOES = NULL;
+PFNGLDELETERENDERBUFFERSOESPROC __glewDeleteRenderbuffersOES = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFEROESPROC __glewFramebufferRenderbufferOES = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DOESPROC __glewFramebufferTexture2DOES = NULL;
+PFNGLGENFRAMEBUFFERSOESPROC __glewGenFramebuffersOES = NULL;
+PFNGLGENRENDERBUFFERSOESPROC __glewGenRenderbuffersOES = NULL;
+PFNGLGENERATEMIPMAPOESPROC __glewGenerateMipmapOES = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC __glewGetFramebufferAttachmentParameterivOES = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVOESPROC __glewGetRenderbufferParameterivOES = NULL;
+PFNGLISFRAMEBUFFEROESPROC __glewIsFramebufferOES = NULL;
+PFNGLISRENDERBUFFEROESPROC __glewIsRenderbufferOES = NULL;
+PFNGLRENDERBUFFERSTORAGEOESPROC __glewRenderbufferStorageOES = NULL;
+
+PFNGLGETPROGRAMBINARYOESPROC __glewGetProgramBinaryOES = NULL;
+PFNGLPROGRAMBINARYOESPROC __glewProgramBinaryOES = NULL;
+
+PFNGLGETBUFFERPOINTERVOESPROC __glewGetBufferPointervOES = NULL;
+PFNGLMAPBUFFEROESPROC __glewMapBufferOES = NULL;
+PFNGLUNMAPBUFFEROESPROC __glewUnmapBufferOES = NULL;
+
+PFNGLCURRENTPALETTEMATRIXOESPROC __glewCurrentPaletteMatrixOES = NULL;
+PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC __glewLoadPaletteFromModelViewMatrixOES = NULL;
+PFNGLMATRIXINDEXPOINTEROESPROC __glewMatrixIndexPointerOES = NULL;
+PFNGLWEIGHTPOINTEROESPROC __glewWeightPointerOES = NULL;
+
+PFNGLMINSAMPLESHADINGOESPROC __glewMinSampleShadingOES = NULL;
+
+PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES = NULL;
+PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES = NULL;
+PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES = NULL;
+PFNGLFRUSTUMFOESPROC __glewFrustumfOES = NULL;
+PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES = NULL;
+PFNGLORTHOFOESPROC __glewOrthofOES = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE3DOESPROC __glewCompressedTexImage3DOES = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __glewCompressedTexSubImage3DOES = NULL;
+PFNGLCOPYTEXSUBIMAGE3DOESPROC __glewCopyTexSubImage3DOES = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DOESPROC __glewFramebufferTexture3DOES = NULL;
+PFNGLTEXIMAGE3DOESPROC __glewTexImage3DOES = NULL;
+PFNGLTEXSUBIMAGE3DOESPROC __glewTexSubImage3DOES = NULL;
+
+PFNGLGETSAMPLERPARAMETERIIVOESPROC __glewGetSamplerParameterIivOES = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVOESPROC __glewGetSamplerParameterIuivOES = NULL;
+PFNGLGETTEXPARAMETERIIVOESPROC __glewGetTexParameterIivOES = NULL;
+PFNGLGETTEXPARAMETERIUIVOESPROC __glewGetTexParameterIuivOES = NULL;
+PFNGLSAMPLERPARAMETERIIVOESPROC __glewSamplerParameterIivOES = NULL;
+PFNGLSAMPLERPARAMETERIUIVOESPROC __glewSamplerParameterIuivOES = NULL;
+PFNGLTEXPARAMETERIIVOESPROC __glewTexParameterIivOES = NULL;
+PFNGLTEXPARAMETERIUIVOESPROC __glewTexParameterIuivOES = NULL;
+
+PFNGLTEXBUFFEROESPROC __glewTexBufferOES = NULL;
+PFNGLTEXBUFFERRANGEOESPROC __glewTexBufferRangeOES = NULL;
+
+PFNGLGETTEXGENFVOESPROC __glewGetTexGenfvOES = NULL;
+PFNGLGETTEXGENIVOESPROC __glewGetTexGenivOES = NULL;
+PFNGLGETTEXGENXVOESPROC __glewGetTexGenxvOES = NULL;
+PFNGLTEXGENFOESPROC __glewTexGenfOES = NULL;
+PFNGLTEXGENFVOESPROC __glewTexGenfvOES = NULL;
+PFNGLTEXGENIOESPROC __glewTexGeniOES = NULL;
+PFNGLTEXGENIVOESPROC __glewTexGenivOES = NULL;
+PFNGLTEXGENXOESPROC __glewTexGenxOES = NULL;
+PFNGLTEXGENXVOESPROC __glewTexGenxvOES = NULL;
+
+PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC __glewTexStorage3DMultisampleOES = NULL;
+
+PFNGLTEXTUREVIEWOESPROC __glewTextureViewOES = NULL;
+
+PFNGLBINDVERTEXARRAYOESPROC __glewBindVertexArrayOES = NULL;
+PFNGLDELETEVERTEXARRAYSOESPROC __glewDeleteVertexArraysOES = NULL;
+PFNGLGENVERTEXARRAYSOESPROC __glewGenVertexArraysOES = NULL;
+PFNGLISVERTEXARRAYOESPROC __glewIsVertexArrayOES = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewFramebufferTextureMultiviewOVR = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewNamedFramebufferTextureMultiviewOVR = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __glewFramebufferTextureMultisampleMultiviewOVR = NULL;
+
+PFNGLALPHAFUNCQCOMPROC __glewAlphaFuncQCOM = NULL;
+
+PFNGLDISABLEDRIVERCONTROLQCOMPROC __glewDisableDriverControlQCOM = NULL;
+PFNGLENABLEDRIVERCONTROLQCOMPROC __glewEnableDriverControlQCOM = NULL;
+PFNGLGETDRIVERCONTROLSTRINGQCOMPROC __glewGetDriverControlStringQCOM = NULL;
+PFNGLGETDRIVERCONTROLSQCOMPROC __glewGetDriverControlsQCOM = NULL;
+
+PFNGLEXTGETBUFFERPOINTERVQCOMPROC __glewExtGetBufferPointervQCOM = NULL;
+PFNGLEXTGETBUFFERSQCOMPROC __glewExtGetBuffersQCOM = NULL;
+PFNGLEXTGETFRAMEBUFFERSQCOMPROC __glewExtGetFramebuffersQCOM = NULL;
+PFNGLEXTGETRENDERBUFFERSQCOMPROC __glewExtGetRenderbuffersQCOM = NULL;
+PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC __glewExtGetTexLevelParameterivQCOM = NULL;
+PFNGLEXTGETTEXSUBIMAGEQCOMPROC __glewExtGetTexSubImageQCOM = NULL;
+PFNGLEXTGETTEXTURESQCOMPROC __glewExtGetTexturesQCOM = NULL;
+PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC __glewExtTexObjectStateOverrideiQCOM = NULL;
+
+PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC __glewExtGetProgramBinarySourceQCOM = NULL;
+PFNGLEXTGETPROGRAMSQCOMPROC __glewExtGetProgramsQCOM = NULL;
+PFNGLEXTGETSHADERSQCOMPROC __glewExtGetShadersQCOM = NULL;
+PFNGLEXTISPROGRAMBINARYQCOMPROC __glewExtIsProgramBinaryQCOM = NULL;
+
+PFNGLEXTRAPOLATETEX2DQCOMPROC __glewExtrapolateTex2DQCOM = NULL;
+
+PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC __glewFramebufferFoveationConfigQCOM = NULL;
+PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC __glewFramebufferFoveationParametersQCOM = NULL;
+
+PFNGLTEXESTIMATEMOTIONQCOMPROC __glewTexEstimateMotionQCOM = NULL;
+PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC __glewTexEstimateMotionRegionsQCOM = NULL;
+
+PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC __glewFramebufferFetchBarrierQCOM = NULL;
+
+PFNGLSHADINGRATEQCOMPROC __glewShadingRateQCOM = NULL;
+
+PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC __glewTextureFoveationParametersQCOM = NULL;
+
+PFNGLENDTILINGQCOMPROC __glewEndTilingQCOM = NULL;
+PFNGLSTARTTILINGQCOMPROC __glewStartTilingQCOM = NULL;
+
+PFNGLALPHAFUNCXPROC __glewAlphaFuncx = NULL;
+PFNGLCLEARCOLORXPROC __glewClearColorx = NULL;
+PFNGLCLEARDEPTHXPROC __glewClearDepthx = NULL;
+PFNGLCOLOR4XPROC __glewColor4x = NULL;
+PFNGLDEPTHRANGEXPROC __glewDepthRangex = NULL;
+PFNGLFOGXPROC __glewFogx = NULL;
+PFNGLFOGXVPROC __glewFogxv = NULL;
+PFNGLFRUSTUMFPROC __glewFrustumf = NULL;
+PFNGLFRUSTUMXPROC __glewFrustumx = NULL;
+PFNGLLIGHTMODELXPROC __glewLightModelx = NULL;
+PFNGLLIGHTMODELXVPROC __glewLightModelxv = NULL;
+PFNGLLIGHTXPROC __glewLightx = NULL;
+PFNGLLIGHTXVPROC __glewLightxv = NULL;
+PFNGLLINEWIDTHXPROC __glewLineWidthx = NULL;
+PFNGLLOADMATRIXXPROC __glewLoadMatrixx = NULL;
+PFNGLMATERIALXPROC __glewMaterialx = NULL;
+PFNGLMATERIALXVPROC __glewMaterialxv = NULL;
+PFNGLMULTMATRIXXPROC __glewMultMatrixx = NULL;
+PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x = NULL;
+PFNGLNORMAL3XPROC __glewNormal3x = NULL;
+PFNGLORTHOFPROC __glewOrthof = NULL;
+PFNGLORTHOXPROC __glewOrthox = NULL;
+PFNGLPOINTSIZEXPROC __glewPointSizex = NULL;
+PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx = NULL;
+PFNGLROTATEXPROC __glewRotatex = NULL;
+PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex = NULL;
+PFNGLSCALEXPROC __glewScalex = NULL;
+PFNGLTEXENVXPROC __glewTexEnvx = NULL;
+PFNGLTEXENVXVPROC __glewTexEnvxv = NULL;
+PFNGLTEXPARAMETERXPROC __glewTexParameterx = NULL;
+PFNGLTRANSLATEXPROC __glewTranslatex = NULL;
+
+PFNGLCLIPPLANEFPROC __glewClipPlanef = NULL;
+PFNGLCLIPPLANEXPROC __glewClipPlanex = NULL;
+PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef = NULL;
+PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex = NULL;
+PFNGLGETFIXEDVPROC __glewGetFixedv = NULL;
+PFNGLGETLIGHTXVPROC __glewGetLightxv = NULL;
+PFNGLGETMATERIALXVPROC __glewGetMaterialxv = NULL;
+PFNGLGETTEXENVXVPROC __glewGetTexEnvxv = NULL;
+PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv = NULL;
+PFNGLPOINTPARAMETERXPROC __glewPointParameterx = NULL;
+PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv = NULL;
+PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES = NULL;
+PFNGLTEXPARAMETERXVPROC __glewTexParameterxv = NULL;
+
+PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL = NULL;
+
+PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL = NULL;
+PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL = NULL;
+
+PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL = NULL;
+
+PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL = NULL;
+
+PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS = NULL;
+PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS = NULL;
+
+PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS = NULL;
+PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS = NULL;
+
+PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS = NULL;
+PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS = NULL;
+
+PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC __glewInterleavedTextureCoordSetsSGIS = NULL;
+PFNGLSELECTTEXTURECOORDSETSGISPROC __glewSelectTextureCoordSetSGIS = NULL;
+PFNGLSELECTTEXTURESGISPROC __glewSelectTextureSGIS = NULL;
+PFNGLSELECTTEXTURETRANSFORMSGISPROC __glewSelectTextureTransformSGIS = NULL;
+
+PFNGLMULTISAMPLESUBRECTPOSSGISPROC __glewMultisampleSubRectPosSGIS = NULL;
+
+PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS = NULL;
+PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS = NULL;
+
+PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS = NULL;
+PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS = NULL;
+
+PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS = NULL;
+PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS = NULL;
+
+PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX = NULL;
+PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX = NULL;
+PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX = NULL;
+PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX = NULL;
+PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX = NULL;
+PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX = NULL;
+
+PFNGLADDRESSSPACEPROC __glewAddressSpace = NULL;
+PFNGLDATAPIPEPROC __glewDataPipe = NULL;
+
+PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX = NULL;
+
+PFNGLFOGLAYERSSGIXPROC __glewFogLayersSGIX = NULL;
+PFNGLGETFOGLAYERSSGIXPROC __glewGetFogLayersSGIX = NULL;
+
+PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX = NULL;
+
+PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX = NULL;
+PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX = NULL;
+PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX = NULL;
+PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX = NULL;
+PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX = NULL;
+PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX = NULL;
+PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX = NULL;
+PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX = NULL;
+PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX = NULL;
+PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX = NULL;
+PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX = NULL;
+PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX = NULL;
+PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX = NULL;
+
+PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX = NULL;
+
+PFNGLIGLOOINTERFACESGIXPROC __glewIglooInterfaceSGIX = NULL;
+
+PFNGLALLOCMPEGPREDICTORSSGIXPROC __glewAllocMPEGPredictorsSGIX = NULL;
+PFNGLDELETEMPEGPREDICTORSSGIXPROC __glewDeleteMPEGPredictorsSGIX = NULL;
+PFNGLGENMPEGPREDICTORSSGIXPROC __glewGenMPEGPredictorsSGIX = NULL;
+PFNGLGETMPEGPARAMETERFVSGIXPROC __glewGetMPEGParameterfvSGIX = NULL;
+PFNGLGETMPEGPARAMETERIVSGIXPROC __glewGetMPEGParameterivSGIX = NULL;
+PFNGLGETMPEGPREDICTORSGIXPROC __glewGetMPEGPredictorSGIX = NULL;
+PFNGLGETMPEGQUANTTABLEUBVPROC __glewGetMPEGQuantTableubv = NULL;
+PFNGLISMPEGPREDICTORSGIXPROC __glewIsMPEGPredictorSGIX = NULL;
+PFNGLMPEGPREDICTORSGIXPROC __glewMPEGPredictorSGIX = NULL;
+PFNGLMPEGQUANTTABLEUBVPROC __glewMPEGQuantTableubv = NULL;
+PFNGLSWAPMPEGPREDICTORSSGIXPROC __glewSwapMPEGPredictorsSGIX = NULL;
+
+PFNGLGETNONLINLIGHTFVSGIXPROC __glewGetNonlinLightfvSGIX = NULL;
+PFNGLGETNONLINMATERIALFVSGIXPROC __glewGetNonlinMaterialfvSGIX = NULL;
+PFNGLNONLINLIGHTFVSGIXPROC __glewNonlinLightfvSGIX = NULL;
+PFNGLNONLINMATERIALFVSGIXPROC __glewNonlinMaterialfvSGIX = NULL;
+
+PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX = NULL;
+
+PFNGLDEFORMSGIXPROC __glewDeformSGIX = NULL;
+PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC __glewLoadIdentityDeformationMapSGIX = NULL;
+
+PFNGLMESHBREADTHSGIXPROC __glewMeshBreadthSGIX = NULL;
+PFNGLMESHSTRIDESGIXPROC __glewMeshStrideSGIX = NULL;
+
+PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX = NULL;
+
+PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX = NULL;
+PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX = NULL;
+PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX = NULL;
+PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX = NULL;
+
+PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX = NULL;
+
+PFNGLGETVECTOROPERATIONSGIXPROC __glewGetVectorOperationSGIX = NULL;
+PFNGLVECTOROPERATIONSGIXPROC __glewVectorOperationSGIX = NULL;
+
+PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC __glewAreVertexArraysResidentSGIX = NULL;
+PFNGLBINDVERTEXARRAYSGIXPROC __glewBindVertexArraySGIX = NULL;
+PFNGLDELETEVERTEXARRAYSSGIXPROC __glewDeleteVertexArraysSGIX = NULL;
+PFNGLGENVERTEXARRAYSSGIXPROC __glewGenVertexArraysSGIX = NULL;
+PFNGLISVERTEXARRAYSGIXPROC __glewIsVertexArraySGIX = NULL;
+PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC __glewPrioritizeVertexArraysSGIX = NULL;
+
+PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI = NULL;
+PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI = NULL;
+PFNGLCOLORTABLESGIPROC __glewColorTableSGI = NULL;
+PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI = NULL;
+PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI = NULL;
+
+PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC __glewGetPixelTransformParameterfvSGI = NULL;
+PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC __glewGetPixelTransformParameterivSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFSGIPROC __glewPixelTransformParameterfSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC __glewPixelTransformParameterfvSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERISGIPROC __glewPixelTransformParameteriSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC __glewPixelTransformParameterivSGI = NULL;
+PFNGLPIXELTRANSFORMSGIPROC __glewPixelTransformSGI = NULL;
+
+PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX = NULL;
+
+PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN = NULL;
+PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN = NULL;
+PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN = NULL;
+PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN = NULL;
+PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN = NULL;
+PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN = NULL;
+PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN = NULL;
+PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN = NULL;
+
+PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN = NULL;
+
+PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN = NULL;
+PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN = NULL;
+PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN = NULL;
+PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN = NULL;
+PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN = NULL;
+PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN = NULL;
+PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN = NULL;
+
+PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN = NULL;
+PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN = NULL;
+PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN = NULL;
+PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN = NULL;
+PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN = NULL;
+PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN = NULL;
+PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN = NULL;
+PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN = NULL;
+PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN = NULL;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN = NULL;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN = NULL;
+PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN = NULL;
+PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN = NULL;
+
+PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN = NULL;
+
+GLboolean __GLEW_VERSION_1_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_2_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_4 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_5 = GL_FALSE;
+GLboolean __GLEW_VERSION_2_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_2_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_4 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_5 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_6 = GL_FALSE;
+GLboolean __GLEW_3DFX_multisample = GL_FALSE;
+GLboolean __GLEW_3DFX_tbuffer = GL_FALSE;
+GLboolean __GLEW_3DFX_texture_compression_FXT1 = GL_FALSE;
+GLboolean __GLEW_AMD_blend_minmax_factor = GL_FALSE;
+GLboolean __GLEW_AMD_compressed_3DC_texture = GL_FALSE;
+GLboolean __GLEW_AMD_compressed_ATC_texture = GL_FALSE;
+GLboolean __GLEW_AMD_conservative_depth = GL_FALSE;
+GLboolean __GLEW_AMD_debug_output = GL_FALSE;
+GLboolean __GLEW_AMD_depth_clamp_separate = GL_FALSE;
+GLboolean __GLEW_AMD_draw_buffers_blend = GL_FALSE;
+GLboolean __GLEW_AMD_framebuffer_multisample_advanced = GL_FALSE;
+GLboolean __GLEW_AMD_framebuffer_sample_positions = GL_FALSE;
+GLboolean __GLEW_AMD_gcn_shader = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_half_float = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_half_float_fetch = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_int16 = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_int64 = GL_FALSE;
+GLboolean __GLEW_AMD_interleaved_elements = GL_FALSE;
+GLboolean __GLEW_AMD_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_AMD_name_gen_delete = GL_FALSE;
+GLboolean __GLEW_AMD_occlusion_query_event = GL_FALSE;
+GLboolean __GLEW_AMD_performance_monitor = GL_FALSE;
+GLboolean __GLEW_AMD_pinned_memory = GL_FALSE;
+GLboolean __GLEW_AMD_program_binary_Z400 = GL_FALSE;
+GLboolean __GLEW_AMD_query_buffer_object = GL_FALSE;
+GLboolean __GLEW_AMD_sample_positions = GL_FALSE;
+GLboolean __GLEW_AMD_seamless_cubemap_per_texture = GL_FALSE;
+GLboolean __GLEW_AMD_shader_atomic_counter_ops = GL_FALSE;
+GLboolean __GLEW_AMD_shader_ballot = GL_FALSE;
+GLboolean __GLEW_AMD_shader_explicit_vertex_parameter = GL_FALSE;
+GLboolean __GLEW_AMD_shader_image_load_store_lod = GL_FALSE;
+GLboolean __GLEW_AMD_shader_stencil_export = GL_FALSE;
+GLboolean __GLEW_AMD_shader_stencil_value_export = GL_FALSE;
+GLboolean __GLEW_AMD_shader_trinary_minmax = GL_FALSE;
+GLboolean __GLEW_AMD_sparse_texture = GL_FALSE;
+GLboolean __GLEW_AMD_stencil_operation_extended = GL_FALSE;
+GLboolean __GLEW_AMD_texture_gather_bias_lod = GL_FALSE;
+GLboolean __GLEW_AMD_texture_texture4 = GL_FALSE;
+GLboolean __GLEW_AMD_transform_feedback3_lines_triangles = GL_FALSE;
+GLboolean __GLEW_AMD_transform_feedback4 = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_layer = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_tessellator = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_viewport_index = GL_FALSE;
+GLboolean __GLEW_ANDROID_extension_pack_es31a = GL_FALSE;
+GLboolean __GLEW_ANGLE_depth_texture = GL_FALSE;
+GLboolean __GLEW_ANGLE_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_ANGLE_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_ANGLE_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_ANGLE_pack_reverse_row_order = GL_FALSE;
+GLboolean __GLEW_ANGLE_program_binary = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt1 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt3 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt5 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_usage = GL_FALSE;
+GLboolean __GLEW_ANGLE_timer_query = GL_FALSE;
+GLboolean __GLEW_ANGLE_translated_shader_source = GL_FALSE;
+GLboolean __GLEW_APPLE_aux_depth_stencil = GL_FALSE;
+GLboolean __GLEW_APPLE_client_storage = GL_FALSE;
+GLboolean __GLEW_APPLE_clip_distance = GL_FALSE;
+GLboolean __GLEW_APPLE_color_buffer_packed_float = GL_FALSE;
+GLboolean __GLEW_APPLE_copy_texture_levels = GL_FALSE;
+GLboolean __GLEW_APPLE_element_array = GL_FALSE;
+GLboolean __GLEW_APPLE_fence = GL_FALSE;
+GLboolean __GLEW_APPLE_float_pixels = GL_FALSE;
+GLboolean __GLEW_APPLE_flush_buffer_range = GL_FALSE;
+GLboolean __GLEW_APPLE_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_APPLE_object_purgeable = GL_FALSE;
+GLboolean __GLEW_APPLE_pixel_buffer = GL_FALSE;
+GLboolean __GLEW_APPLE_rgb_422 = GL_FALSE;
+GLboolean __GLEW_APPLE_row_bytes = GL_FALSE;
+GLboolean __GLEW_APPLE_specular_vector = GL_FALSE;
+GLboolean __GLEW_APPLE_sync = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_2D_limited_npot = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_format_BGRA8888 = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_max_level = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_packed_float = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_range = GL_FALSE;
+GLboolean __GLEW_APPLE_transform_hint = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_array_range = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_program_evaluators = GL_FALSE;
+GLboolean __GLEW_APPLE_ycbcr_422 = GL_FALSE;
+GLboolean __GLEW_ARB_ES2_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_1_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_2_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_arrays_of_arrays = GL_FALSE;
+GLboolean __GLEW_ARB_base_instance = GL_FALSE;
+GLboolean __GLEW_ARB_bindless_texture = GL_FALSE;
+GLboolean __GLEW_ARB_blend_func_extended = GL_FALSE;
+GLboolean __GLEW_ARB_buffer_storage = GL_FALSE;
+GLboolean __GLEW_ARB_cl_event = GL_FALSE;
+GLboolean __GLEW_ARB_clear_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_clear_texture = GL_FALSE;
+GLboolean __GLEW_ARB_clip_control = GL_FALSE;
+GLboolean __GLEW_ARB_color_buffer_float = GL_FALSE;
+GLboolean __GLEW_ARB_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_compressed_texture_pixel_storage = GL_FALSE;
+GLboolean __GLEW_ARB_compute_shader = GL_FALSE;
+GLboolean __GLEW_ARB_compute_variable_group_size = GL_FALSE;
+GLboolean __GLEW_ARB_conditional_render_inverted = GL_FALSE;
+GLboolean __GLEW_ARB_conservative_depth = GL_FALSE;
+GLboolean __GLEW_ARB_copy_buffer = GL_FALSE;
+GLboolean __GLEW_ARB_copy_image = GL_FALSE;
+GLboolean __GLEW_ARB_cull_distance = GL_FALSE;
+GLboolean __GLEW_ARB_debug_output = GL_FALSE;
+GLboolean __GLEW_ARB_depth_buffer_float = GL_FALSE;
+GLboolean __GLEW_ARB_depth_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_depth_texture = GL_FALSE;
+GLboolean __GLEW_ARB_derivative_control = GL_FALSE;
+GLboolean __GLEW_ARB_direct_state_access = GL_FALSE;
+GLboolean __GLEW_ARB_draw_buffers = GL_FALSE;
+GLboolean __GLEW_ARB_draw_buffers_blend = GL_FALSE;
+GLboolean __GLEW_ARB_draw_elements_base_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_draw_indirect = GL_FALSE;
+GLboolean __GLEW_ARB_draw_instanced = GL_FALSE;
+GLboolean __GLEW_ARB_enhanced_layouts = GL_FALSE;
+GLboolean __GLEW_ARB_explicit_attrib_location = GL_FALSE;
+GLboolean __GLEW_ARB_explicit_uniform_location = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_coord_conventions = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_layer_viewport = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_program = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_program_shadow = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_shader_interlock = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_no_attachments = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLEW_ARB_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_ARB_get_program_binary = GL_FALSE;
+GLboolean __GLEW_ARB_get_texture_sub_image = GL_FALSE;
+GLboolean __GLEW_ARB_gl_spirv = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader_fp64 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader_int64 = GL_FALSE;
+GLboolean __GLEW_ARB_half_float_pixel = GL_FALSE;
+GLboolean __GLEW_ARB_half_float_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_imaging = GL_FALSE;
+GLboolean __GLEW_ARB_indirect_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_ARB_internalformat_query = GL_FALSE;
+GLboolean __GLEW_ARB_internalformat_query2 = GL_FALSE;
+GLboolean __GLEW_ARB_invalidate_subdata = GL_FALSE;
+GLboolean __GLEW_ARB_map_buffer_alignment = GL_FALSE;
+GLboolean __GLEW_ARB_map_buffer_range = GL_FALSE;
+GLboolean __GLEW_ARB_matrix_palette = GL_FALSE;
+GLboolean __GLEW_ARB_multi_bind = GL_FALSE;
+GLboolean __GLEW_ARB_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_ARB_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_multitexture = GL_FALSE;
+GLboolean __GLEW_ARB_occlusion_query = GL_FALSE;
+GLboolean __GLEW_ARB_occlusion_query2 = GL_FALSE;
+GLboolean __GLEW_ARB_parallel_shader_compile = GL_FALSE;
+GLboolean __GLEW_ARB_pipeline_statistics_query = GL_FALSE;
+GLboolean __GLEW_ARB_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_point_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_point_sprite = GL_FALSE;
+GLboolean __GLEW_ARB_polygon_offset_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_post_depth_coverage = GL_FALSE;
+GLboolean __GLEW_ARB_program_interface_query = GL_FALSE;
+GLboolean __GLEW_ARB_provoking_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_query_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_robust_buffer_access_behavior = GL_FALSE;
+GLboolean __GLEW_ARB_robustness = GL_FALSE;
+GLboolean __GLEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __GLEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __GLEW_ARB_sample_locations = GL_FALSE;
+GLboolean __GLEW_ARB_sample_shading = GL_FALSE;
+GLboolean __GLEW_ARB_sampler_objects = GL_FALSE;
+GLboolean __GLEW_ARB_seamless_cube_map = GL_FALSE;
+GLboolean __GLEW_ARB_seamless_cubemap_per_texture = GL_FALSE;
+GLboolean __GLEW_ARB_separate_shader_objects = GL_FALSE;
+GLboolean __GLEW_ARB_shader_atomic_counter_ops = GL_FALSE;
+GLboolean __GLEW_ARB_shader_atomic_counters = GL_FALSE;
+GLboolean __GLEW_ARB_shader_ballot = GL_FALSE;
+GLboolean __GLEW_ARB_shader_bit_encoding = GL_FALSE;
+GLboolean __GLEW_ARB_shader_clock = GL_FALSE;
+GLboolean __GLEW_ARB_shader_draw_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_shader_group_vote = GL_FALSE;
+GLboolean __GLEW_ARB_shader_image_load_store = GL_FALSE;
+GLboolean __GLEW_ARB_shader_image_size = GL_FALSE;
+GLboolean __GLEW_ARB_shader_objects = GL_FALSE;
+GLboolean __GLEW_ARB_shader_precision = GL_FALSE;
+GLboolean __GLEW_ARB_shader_stencil_export = GL_FALSE;
+GLboolean __GLEW_ARB_shader_storage_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_shader_subroutine = GL_FALSE;
+GLboolean __GLEW_ARB_shader_texture_image_samples = GL_FALSE;
+GLboolean __GLEW_ARB_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_ARB_shader_viewport_layer_array = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_100 = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_420pack = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_include = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_packing = GL_FALSE;
+GLboolean __GLEW_ARB_shadow = GL_FALSE;
+GLboolean __GLEW_ARB_shadow_ambient = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_buffer = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture2 = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_spirv_extensions = GL_FALSE;
+GLboolean __GLEW_ARB_stencil_texturing = GL_FALSE;
+GLboolean __GLEW_ARB_sync = GL_FALSE;
+GLboolean __GLEW_ARB_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_ARB_texture_barrier = GL_FALSE;
+GLboolean __GLEW_ARB_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_object_rgb32 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_range = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression_bptc = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression_rgtc = GL_FALSE;
+GLboolean __GLEW_ARB_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_ARB_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_add = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_combine = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_crossbar = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_dot3 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_filter_anisotropic = GL_FALSE;
+GLboolean __GLEW_ARB_texture_filter_minmax = GL_FALSE;
+GLboolean __GLEW_ARB_texture_float = GL_FALSE;
+GLboolean __GLEW_ARB_texture_gather = GL_FALSE;
+GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge = GL_FALSE;
+GLboolean __GLEW_ARB_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_ARB_texture_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_texture_non_power_of_two = GL_FALSE;
+GLboolean __GLEW_ARB_texture_query_levels = GL_FALSE;
+GLboolean __GLEW_ARB_texture_query_lod = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rg = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rgb10_a2ui = GL_FALSE;
+GLboolean __GLEW_ARB_texture_stencil8 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_storage = GL_FALSE;
+GLboolean __GLEW_ARB_texture_storage_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_texture_swizzle = GL_FALSE;
+GLboolean __GLEW_ARB_texture_view = GL_FALSE;
+GLboolean __GLEW_ARB_timer_query = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback2 = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback3 = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback_instanced = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback_overflow_query = GL_FALSE;
+GLboolean __GLEW_ARB_transpose_matrix = GL_FALSE;
+GLboolean __GLEW_ARB_uniform_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_array_bgra = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_attrib_64bit = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_attrib_binding = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_blend = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_program = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_shader = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev = GL_FALSE;
+GLboolean __GLEW_ARB_viewport_array = GL_FALSE;
+GLboolean __GLEW_ARB_window_pos = GL_FALSE;
+GLboolean __GLEW_ARM_mali_program_binary = GL_FALSE;
+GLboolean __GLEW_ARM_mali_shader_binary = GL_FALSE;
+GLboolean __GLEW_ARM_rgba8 = GL_FALSE;
+GLboolean __GLEW_ARM_shader_framebuffer_fetch = GL_FALSE;
+GLboolean __GLEW_ARM_shader_framebuffer_fetch_depth_stencil = GL_FALSE;
+GLboolean __GLEW_ARM_texture_unnormalized_coordinates = GL_FALSE;
+GLboolean __GLEW_ATIX_point_sprites = GL_FALSE;
+GLboolean __GLEW_ATIX_texture_env_combine3 = GL_FALSE;
+GLboolean __GLEW_ATIX_texture_env_route = GL_FALSE;
+GLboolean __GLEW_ATIX_vertex_shader_output_point_size = GL_FALSE;
+GLboolean __GLEW_ATI_draw_buffers = GL_FALSE;
+GLboolean __GLEW_ATI_element_array = GL_FALSE;
+GLboolean __GLEW_ATI_envmap_bumpmap = GL_FALSE;
+GLboolean __GLEW_ATI_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ATI_map_object_buffer = GL_FALSE;
+GLboolean __GLEW_ATI_meminfo = GL_FALSE;
+GLboolean __GLEW_ATI_pn_triangles = GL_FALSE;
+GLboolean __GLEW_ATI_separate_stencil = GL_FALSE;
+GLboolean __GLEW_ATI_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_ATI_text_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ATI_texture_compression_3dc = GL_FALSE;
+GLboolean __GLEW_ATI_texture_env_combine3 = GL_FALSE;
+GLboolean __GLEW_ATI_texture_float = GL_FALSE;
+GLboolean __GLEW_ATI_texture_mirror_once = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_attrib_array_object = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_streams = GL_FALSE;
+GLboolean __GLEW_DMP_program_binary = GL_FALSE;
+GLboolean __GLEW_DMP_shader_binary = GL_FALSE;
+GLboolean __GLEW_EXT_422_pixels = GL_FALSE;
+GLboolean __GLEW_EXT_Cg_shader = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_array = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_external_wrap_modes = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_storage = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_storage_compression = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_sync = GL_FALSE;
+GLboolean __GLEW_EXT_YUV_target = GL_FALSE;
+GLboolean __GLEW_EXT_abgr = GL_FALSE;
+GLboolean __GLEW_EXT_base_instance = GL_FALSE;
+GLboolean __GLEW_EXT_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_bindable_uniform = GL_FALSE;
+GLboolean __GLEW_EXT_blend_color = GL_FALSE;
+GLboolean __GLEW_EXT_blend_equation_separate = GL_FALSE;
+GLboolean __GLEW_EXT_blend_func_extended = GL_FALSE;
+GLboolean __GLEW_EXT_blend_func_separate = GL_FALSE;
+GLboolean __GLEW_EXT_blend_logic_op = GL_FALSE;
+GLboolean __GLEW_EXT_blend_minmax = GL_FALSE;
+GLboolean __GLEW_EXT_blend_subtract = GL_FALSE;
+GLboolean __GLEW_EXT_buffer_storage = GL_FALSE;
+GLboolean __GLEW_EXT_clear_texture = GL_FALSE;
+GLboolean __GLEW_EXT_clip_control = GL_FALSE;
+GLboolean __GLEW_EXT_clip_cull_distance = GL_FALSE;
+GLboolean __GLEW_EXT_clip_volume_hint = GL_FALSE;
+GLboolean __GLEW_EXT_cmyka = GL_FALSE;
+GLboolean __GLEW_EXT_color_buffer_float = GL_FALSE;
+GLboolean __GLEW_EXT_color_buffer_half_float = GL_FALSE;
+GLboolean __GLEW_EXT_color_subtable = GL_FALSE;
+GLboolean __GLEW_EXT_compiled_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_compressed_ETC1_RGB8_sub_texture = GL_FALSE;
+GLboolean __GLEW_EXT_conservative_depth = GL_FALSE;
+GLboolean __GLEW_EXT_convolution = GL_FALSE;
+GLboolean __GLEW_EXT_coordinate_frame = GL_FALSE;
+GLboolean __GLEW_EXT_copy_image = GL_FALSE;
+GLboolean __GLEW_EXT_copy_texture = GL_FALSE;
+GLboolean __GLEW_EXT_cull_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_debug_label = GL_FALSE;
+GLboolean __GLEW_EXT_debug_marker = GL_FALSE;
+GLboolean __GLEW_EXT_depth_bounds_test = GL_FALSE;
+GLboolean __GLEW_EXT_depth_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_direct_state_access = GL_FALSE;
+GLboolean __GLEW_EXT_discard_framebuffer = GL_FALSE;
+GLboolean __GLEW_EXT_disjoint_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers2 = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers_indexed = GL_FALSE;
+GLboolean __GLEW_EXT_draw_elements_base_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_draw_instanced = GL_FALSE;
+GLboolean __GLEW_EXT_draw_range_elements = GL_FALSE;
+GLboolean __GLEW_EXT_draw_transform_feedback = GL_FALSE;
+GLboolean __GLEW_EXT_external_buffer = GL_FALSE;
+GLboolean __GLEW_EXT_float_blend = GL_FALSE;
+GLboolean __GLEW_EXT_fog_coord = GL_FALSE;
+GLboolean __GLEW_EXT_frag_depth = GL_FALSE;
+GLboolean __GLEW_EXT_fragment_lighting = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_point_size = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_shader = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_program_parameters = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_shader4 = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_EXT_histogram = GL_FALSE;
+GLboolean __GLEW_EXT_index_array_formats = GL_FALSE;
+GLboolean __GLEW_EXT_index_func = GL_FALSE;
+GLboolean __GLEW_EXT_index_material = GL_FALSE;
+GLboolean __GLEW_EXT_index_texture = GL_FALSE;
+GLboolean __GLEW_EXT_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_EXT_light_texture = GL_FALSE;
+GLboolean __GLEW_EXT_map_buffer_range = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object_fd = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object_win32 = GL_FALSE;
+GLboolean __GLEW_EXT_misc_attribute = GL_FALSE;
+GLboolean __GLEW_EXT_multi_draw_arrays = GL_FALSE;
+GLboolean __GLEW_EXT_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_EXT_multiple_textures = GL_FALSE;
+GLboolean __GLEW_EXT_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_multisample_compatibility = GL_FALSE;
+GLboolean __GLEW_EXT_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_EXT_multisampled_render_to_texture2 = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_draw_buffers = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_tessellation_geometry_shader = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_texture_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_occlusion_query_boolean = GL_FALSE;
+GLboolean __GLEW_EXT_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_EXT_packed_float = GL_FALSE;
+GLboolean __GLEW_EXT_packed_pixels = GL_FALSE;
+GLboolean __GLEW_EXT_paletted_texture = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_transform = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_transform_color_table = GL_FALSE;
+GLboolean __GLEW_EXT_point_parameters = GL_FALSE;
+GLboolean __GLEW_EXT_polygon_offset = GL_FALSE;
+GLboolean __GLEW_EXT_polygon_offset_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_post_depth_coverage = GL_FALSE;
+GLboolean __GLEW_EXT_primitive_bounding_box = GL_FALSE;
+GLboolean __GLEW_EXT_protected_textures = GL_FALSE;
+GLboolean __GLEW_EXT_provoking_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_pvrtc_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_raster_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_read_format_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_render_snorm = GL_FALSE;
+GLboolean __GLEW_EXT_rescale_normal = GL_FALSE;
+GLboolean __GLEW_EXT_robustness = GL_FALSE;
+GLboolean __GLEW_EXT_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_sRGB_write_control = GL_FALSE;
+GLboolean __GLEW_EXT_scene_marker = GL_FALSE;
+GLboolean __GLEW_EXT_secondary_color = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore_fd = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore_win32 = GL_FALSE;
+GLboolean __GLEW_EXT_separate_depth_stencil = GL_FALSE;
+GLboolean __GLEW_EXT_separate_shader_objects = GL_FALSE;
+GLboolean __GLEW_EXT_separate_specular_color = GL_FALSE;
+GLboolean __GLEW_EXT_shader_framebuffer_fetch = GL_FALSE;
+GLboolean __GLEW_EXT_shader_framebuffer_fetch_non_coherent = GL_FALSE;
+GLboolean __GLEW_EXT_shader_group_vote = GL_FALSE;
+GLboolean __GLEW_EXT_shader_image_load_formatted = GL_FALSE;
+GLboolean __GLEW_EXT_shader_image_load_store = GL_FALSE;
+GLboolean __GLEW_EXT_shader_implicit_conversions = GL_FALSE;
+GLboolean __GLEW_EXT_shader_integer_mix = GL_FALSE;
+GLboolean __GLEW_EXT_shader_io_blocks = GL_FALSE;
+GLboolean __GLEW_EXT_shader_non_constant_global_initializers = GL_FALSE;
+GLboolean __GLEW_EXT_shader_pixel_local_storage = GL_FALSE;
+GLboolean __GLEW_EXT_shader_pixel_local_storage2 = GL_FALSE;
+GLboolean __GLEW_EXT_shader_samples_identical = GL_FALSE;
+GLboolean __GLEW_EXT_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_EXT_shadow_funcs = GL_FALSE;
+GLboolean __GLEW_EXT_shadow_samplers = GL_FALSE;
+GLboolean __GLEW_EXT_shared_texture_palette = GL_FALSE;
+GLboolean __GLEW_EXT_sparse_texture = GL_FALSE;
+GLboolean __GLEW_EXT_sparse_texture2 = GL_FALSE;
+GLboolean __GLEW_EXT_static_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_clear_tag = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_two_side = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_wrap = GL_FALSE;
+GLboolean __GLEW_EXT_subtexture = GL_FALSE;
+GLboolean __GLEW_EXT_tessellation_point_size = GL_FALSE;
+GLboolean __GLEW_EXT_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_EXT_texture = GL_FALSE;
+GLboolean __GLEW_EXT_texture3D = GL_FALSE;
+GLboolean __GLEW_EXT_texture_array = GL_FALSE;
+GLboolean __GLEW_EXT_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_buffer = GL_FALSE;
+GLboolean __GLEW_EXT_texture_buffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_astc_decode_mode = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_bptc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_dxt1 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_latc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_rgtc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_s3tc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_s3tc_srgb = GL_FALSE;
+GLboolean __GLEW_EXT_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_EXT_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_EXT_texture_edge_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_add = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_combine = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_dot3 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_filter_anisotropic = GL_FALSE;
+GLboolean __GLEW_EXT_texture_filter_minmax = GL_FALSE;
+GLboolean __GLEW_EXT_texture_format_BGRA8888 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_format_sRGB_override = GL_FALSE;
+GLboolean __GLEW_EXT_texture_integer = GL_FALSE;
+GLboolean __GLEW_EXT_texture_lod_bias = GL_FALSE;
+GLboolean __GLEW_EXT_texture_mirror_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_mirror_clamp_to_edge = GL_FALSE;
+GLboolean __GLEW_EXT_texture_norm16 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_object = GL_FALSE;
+GLboolean __GLEW_EXT_texture_perturb_normal = GL_FALSE;
+GLboolean __GLEW_EXT_texture_query_lod = GL_FALSE;
+GLboolean __GLEW_EXT_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_EXT_texture_rg = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_R8 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_RG8 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_decode = GL_FALSE;
+GLboolean __GLEW_EXT_texture_shadow_lod = GL_FALSE;
+GLboolean __GLEW_EXT_texture_shared_exponent = GL_FALSE;
+GLboolean __GLEW_EXT_texture_snorm = GL_FALSE;
+GLboolean __GLEW_EXT_texture_storage = GL_FALSE;
+GLboolean __GLEW_EXT_texture_storage_compression = GL_FALSE;
+GLboolean __GLEW_EXT_texture_swizzle = GL_FALSE;
+GLboolean __GLEW_EXT_texture_type_2_10_10_10_REV = GL_FALSE;
+GLboolean __GLEW_EXT_texture_view = GL_FALSE;
+GLboolean __GLEW_EXT_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_transform_feedback = GL_FALSE;
+GLboolean __GLEW_EXT_unpack_subimage = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array_setXXX = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_attrib_64bit = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_shader = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_weighting = GL_FALSE;
+GLboolean __GLEW_EXT_win32_keyed_mutex = GL_FALSE;
+GLboolean __GLEW_EXT_window_rectangles = GL_FALSE;
+GLboolean __GLEW_EXT_x11_sync_object = GL_FALSE;
+GLboolean __GLEW_FJ_shader_binary_GCCSO = GL_FALSE;
+GLboolean __GLEW_GREMEDY_frame_terminator = GL_FALSE;
+GLboolean __GLEW_GREMEDY_string_marker = GL_FALSE;
+GLboolean __GLEW_HP_convolution_border_modes = GL_FALSE;
+GLboolean __GLEW_HP_image_transform = GL_FALSE;
+GLboolean __GLEW_HP_occlusion_test = GL_FALSE;
+GLboolean __GLEW_HP_texture_lighting = GL_FALSE;
+GLboolean __GLEW_IBM_cull_vertex = GL_FALSE;
+GLboolean __GLEW_IBM_multimode_draw_arrays = GL_FALSE;
+GLboolean __GLEW_IBM_rasterpos_clip = GL_FALSE;
+GLboolean __GLEW_IBM_static_data = GL_FALSE;
+GLboolean __GLEW_IBM_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_IBM_vertex_array_lists = GL_FALSE;
+GLboolean __GLEW_IMG_bindless_texture = GL_FALSE;
+GLboolean __GLEW_IMG_framebuffer_downsample = GL_FALSE;
+GLboolean __GLEW_IMG_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_IMG_program_binary = GL_FALSE;
+GLboolean __GLEW_IMG_read_format = GL_FALSE;
+GLboolean __GLEW_IMG_shader_binary = GL_FALSE;
+GLboolean __GLEW_IMG_texture_compression_pvrtc = GL_FALSE;
+GLboolean __GLEW_IMG_texture_compression_pvrtc2 = GL_FALSE;
+GLboolean __GLEW_IMG_texture_env_enhanced_fixed_function = GL_FALSE;
+GLboolean __GLEW_IMG_texture_filter_cubic = GL_FALSE;
+GLboolean __GLEW_IMG_tile_region_protection = GL_FALSE;
+GLboolean __GLEW_INGR_color_clamp = GL_FALSE;
+GLboolean __GLEW_INGR_interlace_read = GL_FALSE;
+GLboolean __GLEW_INTEL_blackhole_render = GL_FALSE;
+GLboolean __GLEW_INTEL_conservative_rasterization = GL_FALSE;
+GLboolean __GLEW_INTEL_fragment_shader_ordering = GL_FALSE;
+GLboolean __GLEW_INTEL_framebuffer_CMAA = GL_FALSE;
+GLboolean __GLEW_INTEL_map_texture = GL_FALSE;
+GLboolean __GLEW_INTEL_parallel_arrays = GL_FALSE;
+GLboolean __GLEW_INTEL_performance_query = GL_FALSE;
+GLboolean __GLEW_INTEL_shader_integer_functions2 = GL_FALSE;
+GLboolean __GLEW_INTEL_texture_scissor = GL_FALSE;
+GLboolean __GLEW_KHR_blend_equation_advanced = GL_FALSE;
+GLboolean __GLEW_KHR_blend_equation_advanced_coherent = GL_FALSE;
+GLboolean __GLEW_KHR_context_flush_control = GL_FALSE;
+GLboolean __GLEW_KHR_debug = GL_FALSE;
+GLboolean __GLEW_KHR_no_error = GL_FALSE;
+GLboolean __GLEW_KHR_parallel_shader_compile = GL_FALSE;
+GLboolean __GLEW_KHR_robust_buffer_access_behavior = GL_FALSE;
+GLboolean __GLEW_KHR_robustness = GL_FALSE;
+GLboolean __GLEW_KHR_shader_subgroup = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_hdr = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_ldr = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_sliced_3d = GL_FALSE;
+GLboolean __GLEW_KTX_buffer_region = GL_FALSE;
+GLboolean __GLEW_MESAX_texture_stack = GL_FALSE;
+GLboolean __GLEW_MESA_bgra = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_flip_x = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_flip_y = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_swap_xy = GL_FALSE;
+GLboolean __GLEW_MESA_pack_invert = GL_FALSE;
+GLboolean __GLEW_MESA_program_binary_formats = GL_FALSE;
+GLboolean __GLEW_MESA_resize_buffers = GL_FALSE;
+GLboolean __GLEW_MESA_shader_integer_functions = GL_FALSE;
+GLboolean __GLEW_MESA_tile_raster_order = GL_FALSE;
+GLboolean __GLEW_MESA_window_pos = GL_FALSE;
+GLboolean __GLEW_MESA_ycbcr_texture = GL_FALSE;
+GLboolean __GLEW_NVX_blend_equation_advanced_multi_draw_buffers = GL_FALSE;
+GLboolean __GLEW_NVX_conditional_render = GL_FALSE;
+GLboolean __GLEW_NVX_gpu_memory_info = GL_FALSE;
+GLboolean __GLEW_NVX_gpu_multicast2 = GL_FALSE;
+GLboolean __GLEW_NVX_linked_gpu_multicast = GL_FALSE;
+GLboolean __GLEW_NVX_progress_fence = GL_FALSE;
+GLboolean __GLEW_NV_3dvision_settings = GL_FALSE;
+GLboolean __GLEW_NV_EGL_stream_consumer_external = GL_FALSE;
+GLboolean __GLEW_NV_alpha_to_coverage_dither_control = GL_FALSE;
+GLboolean __GLEW_NV_bgr = GL_FALSE;
+GLboolean __GLEW_NV_bindless_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_NV_bindless_multi_draw_indirect_count = GL_FALSE;
+GLboolean __GLEW_NV_bindless_texture = GL_FALSE;
+GLboolean __GLEW_NV_blend_equation_advanced = GL_FALSE;
+GLboolean __GLEW_NV_blend_equation_advanced_coherent = GL_FALSE;
+GLboolean __GLEW_NV_blend_minmax_factor = GL_FALSE;
+GLboolean __GLEW_NV_blend_square = GL_FALSE;
+GLboolean __GLEW_NV_clip_space_w_scaling = GL_FALSE;
+GLboolean __GLEW_NV_command_list = GL_FALSE;
+GLboolean __GLEW_NV_compute_program5 = GL_FALSE;
+GLboolean __GLEW_NV_compute_shader_derivatives = GL_FALSE;
+GLboolean __GLEW_NV_conditional_render = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_dilate = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_pre_snap = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_pre_snap_triangles = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_underestimation = GL_FALSE;
+GLboolean __GLEW_NV_copy_buffer = GL_FALSE;
+GLboolean __GLEW_NV_copy_depth_to_color = GL_FALSE;
+GLboolean __GLEW_NV_copy_image = GL_FALSE;
+GLboolean __GLEW_NV_deep_texture3D = GL_FALSE;
+GLboolean __GLEW_NV_depth_buffer_float = GL_FALSE;
+GLboolean __GLEW_NV_depth_clamp = GL_FALSE;
+GLboolean __GLEW_NV_depth_nonlinear = GL_FALSE;
+GLboolean __GLEW_NV_depth_range_unclamped = GL_FALSE;
+GLboolean __GLEW_NV_draw_buffers = GL_FALSE;
+GLboolean __GLEW_NV_draw_instanced = GL_FALSE;
+GLboolean __GLEW_NV_draw_texture = GL_FALSE;
+GLboolean __GLEW_NV_draw_vulkan_image = GL_FALSE;
+GLboolean __GLEW_NV_evaluators = GL_FALSE;
+GLboolean __GLEW_NV_explicit_attrib_location = GL_FALSE;
+GLboolean __GLEW_NV_explicit_multisample = GL_FALSE;
+GLboolean __GLEW_NV_fbo_color_attachments = GL_FALSE;
+GLboolean __GLEW_NV_fence = GL_FALSE;
+GLboolean __GLEW_NV_fill_rectangle = GL_FALSE;
+GLboolean __GLEW_NV_float_buffer = GL_FALSE;
+GLboolean __GLEW_NV_fog_distance = GL_FALSE;
+GLboolean __GLEW_NV_fragment_coverage_to_color = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program2 = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program4 = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program_option = GL_FALSE;
+GLboolean __GLEW_NV_fragment_shader_barycentric = GL_FALSE;
+GLboolean __GLEW_NV_fragment_shader_interlock = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_mixed_samples = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_multisample_coverage = GL_FALSE;
+GLboolean __GLEW_NV_generate_mipmap_sRGB = GL_FALSE;
+GLboolean __GLEW_NV_geometry_program4 = GL_FALSE;
+GLboolean __GLEW_NV_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_NV_geometry_shader_passthrough = GL_FALSE;
+GLboolean __GLEW_NV_gpu_multicast = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program4 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program5 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program5_mem_extended = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program_fp64 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_NV_half_float = GL_FALSE;
+GLboolean __GLEW_NV_image_formats = GL_FALSE;
+GLboolean __GLEW_NV_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_NV_internalformat_sample_query = GL_FALSE;
+GLboolean __GLEW_NV_light_max_exponent = GL_FALSE;
+GLboolean __GLEW_NV_memory_attachment = GL_FALSE;
+GLboolean __GLEW_NV_memory_object_sparse = GL_FALSE;
+GLboolean __GLEW_NV_mesh_shader = GL_FALSE;
+GLboolean __GLEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __GLEW_NV_multisample_filter_hint = GL_FALSE;
+GLboolean __GLEW_NV_non_square_matrices = GL_FALSE;
+GLboolean __GLEW_NV_occlusion_query = GL_FALSE;
+GLboolean __GLEW_NV_pack_subimage = GL_FALSE;
+GLboolean __GLEW_NV_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_NV_packed_float = GL_FALSE;
+GLboolean __GLEW_NV_packed_float_linear = GL_FALSE;
+GLboolean __GLEW_NV_parameter_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_parameter_buffer_object2 = GL_FALSE;
+GLboolean __GLEW_NV_path_rendering = GL_FALSE;
+GLboolean __GLEW_NV_path_rendering_shared_edge = GL_FALSE;
+GLboolean __GLEW_NV_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_pixel_data_range = GL_FALSE;
+GLboolean __GLEW_NV_platform_binary = GL_FALSE;
+GLboolean __GLEW_NV_point_sprite = GL_FALSE;
+GLboolean __GLEW_NV_polygon_mode = GL_FALSE;
+GLboolean __GLEW_NV_present_video = GL_FALSE;
+GLboolean __GLEW_NV_primitive_restart = GL_FALSE;
+GLboolean __GLEW_NV_primitive_shading_rate = GL_FALSE;
+GLboolean __GLEW_NV_query_resource_tag = GL_FALSE;
+GLboolean __GLEW_NV_read_buffer = GL_FALSE;
+GLboolean __GLEW_NV_read_buffer_front = GL_FALSE;
+GLboolean __GLEW_NV_read_depth = GL_FALSE;
+GLboolean __GLEW_NV_read_depth_stencil = GL_FALSE;
+GLboolean __GLEW_NV_read_stencil = GL_FALSE;
+GLboolean __GLEW_NV_register_combiners = GL_FALSE;
+GLboolean __GLEW_NV_register_combiners2 = GL_FALSE;
+GLboolean __GLEW_NV_representative_fragment_test = GL_FALSE;
+GLboolean __GLEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __GLEW_NV_sRGB_formats = GL_FALSE;
+GLboolean __GLEW_NV_sample_locations = GL_FALSE;
+GLboolean __GLEW_NV_sample_mask_override_coverage = GL_FALSE;
+GLboolean __GLEW_NV_scissor_exclusive = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_counters = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_float = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_float64 = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_fp16_vector = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_int64 = GL_FALSE;
+GLboolean __GLEW_NV_shader_buffer_load = GL_FALSE;
+GLboolean __GLEW_NV_shader_noperspective_interpolation = GL_FALSE;
+GLboolean __GLEW_NV_shader_storage_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_shader_subgroup_partitioned = GL_FALSE;
+GLboolean __GLEW_NV_shader_texture_footprint = GL_FALSE;
+GLboolean __GLEW_NV_shader_thread_group = GL_FALSE;
+GLboolean __GLEW_NV_shader_thread_shuffle = GL_FALSE;
+GLboolean __GLEW_NV_shading_rate_image = GL_FALSE;
+GLboolean __GLEW_NV_shadow_samplers_array = GL_FALSE;
+GLboolean __GLEW_NV_shadow_samplers_cube = GL_FALSE;
+GLboolean __GLEW_NV_stereo_view_rendering = GL_FALSE;
+GLboolean __GLEW_NV_tessellation_program5 = GL_FALSE;
+GLboolean __GLEW_NV_texgen_emboss = GL_FALSE;
+GLboolean __GLEW_NV_texgen_reflection = GL_FALSE;
+GLboolean __GLEW_NV_texture_array = GL_FALSE;
+GLboolean __GLEW_NV_texture_barrier = GL_FALSE;
+GLboolean __GLEW_NV_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_latc = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_s3tc = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_s3tc_update = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_vtc = GL_FALSE;
+GLboolean __GLEW_NV_texture_env_combine4 = GL_FALSE;
+GLboolean __GLEW_NV_texture_expand_normal = GL_FALSE;
+GLboolean __GLEW_NV_texture_multisample = GL_FALSE;
+GLboolean __GLEW_NV_texture_npot_2D_mipmap = GL_FALSE;
+GLboolean __GLEW_NV_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_NV_texture_rectangle_compressed = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader2 = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader3 = GL_FALSE;
+GLboolean __GLEW_NV_timeline_semaphore = GL_FALSE;
+GLboolean __GLEW_NV_transform_feedback = GL_FALSE;
+GLboolean __GLEW_NV_transform_feedback2 = GL_FALSE;
+GLboolean __GLEW_NV_uniform_buffer_unified_memory = GL_FALSE;
+GLboolean __GLEW_NV_vdpau_interop = GL_FALSE;
+GLboolean __GLEW_NV_vdpau_interop2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __GLEW_NV_vertex_array_range2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_attrib_integer_64bit = GL_FALSE;
+GLboolean __GLEW_NV_vertex_buffer_unified_memory = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program1_1 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program2_option = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program3 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program4 = GL_FALSE;
+GLboolean __GLEW_NV_video_capture = GL_FALSE;
+GLboolean __GLEW_NV_viewport_array = GL_FALSE;
+GLboolean __GLEW_NV_viewport_array2 = GL_FALSE;
+GLboolean __GLEW_NV_viewport_swizzle = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image_external = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image_external_essl3 = GL_FALSE;
+GLboolean __GLEW_OES_blend_equation_separate = GL_FALSE;
+GLboolean __GLEW_OES_blend_func_separate = GL_FALSE;
+GLboolean __GLEW_OES_blend_subtract = GL_FALSE;
+GLboolean __GLEW_OES_byte_coordinates = GL_FALSE;
+GLboolean __GLEW_OES_compressed_ETC1_RGB8_texture = GL_FALSE;
+GLboolean __GLEW_OES_compressed_paletted_texture = GL_FALSE;
+GLboolean __GLEW_OES_copy_image = GL_FALSE;
+GLboolean __GLEW_OES_depth24 = GL_FALSE;
+GLboolean __GLEW_OES_depth32 = GL_FALSE;
+GLboolean __GLEW_OES_depth_texture = GL_FALSE;
+GLboolean __GLEW_OES_depth_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_OES_draw_buffers_indexed = GL_FALSE;
+GLboolean __GLEW_OES_draw_texture = GL_FALSE;
+GLboolean __GLEW_OES_element_index_uint = GL_FALSE;
+GLboolean __GLEW_OES_extended_matrix_palette = GL_FALSE;
+GLboolean __GLEW_OES_fbo_render_mipmap = GL_FALSE;
+GLboolean __GLEW_OES_fragment_precision_high = GL_FALSE;
+GLboolean __GLEW_OES_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_OES_geometry_point_size = GL_FALSE;
+GLboolean __GLEW_OES_geometry_shader = GL_FALSE;
+GLboolean __GLEW_OES_get_program_binary = GL_FALSE;
+GLboolean __GLEW_OES_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_OES_mapbuffer = GL_FALSE;
+GLboolean __GLEW_OES_matrix_get = GL_FALSE;
+GLboolean __GLEW_OES_matrix_palette = GL_FALSE;
+GLboolean __GLEW_OES_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_OES_point_size_array = GL_FALSE;
+GLboolean __GLEW_OES_point_sprite = GL_FALSE;
+GLboolean __GLEW_OES_read_format = GL_FALSE;
+GLboolean __GLEW_OES_required_internalformat = GL_FALSE;
+GLboolean __GLEW_OES_rgb8_rgba8 = GL_FALSE;
+GLboolean __GLEW_OES_sample_shading = GL_FALSE;
+GLboolean __GLEW_OES_sample_variables = GL_FALSE;
+GLboolean __GLEW_OES_shader_image_atomic = GL_FALSE;
+GLboolean __GLEW_OES_shader_io_blocks = GL_FALSE;
+GLboolean __GLEW_OES_shader_multisample_interpolation = GL_FALSE;
+GLboolean __GLEW_OES_single_precision = GL_FALSE;
+GLboolean __GLEW_OES_standard_derivatives = GL_FALSE;
+GLboolean __GLEW_OES_stencil1 = GL_FALSE;
+GLboolean __GLEW_OES_stencil4 = GL_FALSE;
+GLboolean __GLEW_OES_stencil8 = GL_FALSE;
+GLboolean __GLEW_OES_surfaceless_context = GL_FALSE;
+GLboolean __GLEW_OES_tessellation_point_size = GL_FALSE;
+GLboolean __GLEW_OES_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_OES_texture_3D = GL_FALSE;
+GLboolean __GLEW_OES_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_OES_texture_buffer = GL_FALSE;
+GLboolean __GLEW_OES_texture_compression_astc = GL_FALSE;
+GLboolean __GLEW_OES_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_OES_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_OES_texture_env_crossbar = GL_FALSE;
+GLboolean __GLEW_OES_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_OES_texture_npot = GL_FALSE;
+GLboolean __GLEW_OES_texture_stencil8 = GL_FALSE;
+GLboolean __GLEW_OES_texture_storage_multisample_2d_array = GL_FALSE;
+GLboolean __GLEW_OES_texture_view = GL_FALSE;
+GLboolean __GLEW_OES_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_OES_vertex_half_float = GL_FALSE;
+GLboolean __GLEW_OES_vertex_type_10_10_10_2 = GL_FALSE;
+GLboolean __GLEW_OML_interlace = GL_FALSE;
+GLboolean __GLEW_OML_resample = GL_FALSE;
+GLboolean __GLEW_OML_subsample = GL_FALSE;
+GLboolean __GLEW_OVR_multiview = GL_FALSE;
+GLboolean __GLEW_OVR_multiview2 = GL_FALSE;
+GLboolean __GLEW_OVR_multiview_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_PGI_misc_hints = GL_FALSE;
+GLboolean __GLEW_PGI_vertex_hints = GL_FALSE;
+GLboolean __GLEW_QCOM_YUV_texture_gather = GL_FALSE;
+GLboolean __GLEW_QCOM_alpha_test = GL_FALSE;
+GLboolean __GLEW_QCOM_binning_control = GL_FALSE;
+GLboolean __GLEW_QCOM_driver_control = GL_FALSE;
+GLboolean __GLEW_QCOM_extended_get = GL_FALSE;
+GLboolean __GLEW_QCOM_extended_get2 = GL_FALSE;
+GLboolean __GLEW_QCOM_frame_extrapolation = GL_FALSE;
+GLboolean __GLEW_QCOM_framebuffer_foveated = GL_FALSE;
+GLboolean __GLEW_QCOM_motion_estimation = GL_FALSE;
+GLboolean __GLEW_QCOM_perfmon_global_mode = GL_FALSE;
+GLboolean __GLEW_QCOM_render_shared_exponent = GL_FALSE;
+GLboolean __GLEW_QCOM_shader_framebuffer_fetch_noncoherent = GL_FALSE;
+GLboolean __GLEW_QCOM_shader_framebuffer_fetch_rate = GL_FALSE;
+GLboolean __GLEW_QCOM_shading_rate = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated2 = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated_subsampled_layout = GL_FALSE;
+GLboolean __GLEW_QCOM_tiled_rendering = GL_FALSE;
+GLboolean __GLEW_QCOM_writeonly_rendering = GL_FALSE;
+GLboolean __GLEW_REGAL_ES1_0_compatibility = GL_FALSE;
+GLboolean __GLEW_REGAL_ES1_1_compatibility = GL_FALSE;
+GLboolean __GLEW_REGAL_enable = GL_FALSE;
+GLboolean __GLEW_REGAL_error_string = GL_FALSE;
+GLboolean __GLEW_REGAL_extension_query = GL_FALSE;
+GLboolean __GLEW_REGAL_log = GL_FALSE;
+GLboolean __GLEW_REGAL_proc_address = GL_FALSE;
+GLboolean __GLEW_REND_screen_coordinates = GL_FALSE;
+GLboolean __GLEW_S3_s3tc = GL_FALSE;
+GLboolean __GLEW_SGIS_clip_band_hint = GL_FALSE;
+GLboolean __GLEW_SGIS_color_range = GL_FALSE;
+GLboolean __GLEW_SGIS_detail_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_fog_function = GL_FALSE;
+GLboolean __GLEW_SGIS_generate_mipmap = GL_FALSE;
+GLboolean __GLEW_SGIS_line_texgen = GL_FALSE;
+GLboolean __GLEW_SGIS_multisample = GL_FALSE;
+GLboolean __GLEW_SGIS_multitexture = GL_FALSE;
+GLboolean __GLEW_SGIS_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_point_line_texgen = GL_FALSE;
+GLboolean __GLEW_SGIS_shared_multisample = GL_FALSE;
+GLboolean __GLEW_SGIS_sharpen_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_texture4D = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_edge_clamp = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_filter4 = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_lod = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_select = GL_FALSE;
+GLboolean __GLEW_SGIX_async = GL_FALSE;
+GLboolean __GLEW_SGIX_async_histogram = GL_FALSE;
+GLboolean __GLEW_SGIX_async_pixel = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_g_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_r_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_timer_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_alpha_minmax = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_cadd = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_cmultiply = GL_FALSE;
+GLboolean __GLEW_SGIX_calligraphic_fragment = GL_FALSE;
+GLboolean __GLEW_SGIX_clipmap = GL_FALSE;
+GLboolean __GLEW_SGIX_color_matrix_accuracy = GL_FALSE;
+GLboolean __GLEW_SGIX_color_table_index_mode = GL_FALSE;
+GLboolean __GLEW_SGIX_complex_polar = GL_FALSE;
+GLboolean __GLEW_SGIX_convolution_accuracy = GL_FALSE;
+GLboolean __GLEW_SGIX_cube_map = GL_FALSE;
+GLboolean __GLEW_SGIX_cylinder_texgen = GL_FALSE;
+GLboolean __GLEW_SGIX_datapipe = GL_FALSE;
+GLboolean __GLEW_SGIX_decimation = GL_FALSE;
+GLboolean __GLEW_SGIX_depth_pass_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_depth_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_dvc = GL_FALSE;
+GLboolean __GLEW_SGIX_flush_raster = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_blend = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_factor_to_alpha = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_layers = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_offset = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_patchy = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_scale = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_fragment_lighting_space = GL_FALSE;
+GLboolean __GLEW_SGIX_fragment_specular_lighting = GL_FALSE;
+GLboolean __GLEW_SGIX_fragments_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_framezoom = GL_FALSE;
+GLboolean __GLEW_SGIX_icc_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_igloo_interface = GL_FALSE;
+GLboolean __GLEW_SGIX_image_compression = GL_FALSE;
+GLboolean __GLEW_SGIX_impact_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_instrument_error = GL_FALSE;
+GLboolean __GLEW_SGIX_interlace = GL_FALSE;
+GLboolean __GLEW_SGIX_ir_instrument1 = GL_FALSE;
+GLboolean __GLEW_SGIX_line_quality_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_list_priority = GL_FALSE;
+GLboolean __GLEW_SGIX_mpeg1 = GL_FALSE;
+GLboolean __GLEW_SGIX_mpeg2 = GL_FALSE;
+GLboolean __GLEW_SGIX_nonlinear_lighting_pervertex = GL_FALSE;
+GLboolean __GLEW_SGIX_nurbs_eval = GL_FALSE;
+GLboolean __GLEW_SGIX_occlusion_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_packed_6bytes = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture_bits = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture_lod = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_tiles = GL_FALSE;
+GLboolean __GLEW_SGIX_polynomial_ffd = GL_FALSE;
+GLboolean __GLEW_SGIX_quad_mesh = GL_FALSE;
+GLboolean __GLEW_SGIX_reference_plane = GL_FALSE;
+GLboolean __GLEW_SGIX_resample = GL_FALSE;
+GLboolean __GLEW_SGIX_scalebias_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_shadow = GL_FALSE;
+GLboolean __GLEW_SGIX_shadow_ambient = GL_FALSE;
+GLboolean __GLEW_SGIX_slim = GL_FALSE;
+GLboolean __GLEW_SGIX_spotlight_cutoff = GL_FALSE;
+GLboolean __GLEW_SGIX_sprite = GL_FALSE;
+GLboolean __GLEW_SGIX_subdiv_patch = GL_FALSE;
+GLboolean __GLEW_SGIX_subsample = GL_FALSE;
+GLboolean __GLEW_SGIX_tag_sample_buffer = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_add_env = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_coordinate_clamp = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_lod_bias = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_mipmap_anisotropic = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_multi_buffer = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_phase = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_range = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_scale_bias = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_supersample = GL_FALSE;
+GLboolean __GLEW_SGIX_vector_ops = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_preclip = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_preclip_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcb = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcb_subsample = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcba = GL_FALSE;
+GLboolean __GLEW_SGI_color_matrix = GL_FALSE;
+GLboolean __GLEW_SGI_color_table = GL_FALSE;
+GLboolean __GLEW_SGI_complex = GL_FALSE;
+GLboolean __GLEW_SGI_complex_type = GL_FALSE;
+GLboolean __GLEW_SGI_fft = GL_FALSE;
+GLboolean __GLEW_SGI_texture_color_table = GL_FALSE;
+GLboolean __GLEW_SUNX_constant_data = GL_FALSE;
+GLboolean __GLEW_SUN_convolution_border_modes = GL_FALSE;
+GLboolean __GLEW_SUN_global_alpha = GL_FALSE;
+GLboolean __GLEW_SUN_mesh_array = GL_FALSE;
+GLboolean __GLEW_SUN_read_video_pixels = GL_FALSE;
+GLboolean __GLEW_SUN_slice_accum = GL_FALSE;
+GLboolean __GLEW_SUN_triangle_list = GL_FALSE;
+GLboolean __GLEW_SUN_vertex = GL_FALSE;
+GLboolean __GLEW_VIV_shader_binary = GL_FALSE;
+GLboolean __GLEW_WIN_phong_shading = GL_FALSE;
+GLboolean __GLEW_WIN_scene_markerXXX = GL_FALSE;
+GLboolean __GLEW_WIN_specular_fog = GL_FALSE;
+GLboolean __GLEW_WIN_swap_hint = GL_FALSE;
+
+static const char * _glewExtensionLookup[] = {
+#ifdef GL_3DFX_multisample
+ "GL_3DFX_multisample",
+#endif
+#ifdef GL_3DFX_tbuffer
+ "GL_3DFX_tbuffer",
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ "GL_3DFX_texture_compression_FXT1",
+#endif
+#ifdef GL_AMD_blend_minmax_factor
+ "GL_AMD_blend_minmax_factor",
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ "GL_AMD_compressed_3DC_texture",
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ "GL_AMD_compressed_ATC_texture",
+#endif
+#ifdef GL_AMD_conservative_depth
+ "GL_AMD_conservative_depth",
+#endif
+#ifdef GL_AMD_debug_output
+ "GL_AMD_debug_output",
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ "GL_AMD_depth_clamp_separate",
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ "GL_AMD_draw_buffers_blend",
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ "GL_AMD_framebuffer_multisample_advanced",
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ "GL_AMD_framebuffer_sample_positions",
+#endif
+#ifdef GL_AMD_gcn_shader
+ "GL_AMD_gcn_shader",
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ "GL_AMD_gpu_shader_half_float",
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ "GL_AMD_gpu_shader_half_float_fetch",
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ "GL_AMD_gpu_shader_int16",
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ "GL_AMD_gpu_shader_int64",
+#endif
+#ifdef GL_AMD_interleaved_elements
+ "GL_AMD_interleaved_elements",
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ "GL_AMD_multi_draw_indirect",
+#endif
+#ifdef GL_AMD_name_gen_delete
+ "GL_AMD_name_gen_delete",
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ "GL_AMD_occlusion_query_event",
+#endif
+#ifdef GL_AMD_performance_monitor
+ "GL_AMD_performance_monitor",
+#endif
+#ifdef GL_AMD_pinned_memory
+ "GL_AMD_pinned_memory",
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ "GL_AMD_program_binary_Z400",
+#endif
+#ifdef GL_AMD_query_buffer_object
+ "GL_AMD_query_buffer_object",
+#endif
+#ifdef GL_AMD_sample_positions
+ "GL_AMD_sample_positions",
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ "GL_AMD_seamless_cubemap_per_texture",
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ "GL_AMD_shader_atomic_counter_ops",
+#endif
+#ifdef GL_AMD_shader_ballot
+ "GL_AMD_shader_ballot",
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ "GL_AMD_shader_explicit_vertex_parameter",
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ "GL_AMD_shader_image_load_store_lod",
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ "GL_AMD_shader_stencil_export",
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ "GL_AMD_shader_stencil_value_export",
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ "GL_AMD_shader_trinary_minmax",
+#endif
+#ifdef GL_AMD_sparse_texture
+ "GL_AMD_sparse_texture",
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ "GL_AMD_stencil_operation_extended",
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ "GL_AMD_texture_gather_bias_lod",
+#endif
+#ifdef GL_AMD_texture_texture4
+ "GL_AMD_texture_texture4",
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ "GL_AMD_transform_feedback3_lines_triangles",
+#endif
+#ifdef GL_AMD_transform_feedback4
+ "GL_AMD_transform_feedback4",
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ "GL_AMD_vertex_shader_layer",
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ "GL_AMD_vertex_shader_tessellator",
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ "GL_AMD_vertex_shader_viewport_index",
+#endif
+#ifdef GL_ANDROID_extension_pack_es31a
+ "GL_ANDROID_extension_pack_es31a",
+#endif
+#ifdef GL_ANGLE_depth_texture
+ "GL_ANGLE_depth_texture",
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ "GL_ANGLE_framebuffer_blit",
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ "GL_ANGLE_framebuffer_multisample",
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ "GL_ANGLE_instanced_arrays",
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ "GL_ANGLE_pack_reverse_row_order",
+#endif
+#ifdef GL_ANGLE_program_binary
+ "GL_ANGLE_program_binary",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ "GL_ANGLE_texture_compression_dxt1",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ "GL_ANGLE_texture_compression_dxt3",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ "GL_ANGLE_texture_compression_dxt5",
+#endif
+#ifdef GL_ANGLE_texture_usage
+ "GL_ANGLE_texture_usage",
+#endif
+#ifdef GL_ANGLE_timer_query
+ "GL_ANGLE_timer_query",
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ "GL_ANGLE_translated_shader_source",
+#endif
+#ifdef GL_APPLE_aux_depth_stencil
+ "GL_APPLE_aux_depth_stencil",
+#endif
+#ifdef GL_APPLE_client_storage
+ "GL_APPLE_client_storage",
+#endif
+#ifdef GL_APPLE_clip_distance
+ "GL_APPLE_clip_distance",
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ "GL_APPLE_color_buffer_packed_float",
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ "GL_APPLE_copy_texture_levels",
+#endif
+#ifdef GL_APPLE_element_array
+ "GL_APPLE_element_array",
+#endif
+#ifdef GL_APPLE_fence
+ "GL_APPLE_fence",
+#endif
+#ifdef GL_APPLE_float_pixels
+ "GL_APPLE_float_pixels",
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ "GL_APPLE_flush_buffer_range",
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ "GL_APPLE_framebuffer_multisample",
+#endif
+#ifdef GL_APPLE_object_purgeable
+ "GL_APPLE_object_purgeable",
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ "GL_APPLE_pixel_buffer",
+#endif
+#ifdef GL_APPLE_rgb_422
+ "GL_APPLE_rgb_422",
+#endif
+#ifdef GL_APPLE_row_bytes
+ "GL_APPLE_row_bytes",
+#endif
+#ifdef GL_APPLE_specular_vector
+ "GL_APPLE_specular_vector",
+#endif
+#ifdef GL_APPLE_sync
+ "GL_APPLE_sync",
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ "GL_APPLE_texture_2D_limited_npot",
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ "GL_APPLE_texture_format_BGRA8888",
+#endif
+#ifdef GL_APPLE_texture_max_level
+ "GL_APPLE_texture_max_level",
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ "GL_APPLE_texture_packed_float",
+#endif
+#ifdef GL_APPLE_texture_range
+ "GL_APPLE_texture_range",
+#endif
+#ifdef GL_APPLE_transform_hint
+ "GL_APPLE_transform_hint",
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ "GL_APPLE_vertex_array_object",
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ "GL_APPLE_vertex_array_range",
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ "GL_APPLE_vertex_program_evaluators",
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ "GL_APPLE_ycbcr_422",
+#endif
+#ifdef GL_ARB_ES2_compatibility
+ "GL_ARB_ES2_compatibility",
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ "GL_ARB_ES3_1_compatibility",
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ "GL_ARB_ES3_2_compatibility",
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ "GL_ARB_ES3_compatibility",
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ "GL_ARB_arrays_of_arrays",
+#endif
+#ifdef GL_ARB_base_instance
+ "GL_ARB_base_instance",
+#endif
+#ifdef GL_ARB_bindless_texture
+ "GL_ARB_bindless_texture",
+#endif
+#ifdef GL_ARB_blend_func_extended
+ "GL_ARB_blend_func_extended",
+#endif
+#ifdef GL_ARB_buffer_storage
+ "GL_ARB_buffer_storage",
+#endif
+#ifdef GL_ARB_cl_event
+ "GL_ARB_cl_event",
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ "GL_ARB_clear_buffer_object",
+#endif
+#ifdef GL_ARB_clear_texture
+ "GL_ARB_clear_texture",
+#endif
+#ifdef GL_ARB_clip_control
+ "GL_ARB_clip_control",
+#endif
+#ifdef GL_ARB_color_buffer_float
+ "GL_ARB_color_buffer_float",
+#endif
+#ifdef GL_ARB_compatibility
+ "GL_ARB_compatibility",
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ "GL_ARB_compressed_texture_pixel_storage",
+#endif
+#ifdef GL_ARB_compute_shader
+ "GL_ARB_compute_shader",
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ "GL_ARB_compute_variable_group_size",
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ "GL_ARB_conditional_render_inverted",
+#endif
+#ifdef GL_ARB_conservative_depth
+ "GL_ARB_conservative_depth",
+#endif
+#ifdef GL_ARB_copy_buffer
+ "GL_ARB_copy_buffer",
+#endif
+#ifdef GL_ARB_copy_image
+ "GL_ARB_copy_image",
+#endif
+#ifdef GL_ARB_cull_distance
+ "GL_ARB_cull_distance",
+#endif
+#ifdef GL_ARB_debug_output
+ "GL_ARB_debug_output",
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ "GL_ARB_depth_buffer_float",
+#endif
+#ifdef GL_ARB_depth_clamp
+ "GL_ARB_depth_clamp",
+#endif
+#ifdef GL_ARB_depth_texture
+ "GL_ARB_depth_texture",
+#endif
+#ifdef GL_ARB_derivative_control
+ "GL_ARB_derivative_control",
+#endif
+#ifdef GL_ARB_direct_state_access
+ "GL_ARB_direct_state_access",
+#endif
+#ifdef GL_ARB_draw_buffers
+ "GL_ARB_draw_buffers",
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ "GL_ARB_draw_buffers_blend",
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ "GL_ARB_draw_elements_base_vertex",
+#endif
+#ifdef GL_ARB_draw_indirect
+ "GL_ARB_draw_indirect",
+#endif
+#ifdef GL_ARB_draw_instanced
+ "GL_ARB_draw_instanced",
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ "GL_ARB_enhanced_layouts",
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ "GL_ARB_explicit_attrib_location",
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ "GL_ARB_explicit_uniform_location",
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ "GL_ARB_fragment_coord_conventions",
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ "GL_ARB_fragment_layer_viewport",
+#endif
+#ifdef GL_ARB_fragment_program
+ "GL_ARB_fragment_program",
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ "GL_ARB_fragment_program_shadow",
+#endif
+#ifdef GL_ARB_fragment_shader
+ "GL_ARB_fragment_shader",
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ "GL_ARB_fragment_shader_interlock",
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ "GL_ARB_framebuffer_no_attachments",
+#endif
+#ifdef GL_ARB_framebuffer_object
+ "GL_ARB_framebuffer_object",
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ "GL_ARB_framebuffer_sRGB",
+#endif
+#ifdef GL_ARB_geometry_shader4
+ "GL_ARB_geometry_shader4",
+#endif
+#ifdef GL_ARB_get_program_binary
+ "GL_ARB_get_program_binary",
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ "GL_ARB_get_texture_sub_image",
+#endif
+#ifdef GL_ARB_gl_spirv
+ "GL_ARB_gl_spirv",
+#endif
+#ifdef GL_ARB_gpu_shader5
+ "GL_ARB_gpu_shader5",
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ "GL_ARB_gpu_shader_fp64",
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ "GL_ARB_gpu_shader_int64",
+#endif
+#ifdef GL_ARB_half_float_pixel
+ "GL_ARB_half_float_pixel",
+#endif
+#ifdef GL_ARB_half_float_vertex
+ "GL_ARB_half_float_vertex",
+#endif
+#ifdef GL_ARB_imaging
+ "GL_ARB_imaging",
+#endif
+#ifdef GL_ARB_indirect_parameters
+ "GL_ARB_indirect_parameters",
+#endif
+#ifdef GL_ARB_instanced_arrays
+ "GL_ARB_instanced_arrays",
+#endif
+#ifdef GL_ARB_internalformat_query
+ "GL_ARB_internalformat_query",
+#endif
+#ifdef GL_ARB_internalformat_query2
+ "GL_ARB_internalformat_query2",
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ "GL_ARB_invalidate_subdata",
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ "GL_ARB_map_buffer_alignment",
+#endif
+#ifdef GL_ARB_map_buffer_range
+ "GL_ARB_map_buffer_range",
+#endif
+#ifdef GL_ARB_matrix_palette
+ "GL_ARB_matrix_palette",
+#endif
+#ifdef GL_ARB_multi_bind
+ "GL_ARB_multi_bind",
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ "GL_ARB_multi_draw_indirect",
+#endif
+#ifdef GL_ARB_multisample
+ "GL_ARB_multisample",
+#endif
+#ifdef GL_ARB_multitexture
+ "GL_ARB_multitexture",
+#endif
+#ifdef GL_ARB_occlusion_query
+ "GL_ARB_occlusion_query",
+#endif
+#ifdef GL_ARB_occlusion_query2
+ "GL_ARB_occlusion_query2",
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ "GL_ARB_parallel_shader_compile",
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ "GL_ARB_pipeline_statistics_query",
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ "GL_ARB_pixel_buffer_object",
+#endif
+#ifdef GL_ARB_point_parameters
+ "GL_ARB_point_parameters",
+#endif
+#ifdef GL_ARB_point_sprite
+ "GL_ARB_point_sprite",
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ "GL_ARB_polygon_offset_clamp",
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ "GL_ARB_post_depth_coverage",
+#endif
+#ifdef GL_ARB_program_interface_query
+ "GL_ARB_program_interface_query",
+#endif
+#ifdef GL_ARB_provoking_vertex
+ "GL_ARB_provoking_vertex",
+#endif
+#ifdef GL_ARB_query_buffer_object
+ "GL_ARB_query_buffer_object",
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ "GL_ARB_robust_buffer_access_behavior",
+#endif
+#ifdef GL_ARB_robustness
+ "GL_ARB_robustness",
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ "GL_ARB_robustness_application_isolation",
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ "GL_ARB_robustness_share_group_isolation",
+#endif
+#ifdef GL_ARB_sample_locations
+ "GL_ARB_sample_locations",
+#endif
+#ifdef GL_ARB_sample_shading
+ "GL_ARB_sample_shading",
+#endif
+#ifdef GL_ARB_sampler_objects
+ "GL_ARB_sampler_objects",
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ "GL_ARB_seamless_cube_map",
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ "GL_ARB_seamless_cubemap_per_texture",
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ "GL_ARB_separate_shader_objects",
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ "GL_ARB_shader_atomic_counter_ops",
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ "GL_ARB_shader_atomic_counters",
+#endif
+#ifdef GL_ARB_shader_ballot
+ "GL_ARB_shader_ballot",
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ "GL_ARB_shader_bit_encoding",
+#endif
+#ifdef GL_ARB_shader_clock
+ "GL_ARB_shader_clock",
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ "GL_ARB_shader_draw_parameters",
+#endif
+#ifdef GL_ARB_shader_group_vote
+ "GL_ARB_shader_group_vote",
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ "GL_ARB_shader_image_load_store",
+#endif
+#ifdef GL_ARB_shader_image_size
+ "GL_ARB_shader_image_size",
+#endif
+#ifdef GL_ARB_shader_objects
+ "GL_ARB_shader_objects",
+#endif
+#ifdef GL_ARB_shader_precision
+ "GL_ARB_shader_precision",
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ "GL_ARB_shader_stencil_export",
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ "GL_ARB_shader_storage_buffer_object",
+#endif
+#ifdef GL_ARB_shader_subroutine
+ "GL_ARB_shader_subroutine",
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ "GL_ARB_shader_texture_image_samples",
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ "GL_ARB_shader_texture_lod",
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ "GL_ARB_shader_viewport_layer_array",
+#endif
+#ifdef GL_ARB_shading_language_100
+ "GL_ARB_shading_language_100",
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ "GL_ARB_shading_language_420pack",
+#endif
+#ifdef GL_ARB_shading_language_include
+ "GL_ARB_shading_language_include",
+#endif
+#ifdef GL_ARB_shading_language_packing
+ "GL_ARB_shading_language_packing",
+#endif
+#ifdef GL_ARB_shadow
+ "GL_ARB_shadow",
+#endif
+#ifdef GL_ARB_shadow_ambient
+ "GL_ARB_shadow_ambient",
+#endif
+#ifdef GL_ARB_sparse_buffer
+ "GL_ARB_sparse_buffer",
+#endif
+#ifdef GL_ARB_sparse_texture
+ "GL_ARB_sparse_texture",
+#endif
+#ifdef GL_ARB_sparse_texture2
+ "GL_ARB_sparse_texture2",
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ "GL_ARB_sparse_texture_clamp",
+#endif
+#ifdef GL_ARB_spirv_extensions
+ "GL_ARB_spirv_extensions",
+#endif
+#ifdef GL_ARB_stencil_texturing
+ "GL_ARB_stencil_texturing",
+#endif
+#ifdef GL_ARB_sync
+ "GL_ARB_sync",
+#endif
+#ifdef GL_ARB_tessellation_shader
+ "GL_ARB_tessellation_shader",
+#endif
+#ifdef GL_ARB_texture_barrier
+ "GL_ARB_texture_barrier",
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ "GL_ARB_texture_border_clamp",
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ "GL_ARB_texture_buffer_object",
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ "GL_ARB_texture_buffer_object_rgb32",
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ "GL_ARB_texture_buffer_range",
+#endif
+#ifdef GL_ARB_texture_compression
+ "GL_ARB_texture_compression",
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ "GL_ARB_texture_compression_bptc",
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ "GL_ARB_texture_compression_rgtc",
+#endif
+#ifdef GL_ARB_texture_cube_map
+ "GL_ARB_texture_cube_map",
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ "GL_ARB_texture_cube_map_array",
+#endif
+#ifdef GL_ARB_texture_env_add
+ "GL_ARB_texture_env_add",
+#endif
+#ifdef GL_ARB_texture_env_combine
+ "GL_ARB_texture_env_combine",
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ "GL_ARB_texture_env_crossbar",
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ "GL_ARB_texture_env_dot3",
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ "GL_ARB_texture_filter_anisotropic",
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ "GL_ARB_texture_filter_minmax",
+#endif
+#ifdef GL_ARB_texture_float
+ "GL_ARB_texture_float",
+#endif
+#ifdef GL_ARB_texture_gather
+ "GL_ARB_texture_gather",
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ "GL_ARB_texture_mirror_clamp_to_edge",
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ "GL_ARB_texture_mirrored_repeat",
+#endif
+#ifdef GL_ARB_texture_multisample
+ "GL_ARB_texture_multisample",
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ "GL_ARB_texture_non_power_of_two",
+#endif
+#ifdef GL_ARB_texture_query_levels
+ "GL_ARB_texture_query_levels",
+#endif
+#ifdef GL_ARB_texture_query_lod
+ "GL_ARB_texture_query_lod",
+#endif
+#ifdef GL_ARB_texture_rectangle
+ "GL_ARB_texture_rectangle",
+#endif
+#ifdef GL_ARB_texture_rg
+ "GL_ARB_texture_rg",
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ "GL_ARB_texture_rgb10_a2ui",
+#endif
+#ifdef GL_ARB_texture_stencil8
+ "GL_ARB_texture_stencil8",
+#endif
+#ifdef GL_ARB_texture_storage
+ "GL_ARB_texture_storage",
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ "GL_ARB_texture_storage_multisample",
+#endif
+#ifdef GL_ARB_texture_swizzle
+ "GL_ARB_texture_swizzle",
+#endif
+#ifdef GL_ARB_texture_view
+ "GL_ARB_texture_view",
+#endif
+#ifdef GL_ARB_timer_query
+ "GL_ARB_timer_query",
+#endif
+#ifdef GL_ARB_transform_feedback2
+ "GL_ARB_transform_feedback2",
+#endif
+#ifdef GL_ARB_transform_feedback3
+ "GL_ARB_transform_feedback3",
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ "GL_ARB_transform_feedback_instanced",
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ "GL_ARB_transform_feedback_overflow_query",
+#endif
+#ifdef GL_ARB_transpose_matrix
+ "GL_ARB_transpose_matrix",
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ "GL_ARB_uniform_buffer_object",
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ "GL_ARB_vertex_array_bgra",
+#endif
+#ifdef GL_ARB_vertex_array_object
+ "GL_ARB_vertex_array_object",
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ "GL_ARB_vertex_attrib_64bit",
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ "GL_ARB_vertex_attrib_binding",
+#endif
+#ifdef GL_ARB_vertex_blend
+ "GL_ARB_vertex_blend",
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ "GL_ARB_vertex_buffer_object",
+#endif
+#ifdef GL_ARB_vertex_program
+ "GL_ARB_vertex_program",
+#endif
+#ifdef GL_ARB_vertex_shader
+ "GL_ARB_vertex_shader",
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ "GL_ARB_vertex_type_10f_11f_11f_rev",
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ "GL_ARB_vertex_type_2_10_10_10_rev",
+#endif
+#ifdef GL_ARB_viewport_array
+ "GL_ARB_viewport_array",
+#endif
+#ifdef GL_ARB_window_pos
+ "GL_ARB_window_pos",
+#endif
+#ifdef GL_ARM_mali_program_binary
+ "GL_ARM_mali_program_binary",
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ "GL_ARM_mali_shader_binary",
+#endif
+#ifdef GL_ARM_rgba8
+ "GL_ARM_rgba8",
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ "GL_ARM_shader_framebuffer_fetch",
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ "GL_ARM_shader_framebuffer_fetch_depth_stencil",
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ "GL_ARM_texture_unnormalized_coordinates",
+#endif
+#ifdef GL_ATIX_point_sprites
+ "GL_ATIX_point_sprites",
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ "GL_ATIX_texture_env_combine3",
+#endif
+#ifdef GL_ATIX_texture_env_route
+ "GL_ATIX_texture_env_route",
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ "GL_ATIX_vertex_shader_output_point_size",
+#endif
+#ifdef GL_ATI_draw_buffers
+ "GL_ATI_draw_buffers",
+#endif
+#ifdef GL_ATI_element_array
+ "GL_ATI_element_array",
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ "GL_ATI_envmap_bumpmap",
+#endif
+#ifdef GL_ATI_fragment_shader
+ "GL_ATI_fragment_shader",
+#endif
+#ifdef GL_ATI_map_object_buffer
+ "GL_ATI_map_object_buffer",
+#endif
+#ifdef GL_ATI_meminfo
+ "GL_ATI_meminfo",
+#endif
+#ifdef GL_ATI_pn_triangles
+ "GL_ATI_pn_triangles",
+#endif
+#ifdef GL_ATI_separate_stencil
+ "GL_ATI_separate_stencil",
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ "GL_ATI_shader_texture_lod",
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ "GL_ATI_text_fragment_shader",
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ "GL_ATI_texture_compression_3dc",
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ "GL_ATI_texture_env_combine3",
+#endif
+#ifdef GL_ATI_texture_float
+ "GL_ATI_texture_float",
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ "GL_ATI_texture_mirror_once",
+#endif
+#ifdef GL_ATI_vertex_array_object
+ "GL_ATI_vertex_array_object",
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ "GL_ATI_vertex_attrib_array_object",
+#endif
+#ifdef GL_ATI_vertex_streams
+ "GL_ATI_vertex_streams",
+#endif
+#ifdef GL_DMP_program_binary
+ "GL_DMP_program_binary",
+#endif
+#ifdef GL_DMP_shader_binary
+ "GL_DMP_shader_binary",
+#endif
+#ifdef GL_EXT_422_pixels
+ "GL_EXT_422_pixels",
+#endif
+#ifdef GL_EXT_Cg_shader
+ "GL_EXT_Cg_shader",
+#endif
+#ifdef GL_EXT_EGL_image_array
+ "GL_EXT_EGL_image_array",
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ "GL_EXT_EGL_image_external_wrap_modes",
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ "GL_EXT_EGL_image_storage",
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ "GL_EXT_EGL_image_storage_compression",
+#endif
+#ifdef GL_EXT_EGL_sync
+ "GL_EXT_EGL_sync",
+#endif
+#ifdef GL_EXT_YUV_target
+ "GL_EXT_YUV_target",
+#endif
+#ifdef GL_EXT_abgr
+ "GL_EXT_abgr",
+#endif
+#ifdef GL_EXT_base_instance
+ "GL_EXT_base_instance",
+#endif
+#ifdef GL_EXT_bgra
+ "GL_EXT_bgra",
+#endif
+#ifdef GL_EXT_bindable_uniform
+ "GL_EXT_bindable_uniform",
+#endif
+#ifdef GL_EXT_blend_color
+ "GL_EXT_blend_color",
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ "GL_EXT_blend_equation_separate",
+#endif
+#ifdef GL_EXT_blend_func_extended
+ "GL_EXT_blend_func_extended",
+#endif
+#ifdef GL_EXT_blend_func_separate
+ "GL_EXT_blend_func_separate",
+#endif
+#ifdef GL_EXT_blend_logic_op
+ "GL_EXT_blend_logic_op",
+#endif
+#ifdef GL_EXT_blend_minmax
+ "GL_EXT_blend_minmax",
+#endif
+#ifdef GL_EXT_blend_subtract
+ "GL_EXT_blend_subtract",
+#endif
+#ifdef GL_EXT_buffer_storage
+ "GL_EXT_buffer_storage",
+#endif
+#ifdef GL_EXT_clear_texture
+ "GL_EXT_clear_texture",
+#endif
+#ifdef GL_EXT_clip_control
+ "GL_EXT_clip_control",
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ "GL_EXT_clip_cull_distance",
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ "GL_EXT_clip_volume_hint",
+#endif
+#ifdef GL_EXT_cmyka
+ "GL_EXT_cmyka",
+#endif
+#ifdef GL_EXT_color_buffer_float
+ "GL_EXT_color_buffer_float",
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ "GL_EXT_color_buffer_half_float",
+#endif
+#ifdef GL_EXT_color_subtable
+ "GL_EXT_color_subtable",
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ "GL_EXT_compiled_vertex_array",
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ "GL_EXT_compressed_ETC1_RGB8_sub_texture",
+#endif
+#ifdef GL_EXT_conservative_depth
+ "GL_EXT_conservative_depth",
+#endif
+#ifdef GL_EXT_convolution
+ "GL_EXT_convolution",
+#endif
+#ifdef GL_EXT_coordinate_frame
+ "GL_EXT_coordinate_frame",
+#endif
+#ifdef GL_EXT_copy_image
+ "GL_EXT_copy_image",
+#endif
+#ifdef GL_EXT_copy_texture
+ "GL_EXT_copy_texture",
+#endif
+#ifdef GL_EXT_cull_vertex
+ "GL_EXT_cull_vertex",
+#endif
+#ifdef GL_EXT_debug_label
+ "GL_EXT_debug_label",
+#endif
+#ifdef GL_EXT_debug_marker
+ "GL_EXT_debug_marker",
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ "GL_EXT_depth_bounds_test",
+#endif
+#ifdef GL_EXT_depth_clamp
+ "GL_EXT_depth_clamp",
+#endif
+#ifdef GL_EXT_direct_state_access
+ "GL_EXT_direct_state_access",
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ "GL_EXT_discard_framebuffer",
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ "GL_EXT_disjoint_timer_query",
+#endif
+#ifdef GL_EXT_draw_buffers
+ "GL_EXT_draw_buffers",
+#endif
+#ifdef GL_EXT_draw_buffers2
+ "GL_EXT_draw_buffers2",
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ "GL_EXT_draw_buffers_indexed",
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ "GL_EXT_draw_elements_base_vertex",
+#endif
+#ifdef GL_EXT_draw_instanced
+ "GL_EXT_draw_instanced",
+#endif
+#ifdef GL_EXT_draw_range_elements
+ "GL_EXT_draw_range_elements",
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ "GL_EXT_draw_transform_feedback",
+#endif
+#ifdef GL_EXT_external_buffer
+ "GL_EXT_external_buffer",
+#endif
+#ifdef GL_EXT_float_blend
+ "GL_EXT_float_blend",
+#endif
+#ifdef GL_EXT_fog_coord
+ "GL_EXT_fog_coord",
+#endif
+#ifdef GL_EXT_frag_depth
+ "GL_EXT_frag_depth",
+#endif
+#ifdef GL_EXT_fragment_lighting
+ "GL_EXT_fragment_lighting",
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ "GL_EXT_framebuffer_blit",
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ "GL_EXT_framebuffer_multisample",
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ "GL_EXT_framebuffer_multisample_blit_scaled",
+#endif
+#ifdef GL_EXT_framebuffer_object
+ "GL_EXT_framebuffer_object",
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ "GL_EXT_framebuffer_sRGB",
+#endif
+#ifdef GL_EXT_geometry_point_size
+ "GL_EXT_geometry_point_size",
+#endif
+#ifdef GL_EXT_geometry_shader
+ "GL_EXT_geometry_shader",
+#endif
+#ifdef GL_EXT_geometry_shader4
+ "GL_EXT_geometry_shader4",
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ "GL_EXT_gpu_program_parameters",
+#endif
+#ifdef GL_EXT_gpu_shader4
+ "GL_EXT_gpu_shader4",
+#endif
+#ifdef GL_EXT_gpu_shader5
+ "GL_EXT_gpu_shader5",
+#endif
+#ifdef GL_EXT_histogram
+ "GL_EXT_histogram",
+#endif
+#ifdef GL_EXT_index_array_formats
+ "GL_EXT_index_array_formats",
+#endif
+#ifdef GL_EXT_index_func
+ "GL_EXT_index_func",
+#endif
+#ifdef GL_EXT_index_material
+ "GL_EXT_index_material",
+#endif
+#ifdef GL_EXT_index_texture
+ "GL_EXT_index_texture",
+#endif
+#ifdef GL_EXT_instanced_arrays
+ "GL_EXT_instanced_arrays",
+#endif
+#ifdef GL_EXT_light_texture
+ "GL_EXT_light_texture",
+#endif
+#ifdef GL_EXT_map_buffer_range
+ "GL_EXT_map_buffer_range",
+#endif
+#ifdef GL_EXT_memory_object
+ "GL_EXT_memory_object",
+#endif
+#ifdef GL_EXT_memory_object_fd
+ "GL_EXT_memory_object_fd",
+#endif
+#ifdef GL_EXT_memory_object_win32
+ "GL_EXT_memory_object_win32",
+#endif
+#ifdef GL_EXT_misc_attribute
+ "GL_EXT_misc_attribute",
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ "GL_EXT_multi_draw_arrays",
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ "GL_EXT_multi_draw_indirect",
+#endif
+#ifdef GL_EXT_multiple_textures
+ "GL_EXT_multiple_textures",
+#endif
+#ifdef GL_EXT_multisample
+ "GL_EXT_multisample",
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ "GL_EXT_multisample_compatibility",
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ "GL_EXT_multisampled_render_to_texture",
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ "GL_EXT_multisampled_render_to_texture2",
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ "GL_EXT_multiview_draw_buffers",
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ "GL_EXT_multiview_tessellation_geometry_shader",
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ "GL_EXT_multiview_texture_multisample",
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ "GL_EXT_multiview_timer_query",
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ "GL_EXT_occlusion_query_boolean",
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ "GL_EXT_packed_depth_stencil",
+#endif
+#ifdef GL_EXT_packed_float
+ "GL_EXT_packed_float",
+#endif
+#ifdef GL_EXT_packed_pixels
+ "GL_EXT_packed_pixels",
+#endif
+#ifdef GL_EXT_paletted_texture
+ "GL_EXT_paletted_texture",
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ "GL_EXT_pixel_buffer_object",
+#endif
+#ifdef GL_EXT_pixel_transform
+ "GL_EXT_pixel_transform",
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ "GL_EXT_pixel_transform_color_table",
+#endif
+#ifdef GL_EXT_point_parameters
+ "GL_EXT_point_parameters",
+#endif
+#ifdef GL_EXT_polygon_offset
+ "GL_EXT_polygon_offset",
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ "GL_EXT_polygon_offset_clamp",
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ "GL_EXT_post_depth_coverage",
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ "GL_EXT_primitive_bounding_box",
+#endif
+#ifdef GL_EXT_protected_textures
+ "GL_EXT_protected_textures",
+#endif
+#ifdef GL_EXT_provoking_vertex
+ "GL_EXT_provoking_vertex",
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ "GL_EXT_pvrtc_sRGB",
+#endif
+#ifdef GL_EXT_raster_multisample
+ "GL_EXT_raster_multisample",
+#endif
+#ifdef GL_EXT_read_format_bgra
+ "GL_EXT_read_format_bgra",
+#endif
+#ifdef GL_EXT_render_snorm
+ "GL_EXT_render_snorm",
+#endif
+#ifdef GL_EXT_rescale_normal
+ "GL_EXT_rescale_normal",
+#endif
+#ifdef GL_EXT_robustness
+ "GL_EXT_robustness",
+#endif
+#ifdef GL_EXT_sRGB
+ "GL_EXT_sRGB",
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ "GL_EXT_sRGB_write_control",
+#endif
+#ifdef GL_EXT_scene_marker
+ "GL_EXT_scene_marker",
+#endif
+#ifdef GL_EXT_secondary_color
+ "GL_EXT_secondary_color",
+#endif
+#ifdef GL_EXT_semaphore
+ "GL_EXT_semaphore",
+#endif
+#ifdef GL_EXT_semaphore_fd
+ "GL_EXT_semaphore_fd",
+#endif
+#ifdef GL_EXT_semaphore_win32
+ "GL_EXT_semaphore_win32",
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ "GL_EXT_separate_depth_stencil",
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ "GL_EXT_separate_shader_objects",
+#endif
+#ifdef GL_EXT_separate_specular_color
+ "GL_EXT_separate_specular_color",
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ "GL_EXT_shader_framebuffer_fetch",
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ "GL_EXT_shader_framebuffer_fetch_non_coherent",
+#endif
+#ifdef GL_EXT_shader_group_vote
+ "GL_EXT_shader_group_vote",
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ "GL_EXT_shader_image_load_formatted",
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ "GL_EXT_shader_image_load_store",
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ "GL_EXT_shader_implicit_conversions",
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ "GL_EXT_shader_integer_mix",
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ "GL_EXT_shader_io_blocks",
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ "GL_EXT_shader_non_constant_global_initializers",
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ "GL_EXT_shader_pixel_local_storage",
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ "GL_EXT_shader_pixel_local_storage2",
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ "GL_EXT_shader_samples_identical",
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ "GL_EXT_shader_texture_lod",
+#endif
+#ifdef GL_EXT_shadow_funcs
+ "GL_EXT_shadow_funcs",
+#endif
+#ifdef GL_EXT_shadow_samplers
+ "GL_EXT_shadow_samplers",
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ "GL_EXT_shared_texture_palette",
+#endif
+#ifdef GL_EXT_sparse_texture
+ "GL_EXT_sparse_texture",
+#endif
+#ifdef GL_EXT_sparse_texture2
+ "GL_EXT_sparse_texture2",
+#endif
+#ifdef GL_EXT_static_vertex_array
+ "GL_EXT_static_vertex_array",
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ "GL_EXT_stencil_clear_tag",
+#endif
+#ifdef GL_EXT_stencil_two_side
+ "GL_EXT_stencil_two_side",
+#endif
+#ifdef GL_EXT_stencil_wrap
+ "GL_EXT_stencil_wrap",
+#endif
+#ifdef GL_EXT_subtexture
+ "GL_EXT_subtexture",
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ "GL_EXT_tessellation_point_size",
+#endif
+#ifdef GL_EXT_tessellation_shader
+ "GL_EXT_tessellation_shader",
+#endif
+#ifdef GL_EXT_texture
+ "GL_EXT_texture",
+#endif
+#ifdef GL_EXT_texture3D
+ "GL_EXT_texture3D",
+#endif
+#ifdef GL_EXT_texture_array
+ "GL_EXT_texture_array",
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ "GL_EXT_texture_border_clamp",
+#endif
+#ifdef GL_EXT_texture_buffer
+ "GL_EXT_texture_buffer",
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ "GL_EXT_texture_buffer_object",
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ "GL_EXT_texture_compression_astc_decode_mode",
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ "GL_EXT_texture_compression_astc_decode_mode_rgb9e5",
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ "GL_EXT_texture_compression_bptc",
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ "GL_EXT_texture_compression_dxt1",
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ "GL_EXT_texture_compression_latc",
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ "GL_EXT_texture_compression_rgtc",
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ "GL_EXT_texture_compression_s3tc",
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ "GL_EXT_texture_compression_s3tc_srgb",
+#endif
+#ifdef GL_EXT_texture_cube_map
+ "GL_EXT_texture_cube_map",
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ "GL_EXT_texture_cube_map_array",
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ "GL_EXT_texture_edge_clamp",
+#endif
+#ifdef GL_EXT_texture_env
+ "GL_EXT_texture_env",
+#endif
+#ifdef GL_EXT_texture_env_add
+ "GL_EXT_texture_env_add",
+#endif
+#ifdef GL_EXT_texture_env_combine
+ "GL_EXT_texture_env_combine",
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ "GL_EXT_texture_env_dot3",
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ "GL_EXT_texture_filter_anisotropic",
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ "GL_EXT_texture_filter_minmax",
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ "GL_EXT_texture_format_BGRA8888",
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ "GL_EXT_texture_format_sRGB_override",
+#endif
+#ifdef GL_EXT_texture_integer
+ "GL_EXT_texture_integer",
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ "GL_EXT_texture_lod_bias",
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ "GL_EXT_texture_mirror_clamp",
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ "GL_EXT_texture_mirror_clamp_to_edge",
+#endif
+#ifdef GL_EXT_texture_norm16
+ "GL_EXT_texture_norm16",
+#endif
+#ifdef GL_EXT_texture_object
+ "GL_EXT_texture_object",
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ "GL_EXT_texture_perturb_normal",
+#endif
+#ifdef GL_EXT_texture_query_lod
+ "GL_EXT_texture_query_lod",
+#endif
+#ifdef GL_EXT_texture_rectangle
+ "GL_EXT_texture_rectangle",
+#endif
+#ifdef GL_EXT_texture_rg
+ "GL_EXT_texture_rg",
+#endif
+#ifdef GL_EXT_texture_sRGB
+ "GL_EXT_texture_sRGB",
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ "GL_EXT_texture_sRGB_R8",
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ "GL_EXT_texture_sRGB_RG8",
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ "GL_EXT_texture_sRGB_decode",
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ "GL_EXT_texture_shadow_lod",
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ "GL_EXT_texture_shared_exponent",
+#endif
+#ifdef GL_EXT_texture_snorm
+ "GL_EXT_texture_snorm",
+#endif
+#ifdef GL_EXT_texture_storage
+ "GL_EXT_texture_storage",
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ "GL_EXT_texture_storage_compression",
+#endif
+#ifdef GL_EXT_texture_swizzle
+ "GL_EXT_texture_swizzle",
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ "GL_EXT_texture_type_2_10_10_10_REV",
+#endif
+#ifdef GL_EXT_texture_view
+ "GL_EXT_texture_view",
+#endif
+#ifdef GL_EXT_timer_query
+ "GL_EXT_timer_query",
+#endif
+#ifdef GL_EXT_transform_feedback
+ "GL_EXT_transform_feedback",
+#endif
+#ifdef GL_EXT_unpack_subimage
+ "GL_EXT_unpack_subimage",
+#endif
+#ifdef GL_EXT_vertex_array
+ "GL_EXT_vertex_array",
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ "GL_EXT_vertex_array_bgra",
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ "GL_EXT_vertex_array_setXXX",
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ "GL_EXT_vertex_attrib_64bit",
+#endif
+#ifdef GL_EXT_vertex_shader
+ "GL_EXT_vertex_shader",
+#endif
+#ifdef GL_EXT_vertex_weighting
+ "GL_EXT_vertex_weighting",
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ "GL_EXT_win32_keyed_mutex",
+#endif
+#ifdef GL_EXT_window_rectangles
+ "GL_EXT_window_rectangles",
+#endif
+#ifdef GL_EXT_x11_sync_object
+ "GL_EXT_x11_sync_object",
+#endif
+#ifdef GL_FJ_shader_binary_GCCSO
+ "GL_FJ_shader_binary_GCCSO",
+#endif
+#ifdef GL_GREMEDY_frame_terminator
+ "GL_GREMEDY_frame_terminator",
+#endif
+#ifdef GL_GREMEDY_string_marker
+ "GL_GREMEDY_string_marker",
+#endif
+#ifdef GL_HP_convolution_border_modes
+ "GL_HP_convolution_border_modes",
+#endif
+#ifdef GL_HP_image_transform
+ "GL_HP_image_transform",
+#endif
+#ifdef GL_HP_occlusion_test
+ "GL_HP_occlusion_test",
+#endif
+#ifdef GL_HP_texture_lighting
+ "GL_HP_texture_lighting",
+#endif
+#ifdef GL_IBM_cull_vertex
+ "GL_IBM_cull_vertex",
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ "GL_IBM_multimode_draw_arrays",
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ "GL_IBM_rasterpos_clip",
+#endif
+#ifdef GL_IBM_static_data
+ "GL_IBM_static_data",
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ "GL_IBM_texture_mirrored_repeat",
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ "GL_IBM_vertex_array_lists",
+#endif
+#ifdef GL_IMG_bindless_texture
+ "GL_IMG_bindless_texture",
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ "GL_IMG_framebuffer_downsample",
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ "GL_IMG_multisampled_render_to_texture",
+#endif
+#ifdef GL_IMG_program_binary
+ "GL_IMG_program_binary",
+#endif
+#ifdef GL_IMG_read_format
+ "GL_IMG_read_format",
+#endif
+#ifdef GL_IMG_shader_binary
+ "GL_IMG_shader_binary",
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ "GL_IMG_texture_compression_pvrtc",
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ "GL_IMG_texture_compression_pvrtc2",
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ "GL_IMG_texture_env_enhanced_fixed_function",
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ "GL_IMG_texture_filter_cubic",
+#endif
+#ifdef GL_IMG_tile_region_protection
+ "GL_IMG_tile_region_protection",
+#endif
+#ifdef GL_INGR_color_clamp
+ "GL_INGR_color_clamp",
+#endif
+#ifdef GL_INGR_interlace_read
+ "GL_INGR_interlace_read",
+#endif
+#ifdef GL_INTEL_blackhole_render
+ "GL_INTEL_blackhole_render",
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ "GL_INTEL_conservative_rasterization",
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ "GL_INTEL_fragment_shader_ordering",
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ "GL_INTEL_framebuffer_CMAA",
+#endif
+#ifdef GL_INTEL_map_texture
+ "GL_INTEL_map_texture",
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ "GL_INTEL_parallel_arrays",
+#endif
+#ifdef GL_INTEL_performance_query
+ "GL_INTEL_performance_query",
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ "GL_INTEL_shader_integer_functions2",
+#endif
+#ifdef GL_INTEL_texture_scissor
+ "GL_INTEL_texture_scissor",
+#endif
+#ifdef GL_KHR_blend_equation_advanced
+ "GL_KHR_blend_equation_advanced",
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ "GL_KHR_blend_equation_advanced_coherent",
+#endif
+#ifdef GL_KHR_context_flush_control
+ "GL_KHR_context_flush_control",
+#endif
+#ifdef GL_KHR_debug
+ "GL_KHR_debug",
+#endif
+#ifdef GL_KHR_no_error
+ "GL_KHR_no_error",
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ "GL_KHR_parallel_shader_compile",
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ "GL_KHR_robust_buffer_access_behavior",
+#endif
+#ifdef GL_KHR_robustness
+ "GL_KHR_robustness",
+#endif
+#ifdef GL_KHR_shader_subgroup
+ "GL_KHR_shader_subgroup",
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ "GL_KHR_texture_compression_astc_hdr",
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ "GL_KHR_texture_compression_astc_ldr",
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ "GL_KHR_texture_compression_astc_sliced_3d",
+#endif
+#ifdef GL_KTX_buffer_region
+ "GL_KTX_buffer_region",
+#endif
+#ifdef GL_MESAX_texture_stack
+ "GL_MESAX_texture_stack",
+#endif
+#ifdef GL_MESA_bgra
+ "GL_MESA_bgra",
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ "GL_MESA_framebuffer_flip_x",
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ "GL_MESA_framebuffer_flip_y",
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ "GL_MESA_framebuffer_swap_xy",
+#endif
+#ifdef GL_MESA_pack_invert
+ "GL_MESA_pack_invert",
+#endif
+#ifdef GL_MESA_program_binary_formats
+ "GL_MESA_program_binary_formats",
+#endif
+#ifdef GL_MESA_resize_buffers
+ "GL_MESA_resize_buffers",
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ "GL_MESA_shader_integer_functions",
+#endif
+#ifdef GL_MESA_tile_raster_order
+ "GL_MESA_tile_raster_order",
+#endif
+#ifdef GL_MESA_window_pos
+ "GL_MESA_window_pos",
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ "GL_MESA_ycbcr_texture",
+#endif
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ "GL_NVX_blend_equation_advanced_multi_draw_buffers",
+#endif
+#ifdef GL_NVX_conditional_render
+ "GL_NVX_conditional_render",
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ "GL_NVX_gpu_memory_info",
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ "GL_NVX_gpu_multicast2",
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ "GL_NVX_linked_gpu_multicast",
+#endif
+#ifdef GL_NVX_progress_fence
+ "GL_NVX_progress_fence",
+#endif
+#ifdef GL_NV_3dvision_settings
+ "GL_NV_3dvision_settings",
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ "GL_NV_EGL_stream_consumer_external",
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ "GL_NV_alpha_to_coverage_dither_control",
+#endif
+#ifdef GL_NV_bgr
+ "GL_NV_bgr",
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ "GL_NV_bindless_multi_draw_indirect",
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ "GL_NV_bindless_multi_draw_indirect_count",
+#endif
+#ifdef GL_NV_bindless_texture
+ "GL_NV_bindless_texture",
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ "GL_NV_blend_equation_advanced",
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ "GL_NV_blend_equation_advanced_coherent",
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ "GL_NV_blend_minmax_factor",
+#endif
+#ifdef GL_NV_blend_square
+ "GL_NV_blend_square",
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ "GL_NV_clip_space_w_scaling",
+#endif
+#ifdef GL_NV_command_list
+ "GL_NV_command_list",
+#endif
+#ifdef GL_NV_compute_program5
+ "GL_NV_compute_program5",
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ "GL_NV_compute_shader_derivatives",
+#endif
+#ifdef GL_NV_conditional_render
+ "GL_NV_conditional_render",
+#endif
+#ifdef GL_NV_conservative_raster
+ "GL_NV_conservative_raster",
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ "GL_NV_conservative_raster_dilate",
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ "GL_NV_conservative_raster_pre_snap",
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ "GL_NV_conservative_raster_pre_snap_triangles",
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ "GL_NV_conservative_raster_underestimation",
+#endif
+#ifdef GL_NV_copy_buffer
+ "GL_NV_copy_buffer",
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ "GL_NV_copy_depth_to_color",
+#endif
+#ifdef GL_NV_copy_image
+ "GL_NV_copy_image",
+#endif
+#ifdef GL_NV_deep_texture3D
+ "GL_NV_deep_texture3D",
+#endif
+#ifdef GL_NV_depth_buffer_float
+ "GL_NV_depth_buffer_float",
+#endif
+#ifdef GL_NV_depth_clamp
+ "GL_NV_depth_clamp",
+#endif
+#ifdef GL_NV_depth_nonlinear
+ "GL_NV_depth_nonlinear",
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ "GL_NV_depth_range_unclamped",
+#endif
+#ifdef GL_NV_draw_buffers
+ "GL_NV_draw_buffers",
+#endif
+#ifdef GL_NV_draw_instanced
+ "GL_NV_draw_instanced",
+#endif
+#ifdef GL_NV_draw_texture
+ "GL_NV_draw_texture",
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ "GL_NV_draw_vulkan_image",
+#endif
+#ifdef GL_NV_evaluators
+ "GL_NV_evaluators",
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ "GL_NV_explicit_attrib_location",
+#endif
+#ifdef GL_NV_explicit_multisample
+ "GL_NV_explicit_multisample",
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ "GL_NV_fbo_color_attachments",
+#endif
+#ifdef GL_NV_fence
+ "GL_NV_fence",
+#endif
+#ifdef GL_NV_fill_rectangle
+ "GL_NV_fill_rectangle",
+#endif
+#ifdef GL_NV_float_buffer
+ "GL_NV_float_buffer",
+#endif
+#ifdef GL_NV_fog_distance
+ "GL_NV_fog_distance",
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ "GL_NV_fragment_coverage_to_color",
+#endif
+#ifdef GL_NV_fragment_program
+ "GL_NV_fragment_program",
+#endif
+#ifdef GL_NV_fragment_program2
+ "GL_NV_fragment_program2",
+#endif
+#ifdef GL_NV_fragment_program4
+ "GL_NV_fragment_program4",
+#endif
+#ifdef GL_NV_fragment_program_option
+ "GL_NV_fragment_program_option",
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ "GL_NV_fragment_shader_barycentric",
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ "GL_NV_fragment_shader_interlock",
+#endif
+#ifdef GL_NV_framebuffer_blit
+ "GL_NV_framebuffer_blit",
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ "GL_NV_framebuffer_mixed_samples",
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ "GL_NV_framebuffer_multisample",
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ "GL_NV_framebuffer_multisample_coverage",
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ "GL_NV_generate_mipmap_sRGB",
+#endif
+#ifdef GL_NV_geometry_program4
+ "GL_NV_geometry_program4",
+#endif
+#ifdef GL_NV_geometry_shader4
+ "GL_NV_geometry_shader4",
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ "GL_NV_geometry_shader_passthrough",
+#endif
+#ifdef GL_NV_gpu_multicast
+ "GL_NV_gpu_multicast",
+#endif
+#ifdef GL_NV_gpu_program4
+ "GL_NV_gpu_program4",
+#endif
+#ifdef GL_NV_gpu_program5
+ "GL_NV_gpu_program5",
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ "GL_NV_gpu_program5_mem_extended",
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ "GL_NV_gpu_program_fp64",
+#endif
+#ifdef GL_NV_gpu_shader5
+ "GL_NV_gpu_shader5",
+#endif
+#ifdef GL_NV_half_float
+ "GL_NV_half_float",
+#endif
+#ifdef GL_NV_image_formats
+ "GL_NV_image_formats",
+#endif
+#ifdef GL_NV_instanced_arrays
+ "GL_NV_instanced_arrays",
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ "GL_NV_internalformat_sample_query",
+#endif
+#ifdef GL_NV_light_max_exponent
+ "GL_NV_light_max_exponent",
+#endif
+#ifdef GL_NV_memory_attachment
+ "GL_NV_memory_attachment",
+#endif
+#ifdef GL_NV_memory_object_sparse
+ "GL_NV_memory_object_sparse",
+#endif
+#ifdef GL_NV_mesh_shader
+ "GL_NV_mesh_shader",
+#endif
+#ifdef GL_NV_multisample_coverage
+ "GL_NV_multisample_coverage",
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ "GL_NV_multisample_filter_hint",
+#endif
+#ifdef GL_NV_non_square_matrices
+ "GL_NV_non_square_matrices",
+#endif
+#ifdef GL_NV_occlusion_query
+ "GL_NV_occlusion_query",
+#endif
+#ifdef GL_NV_pack_subimage
+ "GL_NV_pack_subimage",
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ "GL_NV_packed_depth_stencil",
+#endif
+#ifdef GL_NV_packed_float
+ "GL_NV_packed_float",
+#endif
+#ifdef GL_NV_packed_float_linear
+ "GL_NV_packed_float_linear",
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ "GL_NV_parameter_buffer_object",
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ "GL_NV_parameter_buffer_object2",
+#endif
+#ifdef GL_NV_path_rendering
+ "GL_NV_path_rendering",
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ "GL_NV_path_rendering_shared_edge",
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ "GL_NV_pixel_buffer_object",
+#endif
+#ifdef GL_NV_pixel_data_range
+ "GL_NV_pixel_data_range",
+#endif
+#ifdef GL_NV_platform_binary
+ "GL_NV_platform_binary",
+#endif
+#ifdef GL_NV_point_sprite
+ "GL_NV_point_sprite",
+#endif
+#ifdef GL_NV_polygon_mode
+ "GL_NV_polygon_mode",
+#endif
+#ifdef GL_NV_present_video
+ "GL_NV_present_video",
+#endif
+#ifdef GL_NV_primitive_restart
+ "GL_NV_primitive_restart",
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ "GL_NV_primitive_shading_rate",
+#endif
+#ifdef GL_NV_query_resource_tag
+ "GL_NV_query_resource_tag",
+#endif
+#ifdef GL_NV_read_buffer
+ "GL_NV_read_buffer",
+#endif
+#ifdef GL_NV_read_buffer_front
+ "GL_NV_read_buffer_front",
+#endif
+#ifdef GL_NV_read_depth
+ "GL_NV_read_depth",
+#endif
+#ifdef GL_NV_read_depth_stencil
+ "GL_NV_read_depth_stencil",
+#endif
+#ifdef GL_NV_read_stencil
+ "GL_NV_read_stencil",
+#endif
+#ifdef GL_NV_register_combiners
+ "GL_NV_register_combiners",
+#endif
+#ifdef GL_NV_register_combiners2
+ "GL_NV_register_combiners2",
+#endif
+#ifdef GL_NV_representative_fragment_test
+ "GL_NV_representative_fragment_test",
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ "GL_NV_robustness_video_memory_purge",
+#endif
+#ifdef GL_NV_sRGB_formats
+ "GL_NV_sRGB_formats",
+#endif
+#ifdef GL_NV_sample_locations
+ "GL_NV_sample_locations",
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ "GL_NV_sample_mask_override_coverage",
+#endif
+#ifdef GL_NV_scissor_exclusive
+ "GL_NV_scissor_exclusive",
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ "GL_NV_shader_atomic_counters",
+#endif
+#ifdef GL_NV_shader_atomic_float
+ "GL_NV_shader_atomic_float",
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ "GL_NV_shader_atomic_float64",
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ "GL_NV_shader_atomic_fp16_vector",
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ "GL_NV_shader_atomic_int64",
+#endif
+#ifdef GL_NV_shader_buffer_load
+ "GL_NV_shader_buffer_load",
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ "GL_NV_shader_noperspective_interpolation",
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ "GL_NV_shader_storage_buffer_object",
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ "GL_NV_shader_subgroup_partitioned",
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ "GL_NV_shader_texture_footprint",
+#endif
+#ifdef GL_NV_shader_thread_group
+ "GL_NV_shader_thread_group",
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ "GL_NV_shader_thread_shuffle",
+#endif
+#ifdef GL_NV_shading_rate_image
+ "GL_NV_shading_rate_image",
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ "GL_NV_shadow_samplers_array",
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ "GL_NV_shadow_samplers_cube",
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ "GL_NV_stereo_view_rendering",
+#endif
+#ifdef GL_NV_tessellation_program5
+ "GL_NV_tessellation_program5",
+#endif
+#ifdef GL_NV_texgen_emboss
+ "GL_NV_texgen_emboss",
+#endif
+#ifdef GL_NV_texgen_reflection
+ "GL_NV_texgen_reflection",
+#endif
+#ifdef GL_NV_texture_array
+ "GL_NV_texture_array",
+#endif
+#ifdef GL_NV_texture_barrier
+ "GL_NV_texture_barrier",
+#endif
+#ifdef GL_NV_texture_border_clamp
+ "GL_NV_texture_border_clamp",
+#endif
+#ifdef GL_NV_texture_compression_latc
+ "GL_NV_texture_compression_latc",
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ "GL_NV_texture_compression_s3tc",
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ "GL_NV_texture_compression_s3tc_update",
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ "GL_NV_texture_compression_vtc",
+#endif
+#ifdef GL_NV_texture_env_combine4
+ "GL_NV_texture_env_combine4",
+#endif
+#ifdef GL_NV_texture_expand_normal
+ "GL_NV_texture_expand_normal",
+#endif
+#ifdef GL_NV_texture_multisample
+ "GL_NV_texture_multisample",
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ "GL_NV_texture_npot_2D_mipmap",
+#endif
+#ifdef GL_NV_texture_rectangle
+ "GL_NV_texture_rectangle",
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ "GL_NV_texture_rectangle_compressed",
+#endif
+#ifdef GL_NV_texture_shader
+ "GL_NV_texture_shader",
+#endif
+#ifdef GL_NV_texture_shader2
+ "GL_NV_texture_shader2",
+#endif
+#ifdef GL_NV_texture_shader3
+ "GL_NV_texture_shader3",
+#endif
+#ifdef GL_NV_timeline_semaphore
+ "GL_NV_timeline_semaphore",
+#endif
+#ifdef GL_NV_transform_feedback
+ "GL_NV_transform_feedback",
+#endif
+#ifdef GL_NV_transform_feedback2
+ "GL_NV_transform_feedback2",
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ "GL_NV_uniform_buffer_unified_memory",
+#endif
+#ifdef GL_NV_vdpau_interop
+ "GL_NV_vdpau_interop",
+#endif
+#ifdef GL_NV_vdpau_interop2
+ "GL_NV_vdpau_interop2",
+#endif
+#ifdef GL_NV_vertex_array_range
+ "GL_NV_vertex_array_range",
+#endif
+#ifdef GL_NV_vertex_array_range2
+ "GL_NV_vertex_array_range2",
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ "GL_NV_vertex_attrib_integer_64bit",
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ "GL_NV_vertex_buffer_unified_memory",
+#endif
+#ifdef GL_NV_vertex_program
+ "GL_NV_vertex_program",
+#endif
+#ifdef GL_NV_vertex_program1_1
+ "GL_NV_vertex_program1_1",
+#endif
+#ifdef GL_NV_vertex_program2
+ "GL_NV_vertex_program2",
+#endif
+#ifdef GL_NV_vertex_program2_option
+ "GL_NV_vertex_program2_option",
+#endif
+#ifdef GL_NV_vertex_program3
+ "GL_NV_vertex_program3",
+#endif
+#ifdef GL_NV_vertex_program4
+ "GL_NV_vertex_program4",
+#endif
+#ifdef GL_NV_video_capture
+ "GL_NV_video_capture",
+#endif
+#ifdef GL_NV_viewport_array
+ "GL_NV_viewport_array",
+#endif
+#ifdef GL_NV_viewport_array2
+ "GL_NV_viewport_array2",
+#endif
+#ifdef GL_NV_viewport_swizzle
+ "GL_NV_viewport_swizzle",
+#endif
+#ifdef GL_OES_EGL_image
+ "GL_OES_EGL_image",
+#endif
+#ifdef GL_OES_EGL_image_external
+ "GL_OES_EGL_image_external",
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ "GL_OES_EGL_image_external_essl3",
+#endif
+#ifdef GL_OES_blend_equation_separate
+ "GL_OES_blend_equation_separate",
+#endif
+#ifdef GL_OES_blend_func_separate
+ "GL_OES_blend_func_separate",
+#endif
+#ifdef GL_OES_blend_subtract
+ "GL_OES_blend_subtract",
+#endif
+#ifdef GL_OES_byte_coordinates
+ "GL_OES_byte_coordinates",
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ "GL_OES_compressed_ETC1_RGB8_texture",
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ "GL_OES_compressed_paletted_texture",
+#endif
+#ifdef GL_OES_copy_image
+ "GL_OES_copy_image",
+#endif
+#ifdef GL_OES_depth24
+ "GL_OES_depth24",
+#endif
+#ifdef GL_OES_depth32
+ "GL_OES_depth32",
+#endif
+#ifdef GL_OES_depth_texture
+ "GL_OES_depth_texture",
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ "GL_OES_depth_texture_cube_map",
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ "GL_OES_draw_buffers_indexed",
+#endif
+#ifdef GL_OES_draw_texture
+ "GL_OES_draw_texture",
+#endif
+#ifdef GL_OES_element_index_uint
+ "GL_OES_element_index_uint",
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ "GL_OES_extended_matrix_palette",
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ "GL_OES_fbo_render_mipmap",
+#endif
+#ifdef GL_OES_fragment_precision_high
+ "GL_OES_fragment_precision_high",
+#endif
+#ifdef GL_OES_framebuffer_object
+ "GL_OES_framebuffer_object",
+#endif
+#ifdef GL_OES_geometry_point_size
+ "GL_OES_geometry_point_size",
+#endif
+#ifdef GL_OES_geometry_shader
+ "GL_OES_geometry_shader",
+#endif
+#ifdef GL_OES_get_program_binary
+ "GL_OES_get_program_binary",
+#endif
+#ifdef GL_OES_gpu_shader5
+ "GL_OES_gpu_shader5",
+#endif
+#ifdef GL_OES_mapbuffer
+ "GL_OES_mapbuffer",
+#endif
+#ifdef GL_OES_matrix_get
+ "GL_OES_matrix_get",
+#endif
+#ifdef GL_OES_matrix_palette
+ "GL_OES_matrix_palette",
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ "GL_OES_packed_depth_stencil",
+#endif
+#ifdef GL_OES_point_size_array
+ "GL_OES_point_size_array",
+#endif
+#ifdef GL_OES_point_sprite
+ "GL_OES_point_sprite",
+#endif
+#ifdef GL_OES_read_format
+ "GL_OES_read_format",
+#endif
+#ifdef GL_OES_required_internalformat
+ "GL_OES_required_internalformat",
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ "GL_OES_rgb8_rgba8",
+#endif
+#ifdef GL_OES_sample_shading
+ "GL_OES_sample_shading",
+#endif
+#ifdef GL_OES_sample_variables
+ "GL_OES_sample_variables",
+#endif
+#ifdef GL_OES_shader_image_atomic
+ "GL_OES_shader_image_atomic",
+#endif
+#ifdef GL_OES_shader_io_blocks
+ "GL_OES_shader_io_blocks",
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ "GL_OES_shader_multisample_interpolation",
+#endif
+#ifdef GL_OES_single_precision
+ "GL_OES_single_precision",
+#endif
+#ifdef GL_OES_standard_derivatives
+ "GL_OES_standard_derivatives",
+#endif
+#ifdef GL_OES_stencil1
+ "GL_OES_stencil1",
+#endif
+#ifdef GL_OES_stencil4
+ "GL_OES_stencil4",
+#endif
+#ifdef GL_OES_stencil8
+ "GL_OES_stencil8",
+#endif
+#ifdef GL_OES_surfaceless_context
+ "GL_OES_surfaceless_context",
+#endif
+#ifdef GL_OES_tessellation_point_size
+ "GL_OES_tessellation_point_size",
+#endif
+#ifdef GL_OES_tessellation_shader
+ "GL_OES_tessellation_shader",
+#endif
+#ifdef GL_OES_texture_3D
+ "GL_OES_texture_3D",
+#endif
+#ifdef GL_OES_texture_border_clamp
+ "GL_OES_texture_border_clamp",
+#endif
+#ifdef GL_OES_texture_buffer
+ "GL_OES_texture_buffer",
+#endif
+#ifdef GL_OES_texture_compression_astc
+ "GL_OES_texture_compression_astc",
+#endif
+#ifdef GL_OES_texture_cube_map
+ "GL_OES_texture_cube_map",
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ "GL_OES_texture_cube_map_array",
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ "GL_OES_texture_env_crossbar",
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ "GL_OES_texture_mirrored_repeat",
+#endif
+#ifdef GL_OES_texture_npot
+ "GL_OES_texture_npot",
+#endif
+#ifdef GL_OES_texture_stencil8
+ "GL_OES_texture_stencil8",
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ "GL_OES_texture_storage_multisample_2d_array",
+#endif
+#ifdef GL_OES_texture_view
+ "GL_OES_texture_view",
+#endif
+#ifdef GL_OES_vertex_array_object
+ "GL_OES_vertex_array_object",
+#endif
+#ifdef GL_OES_vertex_half_float
+ "GL_OES_vertex_half_float",
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ "GL_OES_vertex_type_10_10_10_2",
+#endif
+#ifdef GL_OML_interlace
+ "GL_OML_interlace",
+#endif
+#ifdef GL_OML_resample
+ "GL_OML_resample",
+#endif
+#ifdef GL_OML_subsample
+ "GL_OML_subsample",
+#endif
+#ifdef GL_OVR_multiview
+ "GL_OVR_multiview",
+#endif
+#ifdef GL_OVR_multiview2
+ "GL_OVR_multiview2",
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ "GL_OVR_multiview_multisampled_render_to_texture",
+#endif
+#ifdef GL_PGI_misc_hints
+ "GL_PGI_misc_hints",
+#endif
+#ifdef GL_PGI_vertex_hints
+ "GL_PGI_vertex_hints",
+#endif
+#ifdef GL_QCOM_YUV_texture_gather
+ "GL_QCOM_YUV_texture_gather",
+#endif
+#ifdef GL_QCOM_alpha_test
+ "GL_QCOM_alpha_test",
+#endif
+#ifdef GL_QCOM_binning_control
+ "GL_QCOM_binning_control",
+#endif
+#ifdef GL_QCOM_driver_control
+ "GL_QCOM_driver_control",
+#endif
+#ifdef GL_QCOM_extended_get
+ "GL_QCOM_extended_get",
+#endif
+#ifdef GL_QCOM_extended_get2
+ "GL_QCOM_extended_get2",
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ "GL_QCOM_frame_extrapolation",
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ "GL_QCOM_framebuffer_foveated",
+#endif
+#ifdef GL_QCOM_motion_estimation
+ "GL_QCOM_motion_estimation",
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ "GL_QCOM_perfmon_global_mode",
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ "GL_QCOM_render_shared_exponent",
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ "GL_QCOM_shader_framebuffer_fetch_noncoherent",
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ "GL_QCOM_shader_framebuffer_fetch_rate",
+#endif
+#ifdef GL_QCOM_shading_rate
+ "GL_QCOM_shading_rate",
+#endif
+#ifdef GL_QCOM_texture_foveated
+ "GL_QCOM_texture_foveated",
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ "GL_QCOM_texture_foveated2",
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ "GL_QCOM_texture_foveated_subsampled_layout",
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ "GL_QCOM_tiled_rendering",
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ "GL_QCOM_writeonly_rendering",
+#endif
+#ifdef GL_REGAL_ES1_0_compatibility
+ "GL_REGAL_ES1_0_compatibility",
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ "GL_REGAL_ES1_1_compatibility",
+#endif
+#ifdef GL_REGAL_enable
+ "GL_REGAL_enable",
+#endif
+#ifdef GL_REGAL_error_string
+ "GL_REGAL_error_string",
+#endif
+#ifdef GL_REGAL_extension_query
+ "GL_REGAL_extension_query",
+#endif
+#ifdef GL_REGAL_log
+ "GL_REGAL_log",
+#endif
+#ifdef GL_REGAL_proc_address
+ "GL_REGAL_proc_address",
+#endif
+#ifdef GL_REND_screen_coordinates
+ "GL_REND_screen_coordinates",
+#endif
+#ifdef GL_S3_s3tc
+ "GL_S3_s3tc",
+#endif
+#ifdef GL_SGIS_clip_band_hint
+ "GL_SGIS_clip_band_hint",
+#endif
+#ifdef GL_SGIS_color_range
+ "GL_SGIS_color_range",
+#endif
+#ifdef GL_SGIS_detail_texture
+ "GL_SGIS_detail_texture",
+#endif
+#ifdef GL_SGIS_fog_function
+ "GL_SGIS_fog_function",
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ "GL_SGIS_generate_mipmap",
+#endif
+#ifdef GL_SGIS_line_texgen
+ "GL_SGIS_line_texgen",
+#endif
+#ifdef GL_SGIS_multisample
+ "GL_SGIS_multisample",
+#endif
+#ifdef GL_SGIS_multitexture
+ "GL_SGIS_multitexture",
+#endif
+#ifdef GL_SGIS_pixel_texture
+ "GL_SGIS_pixel_texture",
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ "GL_SGIS_point_line_texgen",
+#endif
+#ifdef GL_SGIS_shared_multisample
+ "GL_SGIS_shared_multisample",
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ "GL_SGIS_sharpen_texture",
+#endif
+#ifdef GL_SGIS_texture4D
+ "GL_SGIS_texture4D",
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ "GL_SGIS_texture_border_clamp",
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ "GL_SGIS_texture_edge_clamp",
+#endif
+#ifdef GL_SGIS_texture_filter4
+ "GL_SGIS_texture_filter4",
+#endif
+#ifdef GL_SGIS_texture_lod
+ "GL_SGIS_texture_lod",
+#endif
+#ifdef GL_SGIS_texture_select
+ "GL_SGIS_texture_select",
+#endif
+#ifdef GL_SGIX_async
+ "GL_SGIX_async",
+#endif
+#ifdef GL_SGIX_async_histogram
+ "GL_SGIX_async_histogram",
+#endif
+#ifdef GL_SGIX_async_pixel
+ "GL_SGIX_async_pixel",
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ "GL_SGIX_bali_g_instruments",
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ "GL_SGIX_bali_r_instruments",
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ "GL_SGIX_bali_timer_instruments",
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ "GL_SGIX_blend_alpha_minmax",
+#endif
+#ifdef GL_SGIX_blend_cadd
+ "GL_SGIX_blend_cadd",
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ "GL_SGIX_blend_cmultiply",
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ "GL_SGIX_calligraphic_fragment",
+#endif
+#ifdef GL_SGIX_clipmap
+ "GL_SGIX_clipmap",
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ "GL_SGIX_color_matrix_accuracy",
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ "GL_SGIX_color_table_index_mode",
+#endif
+#ifdef GL_SGIX_complex_polar
+ "GL_SGIX_complex_polar",
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ "GL_SGIX_convolution_accuracy",
+#endif
+#ifdef GL_SGIX_cube_map
+ "GL_SGIX_cube_map",
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ "GL_SGIX_cylinder_texgen",
+#endif
+#ifdef GL_SGIX_datapipe
+ "GL_SGIX_datapipe",
+#endif
+#ifdef GL_SGIX_decimation
+ "GL_SGIX_decimation",
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ "GL_SGIX_depth_pass_instrument",
+#endif
+#ifdef GL_SGIX_depth_texture
+ "GL_SGIX_depth_texture",
+#endif
+#ifdef GL_SGIX_dvc
+ "GL_SGIX_dvc",
+#endif
+#ifdef GL_SGIX_flush_raster
+ "GL_SGIX_flush_raster",
+#endif
+#ifdef GL_SGIX_fog_blend
+ "GL_SGIX_fog_blend",
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ "GL_SGIX_fog_factor_to_alpha",
+#endif
+#ifdef GL_SGIX_fog_layers
+ "GL_SGIX_fog_layers",
+#endif
+#ifdef GL_SGIX_fog_offset
+ "GL_SGIX_fog_offset",
+#endif
+#ifdef GL_SGIX_fog_patchy
+ "GL_SGIX_fog_patchy",
+#endif
+#ifdef GL_SGIX_fog_scale
+ "GL_SGIX_fog_scale",
+#endif
+#ifdef GL_SGIX_fog_texture
+ "GL_SGIX_fog_texture",
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ "GL_SGIX_fragment_lighting_space",
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ "GL_SGIX_fragment_specular_lighting",
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ "GL_SGIX_fragments_instrument",
+#endif
+#ifdef GL_SGIX_framezoom
+ "GL_SGIX_framezoom",
+#endif
+#ifdef GL_SGIX_icc_texture
+ "GL_SGIX_icc_texture",
+#endif
+#ifdef GL_SGIX_igloo_interface
+ "GL_SGIX_igloo_interface",
+#endif
+#ifdef GL_SGIX_image_compression
+ "GL_SGIX_image_compression",
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ "GL_SGIX_impact_pixel_texture",
+#endif
+#ifdef GL_SGIX_instrument_error
+ "GL_SGIX_instrument_error",
+#endif
+#ifdef GL_SGIX_interlace
+ "GL_SGIX_interlace",
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ "GL_SGIX_ir_instrument1",
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ "GL_SGIX_line_quality_hint",
+#endif
+#ifdef GL_SGIX_list_priority
+ "GL_SGIX_list_priority",
+#endif
+#ifdef GL_SGIX_mpeg1
+ "GL_SGIX_mpeg1",
+#endif
+#ifdef GL_SGIX_mpeg2
+ "GL_SGIX_mpeg2",
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ "GL_SGIX_nonlinear_lighting_pervertex",
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ "GL_SGIX_nurbs_eval",
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ "GL_SGIX_occlusion_instrument",
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ "GL_SGIX_packed_6bytes",
+#endif
+#ifdef GL_SGIX_pixel_texture
+ "GL_SGIX_pixel_texture",
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ "GL_SGIX_pixel_texture_bits",
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ "GL_SGIX_pixel_texture_lod",
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ "GL_SGIX_pixel_tiles",
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ "GL_SGIX_polynomial_ffd",
+#endif
+#ifdef GL_SGIX_quad_mesh
+ "GL_SGIX_quad_mesh",
+#endif
+#ifdef GL_SGIX_reference_plane
+ "GL_SGIX_reference_plane",
+#endif
+#ifdef GL_SGIX_resample
+ "GL_SGIX_resample",
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ "GL_SGIX_scalebias_hint",
+#endif
+#ifdef GL_SGIX_shadow
+ "GL_SGIX_shadow",
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ "GL_SGIX_shadow_ambient",
+#endif
+#ifdef GL_SGIX_slim
+ "GL_SGIX_slim",
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ "GL_SGIX_spotlight_cutoff",
+#endif
+#ifdef GL_SGIX_sprite
+ "GL_SGIX_sprite",
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ "GL_SGIX_subdiv_patch",
+#endif
+#ifdef GL_SGIX_subsample
+ "GL_SGIX_subsample",
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ "GL_SGIX_tag_sample_buffer",
+#endif
+#ifdef GL_SGIX_texture_add_env
+ "GL_SGIX_texture_add_env",
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ "GL_SGIX_texture_coordinate_clamp",
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ "GL_SGIX_texture_lod_bias",
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ "GL_SGIX_texture_mipmap_anisotropic",
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ "GL_SGIX_texture_multi_buffer",
+#endif
+#ifdef GL_SGIX_texture_phase
+ "GL_SGIX_texture_phase",
+#endif
+#ifdef GL_SGIX_texture_range
+ "GL_SGIX_texture_range",
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ "GL_SGIX_texture_scale_bias",
+#endif
+#ifdef GL_SGIX_texture_supersample
+ "GL_SGIX_texture_supersample",
+#endif
+#ifdef GL_SGIX_vector_ops
+ "GL_SGIX_vector_ops",
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ "GL_SGIX_vertex_array_object",
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ "GL_SGIX_vertex_preclip",
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ "GL_SGIX_vertex_preclip_hint",
+#endif
+#ifdef GL_SGIX_ycrcb
+ "GL_SGIX_ycrcb",
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ "GL_SGIX_ycrcb_subsample",
+#endif
+#ifdef GL_SGIX_ycrcba
+ "GL_SGIX_ycrcba",
+#endif
+#ifdef GL_SGI_color_matrix
+ "GL_SGI_color_matrix",
+#endif
+#ifdef GL_SGI_color_table
+ "GL_SGI_color_table",
+#endif
+#ifdef GL_SGI_complex
+ "GL_SGI_complex",
+#endif
+#ifdef GL_SGI_complex_type
+ "GL_SGI_complex_type",
+#endif
+#ifdef GL_SGI_fft
+ "GL_SGI_fft",
+#endif
+#ifdef GL_SGI_texture_color_table
+ "GL_SGI_texture_color_table",
+#endif
+#ifdef GL_SUNX_constant_data
+ "GL_SUNX_constant_data",
+#endif
+#ifdef GL_SUN_convolution_border_modes
+ "GL_SUN_convolution_border_modes",
+#endif
+#ifdef GL_SUN_global_alpha
+ "GL_SUN_global_alpha",
+#endif
+#ifdef GL_SUN_mesh_array
+ "GL_SUN_mesh_array",
+#endif
+#ifdef GL_SUN_read_video_pixels
+ "GL_SUN_read_video_pixels",
+#endif
+#ifdef GL_SUN_slice_accum
+ "GL_SUN_slice_accum",
+#endif
+#ifdef GL_SUN_triangle_list
+ "GL_SUN_triangle_list",
+#endif
+#ifdef GL_SUN_vertex
+ "GL_SUN_vertex",
+#endif
+#ifdef GL_VERSION_1_2
+ "GL_VERSION_1_2",
+#endif
+#ifdef GL_VERSION_1_2_1
+ "GL_VERSION_1_2_1",
+#endif
+#ifdef GL_VERSION_1_3
+ "GL_VERSION_1_3",
+#endif
+#ifdef GL_VERSION_1_4
+ "GL_VERSION_1_4",
+#endif
+#ifdef GL_VERSION_1_5
+ "GL_VERSION_1_5",
+#endif
+#ifdef GL_VERSION_2_0
+ "GL_VERSION_2_0",
+#endif
+#ifdef GL_VERSION_2_1
+ "GL_VERSION_2_1",
+#endif
+#ifdef GL_VERSION_3_0
+ "GL_VERSION_3_0",
+#endif
+#ifdef GL_VERSION_3_1
+ "GL_VERSION_3_1",
+#endif
+#ifdef GL_VERSION_3_2
+ "GL_VERSION_3_2",
+#endif
+#ifdef GL_VERSION_3_3
+ "GL_VERSION_3_3",
+#endif
+#ifdef GL_VERSION_4_0
+ "GL_VERSION_4_0",
+#endif
+#ifdef GL_VERSION_4_1
+ "GL_VERSION_4_1",
+#endif
+#ifdef GL_VERSION_4_2
+ "GL_VERSION_4_2",
+#endif
+#ifdef GL_VERSION_4_3
+ "GL_VERSION_4_3",
+#endif
+#ifdef GL_VERSION_4_4
+ "GL_VERSION_4_4",
+#endif
+#ifdef GL_VERSION_4_5
+ "GL_VERSION_4_5",
+#endif
+#ifdef GL_VERSION_4_6
+ "GL_VERSION_4_6",
+#endif
+#ifdef GL_VIV_shader_binary
+ "GL_VIV_shader_binary",
+#endif
+#ifdef GL_WIN_phong_shading
+ "GL_WIN_phong_shading",
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ "GL_WIN_scene_markerXXX",
+#endif
+#ifdef GL_WIN_specular_fog
+ "GL_WIN_specular_fog",
+#endif
+#ifdef GL_WIN_swap_hint
+ "GL_WIN_swap_hint",
+#endif
+ NULL
+};
+
+
+/* Detected in the extension string or strings */
+static GLboolean _glewExtensionString[947];
+/* Detected via extension string or experimental mode */
+static GLboolean* _glewExtensionEnabled[] = {
+#ifdef GL_3DFX_multisample
+ &__GLEW_3DFX_multisample,
+#endif
+#ifdef GL_3DFX_tbuffer
+ &__GLEW_3DFX_tbuffer,
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ &__GLEW_3DFX_texture_compression_FXT1,
+#endif
+#ifdef GL_AMD_blend_minmax_factor
+ &__GLEW_AMD_blend_minmax_factor,
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ &__GLEW_AMD_compressed_3DC_texture,
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ &__GLEW_AMD_compressed_ATC_texture,
+#endif
+#ifdef GL_AMD_conservative_depth
+ &__GLEW_AMD_conservative_depth,
+#endif
+#ifdef GL_AMD_debug_output
+ &__GLEW_AMD_debug_output,
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ &__GLEW_AMD_depth_clamp_separate,
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ &__GLEW_AMD_draw_buffers_blend,
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ &__GLEW_AMD_framebuffer_multisample_advanced,
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ &__GLEW_AMD_framebuffer_sample_positions,
+#endif
+#ifdef GL_AMD_gcn_shader
+ &__GLEW_AMD_gcn_shader,
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ &__GLEW_AMD_gpu_shader_half_float,
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ &__GLEW_AMD_gpu_shader_half_float_fetch,
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ &__GLEW_AMD_gpu_shader_int16,
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ &__GLEW_AMD_gpu_shader_int64,
+#endif
+#ifdef GL_AMD_interleaved_elements
+ &__GLEW_AMD_interleaved_elements,
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ &__GLEW_AMD_multi_draw_indirect,
+#endif
+#ifdef GL_AMD_name_gen_delete
+ &__GLEW_AMD_name_gen_delete,
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ &__GLEW_AMD_occlusion_query_event,
+#endif
+#ifdef GL_AMD_performance_monitor
+ &__GLEW_AMD_performance_monitor,
+#endif
+#ifdef GL_AMD_pinned_memory
+ &__GLEW_AMD_pinned_memory,
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ &__GLEW_AMD_program_binary_Z400,
+#endif
+#ifdef GL_AMD_query_buffer_object
+ &__GLEW_AMD_query_buffer_object,
+#endif
+#ifdef GL_AMD_sample_positions
+ &__GLEW_AMD_sample_positions,
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ &__GLEW_AMD_seamless_cubemap_per_texture,
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ &__GLEW_AMD_shader_atomic_counter_ops,
+#endif
+#ifdef GL_AMD_shader_ballot
+ &__GLEW_AMD_shader_ballot,
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ &__GLEW_AMD_shader_explicit_vertex_parameter,
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ &__GLEW_AMD_shader_image_load_store_lod,
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ &__GLEW_AMD_shader_stencil_export,
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ &__GLEW_AMD_shader_stencil_value_export,
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ &__GLEW_AMD_shader_trinary_minmax,
+#endif
+#ifdef GL_AMD_sparse_texture
+ &__GLEW_AMD_sparse_texture,
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ &__GLEW_AMD_stencil_operation_extended,
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ &__GLEW_AMD_texture_gather_bias_lod,
+#endif
+#ifdef GL_AMD_texture_texture4
+ &__GLEW_AMD_texture_texture4,
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ &__GLEW_AMD_transform_feedback3_lines_triangles,
+#endif
+#ifdef GL_AMD_transform_feedback4
+ &__GLEW_AMD_transform_feedback4,
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ &__GLEW_AMD_vertex_shader_layer,
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ &__GLEW_AMD_vertex_shader_tessellator,
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ &__GLEW_AMD_vertex_shader_viewport_index,
+#endif
+#ifdef GL_ANDROID_extension_pack_es31a
+ &__GLEW_ANDROID_extension_pack_es31a,
+#endif
+#ifdef GL_ANGLE_depth_texture
+ &__GLEW_ANGLE_depth_texture,
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ &__GLEW_ANGLE_framebuffer_blit,
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ &__GLEW_ANGLE_framebuffer_multisample,
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ &__GLEW_ANGLE_instanced_arrays,
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ &__GLEW_ANGLE_pack_reverse_row_order,
+#endif
+#ifdef GL_ANGLE_program_binary
+ &__GLEW_ANGLE_program_binary,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ &__GLEW_ANGLE_texture_compression_dxt1,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ &__GLEW_ANGLE_texture_compression_dxt3,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ &__GLEW_ANGLE_texture_compression_dxt5,
+#endif
+#ifdef GL_ANGLE_texture_usage
+ &__GLEW_ANGLE_texture_usage,
+#endif
+#ifdef GL_ANGLE_timer_query
+ &__GLEW_ANGLE_timer_query,
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ &__GLEW_ANGLE_translated_shader_source,
+#endif
+#ifdef GL_APPLE_aux_depth_stencil
+ &__GLEW_APPLE_aux_depth_stencil,
+#endif
+#ifdef GL_APPLE_client_storage
+ &__GLEW_APPLE_client_storage,
+#endif
+#ifdef GL_APPLE_clip_distance
+ &__GLEW_APPLE_clip_distance,
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ &__GLEW_APPLE_color_buffer_packed_float,
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ &__GLEW_APPLE_copy_texture_levels,
+#endif
+#ifdef GL_APPLE_element_array
+ &__GLEW_APPLE_element_array,
+#endif
+#ifdef GL_APPLE_fence
+ &__GLEW_APPLE_fence,
+#endif
+#ifdef GL_APPLE_float_pixels
+ &__GLEW_APPLE_float_pixels,
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ &__GLEW_APPLE_flush_buffer_range,
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ &__GLEW_APPLE_framebuffer_multisample,
+#endif
+#ifdef GL_APPLE_object_purgeable
+ &__GLEW_APPLE_object_purgeable,
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ &__GLEW_APPLE_pixel_buffer,
+#endif
+#ifdef GL_APPLE_rgb_422
+ &__GLEW_APPLE_rgb_422,
+#endif
+#ifdef GL_APPLE_row_bytes
+ &__GLEW_APPLE_row_bytes,
+#endif
+#ifdef GL_APPLE_specular_vector
+ &__GLEW_APPLE_specular_vector,
+#endif
+#ifdef GL_APPLE_sync
+ &__GLEW_APPLE_sync,
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ &__GLEW_APPLE_texture_2D_limited_npot,
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ &__GLEW_APPLE_texture_format_BGRA8888,
+#endif
+#ifdef GL_APPLE_texture_max_level
+ &__GLEW_APPLE_texture_max_level,
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ &__GLEW_APPLE_texture_packed_float,
+#endif
+#ifdef GL_APPLE_texture_range
+ &__GLEW_APPLE_texture_range,
+#endif
+#ifdef GL_APPLE_transform_hint
+ &__GLEW_APPLE_transform_hint,
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ &__GLEW_APPLE_vertex_array_object,
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ &__GLEW_APPLE_vertex_array_range,
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ &__GLEW_APPLE_vertex_program_evaluators,
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ &__GLEW_APPLE_ycbcr_422,
+#endif
+#ifdef GL_ARB_ES2_compatibility
+ &__GLEW_ARB_ES2_compatibility,
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ &__GLEW_ARB_ES3_1_compatibility,
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ &__GLEW_ARB_ES3_2_compatibility,
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ &__GLEW_ARB_ES3_compatibility,
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ &__GLEW_ARB_arrays_of_arrays,
+#endif
+#ifdef GL_ARB_base_instance
+ &__GLEW_ARB_base_instance,
+#endif
+#ifdef GL_ARB_bindless_texture
+ &__GLEW_ARB_bindless_texture,
+#endif
+#ifdef GL_ARB_blend_func_extended
+ &__GLEW_ARB_blend_func_extended,
+#endif
+#ifdef GL_ARB_buffer_storage
+ &__GLEW_ARB_buffer_storage,
+#endif
+#ifdef GL_ARB_cl_event
+ &__GLEW_ARB_cl_event,
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ &__GLEW_ARB_clear_buffer_object,
+#endif
+#ifdef GL_ARB_clear_texture
+ &__GLEW_ARB_clear_texture,
+#endif
+#ifdef GL_ARB_clip_control
+ &__GLEW_ARB_clip_control,
+#endif
+#ifdef GL_ARB_color_buffer_float
+ &__GLEW_ARB_color_buffer_float,
+#endif
+#ifdef GL_ARB_compatibility
+ &__GLEW_ARB_compatibility,
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ &__GLEW_ARB_compressed_texture_pixel_storage,
+#endif
+#ifdef GL_ARB_compute_shader
+ &__GLEW_ARB_compute_shader,
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ &__GLEW_ARB_compute_variable_group_size,
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ &__GLEW_ARB_conditional_render_inverted,
+#endif
+#ifdef GL_ARB_conservative_depth
+ &__GLEW_ARB_conservative_depth,
+#endif
+#ifdef GL_ARB_copy_buffer
+ &__GLEW_ARB_copy_buffer,
+#endif
+#ifdef GL_ARB_copy_image
+ &__GLEW_ARB_copy_image,
+#endif
+#ifdef GL_ARB_cull_distance
+ &__GLEW_ARB_cull_distance,
+#endif
+#ifdef GL_ARB_debug_output
+ &__GLEW_ARB_debug_output,
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ &__GLEW_ARB_depth_buffer_float,
+#endif
+#ifdef GL_ARB_depth_clamp
+ &__GLEW_ARB_depth_clamp,
+#endif
+#ifdef GL_ARB_depth_texture
+ &__GLEW_ARB_depth_texture,
+#endif
+#ifdef GL_ARB_derivative_control
+ &__GLEW_ARB_derivative_control,
+#endif
+#ifdef GL_ARB_direct_state_access
+ &__GLEW_ARB_direct_state_access,
+#endif
+#ifdef GL_ARB_draw_buffers
+ &__GLEW_ARB_draw_buffers,
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ &__GLEW_ARB_draw_buffers_blend,
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ &__GLEW_ARB_draw_elements_base_vertex,
+#endif
+#ifdef GL_ARB_draw_indirect
+ &__GLEW_ARB_draw_indirect,
+#endif
+#ifdef GL_ARB_draw_instanced
+ &__GLEW_ARB_draw_instanced,
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ &__GLEW_ARB_enhanced_layouts,
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ &__GLEW_ARB_explicit_attrib_location,
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ &__GLEW_ARB_explicit_uniform_location,
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ &__GLEW_ARB_fragment_coord_conventions,
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ &__GLEW_ARB_fragment_layer_viewport,
+#endif
+#ifdef GL_ARB_fragment_program
+ &__GLEW_ARB_fragment_program,
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ &__GLEW_ARB_fragment_program_shadow,
+#endif
+#ifdef GL_ARB_fragment_shader
+ &__GLEW_ARB_fragment_shader,
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ &__GLEW_ARB_fragment_shader_interlock,
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ &__GLEW_ARB_framebuffer_no_attachments,
+#endif
+#ifdef GL_ARB_framebuffer_object
+ &__GLEW_ARB_framebuffer_object,
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ &__GLEW_ARB_framebuffer_sRGB,
+#endif
+#ifdef GL_ARB_geometry_shader4
+ &__GLEW_ARB_geometry_shader4,
+#endif
+#ifdef GL_ARB_get_program_binary
+ &__GLEW_ARB_get_program_binary,
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ &__GLEW_ARB_get_texture_sub_image,
+#endif
+#ifdef GL_ARB_gl_spirv
+ &__GLEW_ARB_gl_spirv,
+#endif
+#ifdef GL_ARB_gpu_shader5
+ &__GLEW_ARB_gpu_shader5,
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ &__GLEW_ARB_gpu_shader_fp64,
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ &__GLEW_ARB_gpu_shader_int64,
+#endif
+#ifdef GL_ARB_half_float_pixel
+ &__GLEW_ARB_half_float_pixel,
+#endif
+#ifdef GL_ARB_half_float_vertex
+ &__GLEW_ARB_half_float_vertex,
+#endif
+#ifdef GL_ARB_imaging
+ &__GLEW_ARB_imaging,
+#endif
+#ifdef GL_ARB_indirect_parameters
+ &__GLEW_ARB_indirect_parameters,
+#endif
+#ifdef GL_ARB_instanced_arrays
+ &__GLEW_ARB_instanced_arrays,
+#endif
+#ifdef GL_ARB_internalformat_query
+ &__GLEW_ARB_internalformat_query,
+#endif
+#ifdef GL_ARB_internalformat_query2
+ &__GLEW_ARB_internalformat_query2,
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ &__GLEW_ARB_invalidate_subdata,
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ &__GLEW_ARB_map_buffer_alignment,
+#endif
+#ifdef GL_ARB_map_buffer_range
+ &__GLEW_ARB_map_buffer_range,
+#endif
+#ifdef GL_ARB_matrix_palette
+ &__GLEW_ARB_matrix_palette,
+#endif
+#ifdef GL_ARB_multi_bind
+ &__GLEW_ARB_multi_bind,
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ &__GLEW_ARB_multi_draw_indirect,
+#endif
+#ifdef GL_ARB_multisample
+ &__GLEW_ARB_multisample,
+#endif
+#ifdef GL_ARB_multitexture
+ &__GLEW_ARB_multitexture,
+#endif
+#ifdef GL_ARB_occlusion_query
+ &__GLEW_ARB_occlusion_query,
+#endif
+#ifdef GL_ARB_occlusion_query2
+ &__GLEW_ARB_occlusion_query2,
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ &__GLEW_ARB_parallel_shader_compile,
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ &__GLEW_ARB_pipeline_statistics_query,
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ &__GLEW_ARB_pixel_buffer_object,
+#endif
+#ifdef GL_ARB_point_parameters
+ &__GLEW_ARB_point_parameters,
+#endif
+#ifdef GL_ARB_point_sprite
+ &__GLEW_ARB_point_sprite,
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ &__GLEW_ARB_polygon_offset_clamp,
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ &__GLEW_ARB_post_depth_coverage,
+#endif
+#ifdef GL_ARB_program_interface_query
+ &__GLEW_ARB_program_interface_query,
+#endif
+#ifdef GL_ARB_provoking_vertex
+ &__GLEW_ARB_provoking_vertex,
+#endif
+#ifdef GL_ARB_query_buffer_object
+ &__GLEW_ARB_query_buffer_object,
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ &__GLEW_ARB_robust_buffer_access_behavior,
+#endif
+#ifdef GL_ARB_robustness
+ &__GLEW_ARB_robustness,
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ &__GLEW_ARB_robustness_application_isolation,
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ &__GLEW_ARB_robustness_share_group_isolation,
+#endif
+#ifdef GL_ARB_sample_locations
+ &__GLEW_ARB_sample_locations,
+#endif
+#ifdef GL_ARB_sample_shading
+ &__GLEW_ARB_sample_shading,
+#endif
+#ifdef GL_ARB_sampler_objects
+ &__GLEW_ARB_sampler_objects,
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ &__GLEW_ARB_seamless_cube_map,
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ &__GLEW_ARB_seamless_cubemap_per_texture,
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ &__GLEW_ARB_separate_shader_objects,
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ &__GLEW_ARB_shader_atomic_counter_ops,
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ &__GLEW_ARB_shader_atomic_counters,
+#endif
+#ifdef GL_ARB_shader_ballot
+ &__GLEW_ARB_shader_ballot,
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ &__GLEW_ARB_shader_bit_encoding,
+#endif
+#ifdef GL_ARB_shader_clock
+ &__GLEW_ARB_shader_clock,
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ &__GLEW_ARB_shader_draw_parameters,
+#endif
+#ifdef GL_ARB_shader_group_vote
+ &__GLEW_ARB_shader_group_vote,
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ &__GLEW_ARB_shader_image_load_store,
+#endif
+#ifdef GL_ARB_shader_image_size
+ &__GLEW_ARB_shader_image_size,
+#endif
+#ifdef GL_ARB_shader_objects
+ &__GLEW_ARB_shader_objects,
+#endif
+#ifdef GL_ARB_shader_precision
+ &__GLEW_ARB_shader_precision,
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ &__GLEW_ARB_shader_stencil_export,
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ &__GLEW_ARB_shader_storage_buffer_object,
+#endif
+#ifdef GL_ARB_shader_subroutine
+ &__GLEW_ARB_shader_subroutine,
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ &__GLEW_ARB_shader_texture_image_samples,
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ &__GLEW_ARB_shader_texture_lod,
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ &__GLEW_ARB_shader_viewport_layer_array,
+#endif
+#ifdef GL_ARB_shading_language_100
+ &__GLEW_ARB_shading_language_100,
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ &__GLEW_ARB_shading_language_420pack,
+#endif
+#ifdef GL_ARB_shading_language_include
+ &__GLEW_ARB_shading_language_include,
+#endif
+#ifdef GL_ARB_shading_language_packing
+ &__GLEW_ARB_shading_language_packing,
+#endif
+#ifdef GL_ARB_shadow
+ &__GLEW_ARB_shadow,
+#endif
+#ifdef GL_ARB_shadow_ambient
+ &__GLEW_ARB_shadow_ambient,
+#endif
+#ifdef GL_ARB_sparse_buffer
+ &__GLEW_ARB_sparse_buffer,
+#endif
+#ifdef GL_ARB_sparse_texture
+ &__GLEW_ARB_sparse_texture,
+#endif
+#ifdef GL_ARB_sparse_texture2
+ &__GLEW_ARB_sparse_texture2,
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ &__GLEW_ARB_sparse_texture_clamp,
+#endif
+#ifdef GL_ARB_spirv_extensions
+ &__GLEW_ARB_spirv_extensions,
+#endif
+#ifdef GL_ARB_stencil_texturing
+ &__GLEW_ARB_stencil_texturing,
+#endif
+#ifdef GL_ARB_sync
+ &__GLEW_ARB_sync,
+#endif
+#ifdef GL_ARB_tessellation_shader
+ &__GLEW_ARB_tessellation_shader,
+#endif
+#ifdef GL_ARB_texture_barrier
+ &__GLEW_ARB_texture_barrier,
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ &__GLEW_ARB_texture_border_clamp,
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ &__GLEW_ARB_texture_buffer_object,
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ &__GLEW_ARB_texture_buffer_object_rgb32,
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ &__GLEW_ARB_texture_buffer_range,
+#endif
+#ifdef GL_ARB_texture_compression
+ &__GLEW_ARB_texture_compression,
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ &__GLEW_ARB_texture_compression_bptc,
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ &__GLEW_ARB_texture_compression_rgtc,
+#endif
+#ifdef GL_ARB_texture_cube_map
+ &__GLEW_ARB_texture_cube_map,
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ &__GLEW_ARB_texture_cube_map_array,
+#endif
+#ifdef GL_ARB_texture_env_add
+ &__GLEW_ARB_texture_env_add,
+#endif
+#ifdef GL_ARB_texture_env_combine
+ &__GLEW_ARB_texture_env_combine,
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ &__GLEW_ARB_texture_env_crossbar,
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ &__GLEW_ARB_texture_env_dot3,
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ &__GLEW_ARB_texture_filter_anisotropic,
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ &__GLEW_ARB_texture_filter_minmax,
+#endif
+#ifdef GL_ARB_texture_float
+ &__GLEW_ARB_texture_float,
+#endif
+#ifdef GL_ARB_texture_gather
+ &__GLEW_ARB_texture_gather,
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ &__GLEW_ARB_texture_mirror_clamp_to_edge,
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ &__GLEW_ARB_texture_mirrored_repeat,
+#endif
+#ifdef GL_ARB_texture_multisample
+ &__GLEW_ARB_texture_multisample,
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ &__GLEW_ARB_texture_non_power_of_two,
+#endif
+#ifdef GL_ARB_texture_query_levels
+ &__GLEW_ARB_texture_query_levels,
+#endif
+#ifdef GL_ARB_texture_query_lod
+ &__GLEW_ARB_texture_query_lod,
+#endif
+#ifdef GL_ARB_texture_rectangle
+ &__GLEW_ARB_texture_rectangle,
+#endif
+#ifdef GL_ARB_texture_rg
+ &__GLEW_ARB_texture_rg,
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ &__GLEW_ARB_texture_rgb10_a2ui,
+#endif
+#ifdef GL_ARB_texture_stencil8
+ &__GLEW_ARB_texture_stencil8,
+#endif
+#ifdef GL_ARB_texture_storage
+ &__GLEW_ARB_texture_storage,
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ &__GLEW_ARB_texture_storage_multisample,
+#endif
+#ifdef GL_ARB_texture_swizzle
+ &__GLEW_ARB_texture_swizzle,
+#endif
+#ifdef GL_ARB_texture_view
+ &__GLEW_ARB_texture_view,
+#endif
+#ifdef GL_ARB_timer_query
+ &__GLEW_ARB_timer_query,
+#endif
+#ifdef GL_ARB_transform_feedback2
+ &__GLEW_ARB_transform_feedback2,
+#endif
+#ifdef GL_ARB_transform_feedback3
+ &__GLEW_ARB_transform_feedback3,
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ &__GLEW_ARB_transform_feedback_instanced,
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ &__GLEW_ARB_transform_feedback_overflow_query,
+#endif
+#ifdef GL_ARB_transpose_matrix
+ &__GLEW_ARB_transpose_matrix,
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ &__GLEW_ARB_uniform_buffer_object,
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ &__GLEW_ARB_vertex_array_bgra,
+#endif
+#ifdef GL_ARB_vertex_array_object
+ &__GLEW_ARB_vertex_array_object,
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ &__GLEW_ARB_vertex_attrib_64bit,
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ &__GLEW_ARB_vertex_attrib_binding,
+#endif
+#ifdef GL_ARB_vertex_blend
+ &__GLEW_ARB_vertex_blend,
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ &__GLEW_ARB_vertex_buffer_object,
+#endif
+#ifdef GL_ARB_vertex_program
+ &__GLEW_ARB_vertex_program,
+#endif
+#ifdef GL_ARB_vertex_shader
+ &__GLEW_ARB_vertex_shader,
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ &__GLEW_ARB_vertex_type_10f_11f_11f_rev,
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ &__GLEW_ARB_vertex_type_2_10_10_10_rev,
+#endif
+#ifdef GL_ARB_viewport_array
+ &__GLEW_ARB_viewport_array,
+#endif
+#ifdef GL_ARB_window_pos
+ &__GLEW_ARB_window_pos,
+#endif
+#ifdef GL_ARM_mali_program_binary
+ &__GLEW_ARM_mali_program_binary,
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ &__GLEW_ARM_mali_shader_binary,
+#endif
+#ifdef GL_ARM_rgba8
+ &__GLEW_ARM_rgba8,
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ &__GLEW_ARM_shader_framebuffer_fetch,
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ &__GLEW_ARM_shader_framebuffer_fetch_depth_stencil,
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ &__GLEW_ARM_texture_unnormalized_coordinates,
+#endif
+#ifdef GL_ATIX_point_sprites
+ &__GLEW_ATIX_point_sprites,
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ &__GLEW_ATIX_texture_env_combine3,
+#endif
+#ifdef GL_ATIX_texture_env_route
+ &__GLEW_ATIX_texture_env_route,
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ &__GLEW_ATIX_vertex_shader_output_point_size,
+#endif
+#ifdef GL_ATI_draw_buffers
+ &__GLEW_ATI_draw_buffers,
+#endif
+#ifdef GL_ATI_element_array
+ &__GLEW_ATI_element_array,
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ &__GLEW_ATI_envmap_bumpmap,
+#endif
+#ifdef GL_ATI_fragment_shader
+ &__GLEW_ATI_fragment_shader,
+#endif
+#ifdef GL_ATI_map_object_buffer
+ &__GLEW_ATI_map_object_buffer,
+#endif
+#ifdef GL_ATI_meminfo
+ &__GLEW_ATI_meminfo,
+#endif
+#ifdef GL_ATI_pn_triangles
+ &__GLEW_ATI_pn_triangles,
+#endif
+#ifdef GL_ATI_separate_stencil
+ &__GLEW_ATI_separate_stencil,
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ &__GLEW_ATI_shader_texture_lod,
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ &__GLEW_ATI_text_fragment_shader,
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ &__GLEW_ATI_texture_compression_3dc,
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ &__GLEW_ATI_texture_env_combine3,
+#endif
+#ifdef GL_ATI_texture_float
+ &__GLEW_ATI_texture_float,
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ &__GLEW_ATI_texture_mirror_once,
+#endif
+#ifdef GL_ATI_vertex_array_object
+ &__GLEW_ATI_vertex_array_object,
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ &__GLEW_ATI_vertex_attrib_array_object,
+#endif
+#ifdef GL_ATI_vertex_streams
+ &__GLEW_ATI_vertex_streams,
+#endif
+#ifdef GL_DMP_program_binary
+ &__GLEW_DMP_program_binary,
+#endif
+#ifdef GL_DMP_shader_binary
+ &__GLEW_DMP_shader_binary,
+#endif
+#ifdef GL_EXT_422_pixels
+ &__GLEW_EXT_422_pixels,
+#endif
+#ifdef GL_EXT_Cg_shader
+ &__GLEW_EXT_Cg_shader,
+#endif
+#ifdef GL_EXT_EGL_image_array
+ &__GLEW_EXT_EGL_image_array,
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ &__GLEW_EXT_EGL_image_external_wrap_modes,
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ &__GLEW_EXT_EGL_image_storage,
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ &__GLEW_EXT_EGL_image_storage_compression,
+#endif
+#ifdef GL_EXT_EGL_sync
+ &__GLEW_EXT_EGL_sync,
+#endif
+#ifdef GL_EXT_YUV_target
+ &__GLEW_EXT_YUV_target,
+#endif
+#ifdef GL_EXT_abgr
+ &__GLEW_EXT_abgr,
+#endif
+#ifdef GL_EXT_base_instance
+ &__GLEW_EXT_base_instance,
+#endif
+#ifdef GL_EXT_bgra
+ &__GLEW_EXT_bgra,
+#endif
+#ifdef GL_EXT_bindable_uniform
+ &__GLEW_EXT_bindable_uniform,
+#endif
+#ifdef GL_EXT_blend_color
+ &__GLEW_EXT_blend_color,
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ &__GLEW_EXT_blend_equation_separate,
+#endif
+#ifdef GL_EXT_blend_func_extended
+ &__GLEW_EXT_blend_func_extended,
+#endif
+#ifdef GL_EXT_blend_func_separate
+ &__GLEW_EXT_blend_func_separate,
+#endif
+#ifdef GL_EXT_blend_logic_op
+ &__GLEW_EXT_blend_logic_op,
+#endif
+#ifdef GL_EXT_blend_minmax
+ &__GLEW_EXT_blend_minmax,
+#endif
+#ifdef GL_EXT_blend_subtract
+ &__GLEW_EXT_blend_subtract,
+#endif
+#ifdef GL_EXT_buffer_storage
+ &__GLEW_EXT_buffer_storage,
+#endif
+#ifdef GL_EXT_clear_texture
+ &__GLEW_EXT_clear_texture,
+#endif
+#ifdef GL_EXT_clip_control
+ &__GLEW_EXT_clip_control,
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ &__GLEW_EXT_clip_cull_distance,
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ &__GLEW_EXT_clip_volume_hint,
+#endif
+#ifdef GL_EXT_cmyka
+ &__GLEW_EXT_cmyka,
+#endif
+#ifdef GL_EXT_color_buffer_float
+ &__GLEW_EXT_color_buffer_float,
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ &__GLEW_EXT_color_buffer_half_float,
+#endif
+#ifdef GL_EXT_color_subtable
+ &__GLEW_EXT_color_subtable,
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ &__GLEW_EXT_compiled_vertex_array,
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ &__GLEW_EXT_compressed_ETC1_RGB8_sub_texture,
+#endif
+#ifdef GL_EXT_conservative_depth
+ &__GLEW_EXT_conservative_depth,
+#endif
+#ifdef GL_EXT_convolution
+ &__GLEW_EXT_convolution,
+#endif
+#ifdef GL_EXT_coordinate_frame
+ &__GLEW_EXT_coordinate_frame,
+#endif
+#ifdef GL_EXT_copy_image
+ &__GLEW_EXT_copy_image,
+#endif
+#ifdef GL_EXT_copy_texture
+ &__GLEW_EXT_copy_texture,
+#endif
+#ifdef GL_EXT_cull_vertex
+ &__GLEW_EXT_cull_vertex,
+#endif
+#ifdef GL_EXT_debug_label
+ &__GLEW_EXT_debug_label,
+#endif
+#ifdef GL_EXT_debug_marker
+ &__GLEW_EXT_debug_marker,
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ &__GLEW_EXT_depth_bounds_test,
+#endif
+#ifdef GL_EXT_depth_clamp
+ &__GLEW_EXT_depth_clamp,
+#endif
+#ifdef GL_EXT_direct_state_access
+ &__GLEW_EXT_direct_state_access,
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ &__GLEW_EXT_discard_framebuffer,
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ &__GLEW_EXT_disjoint_timer_query,
+#endif
+#ifdef GL_EXT_draw_buffers
+ &__GLEW_EXT_draw_buffers,
+#endif
+#ifdef GL_EXT_draw_buffers2
+ &__GLEW_EXT_draw_buffers2,
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ &__GLEW_EXT_draw_buffers_indexed,
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ &__GLEW_EXT_draw_elements_base_vertex,
+#endif
+#ifdef GL_EXT_draw_instanced
+ &__GLEW_EXT_draw_instanced,
+#endif
+#ifdef GL_EXT_draw_range_elements
+ &__GLEW_EXT_draw_range_elements,
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ &__GLEW_EXT_draw_transform_feedback,
+#endif
+#ifdef GL_EXT_external_buffer
+ &__GLEW_EXT_external_buffer,
+#endif
+#ifdef GL_EXT_float_blend
+ &__GLEW_EXT_float_blend,
+#endif
+#ifdef GL_EXT_fog_coord
+ &__GLEW_EXT_fog_coord,
+#endif
+#ifdef GL_EXT_frag_depth
+ &__GLEW_EXT_frag_depth,
+#endif
+#ifdef GL_EXT_fragment_lighting
+ &__GLEW_EXT_fragment_lighting,
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ &__GLEW_EXT_framebuffer_blit,
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ &__GLEW_EXT_framebuffer_multisample,
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ &__GLEW_EXT_framebuffer_multisample_blit_scaled,
+#endif
+#ifdef GL_EXT_framebuffer_object
+ &__GLEW_EXT_framebuffer_object,
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ &__GLEW_EXT_framebuffer_sRGB,
+#endif
+#ifdef GL_EXT_geometry_point_size
+ &__GLEW_EXT_geometry_point_size,
+#endif
+#ifdef GL_EXT_geometry_shader
+ &__GLEW_EXT_geometry_shader,
+#endif
+#ifdef GL_EXT_geometry_shader4
+ &__GLEW_EXT_geometry_shader4,
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ &__GLEW_EXT_gpu_program_parameters,
+#endif
+#ifdef GL_EXT_gpu_shader4
+ &__GLEW_EXT_gpu_shader4,
+#endif
+#ifdef GL_EXT_gpu_shader5
+ &__GLEW_EXT_gpu_shader5,
+#endif
+#ifdef GL_EXT_histogram
+ &__GLEW_EXT_histogram,
+#endif
+#ifdef GL_EXT_index_array_formats
+ &__GLEW_EXT_index_array_formats,
+#endif
+#ifdef GL_EXT_index_func
+ &__GLEW_EXT_index_func,
+#endif
+#ifdef GL_EXT_index_material
+ &__GLEW_EXT_index_material,
+#endif
+#ifdef GL_EXT_index_texture
+ &__GLEW_EXT_index_texture,
+#endif
+#ifdef GL_EXT_instanced_arrays
+ &__GLEW_EXT_instanced_arrays,
+#endif
+#ifdef GL_EXT_light_texture
+ &__GLEW_EXT_light_texture,
+#endif
+#ifdef GL_EXT_map_buffer_range
+ &__GLEW_EXT_map_buffer_range,
+#endif
+#ifdef GL_EXT_memory_object
+ &__GLEW_EXT_memory_object,
+#endif
+#ifdef GL_EXT_memory_object_fd
+ &__GLEW_EXT_memory_object_fd,
+#endif
+#ifdef GL_EXT_memory_object_win32
+ &__GLEW_EXT_memory_object_win32,
+#endif
+#ifdef GL_EXT_misc_attribute
+ &__GLEW_EXT_misc_attribute,
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ &__GLEW_EXT_multi_draw_arrays,
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ &__GLEW_EXT_multi_draw_indirect,
+#endif
+#ifdef GL_EXT_multiple_textures
+ &__GLEW_EXT_multiple_textures,
+#endif
+#ifdef GL_EXT_multisample
+ &__GLEW_EXT_multisample,
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ &__GLEW_EXT_multisample_compatibility,
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ &__GLEW_EXT_multisampled_render_to_texture,
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ &__GLEW_EXT_multisampled_render_to_texture2,
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ &__GLEW_EXT_multiview_draw_buffers,
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ &__GLEW_EXT_multiview_tessellation_geometry_shader,
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ &__GLEW_EXT_multiview_texture_multisample,
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ &__GLEW_EXT_multiview_timer_query,
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ &__GLEW_EXT_occlusion_query_boolean,
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ &__GLEW_EXT_packed_depth_stencil,
+#endif
+#ifdef GL_EXT_packed_float
+ &__GLEW_EXT_packed_float,
+#endif
+#ifdef GL_EXT_packed_pixels
+ &__GLEW_EXT_packed_pixels,
+#endif
+#ifdef GL_EXT_paletted_texture
+ &__GLEW_EXT_paletted_texture,
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ &__GLEW_EXT_pixel_buffer_object,
+#endif
+#ifdef GL_EXT_pixel_transform
+ &__GLEW_EXT_pixel_transform,
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ &__GLEW_EXT_pixel_transform_color_table,
+#endif
+#ifdef GL_EXT_point_parameters
+ &__GLEW_EXT_point_parameters,
+#endif
+#ifdef GL_EXT_polygon_offset
+ &__GLEW_EXT_polygon_offset,
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ &__GLEW_EXT_polygon_offset_clamp,
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ &__GLEW_EXT_post_depth_coverage,
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ &__GLEW_EXT_primitive_bounding_box,
+#endif
+#ifdef GL_EXT_protected_textures
+ &__GLEW_EXT_protected_textures,
+#endif
+#ifdef GL_EXT_provoking_vertex
+ &__GLEW_EXT_provoking_vertex,
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ &__GLEW_EXT_pvrtc_sRGB,
+#endif
+#ifdef GL_EXT_raster_multisample
+ &__GLEW_EXT_raster_multisample,
+#endif
+#ifdef GL_EXT_read_format_bgra
+ &__GLEW_EXT_read_format_bgra,
+#endif
+#ifdef GL_EXT_render_snorm
+ &__GLEW_EXT_render_snorm,
+#endif
+#ifdef GL_EXT_rescale_normal
+ &__GLEW_EXT_rescale_normal,
+#endif
+#ifdef GL_EXT_robustness
+ &__GLEW_EXT_robustness,
+#endif
+#ifdef GL_EXT_sRGB
+ &__GLEW_EXT_sRGB,
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ &__GLEW_EXT_sRGB_write_control,
+#endif
+#ifdef GL_EXT_scene_marker
+ &__GLEW_EXT_scene_marker,
+#endif
+#ifdef GL_EXT_secondary_color
+ &__GLEW_EXT_secondary_color,
+#endif
+#ifdef GL_EXT_semaphore
+ &__GLEW_EXT_semaphore,
+#endif
+#ifdef GL_EXT_semaphore_fd
+ &__GLEW_EXT_semaphore_fd,
+#endif
+#ifdef GL_EXT_semaphore_win32
+ &__GLEW_EXT_semaphore_win32,
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ &__GLEW_EXT_separate_depth_stencil,
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ &__GLEW_EXT_separate_shader_objects,
+#endif
+#ifdef GL_EXT_separate_specular_color
+ &__GLEW_EXT_separate_specular_color,
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ &__GLEW_EXT_shader_framebuffer_fetch,
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ &__GLEW_EXT_shader_framebuffer_fetch_non_coherent,
+#endif
+#ifdef GL_EXT_shader_group_vote
+ &__GLEW_EXT_shader_group_vote,
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ &__GLEW_EXT_shader_image_load_formatted,
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ &__GLEW_EXT_shader_image_load_store,
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ &__GLEW_EXT_shader_implicit_conversions,
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ &__GLEW_EXT_shader_integer_mix,
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ &__GLEW_EXT_shader_io_blocks,
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ &__GLEW_EXT_shader_non_constant_global_initializers,
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ &__GLEW_EXT_shader_pixel_local_storage,
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ &__GLEW_EXT_shader_pixel_local_storage2,
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ &__GLEW_EXT_shader_samples_identical,
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ &__GLEW_EXT_shader_texture_lod,
+#endif
+#ifdef GL_EXT_shadow_funcs
+ &__GLEW_EXT_shadow_funcs,
+#endif
+#ifdef GL_EXT_shadow_samplers
+ &__GLEW_EXT_shadow_samplers,
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ &__GLEW_EXT_shared_texture_palette,
+#endif
+#ifdef GL_EXT_sparse_texture
+ &__GLEW_EXT_sparse_texture,
+#endif
+#ifdef GL_EXT_sparse_texture2
+ &__GLEW_EXT_sparse_texture2,
+#endif
+#ifdef GL_EXT_static_vertex_array
+ &__GLEW_EXT_static_vertex_array,
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ &__GLEW_EXT_stencil_clear_tag,
+#endif
+#ifdef GL_EXT_stencil_two_side
+ &__GLEW_EXT_stencil_two_side,
+#endif
+#ifdef GL_EXT_stencil_wrap
+ &__GLEW_EXT_stencil_wrap,
+#endif
+#ifdef GL_EXT_subtexture
+ &__GLEW_EXT_subtexture,
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ &__GLEW_EXT_tessellation_point_size,
+#endif
+#ifdef GL_EXT_tessellation_shader
+ &__GLEW_EXT_tessellation_shader,
+#endif
+#ifdef GL_EXT_texture
+ &__GLEW_EXT_texture,
+#endif
+#ifdef GL_EXT_texture3D
+ &__GLEW_EXT_texture3D,
+#endif
+#ifdef GL_EXT_texture_array
+ &__GLEW_EXT_texture_array,
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ &__GLEW_EXT_texture_border_clamp,
+#endif
+#ifdef GL_EXT_texture_buffer
+ &__GLEW_EXT_texture_buffer,
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ &__GLEW_EXT_texture_buffer_object,
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ &__GLEW_EXT_texture_compression_astc_decode_mode,
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ &__GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5,
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ &__GLEW_EXT_texture_compression_bptc,
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ &__GLEW_EXT_texture_compression_dxt1,
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ &__GLEW_EXT_texture_compression_latc,
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ &__GLEW_EXT_texture_compression_rgtc,
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ &__GLEW_EXT_texture_compression_s3tc,
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ &__GLEW_EXT_texture_compression_s3tc_srgb,
+#endif
+#ifdef GL_EXT_texture_cube_map
+ &__GLEW_EXT_texture_cube_map,
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ &__GLEW_EXT_texture_cube_map_array,
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ &__GLEW_EXT_texture_edge_clamp,
+#endif
+#ifdef GL_EXT_texture_env
+ &__GLEW_EXT_texture_env,
+#endif
+#ifdef GL_EXT_texture_env_add
+ &__GLEW_EXT_texture_env_add,
+#endif
+#ifdef GL_EXT_texture_env_combine
+ &__GLEW_EXT_texture_env_combine,
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ &__GLEW_EXT_texture_env_dot3,
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ &__GLEW_EXT_texture_filter_anisotropic,
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ &__GLEW_EXT_texture_filter_minmax,
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ &__GLEW_EXT_texture_format_BGRA8888,
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ &__GLEW_EXT_texture_format_sRGB_override,
+#endif
+#ifdef GL_EXT_texture_integer
+ &__GLEW_EXT_texture_integer,
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ &__GLEW_EXT_texture_lod_bias,
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ &__GLEW_EXT_texture_mirror_clamp,
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ &__GLEW_EXT_texture_mirror_clamp_to_edge,
+#endif
+#ifdef GL_EXT_texture_norm16
+ &__GLEW_EXT_texture_norm16,
+#endif
+#ifdef GL_EXT_texture_object
+ &__GLEW_EXT_texture_object,
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ &__GLEW_EXT_texture_perturb_normal,
+#endif
+#ifdef GL_EXT_texture_query_lod
+ &__GLEW_EXT_texture_query_lod,
+#endif
+#ifdef GL_EXT_texture_rectangle
+ &__GLEW_EXT_texture_rectangle,
+#endif
+#ifdef GL_EXT_texture_rg
+ &__GLEW_EXT_texture_rg,
+#endif
+#ifdef GL_EXT_texture_sRGB
+ &__GLEW_EXT_texture_sRGB,
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ &__GLEW_EXT_texture_sRGB_R8,
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ &__GLEW_EXT_texture_sRGB_RG8,
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ &__GLEW_EXT_texture_sRGB_decode,
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ &__GLEW_EXT_texture_shadow_lod,
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ &__GLEW_EXT_texture_shared_exponent,
+#endif
+#ifdef GL_EXT_texture_snorm
+ &__GLEW_EXT_texture_snorm,
+#endif
+#ifdef GL_EXT_texture_storage
+ &__GLEW_EXT_texture_storage,
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ &__GLEW_EXT_texture_storage_compression,
+#endif
+#ifdef GL_EXT_texture_swizzle
+ &__GLEW_EXT_texture_swizzle,
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ &__GLEW_EXT_texture_type_2_10_10_10_REV,
+#endif
+#ifdef GL_EXT_texture_view
+ &__GLEW_EXT_texture_view,
+#endif
+#ifdef GL_EXT_timer_query
+ &__GLEW_EXT_timer_query,
+#endif
+#ifdef GL_EXT_transform_feedback
+ &__GLEW_EXT_transform_feedback,
+#endif
+#ifdef GL_EXT_unpack_subimage
+ &__GLEW_EXT_unpack_subimage,
+#endif
+#ifdef GL_EXT_vertex_array
+ &__GLEW_EXT_vertex_array,
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ &__GLEW_EXT_vertex_array_bgra,
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ &__GLEW_EXT_vertex_array_setXXX,
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ &__GLEW_EXT_vertex_attrib_64bit,
+#endif
+#ifdef GL_EXT_vertex_shader
+ &__GLEW_EXT_vertex_shader,
+#endif
+#ifdef GL_EXT_vertex_weighting
+ &__GLEW_EXT_vertex_weighting,
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ &__GLEW_EXT_win32_keyed_mutex,
+#endif
+#ifdef GL_EXT_window_rectangles
+ &__GLEW_EXT_window_rectangles,
+#endif
+#ifdef GL_EXT_x11_sync_object
+ &__GLEW_EXT_x11_sync_object,
+#endif
+#ifdef GL_FJ_shader_binary_GCCSO
+ &__GLEW_FJ_shader_binary_GCCSO,
+#endif
+#ifdef GL_GREMEDY_frame_terminator
+ &__GLEW_GREMEDY_frame_terminator,
+#endif
+#ifdef GL_GREMEDY_string_marker
+ &__GLEW_GREMEDY_string_marker,
+#endif
+#ifdef GL_HP_convolution_border_modes
+ &__GLEW_HP_convolution_border_modes,
+#endif
+#ifdef GL_HP_image_transform
+ &__GLEW_HP_image_transform,
+#endif
+#ifdef GL_HP_occlusion_test
+ &__GLEW_HP_occlusion_test,
+#endif
+#ifdef GL_HP_texture_lighting
+ &__GLEW_HP_texture_lighting,
+#endif
+#ifdef GL_IBM_cull_vertex
+ &__GLEW_IBM_cull_vertex,
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ &__GLEW_IBM_multimode_draw_arrays,
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ &__GLEW_IBM_rasterpos_clip,
+#endif
+#ifdef GL_IBM_static_data
+ &__GLEW_IBM_static_data,
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ &__GLEW_IBM_texture_mirrored_repeat,
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ &__GLEW_IBM_vertex_array_lists,
+#endif
+#ifdef GL_IMG_bindless_texture
+ &__GLEW_IMG_bindless_texture,
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ &__GLEW_IMG_framebuffer_downsample,
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ &__GLEW_IMG_multisampled_render_to_texture,
+#endif
+#ifdef GL_IMG_program_binary
+ &__GLEW_IMG_program_binary,
+#endif
+#ifdef GL_IMG_read_format
+ &__GLEW_IMG_read_format,
+#endif
+#ifdef GL_IMG_shader_binary
+ &__GLEW_IMG_shader_binary,
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ &__GLEW_IMG_texture_compression_pvrtc,
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ &__GLEW_IMG_texture_compression_pvrtc2,
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ &__GLEW_IMG_texture_env_enhanced_fixed_function,
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ &__GLEW_IMG_texture_filter_cubic,
+#endif
+#ifdef GL_IMG_tile_region_protection
+ &__GLEW_IMG_tile_region_protection,
+#endif
+#ifdef GL_INGR_color_clamp
+ &__GLEW_INGR_color_clamp,
+#endif
+#ifdef GL_INGR_interlace_read
+ &__GLEW_INGR_interlace_read,
+#endif
+#ifdef GL_INTEL_blackhole_render
+ &__GLEW_INTEL_blackhole_render,
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ &__GLEW_INTEL_conservative_rasterization,
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ &__GLEW_INTEL_fragment_shader_ordering,
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ &__GLEW_INTEL_framebuffer_CMAA,
+#endif
+#ifdef GL_INTEL_map_texture
+ &__GLEW_INTEL_map_texture,
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ &__GLEW_INTEL_parallel_arrays,
+#endif
+#ifdef GL_INTEL_performance_query
+ &__GLEW_INTEL_performance_query,
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ &__GLEW_INTEL_shader_integer_functions2,
+#endif
+#ifdef GL_INTEL_texture_scissor
+ &__GLEW_INTEL_texture_scissor,
+#endif
+#ifdef GL_KHR_blend_equation_advanced
+ &__GLEW_KHR_blend_equation_advanced,
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ &__GLEW_KHR_blend_equation_advanced_coherent,
+#endif
+#ifdef GL_KHR_context_flush_control
+ &__GLEW_KHR_context_flush_control,
+#endif
+#ifdef GL_KHR_debug
+ &__GLEW_KHR_debug,
+#endif
+#ifdef GL_KHR_no_error
+ &__GLEW_KHR_no_error,
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ &__GLEW_KHR_parallel_shader_compile,
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ &__GLEW_KHR_robust_buffer_access_behavior,
+#endif
+#ifdef GL_KHR_robustness
+ &__GLEW_KHR_robustness,
+#endif
+#ifdef GL_KHR_shader_subgroup
+ &__GLEW_KHR_shader_subgroup,
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ &__GLEW_KHR_texture_compression_astc_hdr,
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ &__GLEW_KHR_texture_compression_astc_ldr,
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ &__GLEW_KHR_texture_compression_astc_sliced_3d,
+#endif
+#ifdef GL_KTX_buffer_region
+ &__GLEW_KTX_buffer_region,
+#endif
+#ifdef GL_MESAX_texture_stack
+ &__GLEW_MESAX_texture_stack,
+#endif
+#ifdef GL_MESA_bgra
+ &__GLEW_MESA_bgra,
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ &__GLEW_MESA_framebuffer_flip_x,
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ &__GLEW_MESA_framebuffer_flip_y,
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ &__GLEW_MESA_framebuffer_swap_xy,
+#endif
+#ifdef GL_MESA_pack_invert
+ &__GLEW_MESA_pack_invert,
+#endif
+#ifdef GL_MESA_program_binary_formats
+ &__GLEW_MESA_program_binary_formats,
+#endif
+#ifdef GL_MESA_resize_buffers
+ &__GLEW_MESA_resize_buffers,
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ &__GLEW_MESA_shader_integer_functions,
+#endif
+#ifdef GL_MESA_tile_raster_order
+ &__GLEW_MESA_tile_raster_order,
+#endif
+#ifdef GL_MESA_window_pos
+ &__GLEW_MESA_window_pos,
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ &__GLEW_MESA_ycbcr_texture,
+#endif
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ &__GLEW_NVX_blend_equation_advanced_multi_draw_buffers,
+#endif
+#ifdef GL_NVX_conditional_render
+ &__GLEW_NVX_conditional_render,
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ &__GLEW_NVX_gpu_memory_info,
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ &__GLEW_NVX_gpu_multicast2,
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ &__GLEW_NVX_linked_gpu_multicast,
+#endif
+#ifdef GL_NVX_progress_fence
+ &__GLEW_NVX_progress_fence,
+#endif
+#ifdef GL_NV_3dvision_settings
+ &__GLEW_NV_3dvision_settings,
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ &__GLEW_NV_EGL_stream_consumer_external,
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ &__GLEW_NV_alpha_to_coverage_dither_control,
+#endif
+#ifdef GL_NV_bgr
+ &__GLEW_NV_bgr,
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ &__GLEW_NV_bindless_multi_draw_indirect,
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ &__GLEW_NV_bindless_multi_draw_indirect_count,
+#endif
+#ifdef GL_NV_bindless_texture
+ &__GLEW_NV_bindless_texture,
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ &__GLEW_NV_blend_equation_advanced,
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ &__GLEW_NV_blend_equation_advanced_coherent,
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ &__GLEW_NV_blend_minmax_factor,
+#endif
+#ifdef GL_NV_blend_square
+ &__GLEW_NV_blend_square,
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ &__GLEW_NV_clip_space_w_scaling,
+#endif
+#ifdef GL_NV_command_list
+ &__GLEW_NV_command_list,
+#endif
+#ifdef GL_NV_compute_program5
+ &__GLEW_NV_compute_program5,
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ &__GLEW_NV_compute_shader_derivatives,
+#endif
+#ifdef GL_NV_conditional_render
+ &__GLEW_NV_conditional_render,
+#endif
+#ifdef GL_NV_conservative_raster
+ &__GLEW_NV_conservative_raster,
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ &__GLEW_NV_conservative_raster_dilate,
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ &__GLEW_NV_conservative_raster_pre_snap,
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ &__GLEW_NV_conservative_raster_pre_snap_triangles,
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ &__GLEW_NV_conservative_raster_underestimation,
+#endif
+#ifdef GL_NV_copy_buffer
+ &__GLEW_NV_copy_buffer,
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ &__GLEW_NV_copy_depth_to_color,
+#endif
+#ifdef GL_NV_copy_image
+ &__GLEW_NV_copy_image,
+#endif
+#ifdef GL_NV_deep_texture3D
+ &__GLEW_NV_deep_texture3D,
+#endif
+#ifdef GL_NV_depth_buffer_float
+ &__GLEW_NV_depth_buffer_float,
+#endif
+#ifdef GL_NV_depth_clamp
+ &__GLEW_NV_depth_clamp,
+#endif
+#ifdef GL_NV_depth_nonlinear
+ &__GLEW_NV_depth_nonlinear,
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ &__GLEW_NV_depth_range_unclamped,
+#endif
+#ifdef GL_NV_draw_buffers
+ &__GLEW_NV_draw_buffers,
+#endif
+#ifdef GL_NV_draw_instanced
+ &__GLEW_NV_draw_instanced,
+#endif
+#ifdef GL_NV_draw_texture
+ &__GLEW_NV_draw_texture,
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ &__GLEW_NV_draw_vulkan_image,
+#endif
+#ifdef GL_NV_evaluators
+ &__GLEW_NV_evaluators,
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ &__GLEW_NV_explicit_attrib_location,
+#endif
+#ifdef GL_NV_explicit_multisample
+ &__GLEW_NV_explicit_multisample,
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ &__GLEW_NV_fbo_color_attachments,
+#endif
+#ifdef GL_NV_fence
+ &__GLEW_NV_fence,
+#endif
+#ifdef GL_NV_fill_rectangle
+ &__GLEW_NV_fill_rectangle,
+#endif
+#ifdef GL_NV_float_buffer
+ &__GLEW_NV_float_buffer,
+#endif
+#ifdef GL_NV_fog_distance
+ &__GLEW_NV_fog_distance,
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ &__GLEW_NV_fragment_coverage_to_color,
+#endif
+#ifdef GL_NV_fragment_program
+ &__GLEW_NV_fragment_program,
+#endif
+#ifdef GL_NV_fragment_program2
+ &__GLEW_NV_fragment_program2,
+#endif
+#ifdef GL_NV_fragment_program4
+ &__GLEW_NV_fragment_program4,
+#endif
+#ifdef GL_NV_fragment_program_option
+ &__GLEW_NV_fragment_program_option,
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ &__GLEW_NV_fragment_shader_barycentric,
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ &__GLEW_NV_fragment_shader_interlock,
+#endif
+#ifdef GL_NV_framebuffer_blit
+ &__GLEW_NV_framebuffer_blit,
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ &__GLEW_NV_framebuffer_mixed_samples,
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ &__GLEW_NV_framebuffer_multisample,
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ &__GLEW_NV_framebuffer_multisample_coverage,
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ &__GLEW_NV_generate_mipmap_sRGB,
+#endif
+#ifdef GL_NV_geometry_program4
+ &__GLEW_NV_geometry_program4,
+#endif
+#ifdef GL_NV_geometry_shader4
+ &__GLEW_NV_geometry_shader4,
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ &__GLEW_NV_geometry_shader_passthrough,
+#endif
+#ifdef GL_NV_gpu_multicast
+ &__GLEW_NV_gpu_multicast,
+#endif
+#ifdef GL_NV_gpu_program4
+ &__GLEW_NV_gpu_program4,
+#endif
+#ifdef GL_NV_gpu_program5
+ &__GLEW_NV_gpu_program5,
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ &__GLEW_NV_gpu_program5_mem_extended,
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ &__GLEW_NV_gpu_program_fp64,
+#endif
+#ifdef GL_NV_gpu_shader5
+ &__GLEW_NV_gpu_shader5,
+#endif
+#ifdef GL_NV_half_float
+ &__GLEW_NV_half_float,
+#endif
+#ifdef GL_NV_image_formats
+ &__GLEW_NV_image_formats,
+#endif
+#ifdef GL_NV_instanced_arrays
+ &__GLEW_NV_instanced_arrays,
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ &__GLEW_NV_internalformat_sample_query,
+#endif
+#ifdef GL_NV_light_max_exponent
+ &__GLEW_NV_light_max_exponent,
+#endif
+#ifdef GL_NV_memory_attachment
+ &__GLEW_NV_memory_attachment,
+#endif
+#ifdef GL_NV_memory_object_sparse
+ &__GLEW_NV_memory_object_sparse,
+#endif
+#ifdef GL_NV_mesh_shader
+ &__GLEW_NV_mesh_shader,
+#endif
+#ifdef GL_NV_multisample_coverage
+ &__GLEW_NV_multisample_coverage,
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ &__GLEW_NV_multisample_filter_hint,
+#endif
+#ifdef GL_NV_non_square_matrices
+ &__GLEW_NV_non_square_matrices,
+#endif
+#ifdef GL_NV_occlusion_query
+ &__GLEW_NV_occlusion_query,
+#endif
+#ifdef GL_NV_pack_subimage
+ &__GLEW_NV_pack_subimage,
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ &__GLEW_NV_packed_depth_stencil,
+#endif
+#ifdef GL_NV_packed_float
+ &__GLEW_NV_packed_float,
+#endif
+#ifdef GL_NV_packed_float_linear
+ &__GLEW_NV_packed_float_linear,
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ &__GLEW_NV_parameter_buffer_object,
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ &__GLEW_NV_parameter_buffer_object2,
+#endif
+#ifdef GL_NV_path_rendering
+ &__GLEW_NV_path_rendering,
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ &__GLEW_NV_path_rendering_shared_edge,
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ &__GLEW_NV_pixel_buffer_object,
+#endif
+#ifdef GL_NV_pixel_data_range
+ &__GLEW_NV_pixel_data_range,
+#endif
+#ifdef GL_NV_platform_binary
+ &__GLEW_NV_platform_binary,
+#endif
+#ifdef GL_NV_point_sprite
+ &__GLEW_NV_point_sprite,
+#endif
+#ifdef GL_NV_polygon_mode
+ &__GLEW_NV_polygon_mode,
+#endif
+#ifdef GL_NV_present_video
+ &__GLEW_NV_present_video,
+#endif
+#ifdef GL_NV_primitive_restart
+ &__GLEW_NV_primitive_restart,
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ &__GLEW_NV_primitive_shading_rate,
+#endif
+#ifdef GL_NV_query_resource_tag
+ &__GLEW_NV_query_resource_tag,
+#endif
+#ifdef GL_NV_read_buffer
+ &__GLEW_NV_read_buffer,
+#endif
+#ifdef GL_NV_read_buffer_front
+ &__GLEW_NV_read_buffer_front,
+#endif
+#ifdef GL_NV_read_depth
+ &__GLEW_NV_read_depth,
+#endif
+#ifdef GL_NV_read_depth_stencil
+ &__GLEW_NV_read_depth_stencil,
+#endif
+#ifdef GL_NV_read_stencil
+ &__GLEW_NV_read_stencil,
+#endif
+#ifdef GL_NV_register_combiners
+ &__GLEW_NV_register_combiners,
+#endif
+#ifdef GL_NV_register_combiners2
+ &__GLEW_NV_register_combiners2,
+#endif
+#ifdef GL_NV_representative_fragment_test
+ &__GLEW_NV_representative_fragment_test,
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ &__GLEW_NV_robustness_video_memory_purge,
+#endif
+#ifdef GL_NV_sRGB_formats
+ &__GLEW_NV_sRGB_formats,
+#endif
+#ifdef GL_NV_sample_locations
+ &__GLEW_NV_sample_locations,
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ &__GLEW_NV_sample_mask_override_coverage,
+#endif
+#ifdef GL_NV_scissor_exclusive
+ &__GLEW_NV_scissor_exclusive,
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ &__GLEW_NV_shader_atomic_counters,
+#endif
+#ifdef GL_NV_shader_atomic_float
+ &__GLEW_NV_shader_atomic_float,
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ &__GLEW_NV_shader_atomic_float64,
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ &__GLEW_NV_shader_atomic_fp16_vector,
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ &__GLEW_NV_shader_atomic_int64,
+#endif
+#ifdef GL_NV_shader_buffer_load
+ &__GLEW_NV_shader_buffer_load,
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ &__GLEW_NV_shader_noperspective_interpolation,
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ &__GLEW_NV_shader_storage_buffer_object,
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ &__GLEW_NV_shader_subgroup_partitioned,
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ &__GLEW_NV_shader_texture_footprint,
+#endif
+#ifdef GL_NV_shader_thread_group
+ &__GLEW_NV_shader_thread_group,
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ &__GLEW_NV_shader_thread_shuffle,
+#endif
+#ifdef GL_NV_shading_rate_image
+ &__GLEW_NV_shading_rate_image,
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ &__GLEW_NV_shadow_samplers_array,
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ &__GLEW_NV_shadow_samplers_cube,
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ &__GLEW_NV_stereo_view_rendering,
+#endif
+#ifdef GL_NV_tessellation_program5
+ &__GLEW_NV_tessellation_program5,
+#endif
+#ifdef GL_NV_texgen_emboss
+ &__GLEW_NV_texgen_emboss,
+#endif
+#ifdef GL_NV_texgen_reflection
+ &__GLEW_NV_texgen_reflection,
+#endif
+#ifdef GL_NV_texture_array
+ &__GLEW_NV_texture_array,
+#endif
+#ifdef GL_NV_texture_barrier
+ &__GLEW_NV_texture_barrier,
+#endif
+#ifdef GL_NV_texture_border_clamp
+ &__GLEW_NV_texture_border_clamp,
+#endif
+#ifdef GL_NV_texture_compression_latc
+ &__GLEW_NV_texture_compression_latc,
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ &__GLEW_NV_texture_compression_s3tc,
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ &__GLEW_NV_texture_compression_s3tc_update,
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ &__GLEW_NV_texture_compression_vtc,
+#endif
+#ifdef GL_NV_texture_env_combine4
+ &__GLEW_NV_texture_env_combine4,
+#endif
+#ifdef GL_NV_texture_expand_normal
+ &__GLEW_NV_texture_expand_normal,
+#endif
+#ifdef GL_NV_texture_multisample
+ &__GLEW_NV_texture_multisample,
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ &__GLEW_NV_texture_npot_2D_mipmap,
+#endif
+#ifdef GL_NV_texture_rectangle
+ &__GLEW_NV_texture_rectangle,
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ &__GLEW_NV_texture_rectangle_compressed,
+#endif
+#ifdef GL_NV_texture_shader
+ &__GLEW_NV_texture_shader,
+#endif
+#ifdef GL_NV_texture_shader2
+ &__GLEW_NV_texture_shader2,
+#endif
+#ifdef GL_NV_texture_shader3
+ &__GLEW_NV_texture_shader3,
+#endif
+#ifdef GL_NV_timeline_semaphore
+ &__GLEW_NV_timeline_semaphore,
+#endif
+#ifdef GL_NV_transform_feedback
+ &__GLEW_NV_transform_feedback,
+#endif
+#ifdef GL_NV_transform_feedback2
+ &__GLEW_NV_transform_feedback2,
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ &__GLEW_NV_uniform_buffer_unified_memory,
+#endif
+#ifdef GL_NV_vdpau_interop
+ &__GLEW_NV_vdpau_interop,
+#endif
+#ifdef GL_NV_vdpau_interop2
+ &__GLEW_NV_vdpau_interop2,
+#endif
+#ifdef GL_NV_vertex_array_range
+ &__GLEW_NV_vertex_array_range,
+#endif
+#ifdef GL_NV_vertex_array_range2
+ &__GLEW_NV_vertex_array_range2,
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ &__GLEW_NV_vertex_attrib_integer_64bit,
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ &__GLEW_NV_vertex_buffer_unified_memory,
+#endif
+#ifdef GL_NV_vertex_program
+ &__GLEW_NV_vertex_program,
+#endif
+#ifdef GL_NV_vertex_program1_1
+ &__GLEW_NV_vertex_program1_1,
+#endif
+#ifdef GL_NV_vertex_program2
+ &__GLEW_NV_vertex_program2,
+#endif
+#ifdef GL_NV_vertex_program2_option
+ &__GLEW_NV_vertex_program2_option,
+#endif
+#ifdef GL_NV_vertex_program3
+ &__GLEW_NV_vertex_program3,
+#endif
+#ifdef GL_NV_vertex_program4
+ &__GLEW_NV_vertex_program4,
+#endif
+#ifdef GL_NV_video_capture
+ &__GLEW_NV_video_capture,
+#endif
+#ifdef GL_NV_viewport_array
+ &__GLEW_NV_viewport_array,
+#endif
+#ifdef GL_NV_viewport_array2
+ &__GLEW_NV_viewport_array2,
+#endif
+#ifdef GL_NV_viewport_swizzle
+ &__GLEW_NV_viewport_swizzle,
+#endif
+#ifdef GL_OES_EGL_image
+ &__GLEW_OES_EGL_image,
+#endif
+#ifdef GL_OES_EGL_image_external
+ &__GLEW_OES_EGL_image_external,
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ &__GLEW_OES_EGL_image_external_essl3,
+#endif
+#ifdef GL_OES_blend_equation_separate
+ &__GLEW_OES_blend_equation_separate,
+#endif
+#ifdef GL_OES_blend_func_separate
+ &__GLEW_OES_blend_func_separate,
+#endif
+#ifdef GL_OES_blend_subtract
+ &__GLEW_OES_blend_subtract,
+#endif
+#ifdef GL_OES_byte_coordinates
+ &__GLEW_OES_byte_coordinates,
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ &__GLEW_OES_compressed_ETC1_RGB8_texture,
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ &__GLEW_OES_compressed_paletted_texture,
+#endif
+#ifdef GL_OES_copy_image
+ &__GLEW_OES_copy_image,
+#endif
+#ifdef GL_OES_depth24
+ &__GLEW_OES_depth24,
+#endif
+#ifdef GL_OES_depth32
+ &__GLEW_OES_depth32,
+#endif
+#ifdef GL_OES_depth_texture
+ &__GLEW_OES_depth_texture,
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ &__GLEW_OES_depth_texture_cube_map,
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ &__GLEW_OES_draw_buffers_indexed,
+#endif
+#ifdef GL_OES_draw_texture
+ &__GLEW_OES_draw_texture,
+#endif
+#ifdef GL_OES_element_index_uint
+ &__GLEW_OES_element_index_uint,
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ &__GLEW_OES_extended_matrix_palette,
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ &__GLEW_OES_fbo_render_mipmap,
+#endif
+#ifdef GL_OES_fragment_precision_high
+ &__GLEW_OES_fragment_precision_high,
+#endif
+#ifdef GL_OES_framebuffer_object
+ &__GLEW_OES_framebuffer_object,
+#endif
+#ifdef GL_OES_geometry_point_size
+ &__GLEW_OES_geometry_point_size,
+#endif
+#ifdef GL_OES_geometry_shader
+ &__GLEW_OES_geometry_shader,
+#endif
+#ifdef GL_OES_get_program_binary
+ &__GLEW_OES_get_program_binary,
+#endif
+#ifdef GL_OES_gpu_shader5
+ &__GLEW_OES_gpu_shader5,
+#endif
+#ifdef GL_OES_mapbuffer
+ &__GLEW_OES_mapbuffer,
+#endif
+#ifdef GL_OES_matrix_get
+ &__GLEW_OES_matrix_get,
+#endif
+#ifdef GL_OES_matrix_palette
+ &__GLEW_OES_matrix_palette,
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ &__GLEW_OES_packed_depth_stencil,
+#endif
+#ifdef GL_OES_point_size_array
+ &__GLEW_OES_point_size_array,
+#endif
+#ifdef GL_OES_point_sprite
+ &__GLEW_OES_point_sprite,
+#endif
+#ifdef GL_OES_read_format
+ &__GLEW_OES_read_format,
+#endif
+#ifdef GL_OES_required_internalformat
+ &__GLEW_OES_required_internalformat,
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ &__GLEW_OES_rgb8_rgba8,
+#endif
+#ifdef GL_OES_sample_shading
+ &__GLEW_OES_sample_shading,
+#endif
+#ifdef GL_OES_sample_variables
+ &__GLEW_OES_sample_variables,
+#endif
+#ifdef GL_OES_shader_image_atomic
+ &__GLEW_OES_shader_image_atomic,
+#endif
+#ifdef GL_OES_shader_io_blocks
+ &__GLEW_OES_shader_io_blocks,
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ &__GLEW_OES_shader_multisample_interpolation,
+#endif
+#ifdef GL_OES_single_precision
+ &__GLEW_OES_single_precision,
+#endif
+#ifdef GL_OES_standard_derivatives
+ &__GLEW_OES_standard_derivatives,
+#endif
+#ifdef GL_OES_stencil1
+ &__GLEW_OES_stencil1,
+#endif
+#ifdef GL_OES_stencil4
+ &__GLEW_OES_stencil4,
+#endif
+#ifdef GL_OES_stencil8
+ &__GLEW_OES_stencil8,
+#endif
+#ifdef GL_OES_surfaceless_context
+ &__GLEW_OES_surfaceless_context,
+#endif
+#ifdef GL_OES_tessellation_point_size
+ &__GLEW_OES_tessellation_point_size,
+#endif
+#ifdef GL_OES_tessellation_shader
+ &__GLEW_OES_tessellation_shader,
+#endif
+#ifdef GL_OES_texture_3D
+ &__GLEW_OES_texture_3D,
+#endif
+#ifdef GL_OES_texture_border_clamp
+ &__GLEW_OES_texture_border_clamp,
+#endif
+#ifdef GL_OES_texture_buffer
+ &__GLEW_OES_texture_buffer,
+#endif
+#ifdef GL_OES_texture_compression_astc
+ &__GLEW_OES_texture_compression_astc,
+#endif
+#ifdef GL_OES_texture_cube_map
+ &__GLEW_OES_texture_cube_map,
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ &__GLEW_OES_texture_cube_map_array,
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ &__GLEW_OES_texture_env_crossbar,
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ &__GLEW_OES_texture_mirrored_repeat,
+#endif
+#ifdef GL_OES_texture_npot
+ &__GLEW_OES_texture_npot,
+#endif
+#ifdef GL_OES_texture_stencil8
+ &__GLEW_OES_texture_stencil8,
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ &__GLEW_OES_texture_storage_multisample_2d_array,
+#endif
+#ifdef GL_OES_texture_view
+ &__GLEW_OES_texture_view,
+#endif
+#ifdef GL_OES_vertex_array_object
+ &__GLEW_OES_vertex_array_object,
+#endif
+#ifdef GL_OES_vertex_half_float
+ &__GLEW_OES_vertex_half_float,
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ &__GLEW_OES_vertex_type_10_10_10_2,
+#endif
+#ifdef GL_OML_interlace
+ &__GLEW_OML_interlace,
+#endif
+#ifdef GL_OML_resample
+ &__GLEW_OML_resample,
+#endif
+#ifdef GL_OML_subsample
+ &__GLEW_OML_subsample,
+#endif
+#ifdef GL_OVR_multiview
+ &__GLEW_OVR_multiview,
+#endif
+#ifdef GL_OVR_multiview2
+ &__GLEW_OVR_multiview2,
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ &__GLEW_OVR_multiview_multisampled_render_to_texture,
+#endif
+#ifdef GL_PGI_misc_hints
+ &__GLEW_PGI_misc_hints,
+#endif
+#ifdef GL_PGI_vertex_hints
+ &__GLEW_PGI_vertex_hints,
+#endif
+#ifdef GL_QCOM_YUV_texture_gather
+ &__GLEW_QCOM_YUV_texture_gather,
+#endif
+#ifdef GL_QCOM_alpha_test
+ &__GLEW_QCOM_alpha_test,
+#endif
+#ifdef GL_QCOM_binning_control
+ &__GLEW_QCOM_binning_control,
+#endif
+#ifdef GL_QCOM_driver_control
+ &__GLEW_QCOM_driver_control,
+#endif
+#ifdef GL_QCOM_extended_get
+ &__GLEW_QCOM_extended_get,
+#endif
+#ifdef GL_QCOM_extended_get2
+ &__GLEW_QCOM_extended_get2,
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ &__GLEW_QCOM_frame_extrapolation,
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ &__GLEW_QCOM_framebuffer_foveated,
+#endif
+#ifdef GL_QCOM_motion_estimation
+ &__GLEW_QCOM_motion_estimation,
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ &__GLEW_QCOM_perfmon_global_mode,
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ &__GLEW_QCOM_render_shared_exponent,
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ &__GLEW_QCOM_shader_framebuffer_fetch_noncoherent,
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ &__GLEW_QCOM_shader_framebuffer_fetch_rate,
+#endif
+#ifdef GL_QCOM_shading_rate
+ &__GLEW_QCOM_shading_rate,
+#endif
+#ifdef GL_QCOM_texture_foveated
+ &__GLEW_QCOM_texture_foveated,
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ &__GLEW_QCOM_texture_foveated2,
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ &__GLEW_QCOM_texture_foveated_subsampled_layout,
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ &__GLEW_QCOM_tiled_rendering,
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ &__GLEW_QCOM_writeonly_rendering,
+#endif
+#ifdef GL_REGAL_ES1_0_compatibility
+ &__GLEW_REGAL_ES1_0_compatibility,
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ &__GLEW_REGAL_ES1_1_compatibility,
+#endif
+#ifdef GL_REGAL_enable
+ &__GLEW_REGAL_enable,
+#endif
+#ifdef GL_REGAL_error_string
+ &__GLEW_REGAL_error_string,
+#endif
+#ifdef GL_REGAL_extension_query
+ &__GLEW_REGAL_extension_query,
+#endif
+#ifdef GL_REGAL_log
+ &__GLEW_REGAL_log,
+#endif
+#ifdef GL_REGAL_proc_address
+ &__GLEW_REGAL_proc_address,
+#endif
+#ifdef GL_REND_screen_coordinates
+ &__GLEW_REND_screen_coordinates,
+#endif
+#ifdef GL_S3_s3tc
+ &__GLEW_S3_s3tc,
+#endif
+#ifdef GL_SGIS_clip_band_hint
+ &__GLEW_SGIS_clip_band_hint,
+#endif
+#ifdef GL_SGIS_color_range
+ &__GLEW_SGIS_color_range,
+#endif
+#ifdef GL_SGIS_detail_texture
+ &__GLEW_SGIS_detail_texture,
+#endif
+#ifdef GL_SGIS_fog_function
+ &__GLEW_SGIS_fog_function,
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ &__GLEW_SGIS_generate_mipmap,
+#endif
+#ifdef GL_SGIS_line_texgen
+ &__GLEW_SGIS_line_texgen,
+#endif
+#ifdef GL_SGIS_multisample
+ &__GLEW_SGIS_multisample,
+#endif
+#ifdef GL_SGIS_multitexture
+ &__GLEW_SGIS_multitexture,
+#endif
+#ifdef GL_SGIS_pixel_texture
+ &__GLEW_SGIS_pixel_texture,
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ &__GLEW_SGIS_point_line_texgen,
+#endif
+#ifdef GL_SGIS_shared_multisample
+ &__GLEW_SGIS_shared_multisample,
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ &__GLEW_SGIS_sharpen_texture,
+#endif
+#ifdef GL_SGIS_texture4D
+ &__GLEW_SGIS_texture4D,
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ &__GLEW_SGIS_texture_border_clamp,
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ &__GLEW_SGIS_texture_edge_clamp,
+#endif
+#ifdef GL_SGIS_texture_filter4
+ &__GLEW_SGIS_texture_filter4,
+#endif
+#ifdef GL_SGIS_texture_lod
+ &__GLEW_SGIS_texture_lod,
+#endif
+#ifdef GL_SGIS_texture_select
+ &__GLEW_SGIS_texture_select,
+#endif
+#ifdef GL_SGIX_async
+ &__GLEW_SGIX_async,
+#endif
+#ifdef GL_SGIX_async_histogram
+ &__GLEW_SGIX_async_histogram,
+#endif
+#ifdef GL_SGIX_async_pixel
+ &__GLEW_SGIX_async_pixel,
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ &__GLEW_SGIX_bali_g_instruments,
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ &__GLEW_SGIX_bali_r_instruments,
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ &__GLEW_SGIX_bali_timer_instruments,
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ &__GLEW_SGIX_blend_alpha_minmax,
+#endif
+#ifdef GL_SGIX_blend_cadd
+ &__GLEW_SGIX_blend_cadd,
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ &__GLEW_SGIX_blend_cmultiply,
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ &__GLEW_SGIX_calligraphic_fragment,
+#endif
+#ifdef GL_SGIX_clipmap
+ &__GLEW_SGIX_clipmap,
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ &__GLEW_SGIX_color_matrix_accuracy,
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ &__GLEW_SGIX_color_table_index_mode,
+#endif
+#ifdef GL_SGIX_complex_polar
+ &__GLEW_SGIX_complex_polar,
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ &__GLEW_SGIX_convolution_accuracy,
+#endif
+#ifdef GL_SGIX_cube_map
+ &__GLEW_SGIX_cube_map,
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ &__GLEW_SGIX_cylinder_texgen,
+#endif
+#ifdef GL_SGIX_datapipe
+ &__GLEW_SGIX_datapipe,
+#endif
+#ifdef GL_SGIX_decimation
+ &__GLEW_SGIX_decimation,
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ &__GLEW_SGIX_depth_pass_instrument,
+#endif
+#ifdef GL_SGIX_depth_texture
+ &__GLEW_SGIX_depth_texture,
+#endif
+#ifdef GL_SGIX_dvc
+ &__GLEW_SGIX_dvc,
+#endif
+#ifdef GL_SGIX_flush_raster
+ &__GLEW_SGIX_flush_raster,
+#endif
+#ifdef GL_SGIX_fog_blend
+ &__GLEW_SGIX_fog_blend,
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ &__GLEW_SGIX_fog_factor_to_alpha,
+#endif
+#ifdef GL_SGIX_fog_layers
+ &__GLEW_SGIX_fog_layers,
+#endif
+#ifdef GL_SGIX_fog_offset
+ &__GLEW_SGIX_fog_offset,
+#endif
+#ifdef GL_SGIX_fog_patchy
+ &__GLEW_SGIX_fog_patchy,
+#endif
+#ifdef GL_SGIX_fog_scale
+ &__GLEW_SGIX_fog_scale,
+#endif
+#ifdef GL_SGIX_fog_texture
+ &__GLEW_SGIX_fog_texture,
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ &__GLEW_SGIX_fragment_lighting_space,
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ &__GLEW_SGIX_fragment_specular_lighting,
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ &__GLEW_SGIX_fragments_instrument,
+#endif
+#ifdef GL_SGIX_framezoom
+ &__GLEW_SGIX_framezoom,
+#endif
+#ifdef GL_SGIX_icc_texture
+ &__GLEW_SGIX_icc_texture,
+#endif
+#ifdef GL_SGIX_igloo_interface
+ &__GLEW_SGIX_igloo_interface,
+#endif
+#ifdef GL_SGIX_image_compression
+ &__GLEW_SGIX_image_compression,
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ &__GLEW_SGIX_impact_pixel_texture,
+#endif
+#ifdef GL_SGIX_instrument_error
+ &__GLEW_SGIX_instrument_error,
+#endif
+#ifdef GL_SGIX_interlace
+ &__GLEW_SGIX_interlace,
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ &__GLEW_SGIX_ir_instrument1,
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ &__GLEW_SGIX_line_quality_hint,
+#endif
+#ifdef GL_SGIX_list_priority
+ &__GLEW_SGIX_list_priority,
+#endif
+#ifdef GL_SGIX_mpeg1
+ &__GLEW_SGIX_mpeg1,
+#endif
+#ifdef GL_SGIX_mpeg2
+ &__GLEW_SGIX_mpeg2,
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ &__GLEW_SGIX_nonlinear_lighting_pervertex,
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ &__GLEW_SGIX_nurbs_eval,
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ &__GLEW_SGIX_occlusion_instrument,
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ &__GLEW_SGIX_packed_6bytes,
+#endif
+#ifdef GL_SGIX_pixel_texture
+ &__GLEW_SGIX_pixel_texture,
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ &__GLEW_SGIX_pixel_texture_bits,
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ &__GLEW_SGIX_pixel_texture_lod,
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ &__GLEW_SGIX_pixel_tiles,
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ &__GLEW_SGIX_polynomial_ffd,
+#endif
+#ifdef GL_SGIX_quad_mesh
+ &__GLEW_SGIX_quad_mesh,
+#endif
+#ifdef GL_SGIX_reference_plane
+ &__GLEW_SGIX_reference_plane,
+#endif
+#ifdef GL_SGIX_resample
+ &__GLEW_SGIX_resample,
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ &__GLEW_SGIX_scalebias_hint,
+#endif
+#ifdef GL_SGIX_shadow
+ &__GLEW_SGIX_shadow,
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ &__GLEW_SGIX_shadow_ambient,
+#endif
+#ifdef GL_SGIX_slim
+ &__GLEW_SGIX_slim,
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ &__GLEW_SGIX_spotlight_cutoff,
+#endif
+#ifdef GL_SGIX_sprite
+ &__GLEW_SGIX_sprite,
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ &__GLEW_SGIX_subdiv_patch,
+#endif
+#ifdef GL_SGIX_subsample
+ &__GLEW_SGIX_subsample,
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ &__GLEW_SGIX_tag_sample_buffer,
+#endif
+#ifdef GL_SGIX_texture_add_env
+ &__GLEW_SGIX_texture_add_env,
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ &__GLEW_SGIX_texture_coordinate_clamp,
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ &__GLEW_SGIX_texture_lod_bias,
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ &__GLEW_SGIX_texture_mipmap_anisotropic,
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ &__GLEW_SGIX_texture_multi_buffer,
+#endif
+#ifdef GL_SGIX_texture_phase
+ &__GLEW_SGIX_texture_phase,
+#endif
+#ifdef GL_SGIX_texture_range
+ &__GLEW_SGIX_texture_range,
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ &__GLEW_SGIX_texture_scale_bias,
+#endif
+#ifdef GL_SGIX_texture_supersample
+ &__GLEW_SGIX_texture_supersample,
+#endif
+#ifdef GL_SGIX_vector_ops
+ &__GLEW_SGIX_vector_ops,
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ &__GLEW_SGIX_vertex_array_object,
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ &__GLEW_SGIX_vertex_preclip,
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ &__GLEW_SGIX_vertex_preclip_hint,
+#endif
+#ifdef GL_SGIX_ycrcb
+ &__GLEW_SGIX_ycrcb,
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ &__GLEW_SGIX_ycrcb_subsample,
+#endif
+#ifdef GL_SGIX_ycrcba
+ &__GLEW_SGIX_ycrcba,
+#endif
+#ifdef GL_SGI_color_matrix
+ &__GLEW_SGI_color_matrix,
+#endif
+#ifdef GL_SGI_color_table
+ &__GLEW_SGI_color_table,
+#endif
+#ifdef GL_SGI_complex
+ &__GLEW_SGI_complex,
+#endif
+#ifdef GL_SGI_complex_type
+ &__GLEW_SGI_complex_type,
+#endif
+#ifdef GL_SGI_fft
+ &__GLEW_SGI_fft,
+#endif
+#ifdef GL_SGI_texture_color_table
+ &__GLEW_SGI_texture_color_table,
+#endif
+#ifdef GL_SUNX_constant_data
+ &__GLEW_SUNX_constant_data,
+#endif
+#ifdef GL_SUN_convolution_border_modes
+ &__GLEW_SUN_convolution_border_modes,
+#endif
+#ifdef GL_SUN_global_alpha
+ &__GLEW_SUN_global_alpha,
+#endif
+#ifdef GL_SUN_mesh_array
+ &__GLEW_SUN_mesh_array,
+#endif
+#ifdef GL_SUN_read_video_pixels
+ &__GLEW_SUN_read_video_pixels,
+#endif
+#ifdef GL_SUN_slice_accum
+ &__GLEW_SUN_slice_accum,
+#endif
+#ifdef GL_SUN_triangle_list
+ &__GLEW_SUN_triangle_list,
+#endif
+#ifdef GL_SUN_vertex
+ &__GLEW_SUN_vertex,
+#endif
+#ifdef GL_VERSION_1_2
+ &__GLEW_VERSION_1_2,
+#endif
+#ifdef GL_VERSION_1_2_1
+ &__GLEW_VERSION_1_2_1,
+#endif
+#ifdef GL_VERSION_1_3
+ &__GLEW_VERSION_1_3,
+#endif
+#ifdef GL_VERSION_1_4
+ &__GLEW_VERSION_1_4,
+#endif
+#ifdef GL_VERSION_1_5
+ &__GLEW_VERSION_1_5,
+#endif
+#ifdef GL_VERSION_2_0
+ &__GLEW_VERSION_2_0,
+#endif
+#ifdef GL_VERSION_2_1
+ &__GLEW_VERSION_2_1,
+#endif
+#ifdef GL_VERSION_3_0
+ &__GLEW_VERSION_3_0,
+#endif
+#ifdef GL_VERSION_3_1
+ &__GLEW_VERSION_3_1,
+#endif
+#ifdef GL_VERSION_3_2
+ &__GLEW_VERSION_3_2,
+#endif
+#ifdef GL_VERSION_3_3
+ &__GLEW_VERSION_3_3,
+#endif
+#ifdef GL_VERSION_4_0
+ &__GLEW_VERSION_4_0,
+#endif
+#ifdef GL_VERSION_4_1
+ &__GLEW_VERSION_4_1,
+#endif
+#ifdef GL_VERSION_4_2
+ &__GLEW_VERSION_4_2,
+#endif
+#ifdef GL_VERSION_4_3
+ &__GLEW_VERSION_4_3,
+#endif
+#ifdef GL_VERSION_4_4
+ &__GLEW_VERSION_4_4,
+#endif
+#ifdef GL_VERSION_4_5
+ &__GLEW_VERSION_4_5,
+#endif
+#ifdef GL_VERSION_4_6
+ &__GLEW_VERSION_4_6,
+#endif
+#ifdef GL_VIV_shader_binary
+ &__GLEW_VIV_shader_binary,
+#endif
+#ifdef GL_WIN_phong_shading
+ &__GLEW_WIN_phong_shading,
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ &__GLEW_WIN_scene_markerXXX,
+#endif
+#ifdef GL_WIN_specular_fog
+ &__GLEW_WIN_specular_fog,
+#endif
+#ifdef GL_WIN_swap_hint
+ &__GLEW_WIN_swap_hint,
+#endif
+ NULL
+};
+
+static GLboolean _glewInit_GL_VERSION_1_2 ();
+static GLboolean _glewInit_GL_VERSION_1_3 ();
+static GLboolean _glewInit_GL_VERSION_1_4 ();
+static GLboolean _glewInit_GL_VERSION_1_5 ();
+static GLboolean _glewInit_GL_VERSION_2_0 ();
+static GLboolean _glewInit_GL_VERSION_2_1 ();
+static GLboolean _glewInit_GL_VERSION_3_0 ();
+static GLboolean _glewInit_GL_VERSION_3_1 ();
+static GLboolean _glewInit_GL_VERSION_3_2 ();
+static GLboolean _glewInit_GL_VERSION_3_3 ();
+static GLboolean _glewInit_GL_VERSION_4_0 ();
+static GLboolean _glewInit_GL_VERSION_4_5 ();
+static GLboolean _glewInit_GL_VERSION_4_6 ();
+static GLboolean _glewInit_GL_3DFX_tbuffer ();
+static GLboolean _glewInit_GL_AMD_debug_output ();
+static GLboolean _glewInit_GL_AMD_draw_buffers_blend ();
+static GLboolean _glewInit_GL_AMD_framebuffer_multisample_advanced ();
+static GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ();
+static GLboolean _glewInit_GL_AMD_interleaved_elements ();
+static GLboolean _glewInit_GL_AMD_multi_draw_indirect ();
+static GLboolean _glewInit_GL_AMD_name_gen_delete ();
+static GLboolean _glewInit_GL_AMD_occlusion_query_event ();
+static GLboolean _glewInit_GL_AMD_performance_monitor ();
+static GLboolean _glewInit_GL_AMD_sample_positions ();
+static GLboolean _glewInit_GL_AMD_sparse_texture ();
+static GLboolean _glewInit_GL_AMD_stencil_operation_extended ();
+static GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ();
+static GLboolean _glewInit_GL_ANGLE_framebuffer_blit ();
+static GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ();
+static GLboolean _glewInit_GL_ANGLE_instanced_arrays ();
+static GLboolean _glewInit_GL_ANGLE_timer_query ();
+static GLboolean _glewInit_GL_ANGLE_translated_shader_source ();
+static GLboolean _glewInit_GL_APPLE_copy_texture_levels ();
+static GLboolean _glewInit_GL_APPLE_element_array ();
+static GLboolean _glewInit_GL_APPLE_fence ();
+static GLboolean _glewInit_GL_APPLE_flush_buffer_range ();
+static GLboolean _glewInit_GL_APPLE_framebuffer_multisample ();
+static GLboolean _glewInit_GL_APPLE_object_purgeable ();
+static GLboolean _glewInit_GL_APPLE_sync ();
+static GLboolean _glewInit_GL_APPLE_texture_range ();
+static GLboolean _glewInit_GL_APPLE_vertex_array_object ();
+static GLboolean _glewInit_GL_APPLE_vertex_array_range ();
+static GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ();
+static GLboolean _glewInit_GL_ARB_ES2_compatibility ();
+static GLboolean _glewInit_GL_ARB_ES3_1_compatibility ();
+static GLboolean _glewInit_GL_ARB_ES3_2_compatibility ();
+static GLboolean _glewInit_GL_ARB_base_instance ();
+static GLboolean _glewInit_GL_ARB_bindless_texture ();
+static GLboolean _glewInit_GL_ARB_blend_func_extended ();
+static GLboolean _glewInit_GL_ARB_buffer_storage ();
+static GLboolean _glewInit_GL_ARB_cl_event ();
+static GLboolean _glewInit_GL_ARB_clear_buffer_object ();
+static GLboolean _glewInit_GL_ARB_clear_texture ();
+static GLboolean _glewInit_GL_ARB_clip_control ();
+static GLboolean _glewInit_GL_ARB_color_buffer_float ();
+static GLboolean _glewInit_GL_ARB_compute_shader ();
+static GLboolean _glewInit_GL_ARB_compute_variable_group_size ();
+static GLboolean _glewInit_GL_ARB_copy_buffer ();
+static GLboolean _glewInit_GL_ARB_copy_image ();
+static GLboolean _glewInit_GL_ARB_debug_output ();
+static GLboolean _glewInit_GL_ARB_direct_state_access ();
+static GLboolean _glewInit_GL_ARB_draw_buffers ();
+static GLboolean _glewInit_GL_ARB_draw_buffers_blend ();
+static GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ();
+static GLboolean _glewInit_GL_ARB_draw_indirect ();
+static GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ();
+static GLboolean _glewInit_GL_ARB_framebuffer_object ();
+static GLboolean _glewInit_GL_ARB_geometry_shader4 ();
+static GLboolean _glewInit_GL_ARB_get_program_binary ();
+static GLboolean _glewInit_GL_ARB_get_texture_sub_image ();
+static GLboolean _glewInit_GL_ARB_gl_spirv ();
+static GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ();
+static GLboolean _glewInit_GL_ARB_gpu_shader_int64 ();
+static GLboolean _glewInit_GL_ARB_imaging ();
+static GLboolean _glewInit_GL_ARB_indirect_parameters ();
+static GLboolean _glewInit_GL_ARB_instanced_arrays ();
+static GLboolean _glewInit_GL_ARB_internalformat_query ();
+static GLboolean _glewInit_GL_ARB_internalformat_query2 ();
+static GLboolean _glewInit_GL_ARB_invalidate_subdata ();
+static GLboolean _glewInit_GL_ARB_map_buffer_range ();
+static GLboolean _glewInit_GL_ARB_matrix_palette ();
+static GLboolean _glewInit_GL_ARB_multi_bind ();
+static GLboolean _glewInit_GL_ARB_multi_draw_indirect ();
+static GLboolean _glewInit_GL_ARB_multisample ();
+static GLboolean _glewInit_GL_ARB_multitexture ();
+static GLboolean _glewInit_GL_ARB_occlusion_query ();
+static GLboolean _glewInit_GL_ARB_parallel_shader_compile ();
+static GLboolean _glewInit_GL_ARB_point_parameters ();
+static GLboolean _glewInit_GL_ARB_polygon_offset_clamp ();
+static GLboolean _glewInit_GL_ARB_program_interface_query ();
+static GLboolean _glewInit_GL_ARB_provoking_vertex ();
+static GLboolean _glewInit_GL_ARB_robustness ();
+static GLboolean _glewInit_GL_ARB_sample_locations ();
+static GLboolean _glewInit_GL_ARB_sample_shading ();
+static GLboolean _glewInit_GL_ARB_sampler_objects ();
+static GLboolean _glewInit_GL_ARB_separate_shader_objects ();
+static GLboolean _glewInit_GL_ARB_shader_atomic_counters ();
+static GLboolean _glewInit_GL_ARB_shader_image_load_store ();
+static GLboolean _glewInit_GL_ARB_shader_objects ();
+static GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ();
+static GLboolean _glewInit_GL_ARB_shader_subroutine ();
+static GLboolean _glewInit_GL_ARB_shading_language_include ();
+static GLboolean _glewInit_GL_ARB_sparse_buffer ();
+static GLboolean _glewInit_GL_ARB_sparse_texture ();
+static GLboolean _glewInit_GL_ARB_sync ();
+static GLboolean _glewInit_GL_ARB_tessellation_shader ();
+static GLboolean _glewInit_GL_ARB_texture_barrier ();
+static GLboolean _glewInit_GL_ARB_texture_buffer_object ();
+static GLboolean _glewInit_GL_ARB_texture_buffer_range ();
+static GLboolean _glewInit_GL_ARB_texture_compression ();
+static GLboolean _glewInit_GL_ARB_texture_multisample ();
+static GLboolean _glewInit_GL_ARB_texture_storage ();
+static GLboolean _glewInit_GL_ARB_texture_storage_multisample ();
+static GLboolean _glewInit_GL_ARB_texture_view ();
+static GLboolean _glewInit_GL_ARB_timer_query ();
+static GLboolean _glewInit_GL_ARB_transform_feedback2 ();
+static GLboolean _glewInit_GL_ARB_transform_feedback3 ();
+static GLboolean _glewInit_GL_ARB_transform_feedback_instanced ();
+static GLboolean _glewInit_GL_ARB_transpose_matrix ();
+static GLboolean _glewInit_GL_ARB_uniform_buffer_object ();
+static GLboolean _glewInit_GL_ARB_vertex_array_object ();
+static GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ();
+static GLboolean _glewInit_GL_ARB_vertex_attrib_binding ();
+static GLboolean _glewInit_GL_ARB_vertex_blend ();
+static GLboolean _glewInit_GL_ARB_vertex_buffer_object ();
+static GLboolean _glewInit_GL_ARB_vertex_program ();
+static GLboolean _glewInit_GL_ARB_vertex_shader ();
+static GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ();
+static GLboolean _glewInit_GL_ARB_viewport_array ();
+static GLboolean _glewInit_GL_ARB_window_pos ();
+static GLboolean _glewInit_GL_ATI_draw_buffers ();
+static GLboolean _glewInit_GL_ATI_element_array ();
+static GLboolean _glewInit_GL_ATI_envmap_bumpmap ();
+static GLboolean _glewInit_GL_ATI_fragment_shader ();
+static GLboolean _glewInit_GL_ATI_map_object_buffer ();
+static GLboolean _glewInit_GL_ATI_pn_triangles ();
+static GLboolean _glewInit_GL_ATI_separate_stencil ();
+static GLboolean _glewInit_GL_ATI_vertex_array_object ();
+static GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ();
+static GLboolean _glewInit_GL_ATI_vertex_streams ();
+static GLboolean _glewInit_GL_EXT_EGL_image_storage ();
+static GLboolean _glewInit_GL_EXT_base_instance ();
+static GLboolean _glewInit_GL_EXT_bindable_uniform ();
+static GLboolean _glewInit_GL_EXT_blend_color ();
+static GLboolean _glewInit_GL_EXT_blend_equation_separate ();
+static GLboolean _glewInit_GL_EXT_blend_func_extended ();
+static GLboolean _glewInit_GL_EXT_blend_func_separate ();
+static GLboolean _glewInit_GL_EXT_blend_minmax ();
+static GLboolean _glewInit_GL_EXT_buffer_storage ();
+static GLboolean _glewInit_GL_EXT_clear_texture ();
+static GLboolean _glewInit_GL_EXT_clip_control ();
+static GLboolean _glewInit_GL_EXT_color_subtable ();
+static GLboolean _glewInit_GL_EXT_compiled_vertex_array ();
+static GLboolean _glewInit_GL_EXT_convolution ();
+static GLboolean _glewInit_GL_EXT_coordinate_frame ();
+static GLboolean _glewInit_GL_EXT_copy_image ();
+static GLboolean _glewInit_GL_EXT_copy_texture ();
+static GLboolean _glewInit_GL_EXT_cull_vertex ();
+static GLboolean _glewInit_GL_EXT_debug_label ();
+static GLboolean _glewInit_GL_EXT_debug_marker ();
+static GLboolean _glewInit_GL_EXT_depth_bounds_test ();
+static GLboolean _glewInit_GL_EXT_direct_state_access ();
+static GLboolean _glewInit_GL_EXT_discard_framebuffer ();
+static GLboolean _glewInit_GL_EXT_disjoint_timer_query ();
+static GLboolean _glewInit_GL_EXT_draw_buffers ();
+static GLboolean _glewInit_GL_EXT_draw_buffers2 ();
+static GLboolean _glewInit_GL_EXT_draw_buffers_indexed ();
+static GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ();
+static GLboolean _glewInit_GL_EXT_draw_instanced ();
+static GLboolean _glewInit_GL_EXT_draw_range_elements ();
+static GLboolean _glewInit_GL_EXT_draw_transform_feedback ();
+static GLboolean _glewInit_GL_EXT_external_buffer ();
+static GLboolean _glewInit_GL_EXT_fog_coord ();
+static GLboolean _glewInit_GL_EXT_fragment_lighting ();
+static GLboolean _glewInit_GL_EXT_framebuffer_blit ();
+static GLboolean _glewInit_GL_EXT_framebuffer_multisample ();
+static GLboolean _glewInit_GL_EXT_framebuffer_object ();
+static GLboolean _glewInit_GL_EXT_geometry_shader4 ();
+static GLboolean _glewInit_GL_EXT_gpu_program_parameters ();
+static GLboolean _glewInit_GL_EXT_gpu_shader4 ();
+static GLboolean _glewInit_GL_EXT_histogram ();
+static GLboolean _glewInit_GL_EXT_index_func ();
+static GLboolean _glewInit_GL_EXT_index_material ();
+static GLboolean _glewInit_GL_EXT_instanced_arrays ();
+static GLboolean _glewInit_GL_EXT_light_texture ();
+static GLboolean _glewInit_GL_EXT_map_buffer_range ();
+static GLboolean _glewInit_GL_EXT_memory_object ();
+static GLboolean _glewInit_GL_EXT_memory_object_fd ();
+static GLboolean _glewInit_GL_EXT_memory_object_win32 ();
+static GLboolean _glewInit_GL_EXT_multi_draw_arrays ();
+static GLboolean _glewInit_GL_EXT_multi_draw_indirect ();
+static GLboolean _glewInit_GL_EXT_multisample ();
+static GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_EXT_multiview_draw_buffers ();
+static GLboolean _glewInit_GL_EXT_paletted_texture ();
+static GLboolean _glewInit_GL_EXT_pixel_transform ();
+static GLboolean _glewInit_GL_EXT_point_parameters ();
+static GLboolean _glewInit_GL_EXT_polygon_offset ();
+static GLboolean _glewInit_GL_EXT_polygon_offset_clamp ();
+static GLboolean _glewInit_GL_EXT_primitive_bounding_box ();
+static GLboolean _glewInit_GL_EXT_provoking_vertex ();
+static GLboolean _glewInit_GL_EXT_raster_multisample ();
+static GLboolean _glewInit_GL_EXT_robustness ();
+static GLboolean _glewInit_GL_EXT_scene_marker ();
+static GLboolean _glewInit_GL_EXT_secondary_color ();
+static GLboolean _glewInit_GL_EXT_semaphore ();
+static GLboolean _glewInit_GL_EXT_semaphore_fd ();
+static GLboolean _glewInit_GL_EXT_semaphore_win32 ();
+static GLboolean _glewInit_GL_EXT_separate_shader_objects ();
+static GLboolean _glewInit_GL_EXT_shader_framebuffer_fetch ();
+static GLboolean _glewInit_GL_EXT_shader_image_load_store ();
+static GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ();
+static GLboolean _glewInit_GL_EXT_sparse_texture ();
+static GLboolean _glewInit_GL_EXT_stencil_two_side ();
+static GLboolean _glewInit_GL_EXT_subtexture ();
+static GLboolean _glewInit_GL_EXT_tessellation_point_size ();
+static GLboolean _glewInit_GL_EXT_texture3D ();
+static GLboolean _glewInit_GL_EXT_texture_array ();
+static GLboolean _glewInit_GL_EXT_texture_border_clamp ();
+static GLboolean _glewInit_GL_EXT_texture_buffer_object ();
+static GLboolean _glewInit_GL_EXT_texture_integer ();
+static GLboolean _glewInit_GL_EXT_texture_object ();
+static GLboolean _glewInit_GL_EXT_texture_perturb_normal ();
+static GLboolean _glewInit_GL_EXT_texture_storage ();
+static GLboolean _glewInit_GL_EXT_texture_storage_compression ();
+static GLboolean _glewInit_GL_EXT_texture_view ();
+static GLboolean _glewInit_GL_EXT_timer_query ();
+static GLboolean _glewInit_GL_EXT_transform_feedback ();
+static GLboolean _glewInit_GL_EXT_vertex_array ();
+static GLboolean _glewInit_GL_EXT_vertex_array_setXXX ();
+static GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ();
+static GLboolean _glewInit_GL_EXT_vertex_shader ();
+static GLboolean _glewInit_GL_EXT_vertex_weighting ();
+static GLboolean _glewInit_GL_EXT_win32_keyed_mutex ();
+static GLboolean _glewInit_GL_EXT_window_rectangles ();
+static GLboolean _glewInit_GL_EXT_x11_sync_object ();
+static GLboolean _glewInit_GL_GREMEDY_frame_terminator ();
+static GLboolean _glewInit_GL_GREMEDY_string_marker ();
+static GLboolean _glewInit_GL_HP_image_transform ();
+static GLboolean _glewInit_GL_IBM_multimode_draw_arrays ();
+static GLboolean _glewInit_GL_IBM_vertex_array_lists ();
+static GLboolean _glewInit_GL_IMG_bindless_texture ();
+static GLboolean _glewInit_GL_IMG_framebuffer_downsample ();
+static GLboolean _glewInit_GL_IMG_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_INTEL_framebuffer_CMAA ();
+static GLboolean _glewInit_GL_INTEL_map_texture ();
+static GLboolean _glewInit_GL_INTEL_parallel_arrays ();
+static GLboolean _glewInit_GL_INTEL_performance_query ();
+static GLboolean _glewInit_GL_INTEL_texture_scissor ();
+static GLboolean _glewInit_GL_KHR_blend_equation_advanced ();
+static GLboolean _glewInit_GL_KHR_debug ();
+static GLboolean _glewInit_GL_KHR_parallel_shader_compile ();
+static GLboolean _glewInit_GL_KHR_robustness ();
+static GLboolean _glewInit_GL_KTX_buffer_region ();
+static GLboolean _glewInit_GL_MESA_framebuffer_flip_y ();
+static GLboolean _glewInit_GL_MESA_resize_buffers ();
+static GLboolean _glewInit_GL_MESA_window_pos ();
+static GLboolean _glewInit_GL_NVX_conditional_render ();
+static GLboolean _glewInit_GL_NVX_gpu_multicast2 ();
+static GLboolean _glewInit_GL_NVX_linked_gpu_multicast ();
+static GLboolean _glewInit_GL_NVX_progress_fence ();
+static GLboolean _glewInit_GL_NV_3dvision_settings ();
+static GLboolean _glewInit_GL_NV_alpha_to_coverage_dither_control ();
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ();
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ();
+static GLboolean _glewInit_GL_NV_bindless_texture ();
+static GLboolean _glewInit_GL_NV_blend_equation_advanced ();
+static GLboolean _glewInit_GL_NV_clip_space_w_scaling ();
+static GLboolean _glewInit_GL_NV_command_list ();
+static GLboolean _glewInit_GL_NV_conditional_render ();
+static GLboolean _glewInit_GL_NV_conservative_raster ();
+static GLboolean _glewInit_GL_NV_conservative_raster_dilate ();
+static GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ();
+static GLboolean _glewInit_GL_NV_copy_buffer ();
+static GLboolean _glewInit_GL_NV_copy_image ();
+static GLboolean _glewInit_GL_NV_depth_buffer_float ();
+static GLboolean _glewInit_GL_NV_draw_buffers ();
+static GLboolean _glewInit_GL_NV_draw_instanced ();
+static GLboolean _glewInit_GL_NV_draw_texture ();
+static GLboolean _glewInit_GL_NV_draw_vulkan_image ();
+static GLboolean _glewInit_GL_NV_evaluators ();
+static GLboolean _glewInit_GL_NV_explicit_multisample ();
+static GLboolean _glewInit_GL_NV_fence ();
+static GLboolean _glewInit_GL_NV_fragment_coverage_to_color ();
+static GLboolean _glewInit_GL_NV_fragment_program ();
+static GLboolean _glewInit_GL_NV_framebuffer_blit ();
+static GLboolean _glewInit_GL_NV_framebuffer_multisample ();
+static GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ();
+static GLboolean _glewInit_GL_NV_geometry_program4 ();
+static GLboolean _glewInit_GL_NV_gpu_multicast ();
+static GLboolean _glewInit_GL_NV_gpu_program4 ();
+static GLboolean _glewInit_GL_NV_gpu_shader5 ();
+static GLboolean _glewInit_GL_NV_half_float ();
+static GLboolean _glewInit_GL_NV_instanced_arrays ();
+static GLboolean _glewInit_GL_NV_internalformat_sample_query ();
+static GLboolean _glewInit_GL_NV_memory_attachment ();
+static GLboolean _glewInit_GL_NV_memory_object_sparse ();
+static GLboolean _glewInit_GL_NV_mesh_shader ();
+static GLboolean _glewInit_GL_NV_non_square_matrices ();
+static GLboolean _glewInit_GL_NV_occlusion_query ();
+static GLboolean _glewInit_GL_NV_parameter_buffer_object ();
+static GLboolean _glewInit_GL_NV_path_rendering ();
+static GLboolean _glewInit_GL_NV_pixel_data_range ();
+static GLboolean _glewInit_GL_NV_point_sprite ();
+static GLboolean _glewInit_GL_NV_polygon_mode ();
+static GLboolean _glewInit_GL_NV_present_video ();
+static GLboolean _glewInit_GL_NV_primitive_restart ();
+static GLboolean _glewInit_GL_NV_read_buffer ();
+static GLboolean _glewInit_GL_NV_register_combiners ();
+static GLboolean _glewInit_GL_NV_register_combiners2 ();
+static GLboolean _glewInit_GL_NV_sample_locations ();
+static GLboolean _glewInit_GL_NV_scissor_exclusive ();
+static GLboolean _glewInit_GL_NV_shader_buffer_load ();
+static GLboolean _glewInit_GL_NV_shading_rate_image ();
+static GLboolean _glewInit_GL_NV_texture_array ();
+static GLboolean _glewInit_GL_NV_texture_barrier ();
+static GLboolean _glewInit_GL_NV_texture_multisample ();
+static GLboolean _glewInit_GL_NV_timeline_semaphore ();
+static GLboolean _glewInit_GL_NV_transform_feedback ();
+static GLboolean _glewInit_GL_NV_transform_feedback2 ();
+static GLboolean _glewInit_GL_NV_vdpau_interop ();
+static GLboolean _glewInit_GL_NV_vdpau_interop2 ();
+static GLboolean _glewInit_GL_NV_vertex_array_range ();
+static GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ();
+static GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ();
+static GLboolean _glewInit_GL_NV_vertex_program ();
+static GLboolean _glewInit_GL_NV_video_capture ();
+static GLboolean _glewInit_GL_NV_viewport_array ();
+static GLboolean _glewInit_GL_NV_viewport_swizzle ();
+static GLboolean _glewInit_GL_OES_EGL_image ();
+static GLboolean _glewInit_GL_OES_blend_equation_separate ();
+static GLboolean _glewInit_GL_OES_blend_func_separate ();
+static GLboolean _glewInit_GL_OES_blend_subtract ();
+static GLboolean _glewInit_GL_OES_copy_image ();
+static GLboolean _glewInit_GL_OES_draw_buffers_indexed ();
+static GLboolean _glewInit_GL_OES_framebuffer_object ();
+static GLboolean _glewInit_GL_OES_get_program_binary ();
+static GLboolean _glewInit_GL_OES_mapbuffer ();
+static GLboolean _glewInit_GL_OES_matrix_palette ();
+static GLboolean _glewInit_GL_OES_sample_shading ();
+static GLboolean _glewInit_GL_OES_single_precision ();
+static GLboolean _glewInit_GL_OES_texture_3D ();
+static GLboolean _glewInit_GL_OES_texture_border_clamp ();
+static GLboolean _glewInit_GL_OES_texture_buffer ();
+static GLboolean _glewInit_GL_OES_texture_cube_map ();
+static GLboolean _glewInit_GL_OES_texture_storage_multisample_2d_array ();
+static GLboolean _glewInit_GL_OES_texture_view ();
+static GLboolean _glewInit_GL_OES_vertex_array_object ();
+static GLboolean _glewInit_GL_OVR_multiview ();
+static GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_QCOM_alpha_test ();
+static GLboolean _glewInit_GL_QCOM_driver_control ();
+static GLboolean _glewInit_GL_QCOM_extended_get ();
+static GLboolean _glewInit_GL_QCOM_extended_get2 ();
+static GLboolean _glewInit_GL_QCOM_frame_extrapolation ();
+static GLboolean _glewInit_GL_QCOM_framebuffer_foveated ();
+static GLboolean _glewInit_GL_QCOM_motion_estimation ();
+static GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ();
+static GLboolean _glewInit_GL_QCOM_shading_rate ();
+static GLboolean _glewInit_GL_QCOM_texture_foveated ();
+static GLboolean _glewInit_GL_QCOM_tiled_rendering ();
+static GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ();
+static GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ();
+static GLboolean _glewInit_GL_REGAL_error_string ();
+static GLboolean _glewInit_GL_REGAL_extension_query ();
+static GLboolean _glewInit_GL_REGAL_log ();
+static GLboolean _glewInit_GL_REGAL_proc_address ();
+static GLboolean _glewInit_GL_SGIS_detail_texture ();
+static GLboolean _glewInit_GL_SGIS_fog_function ();
+static GLboolean _glewInit_GL_SGIS_multisample ();
+static GLboolean _glewInit_GL_SGIS_multitexture ();
+static GLboolean _glewInit_GL_SGIS_shared_multisample ();
+static GLboolean _glewInit_GL_SGIS_sharpen_texture ();
+static GLboolean _glewInit_GL_SGIS_texture4D ();
+static GLboolean _glewInit_GL_SGIS_texture_filter4 ();
+static GLboolean _glewInit_GL_SGIX_async ();
+static GLboolean _glewInit_GL_SGIX_datapipe ();
+static GLboolean _glewInit_GL_SGIX_flush_raster ();
+static GLboolean _glewInit_GL_SGIX_fog_layers ();
+static GLboolean _glewInit_GL_SGIX_fog_texture ();
+static GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ();
+static GLboolean _glewInit_GL_SGIX_framezoom ();
+static GLboolean _glewInit_GL_SGIX_igloo_interface ();
+static GLboolean _glewInit_GL_SGIX_mpeg1 ();
+static GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ();
+static GLboolean _glewInit_GL_SGIX_pixel_texture ();
+static GLboolean _glewInit_GL_SGIX_polynomial_ffd ();
+static GLboolean _glewInit_GL_SGIX_quad_mesh ();
+static GLboolean _glewInit_GL_SGIX_reference_plane ();
+static GLboolean _glewInit_GL_SGIX_sprite ();
+static GLboolean _glewInit_GL_SGIX_tag_sample_buffer ();
+static GLboolean _glewInit_GL_SGIX_vector_ops ();
+static GLboolean _glewInit_GL_SGIX_vertex_array_object ();
+static GLboolean _glewInit_GL_SGI_color_table ();
+static GLboolean _glewInit_GL_SGI_fft ();
+static GLboolean _glewInit_GL_SUNX_constant_data ();
+static GLboolean _glewInit_GL_SUN_global_alpha ();
+static GLboolean _glewInit_GL_SUN_read_video_pixels ();
+static GLboolean _glewInit_GL_SUN_triangle_list ();
+static GLboolean _glewInit_GL_SUN_vertex ();
+static GLboolean _glewInit_GL_WIN_swap_hint ();
+
+#ifdef GL_VERSION_1_2
+
+static GLboolean _glewInit_GL_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3D")) == NULL) || r;
+ r = ((glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElements")) == NULL) || r;
+ r = ((glTexImage3D = (PFNGLTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexImage3D")) == NULL) || r;
+ r = ((glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_2 */
+
+#ifdef GL_VERSION_1_3
+
+static GLboolean _glewInit_GL_VERSION_1_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveTexture = (PFNGLACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glActiveTexture")) == NULL) || r;
+ r = ((glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTexture")) == NULL) || r;
+ r = ((glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1D")) == NULL) || r;
+ r = ((glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2D")) == NULL) || r;
+ r = ((glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3D")) == NULL) || r;
+ r = ((glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1D")) == NULL) || r;
+ r = ((glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2D")) == NULL) || r;
+ r = ((glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3D")) == NULL) || r;
+ r = ((glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImage")) == NULL) || r;
+ r = ((glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixd")) == NULL) || r;
+ r = ((glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixf")) == NULL) || r;
+ r = ((glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixd")) == NULL) || r;
+ r = ((glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixf")) == NULL) || r;
+ r = ((glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1d")) == NULL) || r;
+ r = ((glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dv")) == NULL) || r;
+ r = ((glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1f")) == NULL) || r;
+ r = ((glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fv")) == NULL) || r;
+ r = ((glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1i")) == NULL) || r;
+ r = ((glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iv")) == NULL) || r;
+ r = ((glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1s")) == NULL) || r;
+ r = ((glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sv")) == NULL) || r;
+ r = ((glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2d")) == NULL) || r;
+ r = ((glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dv")) == NULL) || r;
+ r = ((glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2f")) == NULL) || r;
+ r = ((glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fv")) == NULL) || r;
+ r = ((glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2i")) == NULL) || r;
+ r = ((glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iv")) == NULL) || r;
+ r = ((glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2s")) == NULL) || r;
+ r = ((glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sv")) == NULL) || r;
+ r = ((glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3d")) == NULL) || r;
+ r = ((glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dv")) == NULL) || r;
+ r = ((glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3f")) == NULL) || r;
+ r = ((glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fv")) == NULL) || r;
+ r = ((glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3i")) == NULL) || r;
+ r = ((glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iv")) == NULL) || r;
+ r = ((glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3s")) == NULL) || r;
+ r = ((glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sv")) == NULL) || r;
+ r = ((glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4d")) == NULL) || r;
+ r = ((glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dv")) == NULL) || r;
+ r = ((glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4f")) == NULL) || r;
+ r = ((glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fv")) == NULL) || r;
+ r = ((glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4i")) == NULL) || r;
+ r = ((glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iv")) == NULL) || r;
+ r = ((glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4s")) == NULL) || r;
+ r = ((glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sv")) == NULL) || r;
+ r = ((glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_3 */
+
+#ifdef GL_VERSION_1_4
+
+static GLboolean _glewInit_GL_VERSION_1_4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendColor = (PFNGLBLENDCOLORPROC)glewGetProcAddress((const GLubyte*)"glBlendColor")) == NULL) || r;
+ r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r;
+ r = ((glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparate")) == NULL) || r;
+ r = ((glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointer")) == NULL) || r;
+ r = ((glFogCoordd = (PFNGLFOGCOORDDPROC)glewGetProcAddress((const GLubyte*)"glFogCoordd")) == NULL) || r;
+ r = ((glFogCoorddv = (PFNGLFOGCOORDDVPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddv")) == NULL) || r;
+ r = ((glFogCoordf = (PFNGLFOGCOORDFPROC)glewGetProcAddress((const GLubyte*)"glFogCoordf")) == NULL) || r;
+ r = ((glFogCoordfv = (PFNGLFOGCOORDFVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfv")) == NULL) || r;
+ r = ((glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArrays")) == NULL) || r;
+ r = ((glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElements")) == NULL) || r;
+ r = ((glPointParameterf = (PFNGLPOINTPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glPointParameterf")) == NULL) || r;
+ r = ((glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfv")) == NULL) || r;
+ r = ((glPointParameteri = (PFNGLPOINTPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPointParameteri")) == NULL) || r;
+ r = ((glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriv")) == NULL) || r;
+ r = ((glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3b")) == NULL) || r;
+ r = ((glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bv")) == NULL) || r;
+ r = ((glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3d")) == NULL) || r;
+ r = ((glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dv")) == NULL) || r;
+ r = ((glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3f")) == NULL) || r;
+ r = ((glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fv")) == NULL) || r;
+ r = ((glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3i")) == NULL) || r;
+ r = ((glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iv")) == NULL) || r;
+ r = ((glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3s")) == NULL) || r;
+ r = ((glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sv")) == NULL) || r;
+ r = ((glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ub")) == NULL) || r;
+ r = ((glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubv")) == NULL) || r;
+ r = ((glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ui")) == NULL) || r;
+ r = ((glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiv")) == NULL) || r;
+ r = ((glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3us")) == NULL) || r;
+ r = ((glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usv")) == NULL) || r;
+ r = ((glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointer")) == NULL) || r;
+ r = ((glWindowPos2d = (PFNGLWINDOWPOS2DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2d")) == NULL) || r;
+ r = ((glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dv")) == NULL) || r;
+ r = ((glWindowPos2f = (PFNGLWINDOWPOS2FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2f")) == NULL) || r;
+ r = ((glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fv")) == NULL) || r;
+ r = ((glWindowPos2i = (PFNGLWINDOWPOS2IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2i")) == NULL) || r;
+ r = ((glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iv")) == NULL) || r;
+ r = ((glWindowPos2s = (PFNGLWINDOWPOS2SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2s")) == NULL) || r;
+ r = ((glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sv")) == NULL) || r;
+ r = ((glWindowPos3d = (PFNGLWINDOWPOS3DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3d")) == NULL) || r;
+ r = ((glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dv")) == NULL) || r;
+ r = ((glWindowPos3f = (PFNGLWINDOWPOS3FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3f")) == NULL) || r;
+ r = ((glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fv")) == NULL) || r;
+ r = ((glWindowPos3i = (PFNGLWINDOWPOS3IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3i")) == NULL) || r;
+ r = ((glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iv")) == NULL) || r;
+ r = ((glWindowPos3s = (PFNGLWINDOWPOS3SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3s")) == NULL) || r;
+ r = ((glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_4 */
+
+#ifdef GL_VERSION_1_5
+
+static GLboolean _glewInit_GL_VERSION_1_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQuery = (PFNGLBEGINQUERYPROC)glewGetProcAddress((const GLubyte*)"glBeginQuery")) == NULL) || r;
+ r = ((glBindBuffer = (PFNGLBINDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindBuffer")) == NULL) || r;
+ r = ((glBufferData = (PFNGLBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferData")) == NULL) || r;
+ r = ((glBufferSubData = (PFNGLBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferSubData")) == NULL) || r;
+ r = ((glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffers")) == NULL) || r;
+ r = ((glDeleteQueries = (PFNGLDELETEQUERIESPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueries")) == NULL) || r;
+ r = ((glEndQuery = (PFNGLENDQUERYPROC)glewGetProcAddress((const GLubyte*)"glEndQuery")) == NULL) || r;
+ r = ((glGenBuffers = (PFNGLGENBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenBuffers")) == NULL) || r;
+ r = ((glGenQueries = (PFNGLGENQUERIESPROC)glewGetProcAddress((const GLubyte*)"glGenQueries")) == NULL) || r;
+ r = ((glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameteriv")) == NULL) || r;
+ r = ((glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointerv")) == NULL) || r;
+ r = ((glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubData")) == NULL) || r;
+ r = ((glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectiv")) == NULL) || r;
+ r = ((glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuiv")) == NULL) || r;
+ r = ((glGetQueryiv = (PFNGLGETQUERYIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryiv")) == NULL) || r;
+ r = ((glIsBuffer = (PFNGLISBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsBuffer")) == NULL) || r;
+ r = ((glIsQuery = (PFNGLISQUERYPROC)glewGetProcAddress((const GLubyte*)"glIsQuery")) == NULL) || r;
+ r = ((glMapBuffer = (PFNGLMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glMapBuffer")) == NULL) || r;
+ r = ((glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glUnmapBuffer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_5 */
+
+#ifdef GL_VERSION_2_0
+
+static GLboolean _glewInit_GL_VERSION_2_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAttachShader = (PFNGLATTACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glAttachShader")) == NULL) || r;
+ r = ((glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocation")) == NULL) || r;
+ r = ((glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparate")) == NULL) || r;
+ r = ((glCompileShader = (PFNGLCOMPILESHADERPROC)glewGetProcAddress((const GLubyte*)"glCompileShader")) == NULL) || r;
+ r = ((glCreateProgram = (PFNGLCREATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glCreateProgram")) == NULL) || r;
+ r = ((glCreateShader = (PFNGLCREATESHADERPROC)glewGetProcAddress((const GLubyte*)"glCreateShader")) == NULL) || r;
+ r = ((glDeleteProgram = (PFNGLDELETEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgram")) == NULL) || r;
+ r = ((glDeleteShader = (PFNGLDELETESHADERPROC)glewGetProcAddress((const GLubyte*)"glDeleteShader")) == NULL) || r;
+ r = ((glDetachShader = (PFNGLDETACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glDetachShader")) == NULL) || r;
+ r = ((glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArray")) == NULL) || r;
+ r = ((glDrawBuffers = (PFNGLDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffers")) == NULL) || r;
+ r = ((glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArray")) == NULL) || r;
+ r = ((glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttrib")) == NULL) || r;
+ r = ((glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniform")) == NULL) || r;
+ r = ((glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedShaders")) == NULL) || r;
+ r = ((glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocation")) == NULL) || r;
+ r = ((glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetProgramInfoLog")) == NULL) || r;
+ r = ((glGetProgramiv = (PFNGLGETPROGRAMIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramiv")) == NULL) || r;
+ r = ((glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetShaderInfoLog")) == NULL) || r;
+ r = ((glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSource")) == NULL) || r;
+ r = ((glGetShaderiv = (PFNGLGETSHADERIVPROC)glewGetProcAddress((const GLubyte*)"glGetShaderiv")) == NULL) || r;
+ r = ((glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocation")) == NULL) || r;
+ r = ((glGetUniformfv = (PFNGLGETUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfv")) == NULL) || r;
+ r = ((glGetUniformiv = (PFNGLGETUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformiv")) == NULL) || r;
+ r = ((glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointerv")) == NULL) || r;
+ r = ((glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdv")) == NULL) || r;
+ r = ((glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfv")) == NULL) || r;
+ r = ((glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribiv")) == NULL) || r;
+ r = ((glIsProgram = (PFNGLISPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glIsProgram")) == NULL) || r;
+ r = ((glIsShader = (PFNGLISSHADERPROC)glewGetProcAddress((const GLubyte*)"glIsShader")) == NULL) || r;
+ r = ((glLinkProgram = (PFNGLLINKPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glLinkProgram")) == NULL) || r;
+ r = ((glShaderSource = (PFNGLSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glShaderSource")) == NULL) || r;
+ r = ((glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparate")) == NULL) || r;
+ r = ((glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilMaskSeparate")) == NULL) || r;
+ r = ((glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparate")) == NULL) || r;
+ r = ((glUniform1f = (PFNGLUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)"glUniform1f")) == NULL) || r;
+ r = ((glUniform1fv = (PFNGLUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)"glUniform1fv")) == NULL) || r;
+ r = ((glUniform1i = (PFNGLUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)"glUniform1i")) == NULL) || r;
+ r = ((glUniform1iv = (PFNGLUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)"glUniform1iv")) == NULL) || r;
+ r = ((glUniform2f = (PFNGLUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)"glUniform2f")) == NULL) || r;
+ r = ((glUniform2fv = (PFNGLUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)"glUniform2fv")) == NULL) || r;
+ r = ((glUniform2i = (PFNGLUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)"glUniform2i")) == NULL) || r;
+ r = ((glUniform2iv = (PFNGLUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)"glUniform2iv")) == NULL) || r;
+ r = ((glUniform3f = (PFNGLUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)"glUniform3f")) == NULL) || r;
+ r = ((glUniform3fv = (PFNGLUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)"glUniform3fv")) == NULL) || r;
+ r = ((glUniform3i = (PFNGLUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)"glUniform3i")) == NULL) || r;
+ r = ((glUniform3iv = (PFNGLUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)"glUniform3iv")) == NULL) || r;
+ r = ((glUniform4f = (PFNGLUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)"glUniform4f")) == NULL) || r;
+ r = ((glUniform4fv = (PFNGLUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)"glUniform4fv")) == NULL) || r;
+ r = ((glUniform4i = (PFNGLUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)"glUniform4i")) == NULL) || r;
+ r = ((glUniform4iv = (PFNGLUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)"glUniform4iv")) == NULL) || r;
+ r = ((glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fv")) == NULL) || r;
+ r = ((glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fv")) == NULL) || r;
+ r = ((glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fv")) == NULL) || r;
+ r = ((glUseProgram = (PFNGLUSEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glUseProgram")) == NULL) || r;
+ r = ((glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glValidateProgram")) == NULL) || r;
+ r = ((glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1d")) == NULL) || r;
+ r = ((glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dv")) == NULL) || r;
+ r = ((glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1f")) == NULL) || r;
+ r = ((glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fv")) == NULL) || r;
+ r = ((glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1s")) == NULL) || r;
+ r = ((glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sv")) == NULL) || r;
+ r = ((glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2d")) == NULL) || r;
+ r = ((glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dv")) == NULL) || r;
+ r = ((glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2f")) == NULL) || r;
+ r = ((glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fv")) == NULL) || r;
+ r = ((glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2s")) == NULL) || r;
+ r = ((glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sv")) == NULL) || r;
+ r = ((glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3d")) == NULL) || r;
+ r = ((glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dv")) == NULL) || r;
+ r = ((glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3f")) == NULL) || r;
+ r = ((glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fv")) == NULL) || r;
+ r = ((glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3s")) == NULL) || r;
+ r = ((glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sv")) == NULL) || r;
+ r = ((glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nbv")) == NULL) || r;
+ r = ((glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Niv")) == NULL) || r;
+ r = ((glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nsv")) == NULL) || r;
+ r = ((glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nub")) == NULL) || r;
+ r = ((glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nubv")) == NULL) || r;
+ r = ((glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nuiv")) == NULL) || r;
+ r = ((glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nusv")) == NULL) || r;
+ r = ((glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bv")) == NULL) || r;
+ r = ((glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4d")) == NULL) || r;
+ r = ((glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dv")) == NULL) || r;
+ r = ((glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4f")) == NULL) || r;
+ r = ((glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fv")) == NULL) || r;
+ r = ((glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4iv")) == NULL) || r;
+ r = ((glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4s")) == NULL) || r;
+ r = ((glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sv")) == NULL) || r;
+ r = ((glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubv")) == NULL) || r;
+ r = ((glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uiv")) == NULL) || r;
+ r = ((glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usv")) == NULL) || r;
+ r = ((glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_2_0 */
+
+#ifdef GL_VERSION_2_1
+
+static GLboolean _glewInit_GL_VERSION_2_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3fv")) == NULL) || r;
+ r = ((glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4fv")) == NULL) || r;
+ r = ((glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2fv")) == NULL) || r;
+ r = ((glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4fv")) == NULL) || r;
+ r = ((glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2fv")) == NULL) || r;
+ r = ((glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3fv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_2_1 */
+
+#ifdef GL_VERSION_3_0
+
+static GLboolean _glewInit_GL_VERSION_3_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_framebuffer_object() || r;
+ r = _glewInit_GL_ARB_map_buffer_range() || r;
+ r = _glewInit_GL_ARB_uniform_buffer_object() || r;
+ r = _glewInit_GL_ARB_vertex_array_object() || r;
+
+ r = ((glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRender")) == NULL) || r;
+ r = ((glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedback")) == NULL) || r;
+ r = ((glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocation")) == NULL) || r;
+ r = ((glClampColor = (PFNGLCLAMPCOLORPROC)glewGetProcAddress((const GLubyte*)"glClampColor")) == NULL) || r;
+ r = ((glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfi")) == NULL) || r;
+ r = ((glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfv")) == NULL) || r;
+ r = ((glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferiv")) == NULL) || r;
+ r = ((glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferuiv")) == NULL) || r;
+ r = ((glColorMaski = (PFNGLCOLORMASKIPROC)glewGetProcAddress((const GLubyte*)"glColorMaski")) == NULL) || r;
+ r = ((glDisablei = (PFNGLDISABLEIPROC)glewGetProcAddress((const GLubyte*)"glDisablei")) == NULL) || r;
+ r = ((glEnablei = (PFNGLENABLEIPROC)glewGetProcAddress((const GLubyte*)"glEnablei")) == NULL) || r;
+ r = ((glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRender")) == NULL) || r;
+ r = ((glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedback")) == NULL) || r;
+ r = ((glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)glewGetProcAddress((const GLubyte*)"glGetBooleani_v")) == NULL) || r;
+ r = ((glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocation")) == NULL) || r;
+ r = ((glGetStringi = (PFNGLGETSTRINGIPROC)glewGetProcAddress((const GLubyte*)"glGetStringi")) == NULL) || r;
+ r = ((glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIiv")) == NULL) || r;
+ r = ((glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuiv")) == NULL) || r;
+ r = ((glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVarying")) == NULL) || r;
+ r = ((glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuiv")) == NULL) || r;
+ r = ((glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIiv")) == NULL) || r;
+ r = ((glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuiv")) == NULL) || r;
+ r = ((glIsEnabledi = (PFNGLISENABLEDIPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledi")) == NULL) || r;
+ r = ((glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIiv")) == NULL) || r;
+ r = ((glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuiv")) == NULL) || r;
+ r = ((glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryings")) == NULL) || r;
+ r = ((glUniform1ui = (PFNGLUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui")) == NULL) || r;
+ r = ((glUniform1uiv = (PFNGLUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiv")) == NULL) || r;
+ r = ((glUniform2ui = (PFNGLUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui")) == NULL) || r;
+ r = ((glUniform2uiv = (PFNGLUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiv")) == NULL) || r;
+ r = ((glUniform3ui = (PFNGLUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui")) == NULL) || r;
+ r = ((glUniform3uiv = (PFNGLUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiv")) == NULL) || r;
+ r = ((glUniform4ui = (PFNGLUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui")) == NULL) || r;
+ r = ((glUniform4uiv = (PFNGLUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiv")) == NULL) || r;
+ r = ((glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1i")) == NULL) || r;
+ r = ((glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iv")) == NULL) || r;
+ r = ((glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ui")) == NULL) || r;
+ r = ((glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiv")) == NULL) || r;
+ r = ((glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2i")) == NULL) || r;
+ r = ((glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iv")) == NULL) || r;
+ r = ((glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ui")) == NULL) || r;
+ r = ((glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiv")) == NULL) || r;
+ r = ((glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3i")) == NULL) || r;
+ r = ((glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iv")) == NULL) || r;
+ r = ((glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ui")) == NULL) || r;
+ r = ((glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiv")) == NULL) || r;
+ r = ((glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bv")) == NULL) || r;
+ r = ((glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4i")) == NULL) || r;
+ r = ((glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iv")) == NULL) || r;
+ r = ((glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4sv")) == NULL) || r;
+ r = ((glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubv")) == NULL) || r;
+ r = ((glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ui")) == NULL) || r;
+ r = ((glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiv")) == NULL) || r;
+ r = ((glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usv")) == NULL) || r;
+ r = ((glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_0 */
+
+#ifdef GL_VERSION_3_1
+
+static GLboolean _glewInit_GL_VERSION_3_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_copy_buffer() || r;
+
+ r = ((glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstanced")) == NULL) || r;
+ r = ((glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstanced")) == NULL) || r;
+ r = ((glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartIndex")) == NULL) || r;
+ r = ((glTexBuffer = (PFNGLTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glTexBuffer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_1 */
+
+#ifdef GL_VERSION_3_2
+
+static GLboolean _glewInit_GL_VERSION_3_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_draw_elements_base_vertex() || r;
+ r = _glewInit_GL_ARB_provoking_vertex() || r;
+ r = _glewInit_GL_ARB_sync() || r;
+ r = _glewInit_GL_ARB_texture_multisample() || r;
+
+ r = ((glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture")) == NULL) || r;
+ r = ((glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameteri64v")) == NULL) || r;
+ r = ((glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64i_v")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_2 */
+
+#ifdef GL_VERSION_3_3
+
+static GLboolean _glewInit_GL_VERSION_3_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisor")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static GLboolean _glewInit_GL_VERSION_4_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparatei")) == NULL) || r;
+ r = ((glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationi")) == NULL) || r;
+ r = ((glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparatei")) == NULL) || r;
+ r = ((glBlendFunci = (PFNGLBLENDFUNCIPROC)glewGetProcAddress((const GLubyte*)"glBlendFunci")) == NULL) || r;
+ r = ((glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShading")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_0 */
+
+#ifdef GL_VERSION_4_5
+
+static GLboolean _glewInit_GL_VERSION_4_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatus")) == NULL) || r;
+ r = ((glGetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetnCompressedTexImage")) == NULL) || r;
+ r = ((glGetnTexImage = (PFNGLGETNTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetnTexImage")) == NULL) || r;
+ r = ((glGetnUniformdv = (PFNGLGETNUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformdv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_5 */
+
+#ifdef GL_VERSION_4_6
+
+static GLboolean _glewInit_GL_VERSION_4_6 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectCount")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectCount")) == NULL) || r;
+ r = ((glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)glewGetProcAddress((const GLubyte*)"glSpecializeShader")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_6 */
+
+#ifdef GL_3DFX_tbuffer
+
+static GLboolean _glewInit_GL_3DFX_tbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)glewGetProcAddress((const GLubyte*)"glTbufferMask3DFX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_3DFX_tbuffer */
+
+#ifdef GL_AMD_debug_output
+
+static GLboolean _glewInit_GL_AMD_debug_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallbackAMD")) == NULL) || r;
+ r = ((glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageEnableAMD")) == NULL) || r;
+ r = ((glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsertAMD")) == NULL) || r;
+ r = ((glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLogAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_debug_output */
+
+#ifdef GL_AMD_draw_buffers_blend
+
+static GLboolean _glewInit_GL_AMD_draw_buffers_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationIndexedAMD")) == NULL) || r;
+ r = ((glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateIndexedAMD")) == NULL) || r;
+ r = ((glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncIndexedAMD")) == NULL) || r;
+ r = ((glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateIndexedAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+#ifdef GL_AMD_framebuffer_multisample_advanced
+
+static GLboolean _glewInit_GL_AMD_framebuffer_multisample_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glNamedRenderbufferStorageMultisampleAdvancedAMD = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleAdvancedAMD")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisampleAdvancedAMD = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleAdvancedAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+#ifdef GL_AMD_framebuffer_sample_positions
+
+static GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferSamplePositionsfvAMD = (PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSamplePositionsfvAMD")) == NULL) || r;
+ r = ((glGetFramebufferParameterfvAMD = (PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterfvAMD")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameterfvAMD = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameterfvAMD")) == NULL) || r;
+ r = ((glNamedFramebufferSamplePositionsfvAMD = (PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSamplePositionsfvAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+#ifdef GL_AMD_interleaved_elements
+
+static GLboolean _glewInit_GL_AMD_interleaved_elements ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribParameteriAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_interleaved_elements */
+
+#ifdef GL_AMD_multi_draw_indirect
+
+static GLboolean _glewInit_GL_AMD_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectAMD")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+#ifdef GL_AMD_name_gen_delete
+
+static GLboolean _glewInit_GL_AMD_name_gen_delete ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)glewGetProcAddress((const GLubyte*)"glDeleteNamesAMD")) == NULL) || r;
+ r = ((glGenNamesAMD = (PFNGLGENNAMESAMDPROC)glewGetProcAddress((const GLubyte*)"glGenNamesAMD")) == NULL) || r;
+ r = ((glIsNameAMD = (PFNGLISNAMEAMDPROC)glewGetProcAddress((const GLubyte*)"glIsNameAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_name_gen_delete */
+
+#ifdef GL_AMD_occlusion_query_event
+
+static GLboolean _glewInit_GL_AMD_occlusion_query_event ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)glewGetProcAddress((const GLubyte*)"glQueryObjectParameteruiAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_occlusion_query_event */
+
+#ifdef GL_AMD_performance_monitor
+
+static GLboolean _glewInit_GL_AMD_performance_monitor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)"glBeginPerfMonitorAMD")) == NULL) || r;
+ r = ((glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)"glDeletePerfMonitorsAMD")) == NULL) || r;
+ r = ((glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)"glEndPerfMonitorAMD")) == NULL) || r;
+ r = ((glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)"glGenPerfMonitorsAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterDataAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterInfoAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterStringAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCountersAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorGroupStringAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorGroupsAMD")) == NULL) || r;
+ r = ((glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)"glSelectPerfMonitorCountersAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_performance_monitor */
+
+#ifdef GL_AMD_sample_positions
+
+static GLboolean _glewInit_GL_AMD_sample_positions ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)glewGetProcAddress((const GLubyte*)"glSetMultisamplefvAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_sample_positions */
+
+#ifdef GL_AMD_sparse_texture
+
+static GLboolean _glewInit_GL_AMD_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)"glTexStorageSparseAMD")) == NULL) || r;
+ r = ((glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageSparseAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_sparse_texture */
+
+#ifdef GL_AMD_stencil_operation_extended
+
+static GLboolean _glewInit_GL_AMD_stencil_operation_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)glewGetProcAddress((const GLubyte*)"glStencilOpValueAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+#ifdef GL_AMD_vertex_shader_tessellator
+
+static GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)glewGetProcAddress((const GLubyte*)"glTessellationFactorAMD")) == NULL) || r;
+ r = ((glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)glewGetProcAddress((const GLubyte*)"glTessellationModeAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+#ifdef GL_ANGLE_framebuffer_blit
+
+static GLboolean _glewInit_GL_ANGLE_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferANGLE = (PFNGLBLITFRAMEBUFFERANGLEPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+#ifdef GL_ANGLE_framebuffer_multisample
+
+static GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleANGLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+#ifdef GL_ANGLE_instanced_arrays
+
+static GLboolean _glewInit_GL_ANGLE_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedANGLE = (PFNGLDRAWARRAYSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedANGLE")) == NULL) || r;
+ r = ((glDrawElementsInstancedANGLE = (PFNGLDRAWELEMENTSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedANGLE")) == NULL) || r;
+ r = ((glVertexAttribDivisorANGLE = (PFNGLVERTEXATTRIBDIVISORANGLEPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+#ifdef GL_ANGLE_timer_query
+
+static GLboolean _glewInit_GL_ANGLE_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryANGLE = (PFNGLBEGINQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryANGLE")) == NULL) || r;
+ r = ((glDeleteQueriesANGLE = (PFNGLDELETEQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesANGLE")) == NULL) || r;
+ r = ((glEndQueryANGLE = (PFNGLENDQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glEndQueryANGLE")) == NULL) || r;
+ r = ((glGenQueriesANGLE = (PFNGLGENQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesANGLE")) == NULL) || r;
+ r = ((glGetQueryObjecti64vANGLE = (PFNGLGETQUERYOBJECTI64VANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64vANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectivANGLE = (PFNGLGETQUERYOBJECTIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectui64vANGLE = (PFNGLGETQUERYOBJECTUI64VANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64vANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectuivANGLE = (PFNGLGETQUERYOBJECTUIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivANGLE")) == NULL) || r;
+ r = ((glGetQueryivANGLE = (PFNGLGETQUERYIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivANGLE")) == NULL) || r;
+ r = ((glIsQueryANGLE = (PFNGLISQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glIsQueryANGLE")) == NULL) || r;
+ r = ((glQueryCounterANGLE = (PFNGLQUERYCOUNTERANGLEPROC)glewGetProcAddress((const GLubyte*)"glQueryCounterANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_timer_query */
+
+#ifdef GL_ANGLE_translated_shader_source
+
+static GLboolean _glewInit_GL_ANGLE_translated_shader_source ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTranslatedShaderSourceANGLE = (PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetTranslatedShaderSourceANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+#ifdef GL_APPLE_copy_texture_levels
+
+static GLboolean _glewInit_GL_APPLE_copy_texture_levels ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTextureLevelsAPPLE = (PFNGLCOPYTEXTURELEVELSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureLevelsAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+#ifdef GL_APPLE_element_array
+
+static GLboolean _glewInit_GL_APPLE_element_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayAPPLE")) == NULL) || r;
+ r = ((glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayAPPLE")) == NULL) || r;
+ r = ((glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)glewGetProcAddress((const GLubyte*)"glElementPointerAPPLE")) == NULL) || r;
+ r = ((glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementArrayAPPLE")) == NULL) || r;
+ r = ((glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawRangeElementArrayAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_element_array */
+
+#ifdef GL_APPLE_fence
+
+static GLboolean _glewInit_GL_APPLE_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesAPPLE")) == NULL) || r;
+ r = ((glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceAPPLE")) == NULL) || r;
+ r = ((glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishObjectAPPLE")) == NULL) || r;
+ r = ((glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenFencesAPPLE")) == NULL) || r;
+ r = ((glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsFenceAPPLE")) == NULL) || r;
+ r = ((glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glSetFenceAPPLE")) == NULL) || r;
+ r = ((glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestFenceAPPLE")) == NULL) || r;
+ r = ((glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestObjectAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_fence */
+
+#ifdef GL_APPLE_flush_buffer_range
+
+static GLboolean _glewInit_GL_APPLE_flush_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBufferParameteriAPPLE")) == NULL) || r;
+ r = ((glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+#ifdef GL_APPLE_framebuffer_multisample
+
+static GLboolean _glewInit_GL_APPLE_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleAPPLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleAPPLE")) == NULL) || r;
+ r = ((glResolveMultisampleFramebufferAPPLE = (PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC)glewGetProcAddress((const GLubyte*)"glResolveMultisampleFramebufferAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+#ifdef GL_APPLE_object_purgeable
+
+static GLboolean _glewInit_GL_APPLE_object_purgeable ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterivAPPLE")) == NULL) || r;
+ r = ((glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glObjectPurgeableAPPLE")) == NULL) || r;
+ r = ((glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glObjectUnpurgeableAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_object_purgeable */
+
+#ifdef GL_APPLE_sync
+
+static GLboolean _glewInit_GL_APPLE_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSyncAPPLE = (PFNGLCLIENTWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSyncAPPLE")) == NULL) || r;
+ r = ((glDeleteSyncAPPLE = (PFNGLDELETESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteSyncAPPLE")) == NULL) || r;
+ r = ((glFenceSyncAPPLE = (PFNGLFENCESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFenceSyncAPPLE")) == NULL) || r;
+ r = ((glGetInteger64vAPPLE = (PFNGLGETINTEGER64VAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64vAPPLE")) == NULL) || r;
+ r = ((glGetSyncivAPPLE = (PFNGLGETSYNCIVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetSyncivAPPLE")) == NULL) || r;
+ r = ((glIsSyncAPPLE = (PFNGLISSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsSyncAPPLE")) == NULL) || r;
+ r = ((glWaitSyncAPPLE = (PFNGLWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glWaitSyncAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_sync */
+
+#ifdef GL_APPLE_texture_range
+
+static GLboolean _glewInit_GL_APPLE_texture_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterPointervAPPLE")) == NULL) || r;
+ r = ((glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_texture_range */
+
+#ifdef GL_APPLE_vertex_array_object
+
+static GLboolean _glewInit_GL_APPLE_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArrayAPPLE")) == NULL) || r;
+ r = ((glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysAPPLE")) == NULL) || r;
+ r = ((glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysAPPLE")) == NULL) || r;
+ r = ((glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArrayAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_array_object */
+
+#ifdef GL_APPLE_vertex_array_range
+
+static GLboolean _glewInit_GL_APPLE_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeAPPLE")) == NULL) || r;
+ r = ((glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayParameteriAPPLE")) == NULL) || r;
+ r = ((glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_array_range */
+
+#ifdef GL_APPLE_vertex_program_evaluators
+
+static GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribAPPLE")) == NULL) || r;
+ r = ((glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribAPPLE")) == NULL) || r;
+ r = ((glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsVertexAttribEnabledAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib1dAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib1fAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib2dAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib2fAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+#ifdef GL_ARB_ES2_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES2_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthf = (PFNGLCLEARDEPTHFPROC)glewGetProcAddress((const GLubyte*)"glClearDepthf")) == NULL) || r;
+ r = ((glDepthRangef = (PFNGLDEPTHRANGEFPROC)glewGetProcAddress((const GLubyte*)"glDepthRangef")) == NULL) || r;
+ r = ((glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)glewGetProcAddress((const GLubyte*)"glGetShaderPrecisionFormat")) == NULL) || r;
+ r = ((glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)glewGetProcAddress((const GLubyte*)"glReleaseShaderCompiler")) == NULL) || r;
+ r = ((glShaderBinary = (PFNGLSHADERBINARYPROC)glewGetProcAddress((const GLubyte*)"glShaderBinary")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES2_compatibility */
+
+#ifdef GL_ARB_ES3_1_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES3_1_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrierByRegion")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+#ifdef GL_ARB_ES3_2_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES3_2_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveBoundingBoxARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+#ifdef GL_ARB_base_instance
+
+static GLboolean _glewInit_GL_ARB_base_instance ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedBaseInstance")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseInstance")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexBaseInstance")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_base_instance */
+
+#ifdef GL_ARB_bindless_texture
+
+static GLboolean _glewInit_GL_ARB_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetImageHandleARB")) == NULL) || r;
+ r = ((glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleARB")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleARB")) == NULL) || r;
+ r = ((glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLui64vARB")) == NULL) || r;
+ r = ((glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glIsImageHandleResidentARB")) == NULL) || r;
+ r = ((glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glIsTextureHandleResidentARB")) == NULL) || r;
+ r = ((glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleNonResidentARB")) == NULL) || r;
+ r = ((glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleResidentARB")) == NULL) || r;
+ r = ((glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleNonResidentARB")) == NULL) || r;
+ r = ((glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleResidentARB")) == NULL) || r;
+ r = ((glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64ARB")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vARB")) == NULL) || r;
+ r = ((glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64ARB")) == NULL) || r;
+ r = ((glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vARB")) == NULL) || r;
+ r = ((glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64ARB")) == NULL) || r;
+ r = ((glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64vARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_bindless_texture */
+
+#ifdef GL_ARB_blend_func_extended
+
+static GLboolean _glewInit_GL_ARB_blend_func_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationIndexed")) == NULL) || r;
+ r = ((glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataIndex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
+#ifdef GL_ARB_buffer_storage
+
+static GLboolean _glewInit_GL_ARB_buffer_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorage = (PFNGLBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glBufferStorage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_buffer_storage */
+
+#ifdef GL_ARB_cl_event
+
+static GLboolean _glewInit_GL_ARB_cl_event ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateSyncFromCLeventARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_cl_event */
+
+#ifdef GL_ARB_clear_buffer_object
+
+static GLboolean _glewInit_GL_ARB_clear_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glClearBufferData")) == NULL) || r;
+ r = ((glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glClearBufferSubData")) == NULL) || r;
+ r = ((glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferDataEXT")) == NULL) || r;
+ r = ((glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferSubDataEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clear_buffer_object */
+
+#ifdef GL_ARB_clear_texture
+
+static GLboolean _glewInit_GL_ARB_clear_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glClearTexImage")) == NULL) || r;
+ r = ((glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glClearTexSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clear_texture */
+
+#ifdef GL_ARB_clip_control
+
+static GLboolean _glewInit_GL_ARB_clip_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipControl = (PFNGLCLIPCONTROLPROC)glewGetProcAddress((const GLubyte*)"glClipControl")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clip_control */
+
+#ifdef GL_ARB_color_buffer_float
+
+static GLboolean _glewInit_GL_ARB_color_buffer_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClampColorARB = (PFNGLCLAMPCOLORARBPROC)glewGetProcAddress((const GLubyte*)"glClampColorARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_color_buffer_float */
+
+#ifdef GL_ARB_compute_shader
+
+static GLboolean _glewInit_GL_ARB_compute_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)glewGetProcAddress((const GLubyte*)"glDispatchCompute")) == NULL) || r;
+ r = ((glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDispatchComputeIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_compute_shader */
+
+#ifdef GL_ARB_compute_variable_group_size
+
+static GLboolean _glewInit_GL_ARB_compute_variable_group_size ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)glewGetProcAddress((const GLubyte*)"glDispatchComputeGroupSizeARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+#ifdef GL_ARB_copy_buffer
+
+static GLboolean _glewInit_GL_ARB_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyBufferSubData")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_copy_buffer */
+
+#ifdef GL_ARB_copy_image
+
+static GLboolean _glewInit_GL_ARB_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubData")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_copy_image */
+
+#ifdef GL_ARB_debug_output
+
+static GLboolean _glewInit_GL_ARB_debug_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallbackARB")) == NULL) || r;
+ r = ((glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageControlARB")) == NULL) || r;
+ r = ((glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsertARB")) == NULL) || r;
+ r = ((glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLogARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_debug_output */
+
+#ifdef GL_ARB_direct_state_access
+
+static GLboolean _glewInit_GL_ARB_direct_state_access ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)glewGetProcAddress((const GLubyte*)"glBindTextureUnit")) == NULL) || r;
+ r = ((glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBlitNamedFramebuffer")) == NULL) || r;
+ r = ((glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)"glCheckNamedFramebufferStatus")) == NULL) || r;
+ r = ((glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferData")) == NULL) || r;
+ r = ((glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferSubData")) == NULL) || r;
+ r = ((glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferfi")) == NULL) || r;
+ r = ((glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferfv")) == NULL) || r;
+ r = ((glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferiv")) == NULL) || r;
+ r = ((glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferuiv")) == NULL) || r;
+ r = ((glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage1D")) == NULL) || r;
+ r = ((glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage2D")) == NULL) || r;
+ r = ((glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage3D")) == NULL) || r;
+ r = ((glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyNamedBufferSubData")) == NULL) || r;
+ r = ((glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage1D")) == NULL) || r;
+ r = ((glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage2D")) == NULL) || r;
+ r = ((glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage3D")) == NULL) || r;
+ r = ((glCreateBuffers = (PFNGLCREATEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateBuffers")) == NULL) || r;
+ r = ((glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateFramebuffers")) == NULL) || r;
+ r = ((glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glCreateProgramPipelines")) == NULL) || r;
+ r = ((glCreateQueries = (PFNGLCREATEQUERIESPROC)glewGetProcAddress((const GLubyte*)"glCreateQueries")) == NULL) || r;
+ r = ((glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateRenderbuffers")) == NULL) || r;
+ r = ((glCreateSamplers = (PFNGLCREATESAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glCreateSamplers")) == NULL) || r;
+ r = ((glCreateTextures = (PFNGLCREATETEXTURESPROC)glewGetProcAddress((const GLubyte*)"glCreateTextures")) == NULL) || r;
+ r = ((glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glCreateTransformFeedbacks")) == NULL) || r;
+ r = ((glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glCreateVertexArrays")) == NULL) || r;
+ r = ((glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayAttrib")) == NULL) || r;
+ r = ((glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayAttrib")) == NULL) || r;
+ r = ((glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedNamedBufferRange")) == NULL) || r;
+ r = ((glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)glewGetProcAddress((const GLubyte*)"glGenerateTextureMipmap")) == NULL) || r;
+ r = ((glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureImage")) == NULL) || r;
+ r = ((glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameteri64v")) == NULL) || r;
+ r = ((glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferPointerv")) == NULL) || r;
+ r = ((glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferSubData")) == NULL) || r;
+ r = ((glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferAttachmentParameteriv")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedRenderbufferParameteriv")) == NULL) || r;
+ r = ((glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjecti64v")) == NULL) || r;
+ r = ((glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectiv")) == NULL) || r;
+ r = ((glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectui64v")) == NULL) || r;
+ r = ((glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectuiv")) == NULL) || r;
+ r = ((glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetTextureImage")) == NULL) || r;
+ r = ((glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterfv")) == NULL) || r;
+ r = ((glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameteriv")) == NULL) || r;
+ r = ((glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIiv")) == NULL) || r;
+ r = ((glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIuiv")) == NULL) || r;
+ r = ((glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterfv")) == NULL) || r;
+ r = ((glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameteriv")) == NULL) || r;
+ r = ((glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbacki64_v")) == NULL) || r;
+ r = ((glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbacki_v")) == NULL) || r;
+ r = ((glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackiv")) == NULL) || r;
+ r = ((glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIndexed64iv")) == NULL) || r;
+ r = ((glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIndexediv")) == NULL) || r;
+ r = ((glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayiv")) == NULL) || r;
+ r = ((glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateNamedFramebufferData")) == NULL) || r;
+ r = ((glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateNamedFramebufferSubData")) == NULL) || r;
+ r = ((glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBuffer")) == NULL) || r;
+ r = ((glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferRange")) == NULL) || r;
+ r = ((glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferData")) == NULL) || r;
+ r = ((glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorage")) == NULL) || r;
+ r = ((glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferSubData")) == NULL) || r;
+ r = ((glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferDrawBuffer")) == NULL) || r;
+ r = ((glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferDrawBuffers")) == NULL) || r;
+ r = ((glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferParameteri")) == NULL) || r;
+ r = ((glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferReadBuffer")) == NULL) || r;
+ r = ((glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferRenderbuffer")) == NULL) || r;
+ r = ((glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture")) == NULL) || r;
+ r = ((glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureLayer")) == NULL) || r;
+ r = ((glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorage")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisample")) == NULL) || r;
+ r = ((glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)glewGetProcAddress((const GLubyte*)"glTextureBuffer")) == NULL) || r;
+ r = ((glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferRange")) == NULL) || r;
+ r = ((glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIiv")) == NULL) || r;
+ r = ((glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIuiv")) == NULL) || r;
+ r = ((glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterf")) == NULL) || r;
+ r = ((glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfv")) == NULL) || r;
+ r = ((glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteri")) == NULL) || r;
+ r = ((glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteriv")) == NULL) || r;
+ r = ((glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage1D")) == NULL) || r;
+ r = ((glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2D")) == NULL) || r;
+ r = ((glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DMultisample")) == NULL) || r;
+ r = ((glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3D")) == NULL) || r;
+ r = ((glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DMultisample")) == NULL) || r;
+ r = ((glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage1D")) == NULL) || r;
+ r = ((glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage2D")) == NULL) || r;
+ r = ((glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage3D")) == NULL) || r;
+ r = ((glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackBufferBase")) == NULL) || r;
+ r = ((glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackBufferRange")) == NULL) || r;
+ r = ((glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glUnmapNamedBuffer")) == NULL) || r;
+ r = ((glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribBinding")) == NULL) || r;
+ r = ((glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribFormat")) == NULL) || r;
+ r = ((glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribIFormat")) == NULL) || r;
+ r = ((glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribLFormat")) == NULL) || r;
+ r = ((glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayBindingDivisor")) == NULL) || r;
+ r = ((glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayElementBuffer")) == NULL) || r;
+ r = ((glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBuffer")) == NULL) || r;
+ r = ((glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBuffers")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_direct_state_access */
+
+#ifdef GL_ARB_draw_buffers
+
+static GLboolean _glewInit_GL_ARB_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_buffers */
+
+#ifdef GL_ARB_draw_buffers_blend
+
+static GLboolean _glewInit_GL_ARB_draw_buffers_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiARB")) == NULL) || r;
+ r = ((glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiARB")) == NULL) || r;
+ r = ((glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiARB")) == NULL) || r;
+ r = ((glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+#ifdef GL_ARB_draw_elements_base_vertex
+
+static GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsBaseVertex")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertex")) == NULL) || r;
+ r = ((glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsBaseVertex")) == NULL) || r;
+ r = ((glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsBaseVertex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+#ifdef GL_ARB_draw_indirect
+
+static GLboolean _glewInit_GL_ARB_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysIndirect")) == NULL) || r;
+ r = ((glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_indirect */
+
+#ifdef GL_ARB_framebuffer_no_attachments
+
+static GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glFramebufferParameteri")) == NULL) || r;
+ r = ((glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameterivEXT")) == NULL) || r;
+ r = ((glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+#ifdef GL_ARB_framebuffer_object
+
+static GLboolean _glewInit_GL_ARB_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindFramebuffer")) == NULL) || r;
+ r = ((glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbuffer")) == NULL) || r;
+ r = ((glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebuffer")) == NULL) || r;
+ r = ((glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatus")) == NULL) || r;
+ r = ((glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffers")) == NULL) || r;
+ r = ((glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffers")) == NULL) || r;
+ r = ((glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbuffer")) == NULL) || r;
+ r = ((glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1D")) == NULL) || r;
+ r = ((glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2D")) == NULL) || r;
+ r = ((glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3D")) == NULL) || r;
+ r = ((glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayer")) == NULL) || r;
+ r = ((glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffers")) == NULL) || r;
+ r = ((glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffers")) == NULL) || r;
+ r = ((glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmap")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameteriv")) == NULL) || r;
+ r = ((glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameteriv")) == NULL) || r;
+ r = ((glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsFramebuffer")) == NULL) || r;
+ r = ((glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbuffer")) == NULL) || r;
+ r = ((glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorage")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisample")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_framebuffer_object */
+
+#ifdef GL_ARB_geometry_shader4
+
+static GLboolean _glewInit_GL_ARB_geometry_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureARB")) == NULL) || r;
+ r = ((glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceARB")) == NULL) || r;
+ r = ((glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerARB")) == NULL) || r;
+ r = ((glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_geometry_shader4 */
+
+#ifdef GL_ARB_get_program_binary
+
+static GLboolean _glewInit_GL_ARB_get_program_binary ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)"glGetProgramBinary")) == NULL) || r;
+ r = ((glProgramBinary = (PFNGLPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)"glProgramBinary")) == NULL) || r;
+ r = ((glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteri")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_get_program_binary */
+
+#ifdef GL_ARB_get_texture_sub_image
+
+static GLboolean _glewInit_GL_ARB_get_texture_sub_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureSubImage")) == NULL) || r;
+ r = ((glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+#ifdef GL_ARB_gl_spirv
+
+static GLboolean _glewInit_GL_ARB_gl_spirv ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)glewGetProcAddress((const GLubyte*)"glSpecializeShaderARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gl_spirv */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+static GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformdv = (PFNGLGETUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformdv")) == NULL) || r;
+ r = ((glUniform1d = (PFNGLUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)"glUniform1d")) == NULL) || r;
+ r = ((glUniform1dv = (PFNGLUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)"glUniform1dv")) == NULL) || r;
+ r = ((glUniform2d = (PFNGLUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)"glUniform2d")) == NULL) || r;
+ r = ((glUniform2dv = (PFNGLUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)"glUniform2dv")) == NULL) || r;
+ r = ((glUniform3d = (PFNGLUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)"glUniform3d")) == NULL) || r;
+ r = ((glUniform3dv = (PFNGLUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)"glUniform3dv")) == NULL) || r;
+ r = ((glUniform4d = (PFNGLUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)"glUniform4d")) == NULL) || r;
+ r = ((glUniform4dv = (PFNGLUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)"glUniform4dv")) == NULL) || r;
+ r = ((glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2dv")) == NULL) || r;
+ r = ((glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3dv")) == NULL) || r;
+ r = ((glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4dv")) == NULL) || r;
+ r = ((glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3dv")) == NULL) || r;
+ r = ((glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2dv")) == NULL) || r;
+ r = ((glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4dv")) == NULL) || r;
+ r = ((glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4dv")) == NULL) || r;
+ r = ((glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2dv")) == NULL) || r;
+ r = ((glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3dv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+#ifdef GL_ARB_gpu_shader_int64
+
+static GLboolean _glewInit_GL_ARB_gpu_shader_int64 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformi64vARB")) == NULL) || r;
+ r = ((glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vARB")) == NULL) || r;
+ r = ((glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformi64vARB")) == NULL) || r;
+ r = ((glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformui64vARB")) == NULL) || r;
+ r = ((glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64ARB")) == NULL) || r;
+ r = ((glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64vARB")) == NULL) || r;
+ r = ((glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64ARB")) == NULL) || r;
+ r = ((glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64vARB")) == NULL) || r;
+ r = ((glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64ARB")) == NULL) || r;
+ r = ((glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64vARB")) == NULL) || r;
+ r = ((glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64ARB")) == NULL) || r;
+ r = ((glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64vARB")) == NULL) || r;
+ r = ((glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64vARB")) == NULL) || r;
+ r = ((glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64ARB")) == NULL) || r;
+ r = ((glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64vARB")) == NULL) || r;
+ r = ((glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64ARB")) == NULL) || r;
+ r = ((glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64vARB")) == NULL) || r;
+ r = ((glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64ARB")) == NULL) || r;
+ r = ((glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64vARB")) == NULL) || r;
+ r = ((glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64ARB")) == NULL) || r;
+ r = ((glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64vARB")) == NULL) || r;
+ r = ((glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64ARB")) == NULL) || r;
+ r = ((glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64vARB")) == NULL) || r;
+ r = ((glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64ARB")) == NULL) || r;
+ r = ((glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64vARB")) == NULL) || r;
+ r = ((glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64ARB")) == NULL) || r;
+ r = ((glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64vARB")) == NULL) || r;
+ r = ((glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64ARB")) == NULL) || r;
+ r = ((glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64vARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+#ifdef GL_ARB_imaging
+
+static GLboolean _glewInit_GL_ARB_imaging ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r;
+ r = ((glColorSubTable = (PFNGLCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorSubTable")) == NULL) || r;
+ r = ((glColorTable = (PFNGLCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorTable")) == NULL) || r;
+ r = ((glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfv")) == NULL) || r;
+ r = ((glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameteriv")) == NULL) || r;
+ r = ((glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1D")) == NULL) || r;
+ r = ((glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2D")) == NULL) || r;
+ r = ((glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterf")) == NULL) || r;
+ r = ((glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfv")) == NULL) || r;
+ r = ((glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteri")) == NULL) || r;
+ r = ((glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriv")) == NULL) || r;
+ r = ((glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTable")) == NULL) || r;
+ r = ((glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTable")) == NULL) || r;
+ r = ((glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1D")) == NULL) || r;
+ r = ((glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2D")) == NULL) || r;
+ r = ((glGetColorTable = (PFNGLGETCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glGetColorTable")) == NULL) || r;
+ r = ((glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfv")) == NULL) || r;
+ r = ((glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameteriv")) == NULL) || r;
+ r = ((glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilter")) == NULL) || r;
+ r = ((glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfv")) == NULL) || r;
+ r = ((glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameteriv")) == NULL) || r;
+ r = ((glGetHistogram = (PFNGLGETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glGetHistogram")) == NULL) || r;
+ r = ((glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfv")) == NULL) || r;
+ r = ((glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameteriv")) == NULL) || r;
+ r = ((glGetMinmax = (PFNGLGETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glGetMinmax")) == NULL) || r;
+ r = ((glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfv")) == NULL) || r;
+ r = ((glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameteriv")) == NULL) || r;
+ r = ((glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilter")) == NULL) || r;
+ r = ((glHistogram = (PFNGLHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glHistogram")) == NULL) || r;
+ r = ((glMinmax = (PFNGLMINMAXPROC)glewGetProcAddress((const GLubyte*)"glMinmax")) == NULL) || r;
+ r = ((glResetHistogram = (PFNGLRESETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glResetHistogram")) == NULL) || r;
+ r = ((glResetMinmax = (PFNGLRESETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glResetMinmax")) == NULL) || r;
+ r = ((glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_imaging */
+
+#ifdef GL_ARB_indirect_parameters
+
+static GLboolean _glewInit_GL_ARB_indirect_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectCountARB")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectCountARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_indirect_parameters */
+
+#ifdef GL_ARB_instanced_arrays
+
+static GLboolean _glewInit_GL_ARB_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedARB")) == NULL) || r;
+ r = ((glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedARB")) == NULL) || r;
+ r = ((glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_instanced_arrays */
+
+#ifdef GL_ARB_internalformat_query
+
+static GLboolean _glewInit_GL_ARB_internalformat_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformativ")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_internalformat_query */
+
+#ifdef GL_ARB_internalformat_query2
+
+static GLboolean _glewInit_GL_ARB_internalformat_query2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformati64v")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_internalformat_query2 */
+
+#ifdef GL_ARB_invalidate_subdata
+
+static GLboolean _glewInit_GL_ARB_invalidate_subdata ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateBufferData")) == NULL) || r;
+ r = ((glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateBufferSubData")) == NULL) || r;
+ r = ((glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glInvalidateFramebuffer")) == NULL) || r;
+ r = ((glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glInvalidateSubFramebuffer")) == NULL) || r;
+ r = ((glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glInvalidateTexImage")) == NULL) || r;
+ r = ((glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glInvalidateTexSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_invalidate_subdata */
+
+#ifdef GL_ARB_map_buffer_range
+
+static GLboolean _glewInit_GL_ARB_map_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRange")) == NULL) || r;
+ r = ((glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glMapBufferRange")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_map_buffer_range */
+
+#ifdef GL_ARB_matrix_palette
+
+static GLboolean _glewInit_GL_ARB_matrix_palette ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)glewGetProcAddress((const GLubyte*)"glCurrentPaletteMatrixARB")) == NULL) || r;
+ r = ((glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexPointerARB")) == NULL) || r;
+ r = ((glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexubvARB")) == NULL) || r;
+ r = ((glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexuivARB")) == NULL) || r;
+ r = ((glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexusvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_matrix_palette */
+
+#ifdef GL_ARB_multi_bind
+
+static GLboolean _glewInit_GL_ARB_multi_bind ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)glewGetProcAddress((const GLubyte*)"glBindBuffersBase")) == NULL) || r;
+ r = ((glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)glewGetProcAddress((const GLubyte*)"glBindBuffersRange")) == NULL) || r;
+ r = ((glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)glewGetProcAddress((const GLubyte*)"glBindImageTextures")) == NULL) || r;
+ r = ((glBindSamplers = (PFNGLBINDSAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glBindSamplers")) == NULL) || r;
+ r = ((glBindTextures = (PFNGLBINDTEXTURESPROC)glewGetProcAddress((const GLubyte*)"glBindTextures")) == NULL) || r;
+ r = ((glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glBindVertexBuffers")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multi_bind */
+
+#ifdef GL_ARB_multi_draw_indirect
+
+static GLboolean _glewInit_GL_ARB_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirect")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+#ifdef GL_ARB_multisample
+
+static GLboolean _glewInit_GL_ARB_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverageARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multisample */
+
+#ifdef GL_ARB_multitexture
+
+static GLboolean _glewInit_GL_ARB_multitexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glActiveTextureARB")) == NULL) || r;
+ r = ((glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTextureARB")) == NULL) || r;
+ r = ((glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dARB")) == NULL) || r;
+ r = ((glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fARB")) == NULL) || r;
+ r = ((glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iARB")) == NULL) || r;
+ r = ((glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sARB")) == NULL) || r;
+ r = ((glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1svARB")) == NULL) || r;
+ r = ((glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dARB")) == NULL) || r;
+ r = ((glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fARB")) == NULL) || r;
+ r = ((glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iARB")) == NULL) || r;
+ r = ((glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sARB")) == NULL) || r;
+ r = ((glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2svARB")) == NULL) || r;
+ r = ((glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dARB")) == NULL) || r;
+ r = ((glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fARB")) == NULL) || r;
+ r = ((glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iARB")) == NULL) || r;
+ r = ((glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sARB")) == NULL) || r;
+ r = ((glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3svARB")) == NULL) || r;
+ r = ((glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dARB")) == NULL) || r;
+ r = ((glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fARB")) == NULL) || r;
+ r = ((glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iARB")) == NULL) || r;
+ r = ((glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sARB")) == NULL) || r;
+ r = ((glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4svARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multitexture */
+
+#ifdef GL_ARB_occlusion_query
+
+static GLboolean _glewInit_GL_ARB_occlusion_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryARB")) == NULL) || r;
+ r = ((glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesARB")) == NULL) || r;
+ r = ((glEndQueryARB = (PFNGLENDQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glEndQueryARB")) == NULL) || r;
+ r = ((glGenQueriesARB = (PFNGLGENQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesARB")) == NULL) || r;
+ r = ((glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivARB")) == NULL) || r;
+ r = ((glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivARB")) == NULL) || r;
+ r = ((glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivARB")) == NULL) || r;
+ r = ((glIsQueryARB = (PFNGLISQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glIsQueryARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_occlusion_query */
+
+#ifdef GL_ARB_parallel_shader_compile
+
+static GLboolean _glewInit_GL_ARB_parallel_shader_compile ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)glewGetProcAddress((const GLubyte*)"glMaxShaderCompilerThreadsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+#ifdef GL_ARB_point_parameters
+
+static GLboolean _glewInit_GL_ARB_point_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfARB")) == NULL) || r;
+ r = ((glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_point_parameters */
+
+#ifdef GL_ARB_polygon_offset_clamp
+
+static GLboolean _glewInit_GL_ARB_polygon_offset_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetClamp")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+#ifdef GL_ARB_program_interface_query
+
+static GLboolean _glewInit_GL_ARB_program_interface_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramInterfaceiv")) == NULL) || r;
+ r = ((glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceIndex")) == NULL) || r;
+ r = ((glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocation")) == NULL) || r;
+ r = ((glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocationIndex")) == NULL) || r;
+ r = ((glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceName")) == NULL) || r;
+ r = ((glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_program_interface_query */
+
+#ifdef GL_ARB_provoking_vertex
+
+static GLboolean _glewInit_GL_ARB_provoking_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)glewGetProcAddress((const GLubyte*)"glProvokingVertex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_provoking_vertex */
+
+#ifdef GL_ARB_robustness
+
+static GLboolean _glewInit_GL_ARB_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatusARB")) == NULL) || r;
+ r = ((glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnColorTableARB")) == NULL) || r;
+ r = ((glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnCompressedTexImageARB")) == NULL) || r;
+ r = ((glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)glewGetProcAddress((const GLubyte*)"glGetnConvolutionFilterARB")) == NULL) || r;
+ r = ((glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glGetnHistogramARB")) == NULL) || r;
+ r = ((glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapdvARB")) == NULL) || r;
+ r = ((glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapfvARB")) == NULL) || r;
+ r = ((glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapivARB")) == NULL) || r;
+ r = ((glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMinmaxARB")) == NULL) || r;
+ r = ((glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapfvARB")) == NULL) || r;
+ r = ((glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapuivARB")) == NULL) || r;
+ r = ((glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapusvARB")) == NULL) || r;
+ r = ((glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPolygonStippleARB")) == NULL) || r;
+ r = ((glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)glewGetProcAddress((const GLubyte*)"glGetnSeparableFilterARB")) == NULL) || r;
+ r = ((glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnTexImageARB")) == NULL) || r;
+ r = ((glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformdvARB")) == NULL) || r;
+ r = ((glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfvARB")) == NULL) || r;
+ r = ((glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformivARB")) == NULL) || r;
+ r = ((glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformuivARB")) == NULL) || r;
+ r = ((glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)glewGetProcAddress((const GLubyte*)"glReadnPixelsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_robustness */
+
+#ifdef GL_ARB_sample_locations
+
+static GLboolean _glewInit_GL_ARB_sample_locations ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)glewGetProcAddress((const GLubyte*)"glEvaluateDepthValuesARB")) == NULL) || r;
+ r = ((glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSampleLocationsfvARB")) == NULL) || r;
+ r = ((glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSampleLocationsfvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sample_locations */
+
+#ifdef GL_ARB_sample_shading
+
+static GLboolean _glewInit_GL_ARB_sample_shading ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShadingARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sample_shading */
+
+#ifdef GL_ARB_sampler_objects
+
+static GLboolean _glewInit_GL_ARB_sampler_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindSampler = (PFNGLBINDSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glBindSampler")) == NULL) || r;
+ r = ((glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteSamplers")) == NULL) || r;
+ r = ((glGenSamplers = (PFNGLGENSAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glGenSamplers")) == NULL) || r;
+ r = ((glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIiv")) == NULL) || r;
+ r = ((glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuiv")) == NULL) || r;
+ r = ((glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterfv")) == NULL) || r;
+ r = ((glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameteriv")) == NULL) || r;
+ r = ((glIsSampler = (PFNGLISSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glIsSampler")) == NULL) || r;
+ r = ((glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIiv")) == NULL) || r;
+ r = ((glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuiv")) == NULL) || r;
+ r = ((glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterf")) == NULL) || r;
+ r = ((glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterfv")) == NULL) || r;
+ r = ((glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteri")) == NULL) || r;
+ r = ((glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteriv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sampler_objects */
+
+#ifdef GL_ARB_separate_shader_objects
+
+static GLboolean _glewInit_GL_ARB_separate_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glActiveShaderProgram")) == NULL) || r;
+ r = ((glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glBindProgramPipeline")) == NULL) || r;
+ r = ((glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderProgramv")) == NULL) || r;
+ r = ((glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramPipelines")) == NULL) || r;
+ r = ((glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glGenProgramPipelines")) == NULL) || r;
+ r = ((glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetProgramPipelineInfoLog")) == NULL) || r;
+ r = ((glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramPipelineiv")) == NULL) || r;
+ r = ((glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glIsProgramPipeline")) == NULL) || r;
+ r = ((glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1d")) == NULL) || r;
+ r = ((glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1dv")) == NULL) || r;
+ r = ((glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1f")) == NULL) || r;
+ r = ((glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fv")) == NULL) || r;
+ r = ((glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i")) == NULL) || r;
+ r = ((glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1iv")) == NULL) || r;
+ r = ((glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui")) == NULL) || r;
+ r = ((glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uiv")) == NULL) || r;
+ r = ((glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2d")) == NULL) || r;
+ r = ((glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2dv")) == NULL) || r;
+ r = ((glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2f")) == NULL) || r;
+ r = ((glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fv")) == NULL) || r;
+ r = ((glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i")) == NULL) || r;
+ r = ((glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2iv")) == NULL) || r;
+ r = ((glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui")) == NULL) || r;
+ r = ((glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uiv")) == NULL) || r;
+ r = ((glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3d")) == NULL) || r;
+ r = ((glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3dv")) == NULL) || r;
+ r = ((glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3f")) == NULL) || r;
+ r = ((glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fv")) == NULL) || r;
+ r = ((glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i")) == NULL) || r;
+ r = ((glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3iv")) == NULL) || r;
+ r = ((glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui")) == NULL) || r;
+ r = ((glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uiv")) == NULL) || r;
+ r = ((glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4d")) == NULL) || r;
+ r = ((glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4dv")) == NULL) || r;
+ r = ((glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4f")) == NULL) || r;
+ r = ((glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fv")) == NULL) || r;
+ r = ((glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i")) == NULL) || r;
+ r = ((glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4iv")) == NULL) || r;
+ r = ((glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui")) == NULL) || r;
+ r = ((glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uiv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3fv")) == NULL) || r;
+ r = ((glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)glewGetProcAddress((const GLubyte*)"glUseProgramStages")) == NULL) || r;
+ r = ((glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glValidateProgramPipeline")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_separate_shader_objects */
+
+#ifdef GL_ARB_shader_atomic_counters
+
+static GLboolean _glewInit_GL_ARB_shader_atomic_counters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAtomicCounterBufferiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+#ifdef GL_ARB_shader_image_load_store
+
+static GLboolean _glewInit_GL_ARB_shader_image_load_store ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glBindImageTexture")) == NULL) || r;
+ r = ((glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrier")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_image_load_store */
+
+#ifdef GL_ARB_shader_objects
+
+static GLboolean _glewInit_GL_ARB_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glAttachObjectARB")) == NULL) || r;
+ r = ((glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderARB")) == NULL) || r;
+ r = ((glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateProgramObjectARB")) == NULL) || r;
+ r = ((glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderObjectARB")) == NULL) || r;
+ r = ((glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteObjectARB")) == NULL) || r;
+ r = ((glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDetachObjectARB")) == NULL) || r;
+ r = ((glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformARB")) == NULL) || r;
+ r = ((glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedObjectsARB")) == NULL) || r;
+ r = ((glGetHandleARB = (PFNGLGETHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetHandleARB")) == NULL) || r;
+ r = ((glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)glewGetProcAddress((const GLubyte*)"glGetInfoLogARB")) == NULL) || r;
+ r = ((glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterfvARB")) == NULL) || r;
+ r = ((glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterivARB")) == NULL) || r;
+ r = ((glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSourceARB")) == NULL) || r;
+ r = ((glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocationARB")) == NULL) || r;
+ r = ((glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfvARB")) == NULL) || r;
+ r = ((glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformivARB")) == NULL) || r;
+ r = ((glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glLinkProgramARB")) == NULL) || r;
+ r = ((glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glShaderSourceARB")) == NULL) || r;
+ r = ((glUniform1fARB = (PFNGLUNIFORM1FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fARB")) == NULL) || r;
+ r = ((glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fvARB")) == NULL) || r;
+ r = ((glUniform1iARB = (PFNGLUNIFORM1IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1iARB")) == NULL) || r;
+ r = ((glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ivARB")) == NULL) || r;
+ r = ((glUniform2fARB = (PFNGLUNIFORM2FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fARB")) == NULL) || r;
+ r = ((glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fvARB")) == NULL) || r;
+ r = ((glUniform2iARB = (PFNGLUNIFORM2IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2iARB")) == NULL) || r;
+ r = ((glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ivARB")) == NULL) || r;
+ r = ((glUniform3fARB = (PFNGLUNIFORM3FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fARB")) == NULL) || r;
+ r = ((glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fvARB")) == NULL) || r;
+ r = ((glUniform3iARB = (PFNGLUNIFORM3IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3iARB")) == NULL) || r;
+ r = ((glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ivARB")) == NULL) || r;
+ r = ((glUniform4fARB = (PFNGLUNIFORM4FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fARB")) == NULL) || r;
+ r = ((glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fvARB")) == NULL) || r;
+ r = ((glUniform4iARB = (PFNGLUNIFORM4IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4iARB")) == NULL) || r;
+ r = ((glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ivARB")) == NULL) || r;
+ r = ((glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fvARB")) == NULL) || r;
+ r = ((glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fvARB")) == NULL) || r;
+ r = ((glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fvARB")) == NULL) || r;
+ r = ((glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glUseProgramObjectARB")) == NULL) || r;
+ r = ((glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glValidateProgramARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_objects */
+
+#ifdef GL_ARB_shader_storage_buffer_object
+
+static GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)"glShaderStorageBlockBinding")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+#ifdef GL_ARB_shader_subroutine
+
+static GLboolean _glewInit_GL_ARB_shader_subroutine ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineName")) == NULL) || r;
+ r = ((glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformName")) == NULL) || r;
+ r = ((glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformiv")) == NULL) || r;
+ r = ((glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStageiv")) == NULL) || r;
+ r = ((glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineIndex")) == NULL) || r;
+ r = ((glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineUniformLocation")) == NULL) || r;
+ r = ((glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformSubroutineuiv")) == NULL) || r;
+ r = ((glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)glewGetProcAddress((const GLubyte*)"glUniformSubroutinesuiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
+#ifdef GL_ARB_shading_language_include
+
+static GLboolean _glewInit_GL_ARB_shading_language_include ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderIncludeARB")) == NULL) || r;
+ r = ((glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteNamedStringARB")) == NULL) || r;
+ r = ((glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringARB")) == NULL) || r;
+ r = ((glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringivARB")) == NULL) || r;
+ r = ((glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glIsNamedStringARB")) == NULL) || r;
+ r = ((glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glNamedStringARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shading_language_include */
+
+#ifdef GL_ARB_sparse_buffer
+
+static GLboolean _glewInit_GL_ARB_sparse_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)"glBufferPageCommitmentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sparse_buffer */
+
+#ifdef GL_ARB_sparse_texture
+
+static GLboolean _glewInit_GL_ARB_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sparse_texture */
+
+#ifdef GL_ARB_sync
+
+static GLboolean _glewInit_GL_ARB_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSync")) == NULL) || r;
+ r = ((glDeleteSync = (PFNGLDELETESYNCPROC)glewGetProcAddress((const GLubyte*)"glDeleteSync")) == NULL) || r;
+ r = ((glFenceSync = (PFNGLFENCESYNCPROC)glewGetProcAddress((const GLubyte*)"glFenceSync")) == NULL) || r;
+ r = ((glGetInteger64v = (PFNGLGETINTEGER64VPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64v")) == NULL) || r;
+ r = ((glGetSynciv = (PFNGLGETSYNCIVPROC)glewGetProcAddress((const GLubyte*)"glGetSynciv")) == NULL) || r;
+ r = ((glIsSync = (PFNGLISSYNCPROC)glewGetProcAddress((const GLubyte*)"glIsSync")) == NULL) || r;
+ r = ((glWaitSync = (PFNGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"glWaitSync")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sync */
+
+#ifdef GL_ARB_tessellation_shader
+
+static GLboolean _glewInit_GL_ARB_tessellation_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPatchParameterfv")) == NULL) || r;
+ r = ((glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPatchParameteri")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
+#ifdef GL_ARB_texture_barrier
+
+static GLboolean _glewInit_GL_ARB_texture_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)glewGetProcAddress((const GLubyte*)"glTextureBarrier")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_barrier */
+
+#ifdef GL_ARB_texture_buffer_object
+
+static GLboolean _glewInit_GL_ARB_texture_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferARB = (PFNGLTEXBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glTexBufferARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_buffer_object */
+
+#ifdef GL_ARB_texture_buffer_range
+
+static GLboolean _glewInit_GL_ARB_texture_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTexBufferRange")) == NULL) || r;
+ r = ((glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferRangeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_buffer_range */
+
+#ifdef GL_ARB_texture_compression
+
+static GLboolean _glewInit_GL_ARB_texture_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1DARB")) == NULL) || r;
+ r = ((glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2DARB")) == NULL) || r;
+ r = ((glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DARB")) == NULL) || r;
+ r = ((glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImageARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_compression */
+
+#ifdef GL_ARB_texture_multisample
+
+static GLboolean _glewInit_GL_ARB_texture_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)glewGetProcAddress((const GLubyte*)"glGetMultisamplefv")) == NULL) || r;
+ r = ((glSampleMaski = (PFNGLSAMPLEMASKIPROC)glewGetProcAddress((const GLubyte*)"glSampleMaski")) == NULL) || r;
+ r = ((glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexImage2DMultisample")) == NULL) || r;
+ r = ((glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DMultisample")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_multisample */
+
+#ifdef GL_ARB_texture_storage
+
+static GLboolean _glewInit_GL_ARB_texture_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage1D")) == NULL) || r;
+ r = ((glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2D")) == NULL) || r;
+ r = ((glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_storage */
+
+#ifdef GL_ARB_texture_storage_multisample
+
+static GLboolean _glewInit_GL_ARB_texture_storage_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2DMultisample")) == NULL) || r;
+ r = ((glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DMultisample")) == NULL) || r;
+ r = ((glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+#ifdef GL_ARB_texture_view
+
+static GLboolean _glewInit_GL_ARB_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureView = (PFNGLTEXTUREVIEWPROC)glewGetProcAddress((const GLubyte*)"glTextureView")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_view */
+
+#ifdef GL_ARB_timer_query
+
+static GLboolean _glewInit_GL_ARB_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64v")) == NULL) || r;
+ r = ((glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64v")) == NULL) || r;
+ r = ((glQueryCounter = (PFNGLQUERYCOUNTERPROC)glewGetProcAddress((const GLubyte*)"glQueryCounter")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static GLboolean _glewInit_GL_ARB_transform_feedback2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBindTransformFeedback")) == NULL) || r;
+ r = ((glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glDeleteTransformFeedbacks")) == NULL) || r;
+ r = ((glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedback")) == NULL) || r;
+ r = ((glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glGenTransformFeedbacks")) == NULL) || r;
+ r = ((glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glIsTransformFeedback")) == NULL) || r;
+ r = ((glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glPauseTransformFeedback")) == NULL) || r;
+ r = ((glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glResumeTransformFeedback")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static GLboolean _glewInit_GL_ARB_transform_feedback3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryIndexed")) == NULL) || r;
+ r = ((glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackStream")) == NULL) || r;
+ r = ((glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glEndQueryIndexed")) == NULL) || r;
+ r = ((glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryIndexediv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
+#ifdef GL_ARB_transform_feedback_instanced
+
+static GLboolean _glewInit_GL_ARB_transform_feedback_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackInstanced")) == NULL) || r;
+ r = ((glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackStreamInstanced")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+#ifdef GL_ARB_transpose_matrix
+
+static GLboolean _glewInit_GL_ARB_transpose_matrix ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixdARB")) == NULL) || r;
+ r = ((glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixfARB")) == NULL) || r;
+ r = ((glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixdARB")) == NULL) || r;
+ r = ((glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixfARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transpose_matrix */
+
+#ifdef GL_ARB_uniform_buffer_object
+
+static GLboolean _glewInit_GL_ARB_uniform_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBase")) == NULL) || r;
+ r = ((glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRange")) == NULL) || r;
+ r = ((glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformBlockName")) == NULL) || r;
+ r = ((glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformBlockiv")) == NULL) || r;
+ r = ((glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformName")) == NULL) || r;
+ r = ((glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformsiv")) == NULL) || r;
+ r = ((glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)glewGetProcAddress((const GLubyte*)"glGetIntegeri_v")) == NULL) || r;
+ r = ((glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetUniformBlockIndex")) == NULL) || r;
+ r = ((glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)glewGetProcAddress((const GLubyte*)"glGetUniformIndices")) == NULL) || r;
+ r = ((glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)"glUniformBlockBinding")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+#ifdef GL_ARB_vertex_array_object
+
+static GLboolean _glewInit_GL_ARB_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArray")) == NULL) || r;
+ r = ((glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArrays")) == NULL) || r;
+ r = ((glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArrays")) == NULL) || r;
+ r = ((glIsVertexArray = (PFNGLISVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArray")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_array_object */
+
+#ifdef GL_ARB_vertex_attrib_64bit
+
+static GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLdv")) == NULL) || r;
+ r = ((glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1d")) == NULL) || r;
+ r = ((glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dv")) == NULL) || r;
+ r = ((glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2d")) == NULL) || r;
+ r = ((glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dv")) == NULL) || r;
+ r = ((glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3d")) == NULL) || r;
+ r = ((glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dv")) == NULL) || r;
+ r = ((glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4d")) == NULL) || r;
+ r = ((glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dv")) == NULL) || r;
+ r = ((glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+#ifdef GL_ARB_vertex_attrib_binding
+
+static GLboolean _glewInit_GL_ARB_vertex_attrib_binding ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindVertexBuffer")) == NULL) || r;
+ r = ((glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayBindVertexBufferEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribBindingEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribIFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribLFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBindingDivisorEXT")) == NULL) || r;
+ r = ((glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribBinding")) == NULL) || r;
+ r = ((glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribFormat")) == NULL) || r;
+ r = ((glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIFormat")) == NULL) || r;
+ r = ((glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLFormat")) == NULL) || r;
+ r = ((glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexBindingDivisor")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+#ifdef GL_ARB_vertex_blend
+
+static GLboolean _glewInit_GL_ARB_vertex_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendARB")) == NULL) || r;
+ r = ((glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glWeightPointerARB")) == NULL) || r;
+ r = ((glWeightbvARB = (PFNGLWEIGHTBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightbvARB")) == NULL) || r;
+ r = ((glWeightdvARB = (PFNGLWEIGHTDVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightdvARB")) == NULL) || r;
+ r = ((glWeightfvARB = (PFNGLWEIGHTFVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightfvARB")) == NULL) || r;
+ r = ((glWeightivARB = (PFNGLWEIGHTIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightivARB")) == NULL) || r;
+ r = ((glWeightsvARB = (PFNGLWEIGHTSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightsvARB")) == NULL) || r;
+ r = ((glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightubvARB")) == NULL) || r;
+ r = ((glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightuivARB")) == NULL) || r;
+ r = ((glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightusvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_blend */
+
+#ifdef GL_ARB_vertex_buffer_object
+
+static GLboolean _glewInit_GL_ARB_vertex_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBufferARB = (PFNGLBINDBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glBindBufferARB")) == NULL) || r;
+ r = ((glBufferDataARB = (PFNGLBUFFERDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferDataARB")) == NULL) || r;
+ r = ((glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferSubDataARB")) == NULL) || r;
+ r = ((glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffersARB")) == NULL) || r;
+ r = ((glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glGenBuffersARB")) == NULL) || r;
+ r = ((glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterivARB")) == NULL) || r;
+ r = ((glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointervARB")) == NULL) || r;
+ r = ((glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubDataARB")) == NULL) || r;
+ r = ((glIsBufferARB = (PFNGLISBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glIsBufferARB")) == NULL) || r;
+ r = ((glMapBufferARB = (PFNGLMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glMapBufferARB")) == NULL) || r;
+ r = ((glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glUnmapBufferARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+#ifdef GL_ARB_vertex_program
+
+static GLboolean _glewInit_GL_ARB_vertex_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glBindProgramARB")) == NULL) || r;
+ r = ((glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsARB")) == NULL) || r;
+ r = ((glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArrayARB")) == NULL) || r;
+ r = ((glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArrayARB")) == NULL) || r;
+ r = ((glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsARB")) == NULL) || r;
+ r = ((glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterdvARB")) == NULL) || r;
+ r = ((glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterfvARB")) == NULL) || r;
+ r = ((glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterdvARB")) == NULL) || r;
+ r = ((glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterfvARB")) == NULL) || r;
+ r = ((glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringARB")) == NULL) || r;
+ r = ((glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivARB")) == NULL) || r;
+ r = ((glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervARB")) == NULL) || r;
+ r = ((glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvARB")) == NULL) || r;
+ r = ((glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvARB")) == NULL) || r;
+ r = ((glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivARB")) == NULL) || r;
+ r = ((glIsProgramARB = (PFNGLISPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glIsProgramARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dvARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fvARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dvARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fvARB")) == NULL) || r;
+ r = ((glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glProgramStringARB")) == NULL) || r;
+ r = ((glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dARB")) == NULL) || r;
+ r = ((glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvARB")) == NULL) || r;
+ r = ((glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fARB")) == NULL) || r;
+ r = ((glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvARB")) == NULL) || r;
+ r = ((glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sARB")) == NULL) || r;
+ r = ((glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svARB")) == NULL) || r;
+ r = ((glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dARB")) == NULL) || r;
+ r = ((glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvARB")) == NULL) || r;
+ r = ((glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fARB")) == NULL) || r;
+ r = ((glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvARB")) == NULL) || r;
+ r = ((glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sARB")) == NULL) || r;
+ r = ((glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svARB")) == NULL) || r;
+ r = ((glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dARB")) == NULL) || r;
+ r = ((glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvARB")) == NULL) || r;
+ r = ((glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fARB")) == NULL) || r;
+ r = ((glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvARB")) == NULL) || r;
+ r = ((glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sARB")) == NULL) || r;
+ r = ((glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svARB")) == NULL) || r;
+ r = ((glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NbvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NivARB")) == NULL) || r;
+ r = ((glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NsvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubARB")) == NULL) || r;
+ r = ((glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NuivARB")) == NULL) || r;
+ r = ((glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NusvARB")) == NULL) || r;
+ r = ((glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bvARB")) == NULL) || r;
+ r = ((glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dARB")) == NULL) || r;
+ r = ((glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvARB")) == NULL) || r;
+ r = ((glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fARB")) == NULL) || r;
+ r = ((glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvARB")) == NULL) || r;
+ r = ((glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ivARB")) == NULL) || r;
+ r = ((glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sARB")) == NULL) || r;
+ r = ((glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svARB")) == NULL) || r;
+ r = ((glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvARB")) == NULL) || r;
+ r = ((glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uivARB")) == NULL) || r;
+ r = ((glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usvARB")) == NULL) || r;
+ r = ((glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_program */
+
+#ifdef GL_ARB_vertex_shader
+
+static GLboolean _glewInit_GL_ARB_vertex_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocationARB")) == NULL) || r;
+ r = ((glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttribARB")) == NULL) || r;
+ r = ((glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocationARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_shader */
+
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorP3ui = (PFNGLCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glColorP3ui")) == NULL) || r;
+ r = ((glColorP3uiv = (PFNGLCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP3uiv")) == NULL) || r;
+ r = ((glColorP4ui = (PFNGLCOLORP4UIPROC)glewGetProcAddress((const GLubyte*)"glColorP4ui")) == NULL) || r;
+ r = ((glColorP4uiv = (PFNGLCOLORP4UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP4uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1ui")) == NULL) || r;
+ r = ((glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2ui")) == NULL) || r;
+ r = ((glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3ui")) == NULL) || r;
+ r = ((glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4ui")) == NULL) || r;
+ r = ((glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4uiv")) == NULL) || r;
+ r = ((glNormalP3ui = (PFNGLNORMALP3UIPROC)glewGetProcAddress((const GLubyte*)"glNormalP3ui")) == NULL) || r;
+ r = ((glNormalP3uiv = (PFNGLNORMALP3UIVPROC)glewGetProcAddress((const GLubyte*)"glNormalP3uiv")) == NULL) || r;
+ r = ((glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3ui")) == NULL) || r;
+ r = ((glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3uiv")) == NULL) || r;
+ r = ((glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1ui")) == NULL) || r;
+ r = ((glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1uiv")) == NULL) || r;
+ r = ((glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2ui")) == NULL) || r;
+ r = ((glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2uiv")) == NULL) || r;
+ r = ((glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3ui")) == NULL) || r;
+ r = ((glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3uiv")) == NULL) || r;
+ r = ((glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4ui")) == NULL) || r;
+ r = ((glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4uiv")) == NULL) || r;
+ r = ((glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1ui")) == NULL) || r;
+ r = ((glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1uiv")) == NULL) || r;
+ r = ((glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2ui")) == NULL) || r;
+ r = ((glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2uiv")) == NULL) || r;
+ r = ((glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3ui")) == NULL) || r;
+ r = ((glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3uiv")) == NULL) || r;
+ r = ((glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4ui")) == NULL) || r;
+ r = ((glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4uiv")) == NULL) || r;
+ r = ((glVertexP2ui = (PFNGLVERTEXP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP2ui")) == NULL) || r;
+ r = ((glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP2uiv")) == NULL) || r;
+ r = ((glVertexP3ui = (PFNGLVERTEXP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP3ui")) == NULL) || r;
+ r = ((glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP3uiv")) == NULL) || r;
+ r = ((glVertexP4ui = (PFNGLVERTEXP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP4ui")) == NULL) || r;
+ r = ((glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP4uiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+#ifdef GL_ARB_viewport_array
+
+static GLboolean _glewInit_GL_ARB_viewport_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeArrayv")) == NULL) || r;
+ r = ((glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeIndexed")) == NULL) || r;
+ r = ((glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)glewGetProcAddress((const GLubyte*)"glGetDoublei_v")) == NULL) || r;
+ r = ((glGetFloati_v = (PFNGLGETFLOATI_VPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_v")) == NULL) || r;
+ r = ((glScissorArrayv = (PFNGLSCISSORARRAYVPROC)glewGetProcAddress((const GLubyte*)"glScissorArrayv")) == NULL) || r;
+ r = ((glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexed")) == NULL) || r;
+ r = ((glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedv")) == NULL) || r;
+ r = ((glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)glewGetProcAddress((const GLubyte*)"glViewportArrayv")) == NULL) || r;
+ r = ((glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedf")) == NULL) || r;
+ r = ((glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_viewport_array */
+
+#ifdef GL_ARB_window_pos
+
+static GLboolean _glewInit_GL_ARB_window_pos ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dARB")) == NULL) || r;
+ r = ((glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvARB")) == NULL) || r;
+ r = ((glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fARB")) == NULL) || r;
+ r = ((glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvARB")) == NULL) || r;
+ r = ((glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iARB")) == NULL) || r;
+ r = ((glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivARB")) == NULL) || r;
+ r = ((glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sARB")) == NULL) || r;
+ r = ((glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svARB")) == NULL) || r;
+ r = ((glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dARB")) == NULL) || r;
+ r = ((glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvARB")) == NULL) || r;
+ r = ((glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fARB")) == NULL) || r;
+ r = ((glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvARB")) == NULL) || r;
+ r = ((glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iARB")) == NULL) || r;
+ r = ((glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivARB")) == NULL) || r;
+ r = ((glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sARB")) == NULL) || r;
+ r = ((glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_window_pos */
+
+#ifdef GL_ATI_draw_buffers
+
+static GLboolean _glewInit_GL_ATI_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_draw_buffers */
+
+#ifdef GL_ATI_element_array
+
+static GLboolean _glewInit_GL_ATI_element_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayATI")) == NULL) || r;
+ r = ((glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayATI")) == NULL) || r;
+ r = ((glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)glewGetProcAddress((const GLubyte*)"glElementPointerATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_element_array */
+
+#ifdef GL_ATI_envmap_bumpmap
+
+static GLboolean _glewInit_GL_ATI_envmap_bumpmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterfvATI")) == NULL) || r;
+ r = ((glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterivATI")) == NULL) || r;
+ r = ((glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterfvATI")) == NULL) || r;
+ r = ((glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterivATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+#ifdef GL_ATI_fragment_shader
+
+static GLboolean _glewInit_GL_ATI_fragment_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp1ATI")) == NULL) || r;
+ r = ((glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp2ATI")) == NULL) || r;
+ r = ((glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp3ATI")) == NULL) || r;
+ r = ((glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBeginFragmentShaderATI")) == NULL) || r;
+ r = ((glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBindFragmentShaderATI")) == NULL) || r;
+ r = ((glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp1ATI")) == NULL) || r;
+ r = ((glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp2ATI")) == NULL) || r;
+ r = ((glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp3ATI")) == NULL) || r;
+ r = ((glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glDeleteFragmentShaderATI")) == NULL) || r;
+ r = ((glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glEndFragmentShaderATI")) == NULL) || r;
+ r = ((glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)glewGetProcAddress((const GLubyte*)"glGenFragmentShadersATI")) == NULL) || r;
+ r = ((glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)glewGetProcAddress((const GLubyte*)"glPassTexCoordATI")) == NULL) || r;
+ r = ((glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)glewGetProcAddress((const GLubyte*)"glSampleMapATI")) == NULL) || r;
+ r = ((glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)glewGetProcAddress((const GLubyte*)"glSetFragmentShaderConstantATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_fragment_shader */
+
+#ifdef GL_ATI_map_object_buffer
+
+static GLboolean _glewInit_GL_ATI_map_object_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glMapObjectBufferATI")) == NULL) || r;
+ r = ((glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUnmapObjectBufferATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_map_object_buffer */
+
+#ifdef GL_ATI_pn_triangles
+
+static GLboolean _glewInit_GL_ATI_pn_triangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesfATI")) == NULL) || r;
+ r = ((glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesiATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_pn_triangles */
+
+#ifdef GL_ATI_separate_stencil
+
+static GLboolean _glewInit_GL_ATI_separate_stencil ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparateATI")) == NULL) || r;
+ r = ((glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparateATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_separate_stencil */
+
+#ifdef GL_ATI_vertex_array_object
+
+static GLboolean _glewInit_GL_ATI_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glArrayObjectATI")) == NULL) || r;
+ r = ((glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glFreeObjectBufferATI")) == NULL) || r;
+ r = ((glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectivATI")) == NULL) || r;
+ r = ((glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferfvATI")) == NULL) || r;
+ r = ((glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferivATI")) == NULL) || r;
+ r = ((glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectivATI")) == NULL) || r;
+ r = ((glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glIsObjectBufferATI")) == NULL) || r;
+ r = ((glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glNewObjectBufferATI")) == NULL) || r;
+ r = ((glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUpdateObjectBufferATI")) == NULL) || r;
+ r = ((glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVariantArrayObjectATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_array_object */
+
+#ifdef GL_ATI_vertex_attrib_array_object
+
+static GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectivATI")) == NULL) || r;
+ r = ((glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribArrayObjectATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+#ifdef GL_ATI_vertex_streams
+
+static GLboolean _glewInit_GL_ATI_vertex_streams ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)glewGetProcAddress((const GLubyte*)"glClientActiveVertexStreamATI")) == NULL) || r;
+ r = ((glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bATI")) == NULL) || r;
+ r = ((glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bvATI")) == NULL) || r;
+ r = ((glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dATI")) == NULL) || r;
+ r = ((glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dvATI")) == NULL) || r;
+ r = ((glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fATI")) == NULL) || r;
+ r = ((glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fvATI")) == NULL) || r;
+ r = ((glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3iATI")) == NULL) || r;
+ r = ((glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3ivATI")) == NULL) || r;
+ r = ((glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3sATI")) == NULL) || r;
+ r = ((glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3svATI")) == NULL) || r;
+ r = ((glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnvfATI")) == NULL) || r;
+ r = ((glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnviATI")) == NULL) || r;
+ r = ((glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1dATI")) == NULL) || r;
+ r = ((glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1dvATI")) == NULL) || r;
+ r = ((glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1fATI")) == NULL) || r;
+ r = ((glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1fvATI")) == NULL) || r;
+ r = ((glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1iATI")) == NULL) || r;
+ r = ((glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1ivATI")) == NULL) || r;
+ r = ((glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1sATI")) == NULL) || r;
+ r = ((glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1svATI")) == NULL) || r;
+ r = ((glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dATI")) == NULL) || r;
+ r = ((glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dvATI")) == NULL) || r;
+ r = ((glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fATI")) == NULL) || r;
+ r = ((glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fvATI")) == NULL) || r;
+ r = ((glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2iATI")) == NULL) || r;
+ r = ((glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2ivATI")) == NULL) || r;
+ r = ((glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2sATI")) == NULL) || r;
+ r = ((glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2svATI")) == NULL) || r;
+ r = ((glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dATI")) == NULL) || r;
+ r = ((glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dvATI")) == NULL) || r;
+ r = ((glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fATI")) == NULL) || r;
+ r = ((glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fvATI")) == NULL) || r;
+ r = ((glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3iATI")) == NULL) || r;
+ r = ((glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3ivATI")) == NULL) || r;
+ r = ((glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3sATI")) == NULL) || r;
+ r = ((glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3svATI")) == NULL) || r;
+ r = ((glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dATI")) == NULL) || r;
+ r = ((glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dvATI")) == NULL) || r;
+ r = ((glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fATI")) == NULL) || r;
+ r = ((glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fvATI")) == NULL) || r;
+ r = ((glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4iATI")) == NULL) || r;
+ r = ((glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4ivATI")) == NULL) || r;
+ r = ((glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4sATI")) == NULL) || r;
+ r = ((glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4svATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_streams */
+
+#ifdef GL_EXT_EGL_image_storage
+
+static GLboolean _glewInit_GL_EXT_EGL_image_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEGLImageTargetTexStorageEXT = (PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTexStorageEXT")) == NULL) || r;
+ r = ((glEGLImageTargetTextureStorageEXT = (PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTextureStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_EGL_image_storage */
+
+#ifdef GL_EXT_base_instance
+
+static GLboolean _glewInit_GL_EXT_base_instance ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedBaseInstanceEXT = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedBaseInstanceEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseInstanceEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexBaseInstanceEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_base_instance */
+
+#ifdef GL_EXT_bindable_uniform
+
+static GLboolean _glewInit_GL_EXT_bindable_uniform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformBufferSizeEXT")) == NULL) || r;
+ r = ((glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformOffsetEXT")) == NULL) || r;
+ r = ((glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUniformBufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_bindable_uniform */
+
+#ifdef GL_EXT_blend_color
+
+static GLboolean _glewInit_GL_EXT_blend_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)glewGetProcAddress((const GLubyte*)"glBlendColorEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_color */
+
+#ifdef GL_EXT_blend_equation_separate
+
+static GLboolean _glewInit_GL_EXT_blend_equation_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_equation_separate */
+
+#ifdef GL_EXT_blend_func_extended
+
+static GLboolean _glewInit_GL_EXT_blend_func_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationIndexedEXT = (PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationIndexedEXT")) == NULL) || r;
+ r = ((glGetFragDataIndexEXT = (PFNGLGETFRAGDATAINDEXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataIndexEXT")) == NULL) || r;
+ r = ((glGetProgramResourceLocationIndexEXT = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocationIndexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_func_extended */
+
+#ifdef GL_EXT_blend_func_separate
+
+static GLboolean _glewInit_GL_EXT_blend_func_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_func_separate */
+
+#ifdef GL_EXT_blend_minmax
+
+static GLboolean _glewInit_GL_EXT_blend_minmax ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_minmax */
+
+#ifdef GL_EXT_buffer_storage
+
+static GLboolean _glewInit_GL_EXT_buffer_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_buffer_storage */
+
+#ifdef GL_EXT_clear_texture
+
+static GLboolean _glewInit_GL_EXT_clear_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearTexImageEXT = (PFNGLCLEARTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glClearTexImageEXT")) == NULL) || r;
+ r = ((glClearTexSubImageEXT = (PFNGLCLEARTEXSUBIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glClearTexSubImageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_clear_texture */
+
+#ifdef GL_EXT_clip_control
+
+static GLboolean _glewInit_GL_EXT_clip_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipControlEXT = (PFNGLCLIPCONTROLEXTPROC)glewGetProcAddress((const GLubyte*)"glClipControlEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_clip_control */
+
+#ifdef GL_EXT_color_subtable
+
+static GLboolean _glewInit_GL_EXT_color_subtable ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorSubTableEXT")) == NULL) || r;
+ r = ((glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTableEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_color_subtable */
+
+#ifdef GL_EXT_compiled_vertex_array
+
+static GLboolean _glewInit_GL_EXT_compiled_vertex_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glLockArraysEXT")) == NULL) || r;
+ r = ((glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glUnlockArraysEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+#ifdef GL_EXT_convolution
+
+static GLboolean _glewInit_GL_EXT_convolution ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1DEXT")) == NULL) || r;
+ r = ((glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2DEXT")) == NULL) || r;
+ r = ((glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfEXT")) == NULL) || r;
+ r = ((glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfvEXT")) == NULL) || r;
+ r = ((glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriEXT")) == NULL) || r;
+ r = ((glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterivEXT")) == NULL) || r;
+ r = ((glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1DEXT")) == NULL) || r;
+ r = ((glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2DEXT")) == NULL) || r;
+ r = ((glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilterEXT")) == NULL) || r;
+ r = ((glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfvEXT")) == NULL) || r;
+ r = ((glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterivEXT")) == NULL) || r;
+ r = ((glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilterEXT")) == NULL) || r;
+ r = ((glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_convolution */
+
+#ifdef GL_EXT_coordinate_frame
+
+static GLboolean _glewInit_GL_EXT_coordinate_frame ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glBinormalPointerEXT")) == NULL) || r;
+ r = ((glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTangentPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_coordinate_frame */
+
+#ifdef GL_EXT_copy_image
+
+static GLboolean _glewInit_GL_EXT_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataEXT = (PFNGLCOPYIMAGESUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_copy_image */
+
+#ifdef GL_EXT_copy_texture
+
+static GLboolean _glewInit_GL_EXT_copy_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage1DEXT")) == NULL) || r;
+ r = ((glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage2DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_copy_texture */
+
+#ifdef GL_EXT_cull_vertex
+
+static GLboolean _glewInit_GL_EXT_cull_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterdvEXT")) == NULL) || r;
+ r = ((glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_cull_vertex */
+
+#ifdef GL_EXT_debug_label
+
+static GLboolean _glewInit_GL_EXT_debug_label ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)glewGetProcAddress((const GLubyte*)"glGetObjectLabelEXT")) == NULL) || r;
+ r = ((glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)"glLabelObjectEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_debug_label */
+
+#ifdef GL_EXT_debug_marker
+
+static GLboolean _glewInit_GL_EXT_debug_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glInsertEventMarkerEXT")) == NULL) || r;
+ r = ((glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glPopGroupMarkerEXT")) == NULL) || r;
+ r = ((glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glPushGroupMarkerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_debug_marker */
+
+#ifdef GL_EXT_depth_bounds_test
+
+static GLboolean _glewInit_GL_EXT_depth_bounds_test ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_depth_bounds_test */
+
+#ifdef GL_EXT_direct_state_access
+
+static GLboolean _glewInit_GL_EXT_direct_state_access ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindMultiTextureEXT")) == NULL) || r;
+ r = ((glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckNamedFramebufferStatusEXT")) == NULL) || r;
+ r = ((glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glClientAttribDefaultEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage3DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage1DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage2DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage3DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage1DEXT")) == NULL) || r;
+ r = ((glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage2DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableClientStateIndexedEXT")) == NULL) || r;
+ r = ((glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableClientStateiEXT")) == NULL) || r;
+ r = ((glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayAttribEXT")) == NULL) || r;
+ r = ((glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayEXT")) == NULL) || r;
+ r = ((glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableClientStateIndexedEXT")) == NULL) || r;
+ r = ((glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableClientStateiEXT")) == NULL) || r;
+ r = ((glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayAttribEXT")) == NULL) || r;
+ r = ((glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayEXT")) == NULL) || r;
+ r = ((glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedNamedBufferRangeEXT")) == NULL) || r;
+ r = ((glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBufferEXT")) == NULL) || r;
+ r = ((glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBuffersEXT")) == NULL) || r;
+ r = ((glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferReadBufferEXT")) == NULL) || r;
+ r = ((glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMultiTexMipmapEXT")) == NULL) || r;
+ r = ((glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateTextureMipmapEXT")) == NULL) || r;
+ r = ((glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedMultiTexImageEXT")) == NULL) || r;
+ r = ((glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureImageEXT")) == NULL) || r;
+ r = ((glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetDoubleIndexedvEXT")) == NULL) || r;
+ r = ((glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetDoublei_vEXT")) == NULL) || r;
+ r = ((glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFloatIndexedvEXT")) == NULL) || r;
+ r = ((glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_vEXT")) == NULL) || r;
+ r = ((glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterivEXT")) == NULL) || r;
+ r = ((glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvivEXT")) == NULL) || r;
+ r = ((glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGendvEXT")) == NULL) || r;
+ r = ((glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenivEXT")) == NULL) || r;
+ r = ((glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexImageEXT")) == NULL) || r;
+ r = ((glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIuivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferPointervEXT")) == NULL) || r;
+ r = ((glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferSubDataEXT")) == NULL) || r;
+ r = ((glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferAttachmentParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIuivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterdvEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterfvEXT")) == NULL) || r;
+ r = ((glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramStringEXT")) == NULL) || r;
+ r = ((glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramivEXT")) == NULL) || r;
+ r = ((glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedRenderbufferParameterivEXT")) == NULL) || r;
+ r = ((glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointerIndexedvEXT")) == NULL) || r;
+ r = ((glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointeri_vEXT")) == NULL) || r;
+ r = ((glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureImageEXT")) == NULL) || r;
+ r = ((glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterfvEXT")) == NULL) || r;
+ r = ((glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIuivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterfvEXT")) == NULL) || r;
+ r = ((glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterivEXT")) == NULL) || r;
+ r = ((glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIntegeri_vEXT")) == NULL) || r;
+ r = ((glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIntegervEXT")) == NULL) || r;
+ r = ((glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayPointeri_vEXT")) == NULL) || r;
+ r = ((glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayPointervEXT")) == NULL) || r;
+ r = ((glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferEXT")) == NULL) || r;
+ r = ((glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferRangeEXT")) == NULL) || r;
+ r = ((glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixFrustumEXT")) == NULL) || r;
+ r = ((glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadIdentityEXT")) == NULL) || r;
+ r = ((glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposedEXT")) == NULL) || r;
+ r = ((glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposefEXT")) == NULL) || r;
+ r = ((glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoaddEXT")) == NULL) || r;
+ r = ((glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadfEXT")) == NULL) || r;
+ r = ((glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposedEXT")) == NULL) || r;
+ r = ((glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposefEXT")) == NULL) || r;
+ r = ((glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultdEXT")) == NULL) || r;
+ r = ((glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultfEXT")) == NULL) || r;
+ r = ((glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixOrthoEXT")) == NULL) || r;
+ r = ((glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPopEXT")) == NULL) || r;
+ r = ((glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPushEXT")) == NULL) || r;
+ r = ((glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatedEXT")) == NULL) || r;
+ r = ((glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatefEXT")) == NULL) || r;
+ r = ((glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScaledEXT")) == NULL) || r;
+ r = ((glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScalefEXT")) == NULL) || r;
+ r = ((glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatedEXT")) == NULL) || r;
+ r = ((glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatefEXT")) == NULL) || r;
+ r = ((glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexBufferEXT")) == NULL) || r;
+ r = ((glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordPointerEXT")) == NULL) || r;
+ r = ((glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfEXT")) == NULL) || r;
+ r = ((glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfvEXT")) == NULL) || r;
+ r = ((glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnviEXT")) == NULL) || r;
+ r = ((glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvivEXT")) == NULL) || r;
+ r = ((glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendEXT")) == NULL) || r;
+ r = ((glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendvEXT")) == NULL) || r;
+ r = ((glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfEXT")) == NULL) || r;
+ r = ((glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfvEXT")) == NULL) || r;
+ r = ((glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGeniEXT")) == NULL) || r;
+ r = ((glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenivEXT")) == NULL) || r;
+ r = ((glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage3DEXT")) == NULL) || r;
+ r = ((glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIivEXT")) == NULL) || r;
+ r = ((glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIuivEXT")) == NULL) || r;
+ r = ((glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfEXT")) == NULL) || r;
+ r = ((glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfvEXT")) == NULL) || r;
+ r = ((glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameteriEXT")) == NULL) || r;
+ r = ((glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterivEXT")) == NULL) || r;
+ r = ((glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexRenderbufferEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferDataEXT")) == NULL) || r;
+ r = ((glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferSubDataEXT")) == NULL) || r;
+ r = ((glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedCopyBufferSubDataEXT")) == NULL) || r;
+ r = ((glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferRenderbufferEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture1DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture2DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture3DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureFaceEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureLayerEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4iEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4ivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uiEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameters4fvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4ivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4uivEXT")) == NULL) || r;
+ r = ((glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramStringEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleCoverageEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleEXT")) == NULL) || r;
+ r = ((glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fEXT")) == NULL) || r;
+ r = ((glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fvEXT")) == NULL) || r;
+ r = ((glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1iEXT")) == NULL) || r;
+ r = ((glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ivEXT")) == NULL) || r;
+ r = ((glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uiEXT")) == NULL) || r;
+ r = ((glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uivEXT")) == NULL) || r;
+ r = ((glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fEXT")) == NULL) || r;
+ r = ((glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fvEXT")) == NULL) || r;
+ r = ((glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2iEXT")) == NULL) || r;
+ r = ((glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ivEXT")) == NULL) || r;
+ r = ((glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uiEXT")) == NULL) || r;
+ r = ((glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uivEXT")) == NULL) || r;
+ r = ((glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fEXT")) == NULL) || r;
+ r = ((glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fvEXT")) == NULL) || r;
+ r = ((glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3iEXT")) == NULL) || r;
+ r = ((glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ivEXT")) == NULL) || r;
+ r = ((glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uiEXT")) == NULL) || r;
+ r = ((glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uivEXT")) == NULL) || r;
+ r = ((glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fEXT")) == NULL) || r;
+ r = ((glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fvEXT")) == NULL) || r;
+ r = ((glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4iEXT")) == NULL) || r;
+ r = ((glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ivEXT")) == NULL) || r;
+ r = ((glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uiEXT")) == NULL) || r;
+ r = ((glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uivEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3fvEXT")) == NULL) || r;
+ r = ((glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glPushClientAttribDefaultEXT")) == NULL) || r;
+ r = ((glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferEXT")) == NULL) || r;
+ r = ((glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage1DEXT")) == NULL) || r;
+ r = ((glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DEXT")) == NULL) || r;
+ r = ((glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DEXT")) == NULL) || r;
+ r = ((glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIivEXT")) == NULL) || r;
+ r = ((glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIuivEXT")) == NULL) || r;
+ r = ((glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfEXT")) == NULL) || r;
+ r = ((glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfvEXT")) == NULL) || r;
+ r = ((glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteriEXT")) == NULL) || r;
+ r = ((glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterivEXT")) == NULL) || r;
+ r = ((glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureRenderbufferEXT")) == NULL) || r;
+ r = ((glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUnmapNamedBufferEXT")) == NULL) || r;
+ r = ((glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayColorOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayEdgeFlagOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayFogCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayIndexOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayMultiTexCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayNormalOffsetEXT")) == NULL) || r;
+ r = ((glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArraySecondaryColorOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayTexCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribDivisorEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribIOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexOffsetEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_direct_state_access */
+
+#ifdef GL_EXT_discard_framebuffer
+
+static GLboolean _glewInit_GL_EXT_discard_framebuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDiscardFramebufferEXT = (PFNGLDISCARDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glDiscardFramebufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_discard_framebuffer */
+
+#ifdef GL_EXT_disjoint_timer_query
+
+static GLboolean _glewInit_GL_EXT_disjoint_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryEXT = (PFNGLBEGINQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryEXT")) == NULL) || r;
+ r = ((glDeleteQueriesEXT = (PFNGLDELETEQUERIESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesEXT")) == NULL) || r;
+ r = ((glEndQueryEXT = (PFNGLENDQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glEndQueryEXT")) == NULL) || r;
+ r = ((glGenQueriesEXT = (PFNGLGENQUERIESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesEXT")) == NULL) || r;
+ r = ((glGetInteger64vEXT = (PFNGLGETINTEGER64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64vEXT")) == NULL) || r;
+ r = ((glGetQueryObjectivEXT = (PFNGLGETQUERYOBJECTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivEXT")) == NULL) || r;
+ r = ((glGetQueryObjectuivEXT = (PFNGLGETQUERYOBJECTUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivEXT")) == NULL) || r;
+ r = ((glGetQueryivEXT = (PFNGLGETQUERYIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivEXT")) == NULL) || r;
+ r = ((glIsQueryEXT = (PFNGLISQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glIsQueryEXT")) == NULL) || r;
+ r = ((glQueryCounterEXT = (PFNGLQUERYCOUNTEREXTPROC)glewGetProcAddress((const GLubyte*)"glQueryCounterEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+#ifdef GL_EXT_draw_buffers
+
+static GLboolean _glewInit_GL_EXT_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersEXT = (PFNGLDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers */
+
+#ifdef GL_EXT_draw_buffers2
+
+static GLboolean _glewInit_GL_EXT_draw_buffers2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glColorMaskIndexedEXT")) == NULL) || r;
+ r = ((glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableIndexedEXT")) == NULL) || r;
+ r = ((glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableIndexedEXT")) == NULL) || r;
+ r = ((glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetBooleanIndexedvEXT")) == NULL) || r;
+ r = ((glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerIndexedvEXT")) == NULL) || r;
+ r = ((glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledIndexedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers2 */
+
+#ifdef GL_EXT_draw_buffers_indexed
+
+static GLboolean _glewInit_GL_EXT_draw_buffers_indexed ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiEXT = (PFNGLBLENDEQUATIONSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiEXT")) == NULL) || r;
+ r = ((glBlendEquationiEXT = (PFNGLBLENDEQUATIONIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiEXT")) == NULL) || r;
+ r = ((glBlendFuncSeparateiEXT = (PFNGLBLENDFUNCSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiEXT")) == NULL) || r;
+ r = ((glBlendFunciEXT = (PFNGLBLENDFUNCIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciEXT")) == NULL) || r;
+ r = ((glColorMaskiEXT = (PFNGLCOLORMASKIEXTPROC)glewGetProcAddress((const GLubyte*)"glColorMaskiEXT")) == NULL) || r;
+ r = ((glDisableiEXT = (PFNGLDISABLEIEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableiEXT")) == NULL) || r;
+ r = ((glEnableiEXT = (PFNGLENABLEIEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableiEXT")) == NULL) || r;
+ r = ((glIsEnablediEXT = (PFNGLISENABLEDIEXTPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+#ifdef GL_EXT_draw_elements_base_vertex
+
+static GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementsBaseVertexEXT = (PFNGLDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsBaseVertexEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexEXT")) == NULL) || r;
+ r = ((glDrawRangeElementsBaseVertexEXT = (PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsBaseVertexEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsBaseVertexEXT = (PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsBaseVertexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+#ifdef GL_EXT_draw_instanced
+
+static GLboolean _glewInit_GL_EXT_draw_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_instanced */
+
+#ifdef GL_EXT_draw_range_elements
+
+static GLboolean _glewInit_GL_EXT_draw_range_elements ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_range_elements */
+
+#ifdef GL_EXT_draw_transform_feedback
+
+static GLboolean _glewInit_GL_EXT_draw_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTransformFeedbackEXT = (PFNGLDRAWTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackEXT")) == NULL) || r;
+ r = ((glDrawTransformFeedbackInstancedEXT = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackInstancedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+#ifdef GL_EXT_external_buffer
+
+static GLboolean _glewInit_GL_EXT_external_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageExternalEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageExternalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_external_buffer */
+
+#ifdef GL_EXT_fog_coord
+
+static GLboolean _glewInit_GL_EXT_fog_coord ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerEXT")) == NULL) || r;
+ r = ((glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddEXT")) == NULL) || r;
+ r = ((glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddvEXT")) == NULL) || r;
+ r = ((glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfEXT")) == NULL) || r;
+ r = ((glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_fog_coord */
+
+#ifdef GL_EXT_fragment_lighting
+
+static GLboolean _glewInit_GL_EXT_fragment_lighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialEXT")) == NULL) || r;
+ r = ((glFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfEXT")) == NULL) || r;
+ r = ((glFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvEXT")) == NULL) || r;
+ r = ((glFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliEXT")) == NULL) || r;
+ r = ((glFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivEXT")) == NULL) || r;
+ r = ((glFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfEXT")) == NULL) || r;
+ r = ((glFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvEXT")) == NULL) || r;
+ r = ((glFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiEXT")) == NULL) || r;
+ r = ((glFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivEXT")) == NULL) || r;
+ r = ((glFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfEXT")) == NULL) || r;
+ r = ((glFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvEXT")) == NULL) || r;
+ r = ((glFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiEXT")) == NULL) || r;
+ r = ((glFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivEXT")) == NULL) || r;
+ r = ((glGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvEXT")) == NULL) || r;
+ r = ((glGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivEXT")) == NULL) || r;
+ r = ((glGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvEXT")) == NULL) || r;
+ r = ((glGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivEXT")) == NULL) || r;
+ r = ((glLightEnviEXT = (PFNGLLIGHTENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glLightEnviEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_fragment_lighting */
+
+#ifdef GL_EXT_framebuffer_blit
+
+static GLboolean _glewInit_GL_EXT_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_blit */
+
+#ifdef GL_EXT_framebuffer_multisample
+
+static GLboolean _glewInit_GL_EXT_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+#ifdef GL_EXT_framebuffer_object
+
+static GLboolean _glewInit_GL_EXT_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindFramebufferEXT")) == NULL) || r;
+ r = ((glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbufferEXT")) == NULL) || r;
+ r = ((glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatusEXT")) == NULL) || r;
+ r = ((glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffersEXT")) == NULL) || r;
+ r = ((glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffersEXT")) == NULL) || r;
+ r = ((glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbufferEXT")) == NULL) || r;
+ r = ((glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1DEXT")) == NULL) || r;
+ r = ((glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DEXT")) == NULL) || r;
+ r = ((glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3DEXT")) == NULL) || r;
+ r = ((glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffersEXT")) == NULL) || r;
+ r = ((glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffersEXT")) == NULL) || r;
+ r = ((glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmapEXT")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameterivEXT")) == NULL) || r;
+ r = ((glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameterivEXT")) == NULL) || r;
+ r = ((glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsFramebufferEXT")) == NULL) || r;
+ r = ((glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbufferEXT")) == NULL) || r;
+ r = ((glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_object */
+
+#ifdef GL_EXT_geometry_shader4
+
+static GLboolean _glewInit_GL_EXT_geometry_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureEXT")) == NULL) || r;
+ r = ((glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceEXT")) == NULL) || r;
+ r = ((glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_geometry_shader4 */
+
+#ifdef GL_EXT_gpu_program_parameters
+
+static GLboolean _glewInit_GL_EXT_gpu_program_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameters4fvEXT")) == NULL) || r;
+ r = ((glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameters4fvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+#ifdef GL_EXT_gpu_shader4
+
+static GLboolean _glewInit_GL_EXT_gpu_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationEXT")) == NULL) || r;
+ r = ((glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocationEXT")) == NULL) || r;
+ r = ((glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuivEXT")) == NULL) || r;
+ r = ((glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIivEXT")) == NULL) || r;
+ r = ((glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuivEXT")) == NULL) || r;
+ r = ((glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiEXT")) == NULL) || r;
+ r = ((glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uivEXT")) == NULL) || r;
+ r = ((glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiEXT")) == NULL) || r;
+ r = ((glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uivEXT")) == NULL) || r;
+ r = ((glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiEXT")) == NULL) || r;
+ r = ((glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uivEXT")) == NULL) || r;
+ r = ((glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiEXT")) == NULL) || r;
+ r = ((glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iEXT")) == NULL) || r;
+ r = ((glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iEXT")) == NULL) || r;
+ r = ((glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iEXT")) == NULL) || r;
+ r = ((glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bvEXT")) == NULL) || r;
+ r = ((glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iEXT")) == NULL) || r;
+ r = ((glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4svEXT")) == NULL) || r;
+ r = ((glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubvEXT")) == NULL) || r;
+ r = ((glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usvEXT")) == NULL) || r;
+ r = ((glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_gpu_shader4 */
+
+#ifdef GL_EXT_histogram
+
+static GLboolean _glewInit_GL_EXT_histogram ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramEXT")) == NULL) || r;
+ r = ((glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfvEXT")) == NULL) || r;
+ r = ((glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterivEXT")) == NULL) || r;
+ r = ((glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxEXT")) == NULL) || r;
+ r = ((glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfvEXT")) == NULL) || r;
+ r = ((glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterivEXT")) == NULL) || r;
+ r = ((glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glHistogramEXT")) == NULL) || r;
+ r = ((glMinmaxEXT = (PFNGLMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glMinmaxEXT")) == NULL) || r;
+ r = ((glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glResetHistogramEXT")) == NULL) || r;
+ r = ((glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glResetMinmaxEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_histogram */
+
+#ifdef GL_EXT_index_func
+
+static GLboolean _glewInit_GL_EXT_index_func ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexFuncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_index_func */
+
+#ifdef GL_EXT_index_material
+
+static GLboolean _glewInit_GL_EXT_index_material ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexMaterialEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_index_material */
+
+#ifdef GL_EXT_instanced_arrays
+
+static GLboolean _glewInit_GL_EXT_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisorEXT = (PFNGLVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_instanced_arrays */
+
+#ifdef GL_EXT_light_texture
+
+static GLboolean _glewInit_GL_EXT_light_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glApplyTextureEXT")) == NULL) || r;
+ r = ((glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureLightEXT")) == NULL) || r;
+ r = ((glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureMaterialEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_light_texture */
+
+#ifdef GL_EXT_map_buffer_range
+
+static GLboolean _glewInit_GL_EXT_map_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushMappedBufferRangeEXT = (PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRangeEXT")) == NULL) || r;
+ r = ((glMapBufferRangeEXT = (PFNGLMAPBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glMapBufferRangeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_map_buffer_range */
+
+#ifdef GL_EXT_memory_object
+
+static GLboolean _glewInit_GL_EXT_memory_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageMemEXT")) == NULL) || r;
+ r = ((glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateMemoryObjectsEXT")) == NULL) || r;
+ r = ((glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteMemoryObjectsEXT")) == NULL) || r;
+ r = ((glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMemoryObjectParameterivEXT")) == NULL) || r;
+ r = ((glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUnsignedBytei_vEXT")) == NULL) || r;
+ r = ((glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUnsignedBytevEXT")) == NULL) || r;
+ r = ((glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)"glIsMemoryObjectEXT")) == NULL) || r;
+ r = ((glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMemoryObjectParameterivEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageMemEXT")) == NULL) || r;
+ r = ((glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem1DEXT")) == NULL) || r;
+ r = ((glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem2DEXT")) == NULL) || r;
+ r = ((glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem2DMultisampleEXT")) == NULL) || r;
+ r = ((glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem3DEXT")) == NULL) || r;
+ r = ((glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem3DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem1DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem2DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem2DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem3DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem3DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object */
+
+#ifdef GL_EXT_memory_object_fd
+
+static GLboolean _glewInit_GL_EXT_memory_object_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryFdEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object_fd */
+
+#ifdef GL_EXT_memory_object_win32
+
+static GLboolean _glewInit_GL_EXT_memory_object_win32 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryWin32HandleEXT")) == NULL) || r;
+ r = ((glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryWin32NameEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object_win32 */
+
+#ifdef GL_EXT_multi_draw_arrays
+
+static GLboolean _glewInit_GL_EXT_multi_draw_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+#ifdef GL_EXT_multi_draw_indirect
+
+static GLboolean _glewInit_GL_EXT_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectEXT = (PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectEXT = (PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+#ifdef GL_EXT_multisample
+
+static GLboolean _glewInit_GL_EXT_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskEXT")) == NULL) || r;
+ r = ((glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multisample */
+
+#ifdef GL_EXT_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DMultisampleEXT = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+#ifdef GL_EXT_multiview_draw_buffers
+
+static GLboolean _glewInit_GL_EXT_multiview_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersIndexedEXT = (PFNGLDRAWBUFFERSINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersIndexedEXT")) == NULL) || r;
+ r = ((glGetIntegeri_vEXT = (PFNGLGETINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetIntegeri_vEXT")) == NULL) || r;
+ r = ((glReadBufferIndexedEXT = (PFNGLREADBUFFERINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glReadBufferIndexedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+#ifdef GL_EXT_paletted_texture
+
+static GLboolean _glewInit_GL_EXT_paletted_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorTableEXT")) == NULL) || r;
+ r = ((glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableEXT")) == NULL) || r;
+ r = ((glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvEXT")) == NULL) || r;
+ r = ((glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_paletted_texture */
+
+#ifdef GL_EXT_pixel_transform
+
+static GLboolean _glewInit_GL_EXT_pixel_transform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterfvEXT")) == NULL) || r;
+ r = ((glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterivEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfvEXT")) == NULL) || r;
+ r = ((glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameteriEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_pixel_transform */
+
+#ifdef GL_EXT_point_parameters
+
+static GLboolean _glewInit_GL_EXT_point_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfEXT")) == NULL) || r;
+ r = ((glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_point_parameters */
+
+#ifdef GL_EXT_polygon_offset
+
+static GLboolean _glewInit_GL_EXT_polygon_offset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_polygon_offset */
+
+#ifdef GL_EXT_polygon_offset_clamp
+
+static GLboolean _glewInit_GL_EXT_polygon_offset_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetClampEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+#ifdef GL_EXT_primitive_bounding_box
+
+static GLboolean _glewInit_GL_EXT_primitive_bounding_box ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveBoundingBoxEXT = (PFNGLPRIMITIVEBOUNDINGBOXEXTPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveBoundingBoxEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+#ifdef GL_EXT_provoking_vertex
+
+static GLboolean _glewInit_GL_EXT_provoking_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glProvokingVertexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_provoking_vertex */
+
+#ifdef GL_EXT_raster_multisample
+
+static GLboolean _glewInit_GL_EXT_raster_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)glewGetProcAddress((const GLubyte*)"glCoverageModulationNV")) == NULL) || r;
+ r = ((glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)"glCoverageModulationTableNV")) == NULL) || r;
+ r = ((glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)"glGetCoverageModulationTableNV")) == NULL) || r;
+ r = ((glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)glewGetProcAddress((const GLubyte*)"glRasterSamplesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_raster_multisample */
+
+#ifdef GL_EXT_robustness
+
+static GLboolean _glewInit_GL_EXT_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatusEXT = (PFNGLGETGRAPHICSRESETSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatusEXT")) == NULL) || r;
+ r = ((glGetnUniformfvEXT = (PFNGLGETNUNIFORMFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfvEXT")) == NULL) || r;
+ r = ((glGetnUniformivEXT = (PFNGLGETNUNIFORMIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformivEXT")) == NULL) || r;
+ r = ((glReadnPixelsEXT = (PFNGLREADNPIXELSEXTPROC)glewGetProcAddress((const GLubyte*)"glReadnPixelsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_robustness */
+
+#ifdef GL_EXT_scene_marker
+
+static GLboolean _glewInit_GL_EXT_scene_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginSceneEXT")) == NULL) || r;
+ r = ((glEndSceneEXT = (PFNGLENDSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glEndSceneEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_scene_marker */
+
+#ifdef GL_EXT_secondary_color
+
+static GLboolean _glewInit_GL_EXT_secondary_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bEXT")) == NULL) || r;
+ r = ((glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dEXT")) == NULL) || r;
+ r = ((glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fEXT")) == NULL) || r;
+ r = ((glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ivEXT")) == NULL) || r;
+ r = ((glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sEXT")) == NULL) || r;
+ r = ((glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3svEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiEXT")) == NULL) || r;
+ r = ((glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uivEXT")) == NULL) || r;
+ r = ((glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usEXT")) == NULL) || r;
+ r = ((glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usvEXT")) == NULL) || r;
+ r = ((glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_secondary_color */
+
+#ifdef GL_EXT_semaphore
+
+static GLboolean _glewInit_GL_EXT_semaphore ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteSemaphoresEXT")) == NULL) || r;
+ r = ((glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenSemaphoresEXT")) == NULL) || r;
+ r = ((glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSemaphoreParameterui64vEXT")) == NULL) || r;
+ r = ((glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glIsSemaphoreEXT")) == NULL) || r;
+ r = ((glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glSemaphoreParameterui64vEXT")) == NULL) || r;
+ r = ((glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glSignalSemaphoreEXT")) == NULL) || r;
+ r = ((glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glWaitSemaphoreEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore */
+
+#ifdef GL_EXT_semaphore_fd
+
+static GLboolean _glewInit_GL_EXT_semaphore_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreFdEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore_fd */
+
+#ifdef GL_EXT_semaphore_win32
+
+static GLboolean _glewInit_GL_EXT_semaphore_win32 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreWin32HandleEXT")) == NULL) || r;
+ r = ((glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreWin32NameEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore_win32 */
+
+#ifdef GL_EXT_separate_shader_objects
+
+static GLboolean _glewInit_GL_EXT_separate_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glActiveProgramEXT")) == NULL) || r;
+ r = ((glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderProgramEXT")) == NULL) || r;
+ r = ((glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glUseShaderProgramEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_separate_shader_objects */
+
+#ifdef GL_EXT_shader_framebuffer_fetch
+
+static GLboolean _glewInit_GL_EXT_shader_framebuffer_fetch ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFetchBarrierEXT = (PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFetchBarrierEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+#ifdef GL_EXT_shader_image_load_store
+
+static GLboolean _glewInit_GL_EXT_shader_image_load_store ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindImageTextureEXT")) == NULL) || r;
+ r = ((glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrierEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
+#ifdef GL_EXT_shader_pixel_local_storage2
+
+static GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearPixelLocalStorageuiEXT = (PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearPixelLocalStorageuiEXT")) == NULL) || r;
+ r = ((glFramebufferPixelLocalStorageSizeEXT = (PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferPixelLocalStorageSizeEXT")) == NULL) || r;
+ r = ((glGetFramebufferPixelLocalStorageSizeEXT = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferPixelLocalStorageSizeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+#ifdef GL_EXT_sparse_texture
+
+static GLboolean _glewInit_GL_EXT_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexPageCommitmentEXT = (PFNGLTEXPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentEXT")) == NULL) || r;
+ r = ((glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glTexturePageCommitmentEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_sparse_texture */
+
+#ifdef GL_EXT_stencil_two_side
+
+static GLboolean _glewInit_GL_EXT_stencil_two_side ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glActiveStencilFaceEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_stencil_two_side */
+
+#ifdef GL_EXT_subtexture
+
+static GLboolean _glewInit_GL_EXT_subtexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage1DEXT")) == NULL) || r;
+ r = ((glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage2DEXT")) == NULL) || r;
+ r = ((glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_subtexture */
+
+#ifdef GL_EXT_tessellation_point_size
+
+static GLboolean _glewInit_GL_EXT_tessellation_point_size ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPatchParameteriEXT = (PFNGLPATCHPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glPatchParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_tessellation_point_size */
+
+#ifdef GL_EXT_texture3D
+
+static GLboolean _glewInit_GL_EXT_texture3D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture3D */
+
+#ifdef GL_EXT_texture_array
+
+static GLboolean _glewInit_GL_EXT_texture_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_array */
+
+#ifdef GL_EXT_texture_border_clamp
+
+static GLboolean _glewInit_GL_EXT_texture_border_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSamplerParameterIivEXT = (PFNGLGETSAMPLERPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIivEXT")) == NULL) || r;
+ r = ((glGetSamplerParameterIuivEXT = (PFNGLGETSAMPLERPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuivEXT")) == NULL) || r;
+ r = ((glSamplerParameterIivEXT = (PFNGLSAMPLERPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIivEXT")) == NULL) || r;
+ r = ((glSamplerParameterIuivEXT = (PFNGLSAMPLERPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_border_clamp */
+
+#ifdef GL_EXT_texture_buffer_object
+
+static GLboolean _glewInit_GL_EXT_texture_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexBufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_buffer_object */
+
+#ifdef GL_EXT_texture_integer
+
+static GLboolean _glewInit_GL_EXT_texture_integer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIiEXT")) == NULL) || r;
+ r = ((glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIuiEXT")) == NULL) || r;
+ r = ((glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIivEXT")) == NULL) || r;
+ r = ((glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuivEXT")) == NULL) || r;
+ r = ((glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIivEXT")) == NULL) || r;
+ r = ((glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_integer */
+
+#ifdef GL_EXT_texture_object
+
+static GLboolean _glewInit_GL_EXT_texture_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)glewGetProcAddress((const GLubyte*)"glAreTexturesResidentEXT")) == NULL) || r;
+ r = ((glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureEXT")) == NULL) || r;
+ r = ((glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteTexturesEXT")) == NULL) || r;
+ r = ((glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenTexturesEXT")) == NULL) || r;
+ r = ((glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glIsTextureEXT")) == NULL) || r;
+ r = ((glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glPrioritizeTexturesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_object */
+
+#ifdef GL_EXT_texture_perturb_normal
+
+static GLboolean _glewInit_GL_EXT_texture_perturb_normal ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureNormalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+#ifdef GL_EXT_texture_storage
+
+static GLboolean _glewInit_GL_EXT_texture_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage1DEXT = (PFNGLTEXSTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage1DEXT")) == NULL) || r;
+ r = ((glTexStorage2DEXT = (PFNGLTEXSTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2DEXT")) == NULL) || r;
+ r = ((glTexStorage3DEXT = (PFNGLTEXSTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DEXT")) == NULL) || r;
+ r = ((glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage1DEXT")) == NULL) || r;
+ r = ((glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DEXT")) == NULL) || r;
+ r = ((glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_storage */
+
+#ifdef GL_EXT_texture_storage_compression
+
+static GLboolean _glewInit_GL_EXT_texture_storage_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorageAttribs2DEXT = (PFNGLTEXSTORAGEATTRIBS2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageAttribs2DEXT")) == NULL) || r;
+ r = ((glTexStorageAttribs3DEXT = (PFNGLTEXSTORAGEATTRIBS3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageAttribs3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_storage_compression */
+
+#ifdef GL_EXT_texture_view
+
+static GLboolean _glewInit_GL_EXT_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureViewEXT = (PFNGLTEXTUREVIEWEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureViewEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_view */
+
+#ifdef GL_EXT_timer_query
+
+static GLboolean _glewInit_GL_EXT_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64vEXT")) == NULL) || r;
+ r = ((glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64vEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_timer_query */
+
+#ifdef GL_EXT_transform_feedback
+
+static GLboolean _glewInit_GL_EXT_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackEXT")) == NULL) || r;
+ r = ((glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseEXT")) == NULL) || r;
+ r = ((glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetEXT")) == NULL) || r;
+ r = ((glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeEXT")) == NULL) || r;
+ r = ((glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackEXT")) == NULL) || r;
+ r = ((glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingEXT")) == NULL) || r;
+ r = ((glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_transform_feedback */
+
+#ifdef GL_EXT_vertex_array
+
+static GLboolean _glewInit_GL_EXT_vertex_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glArrayElementEXT")) == NULL) || r;
+ r = ((glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glColorPointerEXT")) == NULL) || r;
+ r = ((glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysEXT")) == NULL) || r;
+ r = ((glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerEXT")) == NULL) || r;
+ r = ((glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerEXT")) == NULL) || r;
+ r = ((glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerEXT")) == NULL) || r;
+ r = ((glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerEXT")) == NULL) || r;
+ r = ((glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_array */
+
+#ifdef GL_EXT_vertex_array_setXXX
+
+static GLboolean _glewInit_GL_EXT_vertex_array_setXXX ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindArraySetEXT = (PFNGLBINDARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)"glBindArraySetEXT")) == NULL) || r;
+ r = ((glCreateArraySetExt = (PFNGLCREATEARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateArraySetExt")) == NULL) || r;
+ r = ((glDeleteArraySetsEXT = (PFNGLDELETEARRAYSETSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteArraySetsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLdvEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribLOffsetEXT")) == NULL) || r;
+ r = ((glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dEXT")) == NULL) || r;
+ r = ((glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dEXT")) == NULL) || r;
+ r = ((glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dEXT")) == NULL) || r;
+ r = ((glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dEXT")) == NULL) || r;
+ r = ((glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dvEXT")) == NULL) || r;
+ r = ((glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+#ifdef GL_EXT_vertex_shader
+
+static GLboolean _glewInit_GL_EXT_vertex_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBeginVertexShaderEXT")) == NULL) || r;
+ r = ((glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindLightParameterEXT")) == NULL) || r;
+ r = ((glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindMaterialParameterEXT")) == NULL) || r;
+ r = ((glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindParameterEXT")) == NULL) || r;
+ r = ((glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTexGenParameterEXT")) == NULL) || r;
+ r = ((glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureUnitParameterEXT")) == NULL) || r;
+ r = ((glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindVertexShaderEXT")) == NULL) || r;
+ r = ((glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexShaderEXT")) == NULL) || r;
+ r = ((glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVariantClientStateEXT")) == NULL) || r;
+ r = ((glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVariantClientStateEXT")) == NULL) || r;
+ r = ((glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glEndVertexShaderEXT")) == NULL) || r;
+ r = ((glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glExtractComponentEXT")) == NULL) || r;
+ r = ((glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenSymbolsEXT")) == NULL) || r;
+ r = ((glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenVertexShadersEXT")) == NULL) || r;
+ r = ((glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantBooleanvEXT")) == NULL) || r;
+ r = ((glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantFloatvEXT")) == NULL) || r;
+ r = ((glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantIntegervEXT")) == NULL) || r;
+ r = ((glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantBooleanvEXT")) == NULL) || r;
+ r = ((glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantFloatvEXT")) == NULL) || r;
+ r = ((glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantIntegervEXT")) == NULL) || r;
+ r = ((glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantBooleanvEXT")) == NULL) || r;
+ r = ((glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantFloatvEXT")) == NULL) || r;
+ r = ((glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantIntegervEXT")) == NULL) || r;
+ r = ((glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantPointervEXT")) == NULL) || r;
+ r = ((glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glInsertComponentEXT")) == NULL) || r;
+ r = ((glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsVariantEnabledEXT")) == NULL) || r;
+ r = ((glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetInvariantEXT")) == NULL) || r;
+ r = ((glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetLocalConstantEXT")) == NULL) || r;
+ r = ((glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp1EXT")) == NULL) || r;
+ r = ((glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp2EXT")) == NULL) || r;
+ r = ((glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp3EXT")) == NULL) || r;
+ r = ((glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)glewGetProcAddress((const GLubyte*)"glSwizzleEXT")) == NULL) || r;
+ r = ((glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVariantPointerEXT")) == NULL) || r;
+ r = ((glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantbvEXT")) == NULL) || r;
+ r = ((glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantdvEXT")) == NULL) || r;
+ r = ((glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantfvEXT")) == NULL) || r;
+ r = ((glVariantivEXT = (PFNGLVARIANTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantivEXT")) == NULL) || r;
+ r = ((glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantsvEXT")) == NULL) || r;
+ r = ((glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantubvEXT")) == NULL) || r;
+ r = ((glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantuivEXT")) == NULL) || r;
+ r = ((glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantusvEXT")) == NULL) || r;
+ r = ((glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glWriteMaskEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_shader */
+
+#ifdef GL_EXT_vertex_weighting
+
+static GLboolean _glewInit_GL_EXT_vertex_weighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightPointerEXT")) == NULL) || r;
+ r = ((glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfEXT")) == NULL) || r;
+ r = ((glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_weighting */
+
+#ifdef GL_EXT_win32_keyed_mutex
+
+static GLboolean _glewInit_GL_EXT_win32_keyed_mutex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)"glAcquireKeyedMutexWin32EXT")) == NULL) || r;
+ r = ((glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)"glReleaseKeyedMutexWin32EXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+#ifdef GL_EXT_window_rectangles
+
+static GLboolean _glewInit_GL_EXT_window_rectangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)glewGetProcAddress((const GLubyte*)"glWindowRectanglesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_window_rectangles */
+
+#ifdef GL_EXT_x11_sync_object
+
+static GLboolean _glewInit_GL_EXT_x11_sync_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_x11_sync_object */
+
+#ifdef GL_GREMEDY_frame_terminator
+
+static GLboolean _glewInit_GL_GREMEDY_frame_terminator ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glFrameTerminatorGREMEDY")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+#ifdef GL_GREMEDY_string_marker
+
+static GLboolean _glewInit_GL_GREMEDY_string_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glStringMarkerGREMEDY")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_GREMEDY_string_marker */
+
+#ifdef GL_HP_image_transform
+
+static GLboolean _glewInit_GL_HP_image_transform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterfvHP")) == NULL) || r;
+ r = ((glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterivHP")) == NULL) || r;
+ r = ((glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfHP")) == NULL) || r;
+ r = ((glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfvHP")) == NULL) || r;
+ r = ((glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameteriHP")) == NULL) || r;
+ r = ((glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterivHP")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_HP_image_transform */
+
+#ifdef GL_IBM_multimode_draw_arrays
+
+static GLboolean _glewInit_GL_IBM_multimode_draw_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawArraysIBM")) == NULL) || r;
+ r = ((glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawElementsIBM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+#ifdef GL_IBM_vertex_array_lists
+
+static GLboolean _glewInit_GL_IBM_vertex_array_lists ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glColorPointerListIBM")) == NULL) || r;
+ r = ((glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerListIBM")) == NULL) || r;
+ r = ((glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerListIBM")) == NULL) || r;
+ r = ((glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerListIBM")) == NULL) || r;
+ r = ((glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerListIBM")) == NULL) || r;
+ r = ((glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerListIBM")) == NULL) || r;
+ r = ((glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerListIBM")) == NULL) || r;
+ r = ((glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerListIBM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IBM_vertex_array_lists */
+
+#ifdef GL_IMG_bindless_texture
+
+static GLboolean _glewInit_GL_IMG_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTextureHandleIMG = (PFNGLGETTEXTUREHANDLEIMGPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleIMG")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleIMG = (PFNGLGETTEXTURESAMPLERHANDLEIMGPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleIMG")) == NULL) || r;
+ r = ((glProgramUniformHandleui64IMG = (PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64IMG")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vIMG = (PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vIMG")) == NULL) || r;
+ r = ((glUniformHandleui64IMG = (PFNGLUNIFORMHANDLEUI64IMGPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64IMG")) == NULL) || r;
+ r = ((glUniformHandleui64vIMG = (PFNGLUNIFORMHANDLEUI64VIMGPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_bindless_texture */
+
+#ifdef GL_IMG_framebuffer_downsample
+
+static GLboolean _glewInit_GL_IMG_framebuffer_downsample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DDownsampleIMG")) == NULL) || r;
+ r = ((glFramebufferTextureLayerDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerDownsampleIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+#ifdef GL_IMG_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_IMG_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DMultisampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DMultisampleIMG")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisampleIMG = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+#ifdef GL_INTEL_framebuffer_CMAA
+
+static GLboolean _glewInit_GL_INTEL_framebuffer_CMAA ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)glewGetProcAddress((const GLubyte*)"glApplyFramebufferAttachmentCMAAINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+#ifdef GL_INTEL_map_texture
+
+static GLboolean _glewInit_GL_INTEL_map_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)"glMapTexture2DINTEL")) == NULL) || r;
+ r = ((glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)glewGetProcAddress((const GLubyte*)"glSyncTextureINTEL")) == NULL) || r;
+ r = ((glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)"glUnmapTexture2DINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_map_texture */
+
+#ifdef GL_INTEL_parallel_arrays
+
+static GLboolean _glewInit_GL_INTEL_parallel_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glColorPointervINTEL")) == NULL) || r;
+ r = ((glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glNormalPointervINTEL")) == NULL) || r;
+ r = ((glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointervINTEL")) == NULL) || r;
+ r = ((glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glVertexPointervINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_parallel_arrays */
+
+#ifdef GL_INTEL_performance_query
+
+static GLboolean _glewInit_GL_INTEL_performance_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glBeginPerfQueryINTEL")) == NULL) || r;
+ r = ((glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glCreatePerfQueryINTEL")) == NULL) || r;
+ r = ((glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glDeletePerfQueryINTEL")) == NULL) || r;
+ r = ((glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glEndPerfQueryINTEL")) == NULL) || r;
+ r = ((glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetFirstPerfQueryIdINTEL")) == NULL) || r;
+ r = ((glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetNextPerfQueryIdINTEL")) == NULL) || r;
+ r = ((glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfCounterInfoINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryDataINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryIdByNameINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryInfoINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_performance_query */
+
+#ifdef GL_INTEL_texture_scissor
+
+static GLboolean _glewInit_GL_INTEL_texture_scissor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexScissorFuncINTEL = (PFNGLTEXSCISSORFUNCINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorFuncINTEL")) == NULL) || r;
+ r = ((glTexScissorINTEL = (PFNGLTEXSCISSORINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_texture_scissor */
+
+#ifdef GL_KHR_blend_equation_advanced
+
+static GLboolean _glewInit_GL_KHR_blend_equation_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)glewGetProcAddress((const GLubyte*)"glBlendBarrierKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+#ifdef GL_KHR_debug
+
+static GLboolean _glewInit_GL_KHR_debug ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallback")) == NULL) || r;
+ r = ((glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageControl")) == NULL) || r;
+ r = ((glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsert")) == NULL) || r;
+ r = ((glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLog")) == NULL) || r;
+ r = ((glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)"glGetObjectLabel")) == NULL) || r;
+ r = ((glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)"glGetObjectPtrLabel")) == NULL) || r;
+ r = ((glObjectLabel = (PFNGLOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)"glObjectLabel")) == NULL) || r;
+ r = ((glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)"glObjectPtrLabel")) == NULL) || r;
+ r = ((glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)"glPopDebugGroup")) == NULL) || r;
+ r = ((glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)"glPushDebugGroup")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_debug */
+
+#ifdef GL_KHR_parallel_shader_compile
+
+static GLboolean _glewInit_GL_KHR_parallel_shader_compile ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)glewGetProcAddress((const GLubyte*)"glMaxShaderCompilerThreadsKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+#ifdef GL_KHR_robustness
+
+static GLboolean _glewInit_GL_KHR_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfv")) == NULL) || r;
+ r = ((glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformiv")) == NULL) || r;
+ r = ((glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformuiv")) == NULL) || r;
+ r = ((glReadnPixels = (PFNGLREADNPIXELSPROC)glewGetProcAddress((const GLubyte*)"glReadnPixels")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_robustness */
+
+#ifdef GL_KTX_buffer_region
+
+static GLboolean _glewInit_GL_KTX_buffer_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferRegionEnabled = (PFNGLBUFFERREGIONENABLEDPROC)glewGetProcAddress((const GLubyte*)"glBufferRegionEnabled")) == NULL) || r;
+ r = ((glDeleteBufferRegion = (PFNGLDELETEBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glDeleteBufferRegion")) == NULL) || r;
+ r = ((glDrawBufferRegion = (PFNGLDRAWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glDrawBufferRegion")) == NULL) || r;
+ r = ((glNewBufferRegion = (PFNGLNEWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glNewBufferRegion")) == NULL) || r;
+ r = ((glReadBufferRegion = (PFNGLREADBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glReadBufferRegion")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KTX_buffer_region */
+
+#ifdef GL_MESA_framebuffer_flip_y
+
+static GLboolean _glewInit_GL_MESA_framebuffer_flip_y ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferParameteriMESA = (PFNGLFRAMEBUFFERPARAMETERIMESAPROC)glewGetProcAddress((const GLubyte*)"glFramebufferParameteriMESA")) == NULL) || r;
+ r = ((glGetFramebufferParameterivMESA = (PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterivMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+#ifdef GL_MESA_resize_buffers
+
+static GLboolean _glewInit_GL_MESA_resize_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glResizeBuffersMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_resize_buffers */
+
+#ifdef GL_MESA_window_pos
+
+static GLboolean _glewInit_GL_MESA_window_pos ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dMESA")) == NULL) || r;
+ r = ((glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvMESA")) == NULL) || r;
+ r = ((glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fMESA")) == NULL) || r;
+ r = ((glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvMESA")) == NULL) || r;
+ r = ((glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iMESA")) == NULL) || r;
+ r = ((glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivMESA")) == NULL) || r;
+ r = ((glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sMESA")) == NULL) || r;
+ r = ((glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svMESA")) == NULL) || r;
+ r = ((glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dMESA")) == NULL) || r;
+ r = ((glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvMESA")) == NULL) || r;
+ r = ((glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fMESA")) == NULL) || r;
+ r = ((glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvMESA")) == NULL) || r;
+ r = ((glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iMESA")) == NULL) || r;
+ r = ((glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivMESA")) == NULL) || r;
+ r = ((glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sMESA")) == NULL) || r;
+ r = ((glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svMESA")) == NULL) || r;
+ r = ((glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dMESA")) == NULL) || r;
+ r = ((glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dvMESA")) == NULL) || r;
+ r = ((glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fMESA")) == NULL) || r;
+ r = ((glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fvMESA")) == NULL) || r;
+ r = ((glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4iMESA")) == NULL) || r;
+ r = ((glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4ivMESA")) == NULL) || r;
+ r = ((glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4sMESA")) == NULL) || r;
+ r = ((glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4svMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_window_pos */
+
+#ifdef GL_NVX_conditional_render
+
+static GLboolean _glewInit_GL_NVX_conditional_render ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRenderNVX")) == NULL) || r;
+ r = ((glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRenderNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_conditional_render */
+
+#ifdef GL_NVX_gpu_multicast2
+
+static GLboolean _glewInit_GL_NVX_gpu_multicast2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAsyncCopyBufferSubDataNVX = (PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glAsyncCopyBufferSubDataNVX")) == NULL) || r;
+ r = ((glAsyncCopyImageSubDataNVX = (PFNGLASYNCCOPYIMAGESUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glAsyncCopyImageSubDataNVX")) == NULL) || r;
+ r = ((glMulticastScissorArrayvNVX = (PFNGLMULTICASTSCISSORARRAYVNVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastScissorArrayvNVX")) == NULL) || r;
+ r = ((glMulticastViewportArrayvNVX = (PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastViewportArrayvNVX")) == NULL) || r;
+ r = ((glMulticastViewportPositionWScaleNVX = (PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastViewportPositionWScaleNVX")) == NULL) || r;
+ r = ((glUploadGpuMaskNVX = (PFNGLUPLOADGPUMASKNVXPROC)glewGetProcAddress((const GLubyte*)"glUploadGpuMaskNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+#ifdef GL_NVX_linked_gpu_multicast
+
+static GLboolean _glewInit_GL_NVX_linked_gpu_multicast ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLGPUCopyImageSubDataNVX = (PFNGLLGPUCOPYIMAGESUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUCopyImageSubDataNVX")) == NULL) || r;
+ r = ((glLGPUInterlockNVX = (PFNGLLGPUINTERLOCKNVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUInterlockNVX")) == NULL) || r;
+ r = ((glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUNamedBufferSubDataNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+#ifdef GL_NVX_progress_fence
+
+static GLboolean _glewInit_GL_NVX_progress_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSemaphoreui64NVX = (PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSemaphoreui64NVX")) == NULL) || r;
+ r = ((glCreateProgressFenceNVX = (PFNGLCREATEPROGRESSFENCENVXPROC)glewGetProcAddress((const GLubyte*)"glCreateProgressFenceNVX")) == NULL) || r;
+ r = ((glSignalSemaphoreui64NVX = (PFNGLSIGNALSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glSignalSemaphoreui64NVX")) == NULL) || r;
+ r = ((glWaitSemaphoreui64NVX = (PFNGLWAITSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glWaitSemaphoreui64NVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_progress_fence */
+
+#ifdef GL_NV_3dvision_settings
+
+static GLboolean _glewInit_GL_NV_3dvision_settings ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStereoParameterfNV = (PFNGLSTEREOPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glStereoParameterfNV")) == NULL) || r;
+ r = ((glStereoParameteriNV = (PFNGLSTEREOPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glStereoParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_3dvision_settings */
+
+#ifdef GL_NV_alpha_to_coverage_dither_control
+
+static GLboolean _glewInit_GL_NV_alpha_to_coverage_dither_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaToCoverageDitherControlNV = (PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)glewGetProcAddress((const GLubyte*)"glAlphaToCoverageDitherControlNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+#ifdef GL_NV_bindless_multi_draw_indirect
+
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectBindlessNV")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectBindlessNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectBindlessCountNV")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectBindlessCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+#ifdef GL_NV_bindless_texture
+
+static GLboolean _glewInit_GL_NV_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetImageHandleNV")) == NULL) || r;
+ r = ((glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleNV")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleNV")) == NULL) || r;
+ r = ((glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsImageHandleResidentNV")) == NULL) || r;
+ r = ((glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsTextureHandleResidentNV")) == NULL) || r;
+ r = ((glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleNonResidentNV")) == NULL) || r;
+ r = ((glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleResidentNV")) == NULL) || r;
+ r = ((glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleNonResidentNV")) == NULL) || r;
+ r = ((glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleResidentNV")) == NULL) || r;
+ r = ((glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64NV")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vNV")) == NULL) || r;
+ r = ((glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64NV")) == NULL) || r;
+ r = ((glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_texture */
+
+#ifdef GL_NV_blend_equation_advanced
+
+static GLboolean _glewInit_GL_NV_blend_equation_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glBlendBarrierNV")) == NULL) || r;
+ r = ((glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glBlendParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_blend_equation_advanced */
+
+#ifdef GL_NV_clip_space_w_scaling
+
+static GLboolean _glewInit_GL_NV_clip_space_w_scaling ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)glewGetProcAddress((const GLubyte*)"glViewportPositionWScaleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+#ifdef GL_NV_command_list
+
+static GLboolean _glewInit_GL_NV_command_list ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glCallCommandListNV")) == NULL) || r;
+ r = ((glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)glewGetProcAddress((const GLubyte*)"glCommandListSegmentsNV")) == NULL) || r;
+ r = ((glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glCompileCommandListNV")) == NULL) || r;
+ r = ((glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)"glCreateCommandListsNV")) == NULL) || r;
+ r = ((glCreateStatesNV = (PFNGLCREATESTATESNVPROC)glewGetProcAddress((const GLubyte*)"glCreateStatesNV")) == NULL) || r;
+ r = ((glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteCommandListsNV")) == NULL) || r;
+ r = ((glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteStatesNV")) == NULL) || r;
+ r = ((glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsAddressNV")) == NULL) || r;
+ r = ((glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsNV")) == NULL) || r;
+ r = ((glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsStatesAddressNV")) == NULL) || r;
+ r = ((glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsStatesNV")) == NULL) || r;
+ r = ((glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)glewGetProcAddress((const GLubyte*)"glGetCommandHeaderNV")) == NULL) || r;
+ r = ((glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)glewGetProcAddress((const GLubyte*)"glGetStageIndexNV")) == NULL) || r;
+ r = ((glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glIsCommandListNV")) == NULL) || r;
+ r = ((glIsStateNV = (PFNGLISSTATENVPROC)glewGetProcAddress((const GLubyte*)"glIsStateNV")) == NULL) || r;
+ r = ((glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)glewGetProcAddress((const GLubyte*)"glListDrawCommandsStatesClientNV")) == NULL) || r;
+ r = ((glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glStateCaptureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_command_list */
+
+#ifdef GL_NV_conditional_render
+
+static GLboolean _glewInit_GL_NV_conditional_render ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRenderNV")) == NULL) || r;
+ r = ((glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRenderNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conditional_render */
+
+#ifdef GL_NV_conservative_raster
+
+static GLboolean _glewInit_GL_NV_conservative_raster ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)glewGetProcAddress((const GLubyte*)"glSubpixelPrecisionBiasNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster */
+
+#ifdef GL_NV_conservative_raster_dilate
+
+static GLboolean _glewInit_GL_NV_conservative_raster_dilate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glConservativeRasterParameterfNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+
+static GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glConservativeRasterParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+#ifdef GL_NV_copy_buffer
+
+static GLboolean _glewInit_GL_NV_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyBufferSubDataNV = (PFNGLCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glCopyBufferSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_copy_buffer */
+
+#ifdef GL_NV_copy_image
+
+static GLboolean _glewInit_GL_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_copy_image */
+
+#ifdef GL_NV_depth_buffer_float
+
+static GLboolean _glewInit_GL_NV_depth_buffer_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)glewGetProcAddress((const GLubyte*)"glClearDepthdNV")) == NULL) || r;
+ r = ((glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsdNV")) == NULL) || r;
+ r = ((glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_depth_buffer_float */
+
+#ifdef GL_NV_draw_buffers
+
+static GLboolean _glewInit_GL_NV_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersNV = (PFNGLDRAWBUFFERSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_buffers */
+
+#ifdef GL_NV_draw_instanced
+
+static GLboolean _glewInit_GL_NV_draw_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedNV = (PFNGLDRAWARRAYSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedNV")) == NULL) || r;
+ r = ((glDrawElementsInstancedNV = (PFNGLDRAWELEMENTSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_instanced */
+
+#ifdef GL_NV_draw_texture
+
+static GLboolean _glewInit_GL_NV_draw_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)glewGetProcAddress((const GLubyte*)"glDrawTextureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_texture */
+
+#ifdef GL_NV_draw_vulkan_image
+
+static GLboolean _glewInit_GL_NV_draw_vulkan_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glDrawVkImageNV")) == NULL) || r;
+ r = ((glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)glewGetProcAddress((const GLubyte*)"glGetVkProcAddrNV")) == NULL) || r;
+ r = ((glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)glewGetProcAddress((const GLubyte*)"glSignalVkFenceNV")) == NULL) || r;
+ r = ((glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)"glSignalVkSemaphoreNV")) == NULL) || r;
+ r = ((glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)"glWaitVkSemaphoreNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_vulkan_image */
+
+#ifdef GL_NV_evaluators
+
+static GLboolean _glewInit_GL_NV_evaluators ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEvalMapsNV = (PFNGLEVALMAPSNVPROC)glewGetProcAddress((const GLubyte*)"glEvalMapsNV")) == NULL) || r;
+ r = ((glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterfvNV")) == NULL) || r;
+ r = ((glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterivNV")) == NULL) || r;
+ r = ((glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapControlPointsNV")) == NULL) || r;
+ r = ((glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterfvNV")) == NULL) || r;
+ r = ((glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterivNV")) == NULL) || r;
+ r = ((glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glMapControlPointsNV")) == NULL) || r;
+ r = ((glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterfvNV")) == NULL) || r;
+ r = ((glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_evaluators */
+
+#ifdef GL_NV_explicit_multisample
+
+static GLboolean _glewInit_GL_NV_explicit_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMultisamplefvNV")) == NULL) || r;
+ r = ((glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskIndexedNV")) == NULL) || r;
+ r = ((glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glTexRenderbufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_explicit_multisample */
+
+#ifdef GL_NV_fence
+
+static GLboolean _glewInit_GL_NV_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesNV")) == NULL) || r;
+ r = ((glFinishFenceNV = (PFNGLFINISHFENCENVPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceNV")) == NULL) || r;
+ r = ((glGenFencesNV = (PFNGLGENFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glGenFencesNV")) == NULL) || r;
+ r = ((glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFenceivNV")) == NULL) || r;
+ r = ((glIsFenceNV = (PFNGLISFENCENVPROC)glewGetProcAddress((const GLubyte*)"glIsFenceNV")) == NULL) || r;
+ r = ((glSetFenceNV = (PFNGLSETFENCENVPROC)glewGetProcAddress((const GLubyte*)"glSetFenceNV")) == NULL) || r;
+ r = ((glTestFenceNV = (PFNGLTESTFENCENVPROC)glewGetProcAddress((const GLubyte*)"glTestFenceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fence */
+
+#ifdef GL_NV_fragment_coverage_to_color
+
+static GLboolean _glewInit_GL_NV_fragment_coverage_to_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)glewGetProcAddress((const GLubyte*)"glFragmentCoverageColorNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+#ifdef GL_NV_fragment_program
+
+static GLboolean _glewInit_GL_NV_fragment_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterdvNV")) == NULL) || r;
+ r = ((glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterfvNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dvNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fragment_program */
+
+#ifdef GL_NV_framebuffer_blit
+
+static GLboolean _glewInit_GL_NV_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferNV = (PFNGLBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_blit */
+
+#ifdef GL_NV_framebuffer_multisample
+
+static GLboolean _glewInit_GL_NV_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_multisample */
+
+#ifdef GL_NV_framebuffer_multisample_coverage
+
+static GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleCoverageNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef GL_NV_geometry_program4
+
+static GLboolean _glewInit_GL_NV_geometry_program4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)glewGetProcAddress((const GLubyte*)"glProgramVertexLimitNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_geometry_program4 */
+
+#ifdef GL_NV_gpu_multicast
+
+static GLboolean _glewInit_GL_NV_gpu_multicast ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMulticastBarrierNV = (PFNGLMULTICASTBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBarrierNV")) == NULL) || r;
+ r = ((glMulticastBlitFramebufferNV = (PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBlitFramebufferNV")) == NULL) || r;
+ r = ((glMulticastBufferSubDataNV = (PFNGLMULTICASTBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBufferSubDataNV")) == NULL) || r;
+ r = ((glMulticastCopyBufferSubDataNV = (PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastCopyBufferSubDataNV")) == NULL) || r;
+ r = ((glMulticastCopyImageSubDataNV = (PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastCopyImageSubDataNV")) == NULL) || r;
+ r = ((glMulticastFramebufferSampleLocationsfvNV = (PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjecti64vNV = (PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjecti64vNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectivNV = (PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectivNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectui64vNV = (PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectui64vNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectuivNV = (PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectuivNV")) == NULL) || r;
+ r = ((glMulticastWaitSyncNV = (PFNGLMULTICASTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastWaitSyncNV")) == NULL) || r;
+ r = ((glRenderGpuMaskNV = (PFNGLRENDERGPUMASKNVPROC)glewGetProcAddress((const GLubyte*)"glRenderGpuMaskNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_multicast */
+
+#ifdef GL_NV_gpu_program4
+
+static GLboolean _glewInit_GL_NV_gpu_program4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4iNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4ivNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uiNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uivNV")) == NULL) || r;
+ r = ((glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4ivNV")) == NULL) || r;
+ r = ((glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4uivNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4iNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4ivNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uiNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uivNV")) == NULL) || r;
+ r = ((glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4ivNV")) == NULL) || r;
+ r = ((glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4uivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_program4 */
+
+#ifdef GL_NV_gpu_shader5
+
+static GLboolean _glewInit_GL_NV_gpu_shader5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformi64vNV")) == NULL) || r;
+ r = ((glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vNV")) == NULL) || r;
+ r = ((glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64NV")) == NULL) || r;
+ r = ((glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64vNV")) == NULL) || r;
+ r = ((glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64NV")) == NULL) || r;
+ r = ((glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64NV")) == NULL) || r;
+ r = ((glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64vNV")) == NULL) || r;
+ r = ((glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64NV")) == NULL) || r;
+ r = ((glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64NV")) == NULL) || r;
+ r = ((glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64vNV")) == NULL) || r;
+ r = ((glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64NV")) == NULL) || r;
+ r = ((glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64NV")) == NULL) || r;
+ r = ((glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64vNV")) == NULL) || r;
+ r = ((glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64NV")) == NULL) || r;
+ r = ((glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64vNV")) == NULL) || r;
+ r = ((glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64NV")) == NULL) || r;
+ r = ((glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64vNV")) == NULL) || r;
+ r = ((glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64NV")) == NULL) || r;
+ r = ((glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64vNV")) == NULL) || r;
+ r = ((glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64NV")) == NULL) || r;
+ r = ((glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64vNV")) == NULL) || r;
+ r = ((glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64NV")) == NULL) || r;
+ r = ((glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64vNV")) == NULL) || r;
+ r = ((glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64NV")) == NULL) || r;
+ r = ((glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64vNV")) == NULL) || r;
+ r = ((glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64NV")) == NULL) || r;
+ r = ((glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64vNV")) == NULL) || r;
+ r = ((glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64NV")) == NULL) || r;
+ r = ((glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64vNV")) == NULL) || r;
+ r = ((glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64NV")) == NULL) || r;
+ r = ((glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
+#ifdef GL_NV_half_float
+
+static GLboolean _glewInit_GL_NV_half_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColor3hNV = (PFNGLCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hNV")) == NULL) || r;
+ r = ((glColor3hvNV = (PFNGLCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hvNV")) == NULL) || r;
+ r = ((glColor4hNV = (PFNGLCOLOR4HNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hNV")) == NULL) || r;
+ r = ((glColor4hvNV = (PFNGLCOLOR4HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hvNV")) == NULL) || r;
+ r = ((glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhNV")) == NULL) || r;
+ r = ((glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhvNV")) == NULL) || r;
+ r = ((glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hNV")) == NULL) || r;
+ r = ((glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hNV")) == NULL) || r;
+ r = ((glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hNV")) == NULL) || r;
+ r = ((glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hNV")) == NULL) || r;
+ r = ((glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hvNV")) == NULL) || r;
+ r = ((glNormal3hNV = (PFNGLNORMAL3HNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hNV")) == NULL) || r;
+ r = ((glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hvNV")) == NULL) || r;
+ r = ((glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hNV")) == NULL) || r;
+ r = ((glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hvNV")) == NULL) || r;
+ r = ((glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hNV")) == NULL) || r;
+ r = ((glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hvNV")) == NULL) || r;
+ r = ((glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hNV")) == NULL) || r;
+ r = ((glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hvNV")) == NULL) || r;
+ r = ((glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hNV")) == NULL) || r;
+ r = ((glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hvNV")) == NULL) || r;
+ r = ((glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hNV")) == NULL) || r;
+ r = ((glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hvNV")) == NULL) || r;
+ r = ((glVertex2hNV = (PFNGLVERTEX2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hNV")) == NULL) || r;
+ r = ((glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hvNV")) == NULL) || r;
+ r = ((glVertex3hNV = (PFNGLVERTEX3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hNV")) == NULL) || r;
+ r = ((glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hvNV")) == NULL) || r;
+ r = ((glVertex4hNV = (PFNGLVERTEX4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hNV")) == NULL) || r;
+ r = ((glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hvNV")) == NULL) || r;
+ r = ((glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hNV")) == NULL) || r;
+ r = ((glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hvNV")) == NULL) || r;
+ r = ((glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hNV")) == NULL) || r;
+ r = ((glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hvNV")) == NULL) || r;
+ r = ((glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hNV")) == NULL) || r;
+ r = ((glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hvNV")) == NULL) || r;
+ r = ((glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hNV")) == NULL) || r;
+ r = ((glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hvNV")) == NULL) || r;
+ r = ((glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1hvNV")) == NULL) || r;
+ r = ((glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2hvNV")) == NULL) || r;
+ r = ((glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3hvNV")) == NULL) || r;
+ r = ((glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4hvNV")) == NULL) || r;
+ r = ((glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthNV")) == NULL) || r;
+ r = ((glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_half_float */
+
+#ifdef GL_NV_instanced_arrays
+
+static GLboolean _glewInit_GL_NV_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisorNV = (PFNGLVERTEXATTRIBDIVISORNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_instanced_arrays */
+
+#ifdef GL_NV_internalformat_sample_query
+
+static GLboolean _glewInit_GL_NV_internalformat_sample_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformatSampleivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_internalformat_sample_query */
+
+#ifdef GL_NV_memory_attachment
+
+static GLboolean _glewInit_GL_NV_memory_attachment ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferAttachMemoryNV = (PFNGLBUFFERATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glBufferAttachMemoryNV")) == NULL) || r;
+ r = ((glGetMemoryObjectDetachedResourcesuivNV = (PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMemoryObjectDetachedResourcesuivNV")) == NULL) || r;
+ r = ((glNamedBufferAttachMemoryNV = (PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferAttachMemoryNV")) == NULL) || r;
+ r = ((glResetMemoryObjectParameterNV = (PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)glewGetProcAddress((const GLubyte*)"glResetMemoryObjectParameterNV")) == NULL) || r;
+ r = ((glTexAttachMemoryNV = (PFNGLTEXATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glTexAttachMemoryNV")) == NULL) || r;
+ r = ((glTextureAttachMemoryNV = (PFNGLTEXTUREATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glTextureAttachMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_memory_attachment */
+
+#ifdef GL_NV_memory_object_sparse
+
+static GLboolean _glewInit_GL_NV_memory_object_sparse ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferPageCommitmentMemNV = (PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glBufferPageCommitmentMemNV")) == NULL) || r;
+ r = ((glNamedBufferPageCommitmentMemNV = (PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferPageCommitmentMemNV")) == NULL) || r;
+ r = ((glTexPageCommitmentMemNV = (PFNGLTEXPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentMemNV")) == NULL) || r;
+ r = ((glTexturePageCommitmentMemNV = (PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glTexturePageCommitmentMemNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_memory_object_sparse */
+
+#ifdef GL_NV_mesh_shader
+
+static GLboolean _glewInit_GL_NV_mesh_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawMeshTasksIndirectNV = (PFNGLDRAWMESHTASKSINDIRECTNVPROC)glewGetProcAddress((const GLubyte*)"glDrawMeshTasksIndirectNV")) == NULL) || r;
+ r = ((glDrawMeshTasksNV = (PFNGLDRAWMESHTASKSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawMeshTasksNV")) == NULL) || r;
+ r = ((glMultiDrawMeshTasksIndirectCountNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawMeshTasksIndirectCountNV")) == NULL) || r;
+ r = ((glMultiDrawMeshTasksIndirectNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawMeshTasksIndirectNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_mesh_shader */
+
+#ifdef GL_NV_non_square_matrices
+
+static GLboolean _glewInit_GL_NV_non_square_matrices ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glUniformMatrix2x3fvNV = (PFNGLUNIFORMMATRIX2X3FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3fvNV")) == NULL) || r;
+ r = ((glUniformMatrix2x4fvNV = (PFNGLUNIFORMMATRIX2X4FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4fvNV")) == NULL) || r;
+ r = ((glUniformMatrix3x2fvNV = (PFNGLUNIFORMMATRIX3X2FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2fvNV")) == NULL) || r;
+ r = ((glUniformMatrix3x4fvNV = (PFNGLUNIFORMMATRIX3X4FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4fvNV")) == NULL) || r;
+ r = ((glUniformMatrix4x2fvNV = (PFNGLUNIFORMMATRIX4X2FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2fvNV")) == NULL) || r;
+ r = ((glUniformMatrix4x3fvNV = (PFNGLUNIFORMMATRIX4X3FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3fvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_non_square_matrices */
+
+#ifdef GL_NV_occlusion_query
+
+static GLboolean _glewInit_GL_NV_occlusion_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glBeginOcclusionQueryNV")) == NULL) || r;
+ r = ((glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteOcclusionQueriesNV")) == NULL) || r;
+ r = ((glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glEndOcclusionQueryNV")) == NULL) || r;
+ r = ((glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glGenOcclusionQueriesNV")) == NULL) || r;
+ r = ((glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryivNV")) == NULL) || r;
+ r = ((glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryuivNV")) == NULL) || r;
+ r = ((glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glIsOcclusionQueryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_occlusion_query */
+
+#ifdef GL_NV_parameter_buffer_object
+
+static GLboolean _glewInit_GL_NV_parameter_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIivNV")) == NULL) || r;
+ r = ((glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIuivNV")) == NULL) || r;
+ r = ((glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_parameter_buffer_object */
+
+#ifdef GL_NV_path_rendering
+
+static GLboolean _glewInit_GL_NV_path_rendering ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyPathNV = (PFNGLCOPYPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCopyPathNV")) == NULL) || r;
+ r = ((glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glCoverFillPathInstancedNV")) == NULL) || r;
+ r = ((glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCoverFillPathNV")) == NULL) || r;
+ r = ((glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glCoverStrokePathInstancedNV")) == NULL) || r;
+ r = ((glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCoverStrokePathNV")) == NULL) || r;
+ r = ((glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glDeletePathsNV")) == NULL) || r;
+ r = ((glGenPathsNV = (PFNGLGENPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glGenPathsNV")) == NULL) || r;
+ r = ((glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathColorGenfvNV")) == NULL) || r;
+ r = ((glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathColorGenivNV")) == NULL) || r;
+ r = ((glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathCommandsNV")) == NULL) || r;
+ r = ((glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathCoordsNV")) == NULL) || r;
+ r = ((glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathDashArrayNV")) == NULL) || r;
+ r = ((glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathLengthNV")) == NULL) || r;
+ r = ((glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)glewGetProcAddress((const GLubyte*)"glGetPathMetricRangeNV")) == NULL) || r;
+ r = ((glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathMetricsNV")) == NULL) || r;
+ r = ((glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathParameterfvNV")) == NULL) || r;
+ r = ((glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathParameterivNV")) == NULL) || r;
+ r = ((glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathSpacingNV")) == NULL) || r;
+ r = ((glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathTexGenfvNV")) == NULL) || r;
+ r = ((glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathTexGenivNV")) == NULL) || r;
+ r = ((glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourcefvNV")) == NULL) || r;
+ r = ((glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glInterpolatePathsNV")) == NULL) || r;
+ r = ((glIsPathNV = (PFNGLISPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPathNV")) == NULL) || r;
+ r = ((glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPointInFillPathNV")) == NULL) || r;
+ r = ((glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPointInStrokePathNV")) == NULL) || r;
+ r = ((glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoad3x2fNV")) == NULL) || r;
+ r = ((glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoad3x3fNV")) == NULL) || r;
+ r = ((glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTranspose3x3fNV")) == NULL) || r;
+ r = ((glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMult3x2fNV")) == NULL) || r;
+ r = ((glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMult3x3fNV")) == NULL) || r;
+ r = ((glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTranspose3x3fNV")) == NULL) || r;
+ r = ((glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathColorGenNV")) == NULL) || r;
+ r = ((glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathCommandsNV")) == NULL) || r;
+ r = ((glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathCoordsNV")) == NULL) || r;
+ r = ((glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)glewGetProcAddress((const GLubyte*)"glPathCoverDepthFuncNV")) == NULL) || r;
+ r = ((glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathDashArrayNV")) == NULL) || r;
+ r = ((glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathFogGenNV")) == NULL) || r;
+ r = ((glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphIndexArrayNV")) == NULL) || r;
+ r = ((glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphIndexRangeNV")) == NULL) || r;
+ r = ((glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphRangeNV")) == NULL) || r;
+ r = ((glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphsNV")) == NULL) || r;
+ r = ((glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathMemoryGlyphIndexArrayNV")) == NULL) || r;
+ r = ((glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterfNV")) == NULL) || r;
+ r = ((glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterfvNV")) == NULL) || r;
+ r = ((glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glPathParameteriNV")) == NULL) || r;
+ r = ((glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterivNV")) == NULL) || r;
+ r = ((glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)glewGetProcAddress((const GLubyte*)"glPathStencilDepthOffsetNV")) == NULL) || r;
+ r = ((glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)glewGetProcAddress((const GLubyte*)"glPathStencilFuncNV")) == NULL) || r;
+ r = ((glPathStringNV = (PFNGLPATHSTRINGNVPROC)glewGetProcAddress((const GLubyte*)"glPathStringNV")) == NULL) || r;
+ r = ((glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathSubCommandsNV")) == NULL) || r;
+ r = ((glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathSubCoordsNV")) == NULL) || r;
+ r = ((glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathTexGenNV")) == NULL) || r;
+ r = ((glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)glewGetProcAddress((const GLubyte*)"glPointAlongPathNV")) == NULL) || r;
+ r = ((glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)glewGetProcAddress((const GLubyte*)"glProgramPathFragmentInputGenNV")) == NULL) || r;
+ r = ((glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilFillPathInstancedNV")) == NULL) || r;
+ r = ((glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilFillPathNV")) == NULL) || r;
+ r = ((glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilStrokePathInstancedNV")) == NULL) || r;
+ r = ((glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilStrokePathNV")) == NULL) || r;
+ r = ((glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverFillPathInstancedNV")) == NULL) || r;
+ r = ((glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverFillPathNV")) == NULL) || r;
+ r = ((glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverStrokePathInstancedNV")) == NULL) || r;
+ r = ((glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverStrokePathNV")) == NULL) || r;
+ r = ((glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)glewGetProcAddress((const GLubyte*)"glTransformPathNV")) == NULL) || r;
+ r = ((glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glWeightPathsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_path_rendering */
+
+#ifdef GL_NV_pixel_data_range
+
+static GLboolean _glewInit_GL_NV_pixel_data_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushPixelDataRangeNV")) == NULL) || r;
+ r = ((glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glPixelDataRangeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_pixel_data_range */
+
+#ifdef GL_NV_point_sprite
+
+static GLboolean _glewInit_GL_NV_point_sprite ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriNV")) == NULL) || r;
+ r = ((glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_point_sprite */
+
+#ifdef GL_NV_polygon_mode
+
+static GLboolean _glewInit_GL_NV_polygon_mode ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonModeNV = (PFNGLPOLYGONMODENVPROC)glewGetProcAddress((const GLubyte*)"glPolygonModeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_polygon_mode */
+
+#ifdef GL_NV_present_video
+
+static GLboolean _glewInit_GL_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoi64vNV")) == NULL) || r;
+ r = ((glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoivNV")) == NULL) || r;
+ r = ((glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoui64vNV")) == NULL) || r;
+ r = ((glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideouivNV")) == NULL) || r;
+ r = ((glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameDualFillNV")) == NULL) || r;
+ r = ((glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameKeyedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_present_video */
+
+#ifdef GL_NV_primitive_restart
+
+static GLboolean _glewInit_GL_NV_primitive_restart ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartIndexNV")) == NULL) || r;
+ r = ((glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_primitive_restart */
+
+#ifdef GL_NV_read_buffer
+
+static GLboolean _glewInit_GL_NV_read_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReadBufferNV = (PFNGLREADBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glReadBufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_read_buffer */
+
+#ifdef GL_NV_register_combiners
+
+static GLboolean _glewInit_GL_NV_register_combiners ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerInputNV")) == NULL) || r;
+ r = ((glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerOutputNV")) == NULL) || r;
+ r = ((glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfNV")) == NULL) || r;
+ r = ((glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfvNV")) == NULL) || r;
+ r = ((glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameteriNV")) == NULL) || r;
+ r = ((glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterivNV")) == NULL) || r;
+ r = ((glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glFinalCombinerInputNV")) == NULL) || r;
+ r = ((glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterivNV")) == NULL) || r;
+ r = ((glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterivNV")) == NULL) || r;
+ r = ((glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterfvNV")) == NULL) || r;
+ r = ((glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_register_combiners */
+
+#ifdef GL_NV_register_combiners2
+
+static GLboolean _glewInit_GL_NV_register_combiners2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerStageParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerStageParameterfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_register_combiners2 */
+
+#ifdef GL_NV_sample_locations
+
+static GLboolean _glewInit_GL_NV_sample_locations ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)glewGetProcAddress((const GLubyte*)"glResolveDepthValuesNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_sample_locations */
+
+#ifdef GL_NV_scissor_exclusive
+
+static GLboolean _glewInit_GL_NV_scissor_exclusive ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glScissorExclusiveArrayvNV = (PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorExclusiveArrayvNV")) == NULL) || r;
+ r = ((glScissorExclusiveNV = (PFNGLSCISSOREXCLUSIVENVPROC)glewGetProcAddress((const GLubyte*)"glScissorExclusiveNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_scissor_exclusive */
+
+#ifdef GL_NV_shader_buffer_load
+
+static GLboolean _glewInit_GL_NV_shader_buffer_load ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterui64vNV")) == NULL) || r;
+ r = ((glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerui64vNV")) == NULL) || r;
+ r = ((glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterui64vNV")) == NULL) || r;
+ r = ((glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsBufferResidentNV")) == NULL) || r;
+ r = ((glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsNamedBufferResidentNV")) == NULL) || r;
+ r = ((glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeBufferNonResidentNV")) == NULL) || r;
+ r = ((glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeBufferResidentNV")) == NULL) || r;
+ r = ((glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeNamedBufferNonResidentNV")) == NULL) || r;
+ r = ((glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeNamedBufferResidentNV")) == NULL) || r;
+ r = ((glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformui64NV")) == NULL) || r;
+ r = ((glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformui64vNV")) == NULL) || r;
+ r = ((glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniformui64NV")) == NULL) || r;
+ r = ((glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniformui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_shader_buffer_load */
+
+#ifdef GL_NV_shading_rate_image
+
+static GLboolean _glewInit_GL_NV_shading_rate_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindShadingRateImageNV = (PFNGLBINDSHADINGRATEIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glBindShadingRateImageNV")) == NULL) || r;
+ r = ((glGetShadingRateImagePaletteNV = (PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)glewGetProcAddress((const GLubyte*)"glGetShadingRateImagePaletteNV")) == NULL) || r;
+ r = ((glGetShadingRateSampleLocationivNV = (PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetShadingRateSampleLocationivNV")) == NULL) || r;
+ r = ((glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateImageBarrierNV")) == NULL) || r;
+ r = ((glShadingRateImagePaletteNV = (PFNGLSHADINGRATEIMAGEPALETTENVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateImagePaletteNV")) == NULL) || r;
+ r = ((glShadingRateSampleOrderCustomNV = (PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateSampleOrderCustomNV")) == NULL) || r;
+ r = ((glShadingRateSampleOrderNV = (PFNGLSHADINGRATESAMPLEORDERNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateSampleOrderNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_shading_rate_image */
+
+#ifdef GL_NV_texture_array
+
+static GLboolean _glewInit_GL_NV_texture_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage3DNV = (PFNGLCOMPRESSEDTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DNV")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DNV = (PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DNV")) == NULL) || r;
+ r = ((glCopyTexSubImage3DNV = (PFNGLCOPYTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DNV")) == NULL) || r;
+ r = ((glFramebufferTextureLayerNV = (PFNGLFRAMEBUFFERTEXTURELAYERNVPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerNV")) == NULL) || r;
+ r = ((glTexImage3DNV = (PFNGLTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DNV")) == NULL) || r;
+ r = ((glTexSubImage3DNV = (PFNGLTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_array */
+
+#ifdef GL_NV_texture_barrier
+
+static GLboolean _glewInit_GL_NV_texture_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glTextureBarrierNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_barrier */
+
+#ifdef GL_NV_texture_multisample
+
+static GLboolean _glewInit_GL_NV_texture_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTexImage2DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DMultisampleNV")) == NULL) || r;
+ r = ((glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DMultisampleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_multisample */
+
+#ifdef GL_NV_timeline_semaphore
+
+static GLboolean _glewInit_GL_NV_timeline_semaphore ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCreateSemaphoresNV = (PFNGLCREATESEMAPHORESNVPROC)glewGetProcAddress((const GLubyte*)"glCreateSemaphoresNV")) == NULL) || r;
+ r = ((glGetSemaphoreParameterivNV = (PFNGLGETSEMAPHOREPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetSemaphoreParameterivNV")) == NULL) || r;
+ r = ((glSemaphoreParameterivNV = (PFNGLSEMAPHOREPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glSemaphoreParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_timeline_semaphore */
+
+#ifdef GL_NV_transform_feedback
+
+static GLboolean _glewInit_GL_NV_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glActiveVaryingNV")) == NULL) || r;
+ r = ((glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackNV")) == NULL) || r;
+ r = ((glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseNV")) == NULL) || r;
+ r = ((glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetNV")) == NULL) || r;
+ r = ((glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeNV")) == NULL) || r;
+ r = ((glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackNV")) == NULL) || r;
+ r = ((glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveVaryingNV")) == NULL) || r;
+ r = ((glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingNV")) == NULL) || r;
+ r = ((glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)glewGetProcAddress((const GLubyte*)"glGetVaryingLocationNV")) == NULL) || r;
+ r = ((glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackAttribsNV")) == NULL) || r;
+ r = ((glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_transform_feedback */
+
+#ifdef GL_NV_transform_feedback2
+
+static GLboolean _glewInit_GL_NV_transform_feedback2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glBindTransformFeedbackNV")) == NULL) || r;
+ r = ((glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteTransformFeedbacksNV")) == NULL) || r;
+ r = ((glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackNV")) == NULL) || r;
+ r = ((glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)"glGenTransformFeedbacksNV")) == NULL) || r;
+ r = ((glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glIsTransformFeedbackNV")) == NULL) || r;
+ r = ((glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glPauseTransformFeedbackNV")) == NULL) || r;
+ r = ((glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glResumeTransformFeedbackNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_transform_feedback2 */
+
+#ifdef GL_NV_vdpau_interop
+
+static GLboolean _glewInit_GL_NV_vdpau_interop ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUFiniNV")) == NULL) || r;
+ r = ((glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUGetSurfaceivNV")) == NULL) || r;
+ r = ((glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUInitNV")) == NULL) || r;
+ r = ((glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUIsSurfaceNV")) == NULL) || r;
+ r = ((glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUMapSurfacesNV")) == NULL) || r;
+ r = ((glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterOutputSurfaceNV")) == NULL) || r;
+ r = ((glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterVideoSurfaceNV")) == NULL) || r;
+ r = ((glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUSurfaceAccessNV")) == NULL) || r;
+ r = ((glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUUnmapSurfacesNV")) == NULL) || r;
+ r = ((glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUUnregisterSurfaceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vdpau_interop */
+
+#ifdef GL_NV_vdpau_interop2
+
+static GLboolean _glewInit_GL_NV_vdpau_interop2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVDPAURegisterVideoSurfaceWithPictureStructureNV = (PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterVideoSurfaceWithPictureStructureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vdpau_interop2 */
+
+#ifdef GL_NV_vertex_array_range
+
+static GLboolean _glewInit_GL_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeNV")) == NULL) || r;
+ r = ((glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_array_range */
+
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLi64vNV")) == NULL) || r;
+ r = ((glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64NV")) == NULL) || r;
+ r = ((glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64NV")) == NULL) || r;
+ r = ((glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64NV")) == NULL) || r;
+ r = ((glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64NV")) == NULL) || r;
+ r = ((glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLFormatNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+#ifdef GL_NV_vertex_buffer_unified_memory
+
+static GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)glewGetProcAddress((const GLubyte*)"glBufferAddressRangeNV")) == NULL) || r;
+ r = ((glColorFormatNV = (PFNGLCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glColorFormatNV")) == NULL) || r;
+ r = ((glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagFormatNV")) == NULL) || r;
+ r = ((glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordFormatNV")) == NULL) || r;
+ r = ((glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerui64i_vNV")) == NULL) || r;
+ r = ((glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glIndexFormatNV")) == NULL) || r;
+ r = ((glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glNormalFormatNV")) == NULL) || r;
+ r = ((glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorFormatNV")) == NULL) || r;
+ r = ((glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordFormatNV")) == NULL) || r;
+ r = ((glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribFormatNV")) == NULL) || r;
+ r = ((glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIFormatNV")) == NULL) || r;
+ r = ((glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexFormatNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+#ifdef GL_NV_vertex_program
+
+static GLboolean _glewInit_GL_NV_vertex_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glAreProgramsResidentNV")) == NULL) || r;
+ r = ((glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glBindProgramNV")) == NULL) || r;
+ r = ((glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsNV")) == NULL) || r;
+ r = ((glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glExecuteProgramNV")) == NULL) || r;
+ r = ((glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsNV")) == NULL) || r;
+ r = ((glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterdvNV")) == NULL) || r;
+ r = ((glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterfvNV")) == NULL) || r;
+ r = ((glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringNV")) == NULL) || r;
+ r = ((glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivNV")) == NULL) || r;
+ r = ((glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetTrackMatrixivNV")) == NULL) || r;
+ r = ((glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervNV")) == NULL) || r;
+ r = ((glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvNV")) == NULL) || r;
+ r = ((glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvNV")) == NULL) || r;
+ r = ((glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivNV")) == NULL) || r;
+ r = ((glIsProgramNV = (PFNGLISPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glIsProgramNV")) == NULL) || r;
+ r = ((glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glLoadProgramNV")) == NULL) || r;
+ r = ((glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dNV")) == NULL) || r;
+ r = ((glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dvNV")) == NULL) || r;
+ r = ((glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fNV")) == NULL) || r;
+ r = ((glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fvNV")) == NULL) || r;
+ r = ((glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4dvNV")) == NULL) || r;
+ r = ((glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4fvNV")) == NULL) || r;
+ r = ((glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glRequestResidentProgramsNV")) == NULL) || r;
+ r = ((glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)glewGetProcAddress((const GLubyte*)"glTrackMatrixNV")) == NULL) || r;
+ r = ((glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dNV")) == NULL) || r;
+ r = ((glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvNV")) == NULL) || r;
+ r = ((glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fNV")) == NULL) || r;
+ r = ((glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvNV")) == NULL) || r;
+ r = ((glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sNV")) == NULL) || r;
+ r = ((glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svNV")) == NULL) || r;
+ r = ((glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dNV")) == NULL) || r;
+ r = ((glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvNV")) == NULL) || r;
+ r = ((glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fNV")) == NULL) || r;
+ r = ((glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvNV")) == NULL) || r;
+ r = ((glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sNV")) == NULL) || r;
+ r = ((glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svNV")) == NULL) || r;
+ r = ((glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dNV")) == NULL) || r;
+ r = ((glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvNV")) == NULL) || r;
+ r = ((glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fNV")) == NULL) || r;
+ r = ((glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvNV")) == NULL) || r;
+ r = ((glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sNV")) == NULL) || r;
+ r = ((glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svNV")) == NULL) || r;
+ r = ((glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dNV")) == NULL) || r;
+ r = ((glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvNV")) == NULL) || r;
+ r = ((glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fNV")) == NULL) || r;
+ r = ((glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvNV")) == NULL) || r;
+ r = ((glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sNV")) == NULL) || r;
+ r = ((glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svNV")) == NULL) || r;
+ r = ((glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubNV")) == NULL) || r;
+ r = ((glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvNV")) == NULL) || r;
+ r = ((glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerNV")) == NULL) || r;
+ r = ((glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1dvNV")) == NULL) || r;
+ r = ((glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1fvNV")) == NULL) || r;
+ r = ((glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1svNV")) == NULL) || r;
+ r = ((glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2dvNV")) == NULL) || r;
+ r = ((glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2fvNV")) == NULL) || r;
+ r = ((glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2svNV")) == NULL) || r;
+ r = ((glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3dvNV")) == NULL) || r;
+ r = ((glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3fvNV")) == NULL) || r;
+ r = ((glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3svNV")) == NULL) || r;
+ r = ((glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4dvNV")) == NULL) || r;
+ r = ((glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4fvNV")) == NULL) || r;
+ r = ((glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4svNV")) == NULL) || r;
+ r = ((glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4ubvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_program */
+
+#ifdef GL_NV_video_capture
+
+static GLboolean _glewInit_GL_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glBeginVideoCaptureNV")) == NULL) || r;
+ r = ((glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glBindVideoCaptureStreamBufferNV")) == NULL) || r;
+ r = ((glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)glewGetProcAddress((const GLubyte*)"glBindVideoCaptureStreamTextureNV")) == NULL) || r;
+ r = ((glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glEndVideoCaptureNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamdvNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamfvNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamivNV")) == NULL) || r;
+ r = ((glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureivNV")) == NULL) || r;
+ r = ((glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterdvNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterfvNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_video_capture */
+
+#ifdef GL_NV_viewport_array
+
+static GLboolean _glewInit_GL_NV_viewport_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthRangeArrayfvNV = (PFNGLDEPTHRANGEARRAYFVNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeArrayfvNV")) == NULL) || r;
+ r = ((glDepthRangeIndexedfNV = (PFNGLDEPTHRANGEINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeIndexedfNV")) == NULL) || r;
+ r = ((glDisableiNV = (PFNGLDISABLEINVPROC)glewGetProcAddress((const GLubyte*)"glDisableiNV")) == NULL) || r;
+ r = ((glEnableiNV = (PFNGLENABLEINVPROC)glewGetProcAddress((const GLubyte*)"glEnableiNV")) == NULL) || r;
+ r = ((glGetFloati_vNV = (PFNGLGETFLOATI_VNVPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_vNV")) == NULL) || r;
+ r = ((glIsEnablediNV = (PFNGLISENABLEDINVPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediNV")) == NULL) || r;
+ r = ((glScissorArrayvNV = (PFNGLSCISSORARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorArrayvNV")) == NULL) || r;
+ r = ((glScissorIndexedNV = (PFNGLSCISSORINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedNV")) == NULL) || r;
+ r = ((glScissorIndexedvNV = (PFNGLSCISSORINDEXEDVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedvNV")) == NULL) || r;
+ r = ((glViewportArrayvNV = (PFNGLVIEWPORTARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glViewportArrayvNV")) == NULL) || r;
+ r = ((glViewportIndexedfNV = (PFNGLVIEWPORTINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfNV")) == NULL) || r;
+ r = ((glViewportIndexedfvNV = (PFNGLVIEWPORTINDEXEDFVNVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_viewport_array */
+
+#ifdef GL_NV_viewport_swizzle
+
+static GLboolean _glewInit_GL_NV_viewport_swizzle ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)glewGetProcAddress((const GLubyte*)"glViewportSwizzleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_viewport_swizzle */
+
+#ifdef GL_OES_EGL_image
+
+static GLboolean _glewInit_GL_OES_EGL_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEGLImageTargetRenderbufferStorageOES = (PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetRenderbufferStorageOES")) == NULL) || r;
+ r = ((glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTexture2DOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_EGL_image */
+
+#ifdef GL_OES_blend_equation_separate
+
+static GLboolean _glewInit_GL_OES_blend_equation_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateOES = (PFNGLBLENDEQUATIONSEPARATEOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_equation_separate */
+
+#ifdef GL_OES_blend_func_separate
+
+static GLboolean _glewInit_GL_OES_blend_func_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendFuncSeparateOES = (PFNGLBLENDFUNCSEPARATEOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_func_separate */
+
+#ifdef GL_OES_blend_subtract
+
+static GLboolean _glewInit_GL_OES_blend_subtract ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationOES = (PFNGLBLENDEQUATIONOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_subtract */
+
+#ifdef GL_OES_copy_image
+
+static GLboolean _glewInit_GL_OES_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataOES = (PFNGLCOPYIMAGESUBDATAOESPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_copy_image */
+
+#ifdef GL_OES_draw_buffers_indexed
+
+static GLboolean _glewInit_GL_OES_draw_buffers_indexed ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiOES = (PFNGLBLENDEQUATIONSEPARATEIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiOES")) == NULL) || r;
+ r = ((glBlendEquationiOES = (PFNGLBLENDEQUATIONIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiOES")) == NULL) || r;
+ r = ((glBlendFuncSeparateiOES = (PFNGLBLENDFUNCSEPARATEIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiOES")) == NULL) || r;
+ r = ((glBlendFunciOES = (PFNGLBLENDFUNCIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciOES")) == NULL) || r;
+ r = ((glColorMaskiOES = (PFNGLCOLORMASKIOESPROC)glewGetProcAddress((const GLubyte*)"glColorMaskiOES")) == NULL) || r;
+ r = ((glDisableiOES = (PFNGLDISABLEIOESPROC)glewGetProcAddress((const GLubyte*)"glDisableiOES")) == NULL) || r;
+ r = ((glEnableiOES = (PFNGLENABLEIOESPROC)glewGetProcAddress((const GLubyte*)"glEnableiOES")) == NULL) || r;
+ r = ((glIsEnablediOES = (PFNGLISENABLEDIOESPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+#ifdef GL_OES_framebuffer_object
+
+static GLboolean _glewInit_GL_OES_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebufferOES = (PFNGLBINDFRAMEBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glBindFramebufferOES")) == NULL) || r;
+ r = ((glBindRenderbufferOES = (PFNGLBINDRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbufferOES")) == NULL) || r;
+ r = ((glCheckFramebufferStatusOES = (PFNGLCHECKFRAMEBUFFERSTATUSOESPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatusOES")) == NULL) || r;
+ r = ((glDeleteFramebuffersOES = (PFNGLDELETEFRAMEBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffersOES")) == NULL) || r;
+ r = ((glDeleteRenderbuffersOES = (PFNGLDELETERENDERBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffersOES")) == NULL) || r;
+ r = ((glFramebufferRenderbufferOES = (PFNGLFRAMEBUFFERRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbufferOES")) == NULL) || r;
+ r = ((glFramebufferTexture2DOES = (PFNGLFRAMEBUFFERTEXTURE2DOESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DOES")) == NULL) || r;
+ r = ((glGenFramebuffersOES = (PFNGLGENFRAMEBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffersOES")) == NULL) || r;
+ r = ((glGenRenderbuffersOES = (PFNGLGENRENDERBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffersOES")) == NULL) || r;
+ r = ((glGenerateMipmapOES = (PFNGLGENERATEMIPMAPOESPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmapOES")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameterivOES = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameterivOES")) == NULL) || r;
+ r = ((glGetRenderbufferParameterivOES = (PFNGLGETRENDERBUFFERPARAMETERIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameterivOES")) == NULL) || r;
+ r = ((glIsFramebufferOES = (PFNGLISFRAMEBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glIsFramebufferOES")) == NULL) || r;
+ r = ((glIsRenderbufferOES = (PFNGLISRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbufferOES")) == NULL) || r;
+ r = ((glRenderbufferStorageOES = (PFNGLRENDERBUFFERSTORAGEOESPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_framebuffer_object */
+
+#ifdef GL_OES_get_program_binary
+
+static GLboolean _glewInit_GL_OES_get_program_binary ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramBinaryOES = (PFNGLGETPROGRAMBINARYOESPROC)glewGetProcAddress((const GLubyte*)"glGetProgramBinaryOES")) == NULL) || r;
+ r = ((glProgramBinaryOES = (PFNGLPROGRAMBINARYOESPROC)glewGetProcAddress((const GLubyte*)"glProgramBinaryOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_get_program_binary */
+
+#ifdef GL_OES_mapbuffer
+
+static GLboolean _glewInit_GL_OES_mapbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetBufferPointervOES = (PFNGLGETBUFFERPOINTERVOESPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointervOES")) == NULL) || r;
+ r = ((glMapBufferOES = (PFNGLMAPBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glMapBufferOES")) == NULL) || r;
+ r = ((glUnmapBufferOES = (PFNGLUNMAPBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glUnmapBufferOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_mapbuffer */
+
+#ifdef GL_OES_matrix_palette
+
+static GLboolean _glewInit_GL_OES_matrix_palette ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCurrentPaletteMatrixOES = (PFNGLCURRENTPALETTEMATRIXOESPROC)glewGetProcAddress((const GLubyte*)"glCurrentPaletteMatrixOES")) == NULL) || r;
+ r = ((glLoadPaletteFromModelViewMatrixOES = (PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC)glewGetProcAddress((const GLubyte*)"glLoadPaletteFromModelViewMatrixOES")) == NULL) || r;
+ r = ((glMatrixIndexPointerOES = (PFNGLMATRIXINDEXPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexPointerOES")) == NULL) || r;
+ r = ((glWeightPointerOES = (PFNGLWEIGHTPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glWeightPointerOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_matrix_palette */
+
+#ifdef GL_OES_sample_shading
+
+static GLboolean _glewInit_GL_OES_sample_shading ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMinSampleShadingOES = (PFNGLMINSAMPLESHADINGOESPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShadingOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_sample_shading */
+
+#ifdef GL_OES_single_precision
+
+static GLboolean _glewInit_GL_OES_single_precision ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)glewGetProcAddress((const GLubyte*)"glClearDepthfOES")) == NULL) || r;
+ r = ((glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glClipPlanefOES")) == NULL) || r;
+ r = ((glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)glewGetProcAddress((const GLubyte*)"glDepthRangefOES")) == NULL) || r;
+ r = ((glFrustumfOES = (PFNGLFRUSTUMFOESPROC)glewGetProcAddress((const GLubyte*)"glFrustumfOES")) == NULL) || r;
+ r = ((glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanefOES")) == NULL) || r;
+ r = ((glOrthofOES = (PFNGLORTHOFOESPROC)glewGetProcAddress((const GLubyte*)"glOrthofOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_single_precision */
+
+#ifdef GL_OES_texture_3D
+
+static GLboolean _glewInit_GL_OES_texture_3D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage3DOES = (PFNGLCOMPRESSEDTEXIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DOES")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DOES = (PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DOES")) == NULL) || r;
+ r = ((glCopyTexSubImage3DOES = (PFNGLCOPYTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DOES")) == NULL) || r;
+ r = ((glFramebufferTexture3DOES = (PFNGLFRAMEBUFFERTEXTURE3DOESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3DOES")) == NULL) || r;
+ r = ((glTexImage3DOES = (PFNGLTEXIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DOES")) == NULL) || r;
+ r = ((glTexSubImage3DOES = (PFNGLTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_3D */
+
+#ifdef GL_OES_texture_border_clamp
+
+static GLboolean _glewInit_GL_OES_texture_border_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSamplerParameterIivOES = (PFNGLGETSAMPLERPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIivOES")) == NULL) || r;
+ r = ((glGetSamplerParameterIuivOES = (PFNGLGETSAMPLERPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuivOES")) == NULL) || r;
+ r = ((glGetTexParameterIivOES = (PFNGLGETTEXPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIivOES")) == NULL) || r;
+ r = ((glGetTexParameterIuivOES = (PFNGLGETTEXPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuivOES")) == NULL) || r;
+ r = ((glSamplerParameterIivOES = (PFNGLSAMPLERPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIivOES")) == NULL) || r;
+ r = ((glSamplerParameterIuivOES = (PFNGLSAMPLERPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuivOES")) == NULL) || r;
+ r = ((glTexParameterIivOES = (PFNGLTEXPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIivOES")) == NULL) || r;
+ r = ((glTexParameterIuivOES = (PFNGLTEXPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuivOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_border_clamp */
+
+#ifdef GL_OES_texture_buffer
+
+static GLboolean _glewInit_GL_OES_texture_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferOES = (PFNGLTEXBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glTexBufferOES")) == NULL) || r;
+ r = ((glTexBufferRangeOES = (PFNGLTEXBUFFERRANGEOESPROC)glewGetProcAddress((const GLubyte*)"glTexBufferRangeOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_buffer */
+
+#ifdef GL_OES_texture_cube_map
+
+static GLboolean _glewInit_GL_OES_texture_cube_map ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexGenfvOES = (PFNGLGETTEXGENFVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenfvOES")) == NULL) || r;
+ r = ((glGetTexGenivOES = (PFNGLGETTEXGENIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenivOES")) == NULL) || r;
+ r = ((glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenxvOES")) == NULL) || r;
+ r = ((glTexGenfOES = (PFNGLTEXGENFOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenfOES")) == NULL) || r;
+ r = ((glTexGenfvOES = (PFNGLTEXGENFVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenfvOES")) == NULL) || r;
+ r = ((glTexGeniOES = (PFNGLTEXGENIOESPROC)glewGetProcAddress((const GLubyte*)"glTexGeniOES")) == NULL) || r;
+ r = ((glTexGenivOES = (PFNGLTEXGENIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenivOES")) == NULL) || r;
+ r = ((glTexGenxOES = (PFNGLTEXGENXOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenxOES")) == NULL) || r;
+ r = ((glTexGenxvOES = (PFNGLTEXGENXVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenxvOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_cube_map */
+
+#ifdef GL_OES_texture_storage_multisample_2d_array
+
+static GLboolean _glewInit_GL_OES_texture_storage_multisample_2d_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage3DMultisampleOES = (PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DMultisampleOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+#ifdef GL_OES_texture_view
+
+static GLboolean _glewInit_GL_OES_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureViewOES = (PFNGLTEXTUREVIEWOESPROC)glewGetProcAddress((const GLubyte*)"glTextureViewOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_view */
+
+#ifdef GL_OES_vertex_array_object
+
+static GLboolean _glewInit_GL_OES_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArrayOES")) == NULL) || r;
+ r = ((glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysOES")) == NULL) || r;
+ r = ((glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysOES")) == NULL) || r;
+ r = ((glIsVertexArrayOES = (PFNGLISVERTEXARRAYOESPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArrayOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_vertex_array_object */
+
+#ifdef GL_OVR_multiview
+
+static GLboolean _glewInit_GL_OVR_multiview ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureMultiviewOVR")) == NULL) || r;
+ r = ((glNamedFramebufferTextureMultiviewOVR = (PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureMultiviewOVR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OVR_multiview */
+
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureMultisampleMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureMultisampleMultiviewOVR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+#ifdef GL_QCOM_alpha_test
+
+static GLboolean _glewInit_GL_QCOM_alpha_test ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFuncQCOM = (PFNGLALPHAFUNCQCOMPROC)glewGetProcAddress((const GLubyte*)"glAlphaFuncQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_alpha_test */
+
+#ifdef GL_QCOM_driver_control
+
+static GLboolean _glewInit_GL_QCOM_driver_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDisableDriverControlQCOM = (PFNGLDISABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)"glDisableDriverControlQCOM")) == NULL) || r;
+ r = ((glEnableDriverControlQCOM = (PFNGLENABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)"glEnableDriverControlQCOM")) == NULL) || r;
+ r = ((glGetDriverControlStringQCOM = (PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glGetDriverControlStringQCOM")) == NULL) || r;
+ r = ((glGetDriverControlsQCOM = (PFNGLGETDRIVERCONTROLSQCOMPROC)glewGetProcAddress((const GLubyte*)"glGetDriverControlsQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_driver_control */
+
+#ifdef GL_QCOM_extended_get
+
+static GLboolean _glewInit_GL_QCOM_extended_get ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtGetBufferPointervQCOM = (PFNGLEXTGETBUFFERPOINTERVQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetBufferPointervQCOM")) == NULL) || r;
+ r = ((glExtGetBuffersQCOM = (PFNGLEXTGETBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetBuffersQCOM")) == NULL) || r;
+ r = ((glExtGetFramebuffersQCOM = (PFNGLEXTGETFRAMEBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetFramebuffersQCOM")) == NULL) || r;
+ r = ((glExtGetRenderbuffersQCOM = (PFNGLEXTGETRENDERBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetRenderbuffersQCOM")) == NULL) || r;
+ r = ((glExtGetTexLevelParameterivQCOM = (PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexLevelParameterivQCOM")) == NULL) || r;
+ r = ((glExtGetTexSubImageQCOM = (PFNGLEXTGETTEXSUBIMAGEQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexSubImageQCOM")) == NULL) || r;
+ r = ((glExtGetTexturesQCOM = (PFNGLEXTGETTEXTURESQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexturesQCOM")) == NULL) || r;
+ r = ((glExtTexObjectStateOverrideiQCOM = (PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtTexObjectStateOverrideiQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_extended_get */
+
+#ifdef GL_QCOM_extended_get2
+
+static GLboolean _glewInit_GL_QCOM_extended_get2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtGetProgramBinarySourceQCOM = (PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetProgramBinarySourceQCOM")) == NULL) || r;
+ r = ((glExtGetProgramsQCOM = (PFNGLEXTGETPROGRAMSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetProgramsQCOM")) == NULL) || r;
+ r = ((glExtGetShadersQCOM = (PFNGLEXTGETSHADERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetShadersQCOM")) == NULL) || r;
+ r = ((glExtIsProgramBinaryQCOM = (PFNGLEXTISPROGRAMBINARYQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtIsProgramBinaryQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_extended_get2 */
+
+#ifdef GL_QCOM_frame_extrapolation
+
+static GLboolean _glewInit_GL_QCOM_frame_extrapolation ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtrapolateTex2DQCOM = (PFNGLEXTRAPOLATETEX2DQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtrapolateTex2DQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+#ifdef GL_QCOM_framebuffer_foveated
+
+static GLboolean _glewInit_GL_QCOM_framebuffer_foveated ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFoveationConfigQCOM = (PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFoveationConfigQCOM")) == NULL) || r;
+ r = ((glFramebufferFoveationParametersQCOM = (PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFoveationParametersQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+#ifdef GL_QCOM_motion_estimation
+
+static GLboolean _glewInit_GL_QCOM_motion_estimation ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexEstimateMotionQCOM = (PFNGLTEXESTIMATEMOTIONQCOMPROC)glewGetProcAddress((const GLubyte*)"glTexEstimateMotionQCOM")) == NULL) || r;
+ r = ((glTexEstimateMotionRegionsQCOM = (PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC)glewGetProcAddress((const GLubyte*)"glTexEstimateMotionRegionsQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_motion_estimation */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+static GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFetchBarrierQCOM = (PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFetchBarrierQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+#ifdef GL_QCOM_shading_rate
+
+static GLboolean _glewInit_GL_QCOM_shading_rate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glShadingRateQCOM = (PFNGLSHADINGRATEQCOMPROC)glewGetProcAddress((const GLubyte*)"glShadingRateQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_shading_rate */
+
+#ifdef GL_QCOM_texture_foveated
+
+static GLboolean _glewInit_GL_QCOM_texture_foveated ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureFoveationParametersQCOM = (PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glTextureFoveationParametersQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_texture_foveated */
+
+#ifdef GL_QCOM_tiled_rendering
+
+static GLboolean _glewInit_GL_QCOM_tiled_rendering ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEndTilingQCOM = (PFNGLENDTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glEndTilingQCOM")) == NULL) || r;
+ r = ((glStartTilingQCOM = (PFNGLSTARTTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glStartTilingQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_tiled_rendering */
+
+#ifdef GL_REGAL_ES1_0_compatibility
+
+static GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFuncx = (PFNGLALPHAFUNCXPROC)glewGetProcAddress((const GLubyte*)"glAlphaFuncx")) == NULL) || r;
+ r = ((glClearColorx = (PFNGLCLEARCOLORXPROC)glewGetProcAddress((const GLubyte*)"glClearColorx")) == NULL) || r;
+ r = ((glClearDepthx = (PFNGLCLEARDEPTHXPROC)glewGetProcAddress((const GLubyte*)"glClearDepthx")) == NULL) || r;
+ r = ((glColor4x = (PFNGLCOLOR4XPROC)glewGetProcAddress((const GLubyte*)"glColor4x")) == NULL) || r;
+ r = ((glDepthRangex = (PFNGLDEPTHRANGEXPROC)glewGetProcAddress((const GLubyte*)"glDepthRangex")) == NULL) || r;
+ r = ((glFogx = (PFNGLFOGXPROC)glewGetProcAddress((const GLubyte*)"glFogx")) == NULL) || r;
+ r = ((glFogxv = (PFNGLFOGXVPROC)glewGetProcAddress((const GLubyte*)"glFogxv")) == NULL) || r;
+ r = ((glFrustumf = (PFNGLFRUSTUMFPROC)glewGetProcAddress((const GLubyte*)"glFrustumf")) == NULL) || r;
+ r = ((glFrustumx = (PFNGLFRUSTUMXPROC)glewGetProcAddress((const GLubyte*)"glFrustumx")) == NULL) || r;
+ r = ((glLightModelx = (PFNGLLIGHTMODELXPROC)glewGetProcAddress((const GLubyte*)"glLightModelx")) == NULL) || r;
+ r = ((glLightModelxv = (PFNGLLIGHTMODELXVPROC)glewGetProcAddress((const GLubyte*)"glLightModelxv")) == NULL) || r;
+ r = ((glLightx = (PFNGLLIGHTXPROC)glewGetProcAddress((const GLubyte*)"glLightx")) == NULL) || r;
+ r = ((glLightxv = (PFNGLLIGHTXVPROC)glewGetProcAddress((const GLubyte*)"glLightxv")) == NULL) || r;
+ r = ((glLineWidthx = (PFNGLLINEWIDTHXPROC)glewGetProcAddress((const GLubyte*)"glLineWidthx")) == NULL) || r;
+ r = ((glLoadMatrixx = (PFNGLLOADMATRIXXPROC)glewGetProcAddress((const GLubyte*)"glLoadMatrixx")) == NULL) || r;
+ r = ((glMaterialx = (PFNGLMATERIALXPROC)glewGetProcAddress((const GLubyte*)"glMaterialx")) == NULL) || r;
+ r = ((glMaterialxv = (PFNGLMATERIALXVPROC)glewGetProcAddress((const GLubyte*)"glMaterialxv")) == NULL) || r;
+ r = ((glMultMatrixx = (PFNGLMULTMATRIXXPROC)glewGetProcAddress((const GLubyte*)"glMultMatrixx")) == NULL) || r;
+ r = ((glMultiTexCoord4x = (PFNGLMULTITEXCOORD4XPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4x")) == NULL) || r;
+ r = ((glNormal3x = (PFNGLNORMAL3XPROC)glewGetProcAddress((const GLubyte*)"glNormal3x")) == NULL) || r;
+ r = ((glOrthof = (PFNGLORTHOFPROC)glewGetProcAddress((const GLubyte*)"glOrthof")) == NULL) || r;
+ r = ((glOrthox = (PFNGLORTHOXPROC)glewGetProcAddress((const GLubyte*)"glOrthox")) == NULL) || r;
+ r = ((glPointSizex = (PFNGLPOINTSIZEXPROC)glewGetProcAddress((const GLubyte*)"glPointSizex")) == NULL) || r;
+ r = ((glPolygonOffsetx = (PFNGLPOLYGONOFFSETXPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetx")) == NULL) || r;
+ r = ((glRotatex = (PFNGLROTATEXPROC)glewGetProcAddress((const GLubyte*)"glRotatex")) == NULL) || r;
+ r = ((glSampleCoveragex = (PFNGLSAMPLECOVERAGEXPROC)glewGetProcAddress((const GLubyte*)"glSampleCoveragex")) == NULL) || r;
+ r = ((glScalex = (PFNGLSCALEXPROC)glewGetProcAddress((const GLubyte*)"glScalex")) == NULL) || r;
+ r = ((glTexEnvx = (PFNGLTEXENVXPROC)glewGetProcAddress((const GLubyte*)"glTexEnvx")) == NULL) || r;
+ r = ((glTexEnvxv = (PFNGLTEXENVXVPROC)glewGetProcAddress((const GLubyte*)"glTexEnvxv")) == NULL) || r;
+ r = ((glTexParameterx = (PFNGLTEXPARAMETERXPROC)glewGetProcAddress((const GLubyte*)"glTexParameterx")) == NULL) || r;
+ r = ((glTranslatex = (PFNGLTRANSLATEXPROC)glewGetProcAddress((const GLubyte*)"glTranslatex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+#ifdef GL_REGAL_ES1_1_compatibility
+
+static GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipPlanef = (PFNGLCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)"glClipPlanef")) == NULL) || r;
+ r = ((glClipPlanex = (PFNGLCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)"glClipPlanex")) == NULL) || r;
+ r = ((glGetClipPlanef = (PFNGLGETCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanef")) == NULL) || r;
+ r = ((glGetClipPlanex = (PFNGLGETCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanex")) == NULL) || r;
+ r = ((glGetFixedv = (PFNGLGETFIXEDVPROC)glewGetProcAddress((const GLubyte*)"glGetFixedv")) == NULL) || r;
+ r = ((glGetLightxv = (PFNGLGETLIGHTXVPROC)glewGetProcAddress((const GLubyte*)"glGetLightxv")) == NULL) || r;
+ r = ((glGetMaterialxv = (PFNGLGETMATERIALXVPROC)glewGetProcAddress((const GLubyte*)"glGetMaterialxv")) == NULL) || r;
+ r = ((glGetTexEnvxv = (PFNGLGETTEXENVXVPROC)glewGetProcAddress((const GLubyte*)"glGetTexEnvxv")) == NULL) || r;
+ r = ((glGetTexParameterxv = (PFNGLGETTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterxv")) == NULL) || r;
+ r = ((glPointParameterx = (PFNGLPOINTPARAMETERXPROC)glewGetProcAddress((const GLubyte*)"glPointParameterx")) == NULL) || r;
+ r = ((glPointParameterxv = (PFNGLPOINTPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterxv")) == NULL) || r;
+ r = ((glPointSizePointerOES = (PFNGLPOINTSIZEPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glPointSizePointerOES")) == NULL) || r;
+ r = ((glTexParameterxv = (PFNGLTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterxv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+#ifdef GL_REGAL_error_string
+
+static GLboolean _glewInit_GL_REGAL_error_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glErrorStringREGAL = (PFNGLERRORSTRINGREGALPROC)glewGetProcAddress((const GLubyte*)"glErrorStringREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_error_string */
+
+#ifdef GL_REGAL_extension_query
+
+static GLboolean _glewInit_GL_REGAL_extension_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetExtensionREGAL = (PFNGLGETEXTENSIONREGALPROC)glewGetProcAddress((const GLubyte*)"glGetExtensionREGAL")) == NULL) || r;
+ r = ((glIsSupportedREGAL = (PFNGLISSUPPORTEDREGALPROC)glewGetProcAddress((const GLubyte*)"glIsSupportedREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_extension_query */
+
+#ifdef GL_REGAL_log
+
+static GLboolean _glewInit_GL_REGAL_log ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLogMessageCallbackREGAL = (PFNGLLOGMESSAGECALLBACKREGALPROC)glewGetProcAddress((const GLubyte*)"glLogMessageCallbackREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_log */
+
+#ifdef GL_REGAL_proc_address
+
+static GLboolean _glewInit_GL_REGAL_proc_address ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProcAddressREGAL = (PFNGLGETPROCADDRESSREGALPROC)glewGetProcAddress((const GLubyte*)"glGetProcAddressREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_proc_address */
+
+#ifdef GL_SGIS_detail_texture
+
+static GLboolean _glewInit_GL_SGIS_detail_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glDetailTexFuncSGIS")) == NULL) || r;
+ r = ((glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetDetailTexFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_detail_texture */
+
+#ifdef GL_SGIS_fog_function
+
+static GLboolean _glewInit_GL_SGIS_fog_function ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glFogFuncSGIS")) == NULL) || r;
+ r = ((glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetFogFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_fog_function */
+
+#ifdef GL_SGIS_multisample
+
+static GLboolean _glewInit_GL_SGIS_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskSGIS")) == NULL) || r;
+ r = ((glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_multisample */
+
+#ifdef GL_SGIS_multitexture
+
+static GLboolean _glewInit_GL_SGIS_multitexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInterleavedTextureCoordSetsSGIS = (PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC)glewGetProcAddress((const GLubyte*)"glInterleavedTextureCoordSetsSGIS")) == NULL) || r;
+ r = ((glSelectTextureCoordSetSGIS = (PFNGLSELECTTEXTURECOORDSETSGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureCoordSetSGIS")) == NULL) || r;
+ r = ((glSelectTextureSGIS = (PFNGLSELECTTEXTURESGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureSGIS")) == NULL) || r;
+ r = ((glSelectTextureTransformSGIS = (PFNGLSELECTTEXTURETRANSFORMSGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureTransformSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_multitexture */
+
+#ifdef GL_SGIS_shared_multisample
+
+static GLboolean _glewInit_GL_SGIS_shared_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultisampleSubRectPosSGIS = (PFNGLMULTISAMPLESUBRECTPOSSGISPROC)glewGetProcAddress((const GLubyte*)"glMultisampleSubRectPosSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_shared_multisample */
+
+#ifdef GL_SGIS_sharpen_texture
+
+static GLboolean _glewInit_GL_SGIS_sharpen_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetSharpenTexFuncSGIS")) == NULL) || r;
+ r = ((glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glSharpenTexFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_sharpen_texture */
+
+#ifdef GL_SGIS_texture4D
+
+static GLboolean _glewInit_GL_SGIS_texture4D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexImage4DSGIS")) == NULL) || r;
+ r = ((glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage4DSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_texture4D */
+
+#ifdef GL_SGIS_texture_filter4
+
+static GLboolean _glewInit_GL_SGIS_texture_filter4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetTexFilterFuncSGIS")) == NULL) || r;
+ r = ((glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glTexFilterFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_texture_filter4 */
+
+#ifdef GL_SGIX_async
+
+static GLboolean _glewInit_GL_SGIX_async ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glAsyncMarkerSGIX")) == NULL) || r;
+ r = ((glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteAsyncMarkersSGIX")) == NULL) || r;
+ r = ((glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glFinishAsyncSGIX")) == NULL) || r;
+ r = ((glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenAsyncMarkersSGIX")) == NULL) || r;
+ r = ((glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsAsyncMarkerSGIX")) == NULL) || r;
+ r = ((glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glPollAsyncSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_async */
+
+#ifdef GL_SGIX_datapipe
+
+static GLboolean _glewInit_GL_SGIX_datapipe ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAddressSpace = (PFNGLADDRESSSPACEPROC)glewGetProcAddress((const GLubyte*)"glAddressSpace")) == NULL) || r;
+ r = ((glDataPipe = (PFNGLDATAPIPEPROC)glewGetProcAddress((const GLubyte*)"glDataPipe")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_datapipe */
+
+#ifdef GL_SGIX_flush_raster
+
+static GLboolean _glewInit_GL_SGIX_flush_raster ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)glewGetProcAddress((const GLubyte*)"glFlushRasterSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_flush_raster */
+
+#ifdef GL_SGIX_fog_layers
+
+static GLboolean _glewInit_GL_SGIX_fog_layers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogLayersSGIX = (PFNGLFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glFogLayersSGIX")) == NULL) || r;
+ r = ((glGetFogLayersSGIX = (PFNGLGETFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFogLayersSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fog_layers */
+
+#ifdef GL_SGIX_fog_texture
+
+static GLboolean _glewInit_GL_SGIX_fog_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureFogSGIX = (PFNGLTEXTUREFOGSGIXPROC)glewGetProcAddress((const GLubyte*)"glTextureFogSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fog_texture */
+
+#ifdef GL_SGIX_fragment_specular_lighting
+
+static GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvSGIX")) == NULL) || r;
+ r = ((glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivSGIX")) == NULL) || r;
+ r = ((glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfSGIX")) == NULL) || r;
+ r = ((glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvSGIX")) == NULL) || r;
+ r = ((glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiSGIX")) == NULL) || r;
+ r = ((glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivSGIX")) == NULL) || r;
+ r = ((glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvSGIX")) == NULL) || r;
+ r = ((glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivSGIX")) == NULL) || r;
+ r = ((glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvSGIX")) == NULL) || r;
+ r = ((glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+#ifdef GL_SGIX_framezoom
+
+static GLboolean _glewInit_GL_SGIX_framezoom ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)glewGetProcAddress((const GLubyte*)"glFrameZoomSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_framezoom */
+
+#ifdef GL_SGIX_igloo_interface
+
+static GLboolean _glewInit_GL_SGIX_igloo_interface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)glewGetProcAddress((const GLubyte*)"glIglooInterfaceSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_igloo_interface */
+
+#ifdef GL_SGIX_mpeg1
+
+static GLboolean _glewInit_GL_SGIX_mpeg1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAllocMPEGPredictorsSGIX = (PFNGLALLOCMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glAllocMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glDeleteMPEGPredictorsSGIX = (PFNGLDELETEMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glGenMPEGPredictorsSGIX = (PFNGLGENMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glGetMPEGParameterfvSGIX = (PFNGLGETMPEGPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGParameterfvSGIX")) == NULL) || r;
+ r = ((glGetMPEGParameterivSGIX = (PFNGLGETMPEGPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGParameterivSGIX")) == NULL) || r;
+ r = ((glGetMPEGPredictorSGIX = (PFNGLGETMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glGetMPEGQuantTableubv = (PFNGLGETMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGQuantTableubv")) == NULL) || r;
+ r = ((glIsMPEGPredictorSGIX = (PFNGLISMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glMPEGPredictorSGIX = (PFNGLMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glMPEGQuantTableubv = (PFNGLMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)"glMPEGQuantTableubv")) == NULL) || r;
+ r = ((glSwapMPEGPredictorsSGIX = (PFNGLSWAPMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glSwapMPEGPredictorsSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_mpeg1 */
+
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+
+static GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetNonlinLightfvSGIX = (PFNGLGETNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetNonlinLightfvSGIX")) == NULL) || r;
+ r = ((glGetNonlinMaterialfvSGIX = (PFNGLGETNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetNonlinMaterialfvSGIX")) == NULL) || r;
+ r = ((glNonlinLightfvSGIX = (PFNGLNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glNonlinLightfvSGIX")) == NULL) || r;
+ r = ((glNonlinMaterialfvSGIX = (PFNGLNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glNonlinMaterialfvSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+#ifdef GL_SGIX_pixel_texture
+
+static GLboolean _glewInit_GL_SGIX_pixel_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)glewGetProcAddress((const GLubyte*)"glPixelTexGenSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_pixel_texture */
+
+#ifdef GL_SGIX_polynomial_ffd
+
+static GLboolean _glewInit_GL_SGIX_polynomial_ffd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeformSGIX = (PFNGLDEFORMSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeformSGIX")) == NULL) || r;
+ r = ((glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)glewGetProcAddress((const GLubyte*)"glLoadIdentityDeformationMapSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+#ifdef GL_SGIX_quad_mesh
+
+static GLboolean _glewInit_GL_SGIX_quad_mesh ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMeshBreadthSGIX = (PFNGLMESHBREADTHSGIXPROC)glewGetProcAddress((const GLubyte*)"glMeshBreadthSGIX")) == NULL) || r;
+ r = ((glMeshStrideSGIX = (PFNGLMESHSTRIDESGIXPROC)glewGetProcAddress((const GLubyte*)"glMeshStrideSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_quad_mesh */
+
+#ifdef GL_SGIX_reference_plane
+
+static GLboolean _glewInit_GL_SGIX_reference_plane ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)glewGetProcAddress((const GLubyte*)"glReferencePlaneSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_reference_plane */
+
+#ifdef GL_SGIX_sprite
+
+static GLboolean _glewInit_GL_SGIX_sprite ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfSGIX")) == NULL) || r;
+ r = ((glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfvSGIX")) == NULL) || r;
+ r = ((glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameteriSGIX")) == NULL) || r;
+ r = ((glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterivSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_sprite */
+
+#ifdef GL_SGIX_tag_sample_buffer
+
+static GLboolean _glewInit_GL_SGIX_tag_sample_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glTagSampleBufferSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+#ifdef GL_SGIX_vector_ops
+
+static GLboolean _glewInit_GL_SGIX_vector_ops ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVectorOperationSGIX = (PFNGLGETVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetVectorOperationSGIX")) == NULL) || r;
+ r = ((glVectorOperationSGIX = (PFNGLVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)"glVectorOperationSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_vector_ops */
+
+#ifdef GL_SGIX_vertex_array_object
+
+static GLboolean _glewInit_GL_SGIX_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreVertexArraysResidentSGIX = (PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glAreVertexArraysResidentSGIX")) == NULL) || r;
+ r = ((glBindVertexArraySGIX = (PFNGLBINDVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArraySGIX")) == NULL) || r;
+ r = ((glDeleteVertexArraysSGIX = (PFNGLDELETEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysSGIX")) == NULL) || r;
+ r = ((glGenVertexArraysSGIX = (PFNGLGENVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysSGIX")) == NULL) || r;
+ r = ((glIsVertexArraySGIX = (PFNGLISVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArraySGIX")) == NULL) || r;
+ r = ((glPrioritizeVertexArraysSGIX = (PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glPrioritizeVertexArraysSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_vertex_array_object */
+
+#ifdef GL_SGI_color_table
+
+static GLboolean _glewInit_GL_SGI_color_table ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfvSGI")) == NULL) || r;
+ r = ((glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterivSGI")) == NULL) || r;
+ r = ((glColorTableSGI = (PFNGLCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableSGI")) == NULL) || r;
+ r = ((glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTableSGI")) == NULL) || r;
+ r = ((glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvSGI")) == NULL) || r;
+ r = ((glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivSGI")) == NULL) || r;
+ r = ((glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGI_color_table */
+
+#ifdef GL_SGI_fft
+
+static GLboolean _glewInit_GL_SGI_fft ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetPixelTransformParameterfvSGI = (PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterfvSGI")) == NULL) || r;
+ r = ((glGetPixelTransformParameterivSGI = (PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterivSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterfSGI = (PFNGLPIXELTRANSFORMPARAMETERFSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterfvSGI = (PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfvSGI")) == NULL) || r;
+ r = ((glPixelTransformParameteriSGI = (PFNGLPIXELTRANSFORMPARAMETERISGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameteriSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterivSGI = (PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterivSGI")) == NULL) || r;
+ r = ((glPixelTransformSGI = (PFNGLPIXELTRANSFORMSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGI_fft */
+
+#ifdef GL_SUNX_constant_data
+
+static GLboolean _glewInit_GL_SUNX_constant_data ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)glewGetProcAddress((const GLubyte*)"glFinishTextureSUNX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUNX_constant_data */
+
+#ifdef GL_SUN_global_alpha
+
+static GLboolean _glewInit_GL_SUN_global_alpha ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorbSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactordSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorfSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoriSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorsSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorubSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoruiSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorusSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_global_alpha */
+
+#ifdef GL_SUN_read_video_pixels
+
+static GLboolean _glewInit_GL_SUN_read_video_pixels ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReadVideoPixelsSUN = (PFNGLREADVIDEOPIXELSSUNPROC)glewGetProcAddress((const GLubyte*)"glReadVideoPixelsSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_read_video_pixels */
+
+#ifdef GL_SUN_triangle_list
+
+static GLboolean _glewInit_GL_SUN_triangle_list ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodePointerSUN")) == NULL) || r;
+ r = ((glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubSUN")) == NULL) || r;
+ r = ((glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiSUN")) == NULL) || r;
+ r = ((glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuivSUN")) == NULL) || r;
+ r = ((glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusSUN")) == NULL) || r;
+ r = ((glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusvSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_triangle_list */
+
+#ifdef GL_SUN_vertex
+
+static GLboolean _glewInit_GL_SUN_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fSUN")) == NULL) || r;
+ r = ((glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fvSUN")) == NULL) || r;
+ r = ((glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fSUN")) == NULL) || r;
+ r = ((glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fvSUN")) == NULL) || r;
+ r = ((glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fSUN")) == NULL) || r;
+ r = ((glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fvSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_vertex */
+
+#ifdef GL_WIN_swap_hint
+
+static GLboolean _glewInit_GL_WIN_swap_hint ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAddSwapHintRectWIN = (PFNGLADDSWAPHINTRECTWINPROC)glewGetProcAddress((const GLubyte*)"glAddSwapHintRectWIN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_WIN_swap_hint */
+
+/* ------------------------------------------------------------------------- */
+
+static int _glewExtensionCompare(const char *s1, const char *s2)
+{
+ /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */
+ while (*s1 || *s2)
+ {
+ if (*s1 > *s2)
+ return 1;
+ if (*s1 < *s2)
+ return -1;
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+static ptrdiff_t _glewBsearchExtension(const char* name)
+{
+ ptrdiff_t lo = 0, hi = sizeof(_glewExtensionLookup) / sizeof(char*) - 2;
+
+ while (lo <= hi)
+ {
+ ptrdiff_t mid = (lo + hi) / 2;
+ const int cmp = _glewExtensionCompare(name, _glewExtensionLookup[mid]);
+ if (cmp < 0) hi = mid - 1;
+ else if (cmp > 0) lo = mid + 1;
+ else return mid;
+ }
+ return -1;
+}
+
+static GLboolean *_glewGetExtensionString(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return &_glewExtensionString[n];
+ return NULL;
+}
+
+static GLboolean *_glewGetExtensionEnable(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return _glewExtensionEnabled[n];
+ return NULL;
+}
+
+static const char *_glewNextSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j!=' ' && *j) ++j;
+ return j;
+}
+
+static const char *_glewNextNonSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j==' ') ++j;
+ return j;
+}
+
+GLboolean GLEWAPIENTRY glewGetExtension (const char* name)
+{
+ GLboolean *enable = _glewGetExtensionString(name);
+ if (enable)
+ return *enable;
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
+
+GLenum GLEWAPIENTRY glewContextInit (void)
+{
+ PFNGLGETSTRINGPROC getString;
+ const GLubyte* s;
+ GLuint dot;
+ GLint major, minor;
+
+ #ifdef _WIN32
+ getString = glGetString;
+ #else
+ getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)"glGetString");
+ if (!getString)
+ return GLEW_ERROR_NO_GL_VERSION;
+ #endif
+
+ /* query opengl version */
+ s = getString(GL_VERSION);
+ dot = _glewStrCLen(s, '.');
+ if (dot == 0)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ major = s[dot-1]-'0';
+ minor = s[dot+1]-'0';
+
+ if (minor < 0 || minor > 9)
+ minor = 0;
+ if (major<0 || major>9)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ if (major == 1 && minor == 0)
+ {
+ return GLEW_ERROR_GL_VERSION_10_ONLY;
+ }
+ else
+ {
+ GLEW_VERSION_4_6 = ( major > 4 ) || ( major == 4 && minor >= 6 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_5 = GLEW_VERSION_4_6 == GL_TRUE || ( major == 4 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_4 = GLEW_VERSION_4_5 == GL_TRUE || ( major == 4 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_3 = GLEW_VERSION_4_4 == GL_TRUE || ( major == 4 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_2 = GLEW_VERSION_4_3 == GL_TRUE || ( major == 4 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_1 = GLEW_VERSION_4_2 == GL_TRUE || ( major == 4 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_0 = GLEW_VERSION_4_1 == GL_TRUE || ( major == 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_3 = GLEW_VERSION_4_0 == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_2 = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_1 = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_0 = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_0 = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_5 = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_4 = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_3 = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2 = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ }
+
+ {
+ size_t i;
+ for (i = 0; i < sizeof(_glewExtensionString) / sizeof(_glewExtensionString[0]); ++i)
+ _glewExtensionString[i] = GL_FALSE;
+ }
+
+ if (GLEW_VERSION_3_0)
+ {
+ GLint n = 0;
+ GLint i;
+ PFNGLGETINTEGERVPROC getIntegerv;
+ PFNGLGETSTRINGIPROC getStringi;
+ const char *ext;
+ GLboolean *enable;
+
+ #ifdef _WIN32
+ getIntegerv = glGetIntegerv;
+ #else
+ getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)"glGetIntegerv");
+ #endif
+
+ if (getIntegerv)
+ getIntegerv(GL_NUM_EXTENSIONS, &n);
+
+ /* glGetStringi is OpenGL 3.0 */
+ getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
+ if (getStringi)
+ for (i = 0; i<n; ++i)
+ {
+ ext = (const char *) getStringi(GL_EXTENSIONS, i);
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ else
+ {
+ const char *extensions;
+ const char *end;
+ const char *i;
+ const char *j;
+ char ext[128];
+ GLboolean *enable;
+
+ extensions = (const char *) getString(GL_EXTENSIONS);
+
+ if (extensions)
+ {
+ end = extensions + _glewStrLen((const GLubyte *) extensions);
+ for (i=extensions; i<end; i = j + 1)
+ {
+ i = _glewNextNonSpace(i);
+ j = _glewNextSpace(i);
+
+ /* Copy extension into NUL terminated string */
+ if (j-i >= (ptrdiff_t) sizeof(ext))
+ continue;
+ _glewStrCopy(ext, i, ' ');
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ }
+#ifdef GL_VERSION_1_2
+ if (glewExperimental || GLEW_VERSION_1_2) GLEW_VERSION_1_2 = !_glewInit_GL_VERSION_1_2();
+#endif /* GL_VERSION_1_2 */
+#ifdef GL_VERSION_1_3
+ if (glewExperimental || GLEW_VERSION_1_3) GLEW_VERSION_1_3 = !_glewInit_GL_VERSION_1_3();
+#endif /* GL_VERSION_1_3 */
+#ifdef GL_VERSION_1_4
+ if (glewExperimental || GLEW_VERSION_1_4) GLEW_VERSION_1_4 = !_glewInit_GL_VERSION_1_4();
+#endif /* GL_VERSION_1_4 */
+#ifdef GL_VERSION_1_5
+ if (glewExperimental || GLEW_VERSION_1_5) GLEW_VERSION_1_5 = !_glewInit_GL_VERSION_1_5();
+#endif /* GL_VERSION_1_5 */
+#ifdef GL_VERSION_2_0
+ if (glewExperimental || GLEW_VERSION_2_0) GLEW_VERSION_2_0 = !_glewInit_GL_VERSION_2_0();
+#endif /* GL_VERSION_2_0 */
+#ifdef GL_VERSION_2_1
+ if (glewExperimental || GLEW_VERSION_2_1) GLEW_VERSION_2_1 = !_glewInit_GL_VERSION_2_1();
+#endif /* GL_VERSION_2_1 */
+#ifdef GL_VERSION_3_0
+ if (glewExperimental || GLEW_VERSION_3_0) GLEW_VERSION_3_0 = !_glewInit_GL_VERSION_3_0();
+#endif /* GL_VERSION_3_0 */
+#ifdef GL_VERSION_3_1
+ if (glewExperimental || GLEW_VERSION_3_1) GLEW_VERSION_3_1 = !_glewInit_GL_VERSION_3_1();
+#endif /* GL_VERSION_3_1 */
+#ifdef GL_VERSION_3_2
+ if (glewExperimental || GLEW_VERSION_3_2) GLEW_VERSION_3_2 = !_glewInit_GL_VERSION_3_2();
+#endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+ if (glewExperimental || GLEW_VERSION_3_3) GLEW_VERSION_3_3 = !_glewInit_GL_VERSION_3_3();
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+ if (glewExperimental || GLEW_VERSION_4_0) GLEW_VERSION_4_0 = !_glewInit_GL_VERSION_4_0();
+#endif /* GL_VERSION_4_0 */
+#ifdef GL_VERSION_4_5
+ if (glewExperimental || GLEW_VERSION_4_5) GLEW_VERSION_4_5 = !_glewInit_GL_VERSION_4_5();
+#endif /* GL_VERSION_4_5 */
+#ifdef GL_VERSION_4_6
+ if (glewExperimental || GLEW_VERSION_4_6) GLEW_VERSION_4_6 = !_glewInit_GL_VERSION_4_6();
+#endif /* GL_VERSION_4_6 */
+#ifdef GL_3DFX_tbuffer
+ if (glewExperimental || GLEW_3DFX_tbuffer) GLEW_3DFX_tbuffer = !_glewInit_GL_3DFX_tbuffer();
+#endif /* GL_3DFX_tbuffer */
+#ifdef GL_AMD_debug_output
+ if (glewExperimental || GLEW_AMD_debug_output) GLEW_AMD_debug_output = !_glewInit_GL_AMD_debug_output();
+#endif /* GL_AMD_debug_output */
+#ifdef GL_AMD_draw_buffers_blend
+ if (glewExperimental || GLEW_AMD_draw_buffers_blend) GLEW_AMD_draw_buffers_blend = !_glewInit_GL_AMD_draw_buffers_blend();
+#endif /* GL_AMD_draw_buffers_blend */
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ if (glewExperimental || GLEW_AMD_framebuffer_multisample_advanced) GLEW_AMD_framebuffer_multisample_advanced = !_glewInit_GL_AMD_framebuffer_multisample_advanced();
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+#ifdef GL_AMD_framebuffer_sample_positions
+ if (glewExperimental || GLEW_AMD_framebuffer_sample_positions) GLEW_AMD_framebuffer_sample_positions = !_glewInit_GL_AMD_framebuffer_sample_positions();
+#endif /* GL_AMD_framebuffer_sample_positions */
+#ifdef GL_AMD_interleaved_elements
+ if (glewExperimental || GLEW_AMD_interleaved_elements) GLEW_AMD_interleaved_elements = !_glewInit_GL_AMD_interleaved_elements();
+#endif /* GL_AMD_interleaved_elements */
+#ifdef GL_AMD_multi_draw_indirect
+ if (glewExperimental || GLEW_AMD_multi_draw_indirect) GLEW_AMD_multi_draw_indirect = !_glewInit_GL_AMD_multi_draw_indirect();
+#endif /* GL_AMD_multi_draw_indirect */
+#ifdef GL_AMD_name_gen_delete
+ if (glewExperimental || GLEW_AMD_name_gen_delete) GLEW_AMD_name_gen_delete = !_glewInit_GL_AMD_name_gen_delete();
+#endif /* GL_AMD_name_gen_delete */
+#ifdef GL_AMD_occlusion_query_event
+ if (glewExperimental || GLEW_AMD_occlusion_query_event) GLEW_AMD_occlusion_query_event = !_glewInit_GL_AMD_occlusion_query_event();
+#endif /* GL_AMD_occlusion_query_event */
+#ifdef GL_AMD_performance_monitor
+ if (glewExperimental || GLEW_AMD_performance_monitor) GLEW_AMD_performance_monitor = !_glewInit_GL_AMD_performance_monitor();
+#endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_sample_positions
+ if (glewExperimental || GLEW_AMD_sample_positions) GLEW_AMD_sample_positions = !_glewInit_GL_AMD_sample_positions();
+#endif /* GL_AMD_sample_positions */
+#ifdef GL_AMD_sparse_texture
+ if (glewExperimental || GLEW_AMD_sparse_texture) GLEW_AMD_sparse_texture = !_glewInit_GL_AMD_sparse_texture();
+#endif /* GL_AMD_sparse_texture */
+#ifdef GL_AMD_stencil_operation_extended
+ if (glewExperimental || GLEW_AMD_stencil_operation_extended) GLEW_AMD_stencil_operation_extended = !_glewInit_GL_AMD_stencil_operation_extended();
+#endif /* GL_AMD_stencil_operation_extended */
+#ifdef GL_AMD_vertex_shader_tessellator
+ if (glewExperimental || GLEW_AMD_vertex_shader_tessellator) GLEW_AMD_vertex_shader_tessellator = !_glewInit_GL_AMD_vertex_shader_tessellator();
+#endif /* GL_AMD_vertex_shader_tessellator */
+#ifdef GL_ANGLE_framebuffer_blit
+ if (glewExperimental || GLEW_ANGLE_framebuffer_blit) GLEW_ANGLE_framebuffer_blit = !_glewInit_GL_ANGLE_framebuffer_blit();
+#endif /* GL_ANGLE_framebuffer_blit */
+#ifdef GL_ANGLE_framebuffer_multisample
+ if (glewExperimental || GLEW_ANGLE_framebuffer_multisample) GLEW_ANGLE_framebuffer_multisample = !_glewInit_GL_ANGLE_framebuffer_multisample();
+#endif /* GL_ANGLE_framebuffer_multisample */
+#ifdef GL_ANGLE_instanced_arrays
+ if (glewExperimental || GLEW_ANGLE_instanced_arrays) GLEW_ANGLE_instanced_arrays = !_glewInit_GL_ANGLE_instanced_arrays();
+#endif /* GL_ANGLE_instanced_arrays */
+#ifdef GL_ANGLE_timer_query
+ if (glewExperimental || GLEW_ANGLE_timer_query) GLEW_ANGLE_timer_query = !_glewInit_GL_ANGLE_timer_query();
+#endif /* GL_ANGLE_timer_query */
+#ifdef GL_ANGLE_translated_shader_source
+ if (glewExperimental || GLEW_ANGLE_translated_shader_source) GLEW_ANGLE_translated_shader_source = !_glewInit_GL_ANGLE_translated_shader_source();
+#endif /* GL_ANGLE_translated_shader_source */
+#ifdef GL_APPLE_copy_texture_levels
+ if (glewExperimental || GLEW_APPLE_copy_texture_levels) GLEW_APPLE_copy_texture_levels = !_glewInit_GL_APPLE_copy_texture_levels();
+#endif /* GL_APPLE_copy_texture_levels */
+#ifdef GL_APPLE_element_array
+ if (glewExperimental || GLEW_APPLE_element_array) GLEW_APPLE_element_array = !_glewInit_GL_APPLE_element_array();
+#endif /* GL_APPLE_element_array */
+#ifdef GL_APPLE_fence
+ if (glewExperimental || GLEW_APPLE_fence) GLEW_APPLE_fence = !_glewInit_GL_APPLE_fence();
+#endif /* GL_APPLE_fence */
+#ifdef GL_APPLE_flush_buffer_range
+ if (glewExperimental || GLEW_APPLE_flush_buffer_range) GLEW_APPLE_flush_buffer_range = !_glewInit_GL_APPLE_flush_buffer_range();
+#endif /* GL_APPLE_flush_buffer_range */
+#ifdef GL_APPLE_framebuffer_multisample
+ if (glewExperimental || GLEW_APPLE_framebuffer_multisample) GLEW_APPLE_framebuffer_multisample = !_glewInit_GL_APPLE_framebuffer_multisample();
+#endif /* GL_APPLE_framebuffer_multisample */
+#ifdef GL_APPLE_object_purgeable
+ if (glewExperimental || GLEW_APPLE_object_purgeable) GLEW_APPLE_object_purgeable = !_glewInit_GL_APPLE_object_purgeable();
+#endif /* GL_APPLE_object_purgeable */
+#ifdef GL_APPLE_sync
+ if (glewExperimental || GLEW_APPLE_sync) GLEW_APPLE_sync = !_glewInit_GL_APPLE_sync();
+#endif /* GL_APPLE_sync */
+#ifdef GL_APPLE_texture_range
+ if (glewExperimental || GLEW_APPLE_texture_range) GLEW_APPLE_texture_range = !_glewInit_GL_APPLE_texture_range();
+#endif /* GL_APPLE_texture_range */
+#ifdef GL_APPLE_vertex_array_object
+ if (glewExperimental || GLEW_APPLE_vertex_array_object) GLEW_APPLE_vertex_array_object = !_glewInit_GL_APPLE_vertex_array_object();
+#endif /* GL_APPLE_vertex_array_object */
+#ifdef GL_APPLE_vertex_array_range
+ if (glewExperimental || GLEW_APPLE_vertex_array_range) GLEW_APPLE_vertex_array_range = !_glewInit_GL_APPLE_vertex_array_range();
+#endif /* GL_APPLE_vertex_array_range */
+#ifdef GL_APPLE_vertex_program_evaluators
+ if (glewExperimental || GLEW_APPLE_vertex_program_evaluators) GLEW_APPLE_vertex_program_evaluators = !_glewInit_GL_APPLE_vertex_program_evaluators();
+#endif /* GL_APPLE_vertex_program_evaluators */
+#ifdef GL_ARB_ES2_compatibility
+ if (glewExperimental || GLEW_ARB_ES2_compatibility) GLEW_ARB_ES2_compatibility = !_glewInit_GL_ARB_ES2_compatibility();
+#endif /* GL_ARB_ES2_compatibility */
+#ifdef GL_ARB_ES3_1_compatibility
+ if (glewExperimental || GLEW_ARB_ES3_1_compatibility) GLEW_ARB_ES3_1_compatibility = !_glewInit_GL_ARB_ES3_1_compatibility();
+#endif /* GL_ARB_ES3_1_compatibility */
+#ifdef GL_ARB_ES3_2_compatibility
+ if (glewExperimental || GLEW_ARB_ES3_2_compatibility) GLEW_ARB_ES3_2_compatibility = !_glewInit_GL_ARB_ES3_2_compatibility();
+#endif /* GL_ARB_ES3_2_compatibility */
+#ifdef GL_ARB_base_instance
+ if (glewExperimental || GLEW_ARB_base_instance) GLEW_ARB_base_instance = !_glewInit_GL_ARB_base_instance();
+#endif /* GL_ARB_base_instance */
+#ifdef GL_ARB_bindless_texture
+ if (glewExperimental || GLEW_ARB_bindless_texture) GLEW_ARB_bindless_texture = !_glewInit_GL_ARB_bindless_texture();
+#endif /* GL_ARB_bindless_texture */
+#ifdef GL_ARB_blend_func_extended
+ if (glewExperimental || GLEW_ARB_blend_func_extended) GLEW_ARB_blend_func_extended = !_glewInit_GL_ARB_blend_func_extended();
+#endif /* GL_ARB_blend_func_extended */
+#ifdef GL_ARB_buffer_storage
+ if (glewExperimental || GLEW_ARB_buffer_storage) GLEW_ARB_buffer_storage = !_glewInit_GL_ARB_buffer_storage();
+#endif /* GL_ARB_buffer_storage */
+#ifdef GL_ARB_cl_event
+ if (glewExperimental || GLEW_ARB_cl_event) GLEW_ARB_cl_event = !_glewInit_GL_ARB_cl_event();
+#endif /* GL_ARB_cl_event */
+#ifdef GL_ARB_clear_buffer_object
+ if (glewExperimental || GLEW_ARB_clear_buffer_object) GLEW_ARB_clear_buffer_object = !_glewInit_GL_ARB_clear_buffer_object();
+#endif /* GL_ARB_clear_buffer_object */
+#ifdef GL_ARB_clear_texture
+ if (glewExperimental || GLEW_ARB_clear_texture) GLEW_ARB_clear_texture = !_glewInit_GL_ARB_clear_texture();
+#endif /* GL_ARB_clear_texture */
+#ifdef GL_ARB_clip_control
+ if (glewExperimental || GLEW_ARB_clip_control) GLEW_ARB_clip_control = !_glewInit_GL_ARB_clip_control();
+#endif /* GL_ARB_clip_control */
+#ifdef GL_ARB_color_buffer_float
+ if (glewExperimental || GLEW_ARB_color_buffer_float) GLEW_ARB_color_buffer_float = !_glewInit_GL_ARB_color_buffer_float();
+#endif /* GL_ARB_color_buffer_float */
+#ifdef GL_ARB_compute_shader
+ if (glewExperimental || GLEW_ARB_compute_shader) GLEW_ARB_compute_shader = !_glewInit_GL_ARB_compute_shader();
+#endif /* GL_ARB_compute_shader */
+#ifdef GL_ARB_compute_variable_group_size
+ if (glewExperimental || GLEW_ARB_compute_variable_group_size) GLEW_ARB_compute_variable_group_size = !_glewInit_GL_ARB_compute_variable_group_size();
+#endif /* GL_ARB_compute_variable_group_size */
+#ifdef GL_ARB_copy_buffer
+ if (glewExperimental || GLEW_ARB_copy_buffer) GLEW_ARB_copy_buffer = !_glewInit_GL_ARB_copy_buffer();
+#endif /* GL_ARB_copy_buffer */
+#ifdef GL_ARB_copy_image
+ if (glewExperimental || GLEW_ARB_copy_image) GLEW_ARB_copy_image = !_glewInit_GL_ARB_copy_image();
+#endif /* GL_ARB_copy_image */
+#ifdef GL_ARB_debug_output
+ if (glewExperimental || GLEW_ARB_debug_output) GLEW_ARB_debug_output = !_glewInit_GL_ARB_debug_output();
+#endif /* GL_ARB_debug_output */
+#ifdef GL_ARB_direct_state_access
+ if (glewExperimental || GLEW_ARB_direct_state_access) GLEW_ARB_direct_state_access = !_glewInit_GL_ARB_direct_state_access();
+#endif /* GL_ARB_direct_state_access */
+#ifdef GL_ARB_draw_buffers
+ if (glewExperimental || GLEW_ARB_draw_buffers) GLEW_ARB_draw_buffers = !_glewInit_GL_ARB_draw_buffers();
+#endif /* GL_ARB_draw_buffers */
+#ifdef GL_ARB_draw_buffers_blend
+ if (glewExperimental || GLEW_ARB_draw_buffers_blend) GLEW_ARB_draw_buffers_blend = !_glewInit_GL_ARB_draw_buffers_blend();
+#endif /* GL_ARB_draw_buffers_blend */
+#ifdef GL_ARB_draw_elements_base_vertex
+ if (glewExperimental || GLEW_ARB_draw_elements_base_vertex) GLEW_ARB_draw_elements_base_vertex = !_glewInit_GL_ARB_draw_elements_base_vertex();
+#endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+ if (glewExperimental || GLEW_ARB_draw_indirect) GLEW_ARB_draw_indirect = !_glewInit_GL_ARB_draw_indirect();
+#endif /* GL_ARB_draw_indirect */
+#ifdef GL_ARB_framebuffer_no_attachments
+ if (glewExperimental || GLEW_ARB_framebuffer_no_attachments) GLEW_ARB_framebuffer_no_attachments = !_glewInit_GL_ARB_framebuffer_no_attachments();
+#endif /* GL_ARB_framebuffer_no_attachments */
+#ifdef GL_ARB_framebuffer_object
+ if (glewExperimental || GLEW_ARB_framebuffer_object) GLEW_ARB_framebuffer_object = !_glewInit_GL_ARB_framebuffer_object();
+#endif /* GL_ARB_framebuffer_object */
+#ifdef GL_ARB_geometry_shader4
+ if (glewExperimental || GLEW_ARB_geometry_shader4) GLEW_ARB_geometry_shader4 = !_glewInit_GL_ARB_geometry_shader4();
+#endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_get_program_binary
+ if (glewExperimental || GLEW_ARB_get_program_binary) GLEW_ARB_get_program_binary = !_glewInit_GL_ARB_get_program_binary();
+#endif /* GL_ARB_get_program_binary */
+#ifdef GL_ARB_get_texture_sub_image
+ if (glewExperimental || GLEW_ARB_get_texture_sub_image) GLEW_ARB_get_texture_sub_image = !_glewInit_GL_ARB_get_texture_sub_image();
+#endif /* GL_ARB_get_texture_sub_image */
+#ifdef GL_ARB_gl_spirv
+ if (glewExperimental || GLEW_ARB_gl_spirv) GLEW_ARB_gl_spirv = !_glewInit_GL_ARB_gl_spirv();
+#endif /* GL_ARB_gl_spirv */
+#ifdef GL_ARB_gpu_shader_fp64
+ if (glewExperimental || GLEW_ARB_gpu_shader_fp64) GLEW_ARB_gpu_shader_fp64 = !_glewInit_GL_ARB_gpu_shader_fp64();
+#endif /* GL_ARB_gpu_shader_fp64 */
+#ifdef GL_ARB_gpu_shader_int64
+ if (glewExperimental || GLEW_ARB_gpu_shader_int64) GLEW_ARB_gpu_shader_int64 = !_glewInit_GL_ARB_gpu_shader_int64();
+#endif /* GL_ARB_gpu_shader_int64 */
+#ifdef GL_ARB_imaging
+ if (glewExperimental || GLEW_ARB_imaging) GLEW_ARB_imaging = !_glewInit_GL_ARB_imaging();
+#endif /* GL_ARB_imaging */
+#ifdef GL_ARB_indirect_parameters
+ if (glewExperimental || GLEW_ARB_indirect_parameters) GLEW_ARB_indirect_parameters = !_glewInit_GL_ARB_indirect_parameters();
+#endif /* GL_ARB_indirect_parameters */
+#ifdef GL_ARB_instanced_arrays
+ if (glewExperimental || GLEW_ARB_instanced_arrays) GLEW_ARB_instanced_arrays = !_glewInit_GL_ARB_instanced_arrays();
+#endif /* GL_ARB_instanced_arrays */
+#ifdef GL_ARB_internalformat_query
+ if (glewExperimental || GLEW_ARB_internalformat_query) GLEW_ARB_internalformat_query = !_glewInit_GL_ARB_internalformat_query();
+#endif /* GL_ARB_internalformat_query */
+#ifdef GL_ARB_internalformat_query2
+ if (glewExperimental || GLEW_ARB_internalformat_query2) GLEW_ARB_internalformat_query2 = !_glewInit_GL_ARB_internalformat_query2();
+#endif /* GL_ARB_internalformat_query2 */
+#ifdef GL_ARB_invalidate_subdata
+ if (glewExperimental || GLEW_ARB_invalidate_subdata) GLEW_ARB_invalidate_subdata = !_glewInit_GL_ARB_invalidate_subdata();
+#endif /* GL_ARB_invalidate_subdata */
+#ifdef GL_ARB_map_buffer_range
+ if (glewExperimental || GLEW_ARB_map_buffer_range) GLEW_ARB_map_buffer_range = !_glewInit_GL_ARB_map_buffer_range();
+#endif /* GL_ARB_map_buffer_range */
+#ifdef GL_ARB_matrix_palette
+ if (glewExperimental || GLEW_ARB_matrix_palette) GLEW_ARB_matrix_palette = !_glewInit_GL_ARB_matrix_palette();
+#endif /* GL_ARB_matrix_palette */
+#ifdef GL_ARB_multi_bind
+ if (glewExperimental || GLEW_ARB_multi_bind) GLEW_ARB_multi_bind = !_glewInit_GL_ARB_multi_bind();
+#endif /* GL_ARB_multi_bind */
+#ifdef GL_ARB_multi_draw_indirect
+ if (glewExperimental || GLEW_ARB_multi_draw_indirect) GLEW_ARB_multi_draw_indirect = !_glewInit_GL_ARB_multi_draw_indirect();
+#endif /* GL_ARB_multi_draw_indirect */
+#ifdef GL_ARB_multisample
+ if (glewExperimental || GLEW_ARB_multisample) GLEW_ARB_multisample = !_glewInit_GL_ARB_multisample();
+#endif /* GL_ARB_multisample */
+#ifdef GL_ARB_multitexture
+ if (glewExperimental || GLEW_ARB_multitexture) GLEW_ARB_multitexture = !_glewInit_GL_ARB_multitexture();
+#endif /* GL_ARB_multitexture */
+#ifdef GL_ARB_occlusion_query
+ if (glewExperimental || GLEW_ARB_occlusion_query) GLEW_ARB_occlusion_query = !_glewInit_GL_ARB_occlusion_query();
+#endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_parallel_shader_compile
+ if (glewExperimental || GLEW_ARB_parallel_shader_compile) GLEW_ARB_parallel_shader_compile = !_glewInit_GL_ARB_parallel_shader_compile();
+#endif /* GL_ARB_parallel_shader_compile */
+#ifdef GL_ARB_point_parameters
+ if (glewExperimental || GLEW_ARB_point_parameters) GLEW_ARB_point_parameters = !_glewInit_GL_ARB_point_parameters();
+#endif /* GL_ARB_point_parameters */
+#ifdef GL_ARB_polygon_offset_clamp
+ if (glewExperimental || GLEW_ARB_polygon_offset_clamp) GLEW_ARB_polygon_offset_clamp = !_glewInit_GL_ARB_polygon_offset_clamp();
+#endif /* GL_ARB_polygon_offset_clamp */
+#ifdef GL_ARB_program_interface_query
+ if (glewExperimental || GLEW_ARB_program_interface_query) GLEW_ARB_program_interface_query = !_glewInit_GL_ARB_program_interface_query();
+#endif /* GL_ARB_program_interface_query */
+#ifdef GL_ARB_provoking_vertex
+ if (glewExperimental || GLEW_ARB_provoking_vertex) GLEW_ARB_provoking_vertex = !_glewInit_GL_ARB_provoking_vertex();
+#endif /* GL_ARB_provoking_vertex */
+#ifdef GL_ARB_robustness
+ if (glewExperimental || GLEW_ARB_robustness) GLEW_ARB_robustness = !_glewInit_GL_ARB_robustness();
+#endif /* GL_ARB_robustness */
+#ifdef GL_ARB_sample_locations
+ if (glewExperimental || GLEW_ARB_sample_locations) GLEW_ARB_sample_locations = !_glewInit_GL_ARB_sample_locations();
+#endif /* GL_ARB_sample_locations */
+#ifdef GL_ARB_sample_shading
+ if (glewExperimental || GLEW_ARB_sample_shading) GLEW_ARB_sample_shading = !_glewInit_GL_ARB_sample_shading();
+#endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+ if (glewExperimental || GLEW_ARB_sampler_objects) GLEW_ARB_sampler_objects = !_glewInit_GL_ARB_sampler_objects();
+#endif /* GL_ARB_sampler_objects */
+#ifdef GL_ARB_separate_shader_objects
+ if (glewExperimental || GLEW_ARB_separate_shader_objects) GLEW_ARB_separate_shader_objects = !_glewInit_GL_ARB_separate_shader_objects();
+#endif /* GL_ARB_separate_shader_objects */
+#ifdef GL_ARB_shader_atomic_counters
+ if (glewExperimental || GLEW_ARB_shader_atomic_counters) GLEW_ARB_shader_atomic_counters = !_glewInit_GL_ARB_shader_atomic_counters();
+#endif /* GL_ARB_shader_atomic_counters */
+#ifdef GL_ARB_shader_image_load_store
+ if (glewExperimental || GLEW_ARB_shader_image_load_store) GLEW_ARB_shader_image_load_store = !_glewInit_GL_ARB_shader_image_load_store();
+#endif /* GL_ARB_shader_image_load_store */
+#ifdef GL_ARB_shader_objects
+ if (glewExperimental || GLEW_ARB_shader_objects) GLEW_ARB_shader_objects = !_glewInit_GL_ARB_shader_objects();
+#endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_storage_buffer_object
+ if (glewExperimental || GLEW_ARB_shader_storage_buffer_object) GLEW_ARB_shader_storage_buffer_object = !_glewInit_GL_ARB_shader_storage_buffer_object();
+#endif /* GL_ARB_shader_storage_buffer_object */
+#ifdef GL_ARB_shader_subroutine
+ if (glewExperimental || GLEW_ARB_shader_subroutine) GLEW_ARB_shader_subroutine = !_glewInit_GL_ARB_shader_subroutine();
+#endif /* GL_ARB_shader_subroutine */
+#ifdef GL_ARB_shading_language_include
+ if (glewExperimental || GLEW_ARB_shading_language_include) GLEW_ARB_shading_language_include = !_glewInit_GL_ARB_shading_language_include();
+#endif /* GL_ARB_shading_language_include */
+#ifdef GL_ARB_sparse_buffer
+ if (glewExperimental || GLEW_ARB_sparse_buffer) GLEW_ARB_sparse_buffer = !_glewInit_GL_ARB_sparse_buffer();
+#endif /* GL_ARB_sparse_buffer */
+#ifdef GL_ARB_sparse_texture
+ if (glewExperimental || GLEW_ARB_sparse_texture) GLEW_ARB_sparse_texture = !_glewInit_GL_ARB_sparse_texture();
+#endif /* GL_ARB_sparse_texture */
+#ifdef GL_ARB_sync
+ if (glewExperimental || GLEW_ARB_sync) GLEW_ARB_sync = !_glewInit_GL_ARB_sync();
+#endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+ if (glewExperimental || GLEW_ARB_tessellation_shader) GLEW_ARB_tessellation_shader = !_glewInit_GL_ARB_tessellation_shader();
+#endif /* GL_ARB_tessellation_shader */
+#ifdef GL_ARB_texture_barrier
+ if (glewExperimental || GLEW_ARB_texture_barrier) GLEW_ARB_texture_barrier = !_glewInit_GL_ARB_texture_barrier();
+#endif /* GL_ARB_texture_barrier */
+#ifdef GL_ARB_texture_buffer_object
+ if (glewExperimental || GLEW_ARB_texture_buffer_object) GLEW_ARB_texture_buffer_object = !_glewInit_GL_ARB_texture_buffer_object();
+#endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_range
+ if (glewExperimental || GLEW_ARB_texture_buffer_range) GLEW_ARB_texture_buffer_range = !_glewInit_GL_ARB_texture_buffer_range();
+#endif /* GL_ARB_texture_buffer_range */
+#ifdef GL_ARB_texture_compression
+ if (glewExperimental || GLEW_ARB_texture_compression) GLEW_ARB_texture_compression = !_glewInit_GL_ARB_texture_compression();
+#endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_multisample
+ if (glewExperimental || GLEW_ARB_texture_multisample) GLEW_ARB_texture_multisample = !_glewInit_GL_ARB_texture_multisample();
+#endif /* GL_ARB_texture_multisample */
+#ifdef GL_ARB_texture_storage
+ if (glewExperimental || GLEW_ARB_texture_storage) GLEW_ARB_texture_storage = !_glewInit_GL_ARB_texture_storage();
+#endif /* GL_ARB_texture_storage */
+#ifdef GL_ARB_texture_storage_multisample
+ if (glewExperimental || GLEW_ARB_texture_storage_multisample) GLEW_ARB_texture_storage_multisample = !_glewInit_GL_ARB_texture_storage_multisample();
+#endif /* GL_ARB_texture_storage_multisample */
+#ifdef GL_ARB_texture_view
+ if (glewExperimental || GLEW_ARB_texture_view) GLEW_ARB_texture_view = !_glewInit_GL_ARB_texture_view();
+#endif /* GL_ARB_texture_view */
+#ifdef GL_ARB_timer_query
+ if (glewExperimental || GLEW_ARB_timer_query) GLEW_ARB_timer_query = !_glewInit_GL_ARB_timer_query();
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+ if (glewExperimental || GLEW_ARB_transform_feedback2) GLEW_ARB_transform_feedback2 = !_glewInit_GL_ARB_transform_feedback2();
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+ if (glewExperimental || GLEW_ARB_transform_feedback3) GLEW_ARB_transform_feedback3 = !_glewInit_GL_ARB_transform_feedback3();
+#endif /* GL_ARB_transform_feedback3 */
+#ifdef GL_ARB_transform_feedback_instanced
+ if (glewExperimental || GLEW_ARB_transform_feedback_instanced) GLEW_ARB_transform_feedback_instanced = !_glewInit_GL_ARB_transform_feedback_instanced();
+#endif /* GL_ARB_transform_feedback_instanced */
+#ifdef GL_ARB_transpose_matrix
+ if (glewExperimental || GLEW_ARB_transpose_matrix) GLEW_ARB_transpose_matrix = !_glewInit_GL_ARB_transpose_matrix();
+#endif /* GL_ARB_transpose_matrix */
+#ifdef GL_ARB_uniform_buffer_object
+ if (glewExperimental || GLEW_ARB_uniform_buffer_object) GLEW_ARB_uniform_buffer_object = !_glewInit_GL_ARB_uniform_buffer_object();
+#endif /* GL_ARB_uniform_buffer_object */
+#ifdef GL_ARB_vertex_array_object
+ if (glewExperimental || GLEW_ARB_vertex_array_object) GLEW_ARB_vertex_array_object = !_glewInit_GL_ARB_vertex_array_object();
+#endif /* GL_ARB_vertex_array_object */
+#ifdef GL_ARB_vertex_attrib_64bit
+ if (glewExperimental || GLEW_ARB_vertex_attrib_64bit) GLEW_ARB_vertex_attrib_64bit = !_glewInit_GL_ARB_vertex_attrib_64bit();
+#endif /* GL_ARB_vertex_attrib_64bit */
+#ifdef GL_ARB_vertex_attrib_binding
+ if (glewExperimental || GLEW_ARB_vertex_attrib_binding) GLEW_ARB_vertex_attrib_binding = !_glewInit_GL_ARB_vertex_attrib_binding();
+#endif /* GL_ARB_vertex_attrib_binding */
+#ifdef GL_ARB_vertex_blend
+ if (glewExperimental || GLEW_ARB_vertex_blend) GLEW_ARB_vertex_blend = !_glewInit_GL_ARB_vertex_blend();
+#endif /* GL_ARB_vertex_blend */
+#ifdef GL_ARB_vertex_buffer_object
+ if (glewExperimental || GLEW_ARB_vertex_buffer_object) GLEW_ARB_vertex_buffer_object = !_glewInit_GL_ARB_vertex_buffer_object();
+#endif /* GL_ARB_vertex_buffer_object */
+#ifdef GL_ARB_vertex_program
+ if (glewExperimental || GLEW_ARB_vertex_program) GLEW_ARB_vertex_program = !_glewInit_GL_ARB_vertex_program();
+#endif /* GL_ARB_vertex_program */
+#ifdef GL_ARB_vertex_shader
+ if (glewExperimental || GLEW_ARB_vertex_shader) { GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader(); _glewInit_GL_ARB_vertex_program(); }
+#endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ if (glewExperimental || GLEW_ARB_vertex_type_2_10_10_10_rev) GLEW_ARB_vertex_type_2_10_10_10_rev = !_glewInit_GL_ARB_vertex_type_2_10_10_10_rev();
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+#ifdef GL_ARB_viewport_array
+ if (glewExperimental || GLEW_ARB_viewport_array) GLEW_ARB_viewport_array = !_glewInit_GL_ARB_viewport_array();
+#endif /* GL_ARB_viewport_array */
+#ifdef GL_ARB_window_pos
+ if (glewExperimental || GLEW_ARB_window_pos) GLEW_ARB_window_pos = !_glewInit_GL_ARB_window_pos();
+#endif /* GL_ARB_window_pos */
+#ifdef GL_ATI_draw_buffers
+ if (glewExperimental || GLEW_ATI_draw_buffers) GLEW_ATI_draw_buffers = !_glewInit_GL_ATI_draw_buffers();
+#endif /* GL_ATI_draw_buffers */
+#ifdef GL_ATI_element_array
+ if (glewExperimental || GLEW_ATI_element_array) GLEW_ATI_element_array = !_glewInit_GL_ATI_element_array();
+#endif /* GL_ATI_element_array */
+#ifdef GL_ATI_envmap_bumpmap
+ if (glewExperimental || GLEW_ATI_envmap_bumpmap) GLEW_ATI_envmap_bumpmap = !_glewInit_GL_ATI_envmap_bumpmap();
+#endif /* GL_ATI_envmap_bumpmap */
+#ifdef GL_ATI_fragment_shader
+ if (glewExperimental || GLEW_ATI_fragment_shader) GLEW_ATI_fragment_shader = !_glewInit_GL_ATI_fragment_shader();
+#endif /* GL_ATI_fragment_shader */
+#ifdef GL_ATI_map_object_buffer
+ if (glewExperimental || GLEW_ATI_map_object_buffer) GLEW_ATI_map_object_buffer = !_glewInit_GL_ATI_map_object_buffer();
+#endif /* GL_ATI_map_object_buffer */
+#ifdef GL_ATI_pn_triangles
+ if (glewExperimental || GLEW_ATI_pn_triangles) GLEW_ATI_pn_triangles = !_glewInit_GL_ATI_pn_triangles();
+#endif /* GL_ATI_pn_triangles */
+#ifdef GL_ATI_separate_stencil
+ if (glewExperimental || GLEW_ATI_separate_stencil) GLEW_ATI_separate_stencil = !_glewInit_GL_ATI_separate_stencil();
+#endif /* GL_ATI_separate_stencil */
+#ifdef GL_ATI_vertex_array_object
+ if (glewExperimental || GLEW_ATI_vertex_array_object) GLEW_ATI_vertex_array_object = !_glewInit_GL_ATI_vertex_array_object();
+#endif /* GL_ATI_vertex_array_object */
+#ifdef GL_ATI_vertex_attrib_array_object
+ if (glewExperimental || GLEW_ATI_vertex_attrib_array_object) GLEW_ATI_vertex_attrib_array_object = !_glewInit_GL_ATI_vertex_attrib_array_object();
+#endif /* GL_ATI_vertex_attrib_array_object */
+#ifdef GL_ATI_vertex_streams
+ if (glewExperimental || GLEW_ATI_vertex_streams) GLEW_ATI_vertex_streams = !_glewInit_GL_ATI_vertex_streams();
+#endif /* GL_ATI_vertex_streams */
+#ifdef GL_EXT_EGL_image_storage
+ if (glewExperimental || GLEW_EXT_EGL_image_storage) GLEW_EXT_EGL_image_storage = !_glewInit_GL_EXT_EGL_image_storage();
+#endif /* GL_EXT_EGL_image_storage */
+#ifdef GL_EXT_base_instance
+ if (glewExperimental || GLEW_EXT_base_instance) GLEW_EXT_base_instance = !_glewInit_GL_EXT_base_instance();
+#endif /* GL_EXT_base_instance */
+#ifdef GL_EXT_bindable_uniform
+ if (glewExperimental || GLEW_EXT_bindable_uniform) GLEW_EXT_bindable_uniform = !_glewInit_GL_EXT_bindable_uniform();
+#endif /* GL_EXT_bindable_uniform */
+#ifdef GL_EXT_blend_color
+ if (glewExperimental || GLEW_EXT_blend_color) GLEW_EXT_blend_color = !_glewInit_GL_EXT_blend_color();
+#endif /* GL_EXT_blend_color */
+#ifdef GL_EXT_blend_equation_separate
+ if (glewExperimental || GLEW_EXT_blend_equation_separate) GLEW_EXT_blend_equation_separate = !_glewInit_GL_EXT_blend_equation_separate();
+#endif /* GL_EXT_blend_equation_separate */
+#ifdef GL_EXT_blend_func_extended
+ if (glewExperimental || GLEW_EXT_blend_func_extended) GLEW_EXT_blend_func_extended = !_glewInit_GL_EXT_blend_func_extended();
+#endif /* GL_EXT_blend_func_extended */
+#ifdef GL_EXT_blend_func_separate
+ if (glewExperimental || GLEW_EXT_blend_func_separate) GLEW_EXT_blend_func_separate = !_glewInit_GL_EXT_blend_func_separate();
+#endif /* GL_EXT_blend_func_separate */
+#ifdef GL_EXT_blend_minmax
+ if (glewExperimental || GLEW_EXT_blend_minmax) GLEW_EXT_blend_minmax = !_glewInit_GL_EXT_blend_minmax();
+#endif /* GL_EXT_blend_minmax */
+#ifdef GL_EXT_buffer_storage
+ if (glewExperimental || GLEW_EXT_buffer_storage) GLEW_EXT_buffer_storage = !_glewInit_GL_EXT_buffer_storage();
+#endif /* GL_EXT_buffer_storage */
+#ifdef GL_EXT_clear_texture
+ if (glewExperimental || GLEW_EXT_clear_texture) GLEW_EXT_clear_texture = !_glewInit_GL_EXT_clear_texture();
+#endif /* GL_EXT_clear_texture */
+#ifdef GL_EXT_clip_control
+ if (glewExperimental || GLEW_EXT_clip_control) GLEW_EXT_clip_control = !_glewInit_GL_EXT_clip_control();
+#endif /* GL_EXT_clip_control */
+#ifdef GL_EXT_color_subtable
+ if (glewExperimental || GLEW_EXT_color_subtable) GLEW_EXT_color_subtable = !_glewInit_GL_EXT_color_subtable();
+#endif /* GL_EXT_color_subtable */
+#ifdef GL_EXT_compiled_vertex_array
+ if (glewExperimental || GLEW_EXT_compiled_vertex_array) GLEW_EXT_compiled_vertex_array = !_glewInit_GL_EXT_compiled_vertex_array();
+#endif /* GL_EXT_compiled_vertex_array */
+#ifdef GL_EXT_convolution
+ if (glewExperimental || GLEW_EXT_convolution) GLEW_EXT_convolution = !_glewInit_GL_EXT_convolution();
+#endif /* GL_EXT_convolution */
+#ifdef GL_EXT_coordinate_frame
+ if (glewExperimental || GLEW_EXT_coordinate_frame) GLEW_EXT_coordinate_frame = !_glewInit_GL_EXT_coordinate_frame();
+#endif /* GL_EXT_coordinate_frame */
+#ifdef GL_EXT_copy_image
+ if (glewExperimental || GLEW_EXT_copy_image) GLEW_EXT_copy_image = !_glewInit_GL_EXT_copy_image();
+#endif /* GL_EXT_copy_image */
+#ifdef GL_EXT_copy_texture
+ if (glewExperimental || GLEW_EXT_copy_texture) GLEW_EXT_copy_texture = !_glewInit_GL_EXT_copy_texture();
+#endif /* GL_EXT_copy_texture */
+#ifdef GL_EXT_cull_vertex
+ if (glewExperimental || GLEW_EXT_cull_vertex) GLEW_EXT_cull_vertex = !_glewInit_GL_EXT_cull_vertex();
+#endif /* GL_EXT_cull_vertex */
+#ifdef GL_EXT_debug_label
+ if (glewExperimental || GLEW_EXT_debug_label) GLEW_EXT_debug_label = !_glewInit_GL_EXT_debug_label();
+#endif /* GL_EXT_debug_label */
+#ifdef GL_EXT_debug_marker
+ if (glewExperimental || GLEW_EXT_debug_marker) GLEW_EXT_debug_marker = !_glewInit_GL_EXT_debug_marker();
+#endif /* GL_EXT_debug_marker */
+#ifdef GL_EXT_depth_bounds_test
+ if (glewExperimental || GLEW_EXT_depth_bounds_test) GLEW_EXT_depth_bounds_test = !_glewInit_GL_EXT_depth_bounds_test();
+#endif /* GL_EXT_depth_bounds_test */
+#ifdef GL_EXT_direct_state_access
+ if (glewExperimental || GLEW_EXT_direct_state_access) GLEW_EXT_direct_state_access = !_glewInit_GL_EXT_direct_state_access();
+#endif /* GL_EXT_direct_state_access */
+#ifdef GL_EXT_discard_framebuffer
+ if (glewExperimental || GLEW_EXT_discard_framebuffer) GLEW_EXT_discard_framebuffer = !_glewInit_GL_EXT_discard_framebuffer();
+#endif /* GL_EXT_discard_framebuffer */
+#ifdef GL_EXT_disjoint_timer_query
+ if (glewExperimental || GLEW_EXT_disjoint_timer_query) GLEW_EXT_disjoint_timer_query = !_glewInit_GL_EXT_disjoint_timer_query();
+#endif /* GL_EXT_disjoint_timer_query */
+#ifdef GL_EXT_draw_buffers
+ if (glewExperimental || GLEW_EXT_draw_buffers) GLEW_EXT_draw_buffers = !_glewInit_GL_EXT_draw_buffers();
+#endif /* GL_EXT_draw_buffers */
+#ifdef GL_EXT_draw_buffers2
+ if (glewExperimental || GLEW_EXT_draw_buffers2) GLEW_EXT_draw_buffers2 = !_glewInit_GL_EXT_draw_buffers2();
+#endif /* GL_EXT_draw_buffers2 */
+#ifdef GL_EXT_draw_buffers_indexed
+ if (glewExperimental || GLEW_EXT_draw_buffers_indexed) GLEW_EXT_draw_buffers_indexed = !_glewInit_GL_EXT_draw_buffers_indexed();
+#endif /* GL_EXT_draw_buffers_indexed */
+#ifdef GL_EXT_draw_elements_base_vertex
+ if (glewExperimental || GLEW_EXT_draw_elements_base_vertex) GLEW_EXT_draw_elements_base_vertex = !_glewInit_GL_EXT_draw_elements_base_vertex();
+#endif /* GL_EXT_draw_elements_base_vertex */
+#ifdef GL_EXT_draw_instanced
+ if (glewExperimental || GLEW_EXT_draw_instanced) GLEW_EXT_draw_instanced = !_glewInit_GL_EXT_draw_instanced();
+#endif /* GL_EXT_draw_instanced */
+#ifdef GL_EXT_draw_range_elements
+ if (glewExperimental || GLEW_EXT_draw_range_elements) GLEW_EXT_draw_range_elements = !_glewInit_GL_EXT_draw_range_elements();
+#endif /* GL_EXT_draw_range_elements */
+#ifdef GL_EXT_draw_transform_feedback
+ if (glewExperimental || GLEW_EXT_draw_transform_feedback) GLEW_EXT_draw_transform_feedback = !_glewInit_GL_EXT_draw_transform_feedback();
+#endif /* GL_EXT_draw_transform_feedback */
+#ifdef GL_EXT_external_buffer
+ if (glewExperimental || GLEW_EXT_external_buffer) GLEW_EXT_external_buffer = !_glewInit_GL_EXT_external_buffer();
+#endif /* GL_EXT_external_buffer */
+#ifdef GL_EXT_fog_coord
+ if (glewExperimental || GLEW_EXT_fog_coord) GLEW_EXT_fog_coord = !_glewInit_GL_EXT_fog_coord();
+#endif /* GL_EXT_fog_coord */
+#ifdef GL_EXT_fragment_lighting
+ if (glewExperimental || GLEW_EXT_fragment_lighting) GLEW_EXT_fragment_lighting = !_glewInit_GL_EXT_fragment_lighting();
+#endif /* GL_EXT_fragment_lighting */
+#ifdef GL_EXT_framebuffer_blit
+ if (glewExperimental || GLEW_EXT_framebuffer_blit) GLEW_EXT_framebuffer_blit = !_glewInit_GL_EXT_framebuffer_blit();
+#endif /* GL_EXT_framebuffer_blit */
+#ifdef GL_EXT_framebuffer_multisample
+ if (glewExperimental || GLEW_EXT_framebuffer_multisample) GLEW_EXT_framebuffer_multisample = !_glewInit_GL_EXT_framebuffer_multisample();
+#endif /* GL_EXT_framebuffer_multisample */
+#ifdef GL_EXT_framebuffer_object
+ if (glewExperimental || GLEW_EXT_framebuffer_object) GLEW_EXT_framebuffer_object = !_glewInit_GL_EXT_framebuffer_object();
+#endif /* GL_EXT_framebuffer_object */
+#ifdef GL_EXT_geometry_shader4
+ if (glewExperimental || GLEW_EXT_geometry_shader4) GLEW_EXT_geometry_shader4 = !_glewInit_GL_EXT_geometry_shader4();
+#endif /* GL_EXT_geometry_shader4 */
+#ifdef GL_EXT_gpu_program_parameters
+ if (glewExperimental || GLEW_EXT_gpu_program_parameters) GLEW_EXT_gpu_program_parameters = !_glewInit_GL_EXT_gpu_program_parameters();
+#endif /* GL_EXT_gpu_program_parameters */
+#ifdef GL_EXT_gpu_shader4
+ if (glewExperimental || GLEW_EXT_gpu_shader4) GLEW_EXT_gpu_shader4 = !_glewInit_GL_EXT_gpu_shader4();
+#endif /* GL_EXT_gpu_shader4 */
+#ifdef GL_EXT_histogram
+ if (glewExperimental || GLEW_EXT_histogram) GLEW_EXT_histogram = !_glewInit_GL_EXT_histogram();
+#endif /* GL_EXT_histogram */
+#ifdef GL_EXT_index_func
+ if (glewExperimental || GLEW_EXT_index_func) GLEW_EXT_index_func = !_glewInit_GL_EXT_index_func();
+#endif /* GL_EXT_index_func */
+#ifdef GL_EXT_index_material
+ if (glewExperimental || GLEW_EXT_index_material) GLEW_EXT_index_material = !_glewInit_GL_EXT_index_material();
+#endif /* GL_EXT_index_material */
+#ifdef GL_EXT_instanced_arrays
+ if (glewExperimental || GLEW_EXT_instanced_arrays) GLEW_EXT_instanced_arrays = !_glewInit_GL_EXT_instanced_arrays();
+#endif /* GL_EXT_instanced_arrays */
+#ifdef GL_EXT_light_texture
+ if (glewExperimental || GLEW_EXT_light_texture) GLEW_EXT_light_texture = !_glewInit_GL_EXT_light_texture();
+#endif /* GL_EXT_light_texture */
+#ifdef GL_EXT_map_buffer_range
+ if (glewExperimental || GLEW_EXT_map_buffer_range) GLEW_EXT_map_buffer_range = !_glewInit_GL_EXT_map_buffer_range();
+#endif /* GL_EXT_map_buffer_range */
+#ifdef GL_EXT_memory_object
+ if (glewExperimental || GLEW_EXT_memory_object) GLEW_EXT_memory_object = !_glewInit_GL_EXT_memory_object();
+#endif /* GL_EXT_memory_object */
+#ifdef GL_EXT_memory_object_fd
+ if (glewExperimental || GLEW_EXT_memory_object_fd) GLEW_EXT_memory_object_fd = !_glewInit_GL_EXT_memory_object_fd();
+#endif /* GL_EXT_memory_object_fd */
+#ifdef GL_EXT_memory_object_win32
+ if (glewExperimental || GLEW_EXT_memory_object_win32) GLEW_EXT_memory_object_win32 = !_glewInit_GL_EXT_memory_object_win32();
+#endif /* GL_EXT_memory_object_win32 */
+#ifdef GL_EXT_multi_draw_arrays
+ if (glewExperimental || GLEW_EXT_multi_draw_arrays) GLEW_EXT_multi_draw_arrays = !_glewInit_GL_EXT_multi_draw_arrays();
+#endif /* GL_EXT_multi_draw_arrays */
+#ifdef GL_EXT_multi_draw_indirect
+ if (glewExperimental || GLEW_EXT_multi_draw_indirect) GLEW_EXT_multi_draw_indirect = !_glewInit_GL_EXT_multi_draw_indirect();
+#endif /* GL_EXT_multi_draw_indirect */
+#ifdef GL_EXT_multisample
+ if (glewExperimental || GLEW_EXT_multisample) GLEW_EXT_multisample = !_glewInit_GL_EXT_multisample();
+#endif /* GL_EXT_multisample */
+#ifdef GL_EXT_multisampled_render_to_texture
+ if (glewExperimental || GLEW_EXT_multisampled_render_to_texture) GLEW_EXT_multisampled_render_to_texture = !_glewInit_GL_EXT_multisampled_render_to_texture();
+#endif /* GL_EXT_multisampled_render_to_texture */
+#ifdef GL_EXT_multiview_draw_buffers
+ if (glewExperimental || GLEW_EXT_multiview_draw_buffers) GLEW_EXT_multiview_draw_buffers = !_glewInit_GL_EXT_multiview_draw_buffers();
+#endif /* GL_EXT_multiview_draw_buffers */
+#ifdef GL_EXT_paletted_texture
+ if (glewExperimental || GLEW_EXT_paletted_texture) GLEW_EXT_paletted_texture = !_glewInit_GL_EXT_paletted_texture();
+#endif /* GL_EXT_paletted_texture */
+#ifdef GL_EXT_pixel_transform
+ if (glewExperimental || GLEW_EXT_pixel_transform) GLEW_EXT_pixel_transform = !_glewInit_GL_EXT_pixel_transform();
+#endif /* GL_EXT_pixel_transform */
+#ifdef GL_EXT_point_parameters
+ if (glewExperimental || GLEW_EXT_point_parameters) GLEW_EXT_point_parameters = !_glewInit_GL_EXT_point_parameters();
+#endif /* GL_EXT_point_parameters */
+#ifdef GL_EXT_polygon_offset
+ if (glewExperimental || GLEW_EXT_polygon_offset) GLEW_EXT_polygon_offset = !_glewInit_GL_EXT_polygon_offset();
+#endif /* GL_EXT_polygon_offset */
+#ifdef GL_EXT_polygon_offset_clamp
+ if (glewExperimental || GLEW_EXT_polygon_offset_clamp) GLEW_EXT_polygon_offset_clamp = !_glewInit_GL_EXT_polygon_offset_clamp();
+#endif /* GL_EXT_polygon_offset_clamp */
+#ifdef GL_EXT_primitive_bounding_box
+ if (glewExperimental || GLEW_EXT_primitive_bounding_box) GLEW_EXT_primitive_bounding_box = !_glewInit_GL_EXT_primitive_bounding_box();
+#endif /* GL_EXT_primitive_bounding_box */
+#ifdef GL_EXT_provoking_vertex
+ if (glewExperimental || GLEW_EXT_provoking_vertex) GLEW_EXT_provoking_vertex = !_glewInit_GL_EXT_provoking_vertex();
+#endif /* GL_EXT_provoking_vertex */
+#ifdef GL_EXT_raster_multisample
+ if (glewExperimental || GLEW_EXT_raster_multisample) GLEW_EXT_raster_multisample = !_glewInit_GL_EXT_raster_multisample();
+#endif /* GL_EXT_raster_multisample */
+#ifdef GL_EXT_robustness
+ if (glewExperimental || GLEW_EXT_robustness) GLEW_EXT_robustness = !_glewInit_GL_EXT_robustness();
+#endif /* GL_EXT_robustness */
+#ifdef GL_EXT_scene_marker
+ if (glewExperimental || GLEW_EXT_scene_marker) GLEW_EXT_scene_marker = !_glewInit_GL_EXT_scene_marker();
+#endif /* GL_EXT_scene_marker */
+#ifdef GL_EXT_secondary_color
+ if (glewExperimental || GLEW_EXT_secondary_color) GLEW_EXT_secondary_color = !_glewInit_GL_EXT_secondary_color();
+#endif /* GL_EXT_secondary_color */
+#ifdef GL_EXT_semaphore
+ if (glewExperimental || GLEW_EXT_semaphore) GLEW_EXT_semaphore = !_glewInit_GL_EXT_semaphore();
+#endif /* GL_EXT_semaphore */
+#ifdef GL_EXT_semaphore_fd
+ if (glewExperimental || GLEW_EXT_semaphore_fd) GLEW_EXT_semaphore_fd = !_glewInit_GL_EXT_semaphore_fd();
+#endif /* GL_EXT_semaphore_fd */
+#ifdef GL_EXT_semaphore_win32
+ if (glewExperimental || GLEW_EXT_semaphore_win32) GLEW_EXT_semaphore_win32 = !_glewInit_GL_EXT_semaphore_win32();
+#endif /* GL_EXT_semaphore_win32 */
+#ifdef GL_EXT_separate_shader_objects
+ if (glewExperimental || GLEW_EXT_separate_shader_objects) GLEW_EXT_separate_shader_objects = !_glewInit_GL_EXT_separate_shader_objects();
+#endif /* GL_EXT_separate_shader_objects */
+#ifdef GL_EXT_shader_framebuffer_fetch
+ if (glewExperimental || GLEW_EXT_shader_framebuffer_fetch) GLEW_EXT_shader_framebuffer_fetch = !_glewInit_GL_EXT_shader_framebuffer_fetch();
+#endif /* GL_EXT_shader_framebuffer_fetch */
+#ifdef GL_EXT_shader_image_load_store
+ if (glewExperimental || GLEW_EXT_shader_image_load_store) GLEW_EXT_shader_image_load_store = !_glewInit_GL_EXT_shader_image_load_store();
+#endif /* GL_EXT_shader_image_load_store */
+#ifdef GL_EXT_shader_pixel_local_storage2
+ if (glewExperimental || GLEW_EXT_shader_pixel_local_storage2) GLEW_EXT_shader_pixel_local_storage2 = !_glewInit_GL_EXT_shader_pixel_local_storage2();
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+#ifdef GL_EXT_sparse_texture
+ if (glewExperimental || GLEW_EXT_sparse_texture) GLEW_EXT_sparse_texture = !_glewInit_GL_EXT_sparse_texture();
+#endif /* GL_EXT_sparse_texture */
+#ifdef GL_EXT_stencil_two_side
+ if (glewExperimental || GLEW_EXT_stencil_two_side) GLEW_EXT_stencil_two_side = !_glewInit_GL_EXT_stencil_two_side();
+#endif /* GL_EXT_stencil_two_side */
+#ifdef GL_EXT_subtexture
+ if (glewExperimental || GLEW_EXT_subtexture) GLEW_EXT_subtexture = !_glewInit_GL_EXT_subtexture();
+#endif /* GL_EXT_subtexture */
+#ifdef GL_EXT_tessellation_point_size
+ if (glewExperimental || GLEW_EXT_tessellation_point_size) GLEW_EXT_tessellation_point_size = !_glewInit_GL_EXT_tessellation_point_size();
+#endif /* GL_EXT_tessellation_point_size */
+#ifdef GL_EXT_texture3D
+ if (glewExperimental || GLEW_EXT_texture3D) GLEW_EXT_texture3D = !_glewInit_GL_EXT_texture3D();
+#endif /* GL_EXT_texture3D */
+#ifdef GL_EXT_texture_array
+ if (glewExperimental || GLEW_EXT_texture_array) GLEW_EXT_texture_array = !_glewInit_GL_EXT_texture_array();
+#endif /* GL_EXT_texture_array */
+#ifdef GL_EXT_texture_border_clamp
+ if (glewExperimental || GLEW_EXT_texture_border_clamp) GLEW_EXT_texture_border_clamp = !_glewInit_GL_EXT_texture_border_clamp();
+#endif /* GL_EXT_texture_border_clamp */
+#ifdef GL_EXT_texture_buffer_object
+ if (glewExperimental || GLEW_EXT_texture_buffer_object) GLEW_EXT_texture_buffer_object = !_glewInit_GL_EXT_texture_buffer_object();
+#endif /* GL_EXT_texture_buffer_object */
+#ifdef GL_EXT_texture_integer
+ if (glewExperimental || GLEW_EXT_texture_integer) GLEW_EXT_texture_integer = !_glewInit_GL_EXT_texture_integer();
+#endif /* GL_EXT_texture_integer */
+#ifdef GL_EXT_texture_object
+ if (glewExperimental || GLEW_EXT_texture_object) GLEW_EXT_texture_object = !_glewInit_GL_EXT_texture_object();
+#endif /* GL_EXT_texture_object */
+#ifdef GL_EXT_texture_perturb_normal
+ if (glewExperimental || GLEW_EXT_texture_perturb_normal) GLEW_EXT_texture_perturb_normal = !_glewInit_GL_EXT_texture_perturb_normal();
+#endif /* GL_EXT_texture_perturb_normal */
+#ifdef GL_EXT_texture_storage
+ if (glewExperimental || GLEW_EXT_texture_storage) GLEW_EXT_texture_storage = !_glewInit_GL_EXT_texture_storage();
+#endif /* GL_EXT_texture_storage */
+#ifdef GL_EXT_texture_storage_compression
+ if (glewExperimental || GLEW_EXT_texture_storage_compression) GLEW_EXT_texture_storage_compression = !_glewInit_GL_EXT_texture_storage_compression();
+#endif /* GL_EXT_texture_storage_compression */
+#ifdef GL_EXT_texture_view
+ if (glewExperimental || GLEW_EXT_texture_view) GLEW_EXT_texture_view = !_glewInit_GL_EXT_texture_view();
+#endif /* GL_EXT_texture_view */
+#ifdef GL_EXT_timer_query
+ if (glewExperimental || GLEW_EXT_timer_query) GLEW_EXT_timer_query = !_glewInit_GL_EXT_timer_query();
+#endif /* GL_EXT_timer_query */
+#ifdef GL_EXT_transform_feedback
+ if (glewExperimental || GLEW_EXT_transform_feedback) GLEW_EXT_transform_feedback = !_glewInit_GL_EXT_transform_feedback();
+#endif /* GL_EXT_transform_feedback */
+#ifdef GL_EXT_vertex_array
+ if (glewExperimental || GLEW_EXT_vertex_array) GLEW_EXT_vertex_array = !_glewInit_GL_EXT_vertex_array();
+#endif /* GL_EXT_vertex_array */
+#ifdef GL_EXT_vertex_array_setXXX
+ if (glewExperimental || GLEW_EXT_vertex_array_setXXX) GLEW_EXT_vertex_array_setXXX = !_glewInit_GL_EXT_vertex_array_setXXX();
+#endif /* GL_EXT_vertex_array_setXXX */
+#ifdef GL_EXT_vertex_attrib_64bit
+ if (glewExperimental || GLEW_EXT_vertex_attrib_64bit) GLEW_EXT_vertex_attrib_64bit = !_glewInit_GL_EXT_vertex_attrib_64bit();
+#endif /* GL_EXT_vertex_attrib_64bit */
+#ifdef GL_EXT_vertex_shader
+ if (glewExperimental || GLEW_EXT_vertex_shader) GLEW_EXT_vertex_shader = !_glewInit_GL_EXT_vertex_shader();
+#endif /* GL_EXT_vertex_shader */
+#ifdef GL_EXT_vertex_weighting
+ if (glewExperimental || GLEW_EXT_vertex_weighting) GLEW_EXT_vertex_weighting = !_glewInit_GL_EXT_vertex_weighting();
+#endif /* GL_EXT_vertex_weighting */
+#ifdef GL_EXT_win32_keyed_mutex
+ if (glewExperimental || GLEW_EXT_win32_keyed_mutex) GLEW_EXT_win32_keyed_mutex = !_glewInit_GL_EXT_win32_keyed_mutex();
+#endif /* GL_EXT_win32_keyed_mutex */
+#ifdef GL_EXT_window_rectangles
+ if (glewExperimental || GLEW_EXT_window_rectangles) GLEW_EXT_window_rectangles = !_glewInit_GL_EXT_window_rectangles();
+#endif /* GL_EXT_window_rectangles */
+#ifdef GL_EXT_x11_sync_object
+ if (glewExperimental || GLEW_EXT_x11_sync_object) GLEW_EXT_x11_sync_object = !_glewInit_GL_EXT_x11_sync_object();
+#endif /* GL_EXT_x11_sync_object */
+#ifdef GL_GREMEDY_frame_terminator
+ if (glewExperimental || GLEW_GREMEDY_frame_terminator) GLEW_GREMEDY_frame_terminator = !_glewInit_GL_GREMEDY_frame_terminator();
+#endif /* GL_GREMEDY_frame_terminator */
+#ifdef GL_GREMEDY_string_marker
+ if (glewExperimental || GLEW_GREMEDY_string_marker) GLEW_GREMEDY_string_marker = !_glewInit_GL_GREMEDY_string_marker();
+#endif /* GL_GREMEDY_string_marker */
+#ifdef GL_HP_image_transform
+ if (glewExperimental || GLEW_HP_image_transform) GLEW_HP_image_transform = !_glewInit_GL_HP_image_transform();
+#endif /* GL_HP_image_transform */
+#ifdef GL_IBM_multimode_draw_arrays
+ if (glewExperimental || GLEW_IBM_multimode_draw_arrays) GLEW_IBM_multimode_draw_arrays = !_glewInit_GL_IBM_multimode_draw_arrays();
+#endif /* GL_IBM_multimode_draw_arrays */
+#ifdef GL_IBM_vertex_array_lists
+ if (glewExperimental || GLEW_IBM_vertex_array_lists) GLEW_IBM_vertex_array_lists = !_glewInit_GL_IBM_vertex_array_lists();
+#endif /* GL_IBM_vertex_array_lists */
+#ifdef GL_IMG_bindless_texture
+ if (glewExperimental || GLEW_IMG_bindless_texture) GLEW_IMG_bindless_texture = !_glewInit_GL_IMG_bindless_texture();
+#endif /* GL_IMG_bindless_texture */
+#ifdef GL_IMG_framebuffer_downsample
+ if (glewExperimental || GLEW_IMG_framebuffer_downsample) GLEW_IMG_framebuffer_downsample = !_glewInit_GL_IMG_framebuffer_downsample();
+#endif /* GL_IMG_framebuffer_downsample */
+#ifdef GL_IMG_multisampled_render_to_texture
+ if (glewExperimental || GLEW_IMG_multisampled_render_to_texture) GLEW_IMG_multisampled_render_to_texture = !_glewInit_GL_IMG_multisampled_render_to_texture();
+#endif /* GL_IMG_multisampled_render_to_texture */
+#ifdef GL_INTEL_framebuffer_CMAA
+ if (glewExperimental || GLEW_INTEL_framebuffer_CMAA) GLEW_INTEL_framebuffer_CMAA = !_glewInit_GL_INTEL_framebuffer_CMAA();
+#endif /* GL_INTEL_framebuffer_CMAA */
+#ifdef GL_INTEL_map_texture
+ if (glewExperimental || GLEW_INTEL_map_texture) GLEW_INTEL_map_texture = !_glewInit_GL_INTEL_map_texture();
+#endif /* GL_INTEL_map_texture */
+#ifdef GL_INTEL_parallel_arrays
+ if (glewExperimental || GLEW_INTEL_parallel_arrays) GLEW_INTEL_parallel_arrays = !_glewInit_GL_INTEL_parallel_arrays();
+#endif /* GL_INTEL_parallel_arrays */
+#ifdef GL_INTEL_performance_query
+ if (glewExperimental || GLEW_INTEL_performance_query) GLEW_INTEL_performance_query = !_glewInit_GL_INTEL_performance_query();
+#endif /* GL_INTEL_performance_query */
+#ifdef GL_INTEL_texture_scissor
+ if (glewExperimental || GLEW_INTEL_texture_scissor) GLEW_INTEL_texture_scissor = !_glewInit_GL_INTEL_texture_scissor();
+#endif /* GL_INTEL_texture_scissor */
+#ifdef GL_KHR_blend_equation_advanced
+ if (glewExperimental || GLEW_KHR_blend_equation_advanced) GLEW_KHR_blend_equation_advanced = !_glewInit_GL_KHR_blend_equation_advanced();
+#endif /* GL_KHR_blend_equation_advanced */
+#ifdef GL_KHR_debug
+ if (glewExperimental || GLEW_KHR_debug) GLEW_KHR_debug = !_glewInit_GL_KHR_debug();
+#endif /* GL_KHR_debug */
+#ifdef GL_KHR_parallel_shader_compile
+ if (glewExperimental || GLEW_KHR_parallel_shader_compile) GLEW_KHR_parallel_shader_compile = !_glewInit_GL_KHR_parallel_shader_compile();
+#endif /* GL_KHR_parallel_shader_compile */
+#ifdef GL_KHR_robustness
+ if (glewExperimental || GLEW_KHR_robustness) GLEW_KHR_robustness = !_glewInit_GL_KHR_robustness();
+#endif /* GL_KHR_robustness */
+#ifdef GL_KTX_buffer_region
+ if (glewExperimental || GLEW_KTX_buffer_region) GLEW_KTX_buffer_region = !_glewInit_GL_KTX_buffer_region();
+#endif /* GL_KTX_buffer_region */
+#ifdef GL_MESA_framebuffer_flip_y
+ if (glewExperimental || GLEW_MESA_framebuffer_flip_y) GLEW_MESA_framebuffer_flip_y = !_glewInit_GL_MESA_framebuffer_flip_y();
+#endif /* GL_MESA_framebuffer_flip_y */
+#ifdef GL_MESA_resize_buffers
+ if (glewExperimental || GLEW_MESA_resize_buffers) GLEW_MESA_resize_buffers = !_glewInit_GL_MESA_resize_buffers();
+#endif /* GL_MESA_resize_buffers */
+#ifdef GL_MESA_window_pos
+ if (glewExperimental || GLEW_MESA_window_pos) GLEW_MESA_window_pos = !_glewInit_GL_MESA_window_pos();
+#endif /* GL_MESA_window_pos */
+#ifdef GL_NVX_conditional_render
+ if (glewExperimental || GLEW_NVX_conditional_render) GLEW_NVX_conditional_render = !_glewInit_GL_NVX_conditional_render();
+#endif /* GL_NVX_conditional_render */
+#ifdef GL_NVX_gpu_multicast2
+ if (glewExperimental || GLEW_NVX_gpu_multicast2) GLEW_NVX_gpu_multicast2 = !_glewInit_GL_NVX_gpu_multicast2();
+#endif /* GL_NVX_gpu_multicast2 */
+#ifdef GL_NVX_linked_gpu_multicast
+ if (glewExperimental || GLEW_NVX_linked_gpu_multicast) GLEW_NVX_linked_gpu_multicast = !_glewInit_GL_NVX_linked_gpu_multicast();
+#endif /* GL_NVX_linked_gpu_multicast */
+#ifdef GL_NVX_progress_fence
+ if (glewExperimental || GLEW_NVX_progress_fence) GLEW_NVX_progress_fence = !_glewInit_GL_NVX_progress_fence();
+#endif /* GL_NVX_progress_fence */
+#ifdef GL_NV_3dvision_settings
+ if (glewExperimental || GLEW_NV_3dvision_settings) GLEW_NV_3dvision_settings = !_glewInit_GL_NV_3dvision_settings();
+#endif /* GL_NV_3dvision_settings */
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ if (glewExperimental || GLEW_NV_alpha_to_coverage_dither_control) GLEW_NV_alpha_to_coverage_dither_control = !_glewInit_GL_NV_alpha_to_coverage_dither_control();
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+#ifdef GL_NV_bindless_multi_draw_indirect
+ if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect) GLEW_NV_bindless_multi_draw_indirect = !_glewInit_GL_NV_bindless_multi_draw_indirect();
+#endif /* GL_NV_bindless_multi_draw_indirect */
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect_count) GLEW_NV_bindless_multi_draw_indirect_count = !_glewInit_GL_NV_bindless_multi_draw_indirect_count();
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+#ifdef GL_NV_bindless_texture
+ if (glewExperimental || GLEW_NV_bindless_texture) GLEW_NV_bindless_texture = !_glewInit_GL_NV_bindless_texture();
+#endif /* GL_NV_bindless_texture */
+#ifdef GL_NV_blend_equation_advanced
+ if (glewExperimental || GLEW_NV_blend_equation_advanced) GLEW_NV_blend_equation_advanced = !_glewInit_GL_NV_blend_equation_advanced();
+#endif /* GL_NV_blend_equation_advanced */
+#ifdef GL_NV_clip_space_w_scaling
+ if (glewExperimental || GLEW_NV_clip_space_w_scaling) GLEW_NV_clip_space_w_scaling = !_glewInit_GL_NV_clip_space_w_scaling();
+#endif /* GL_NV_clip_space_w_scaling */
+#ifdef GL_NV_command_list
+ if (glewExperimental || GLEW_NV_command_list) GLEW_NV_command_list = !_glewInit_GL_NV_command_list();
+#endif /* GL_NV_command_list */
+#ifdef GL_NV_conditional_render
+ if (glewExperimental || GLEW_NV_conditional_render) GLEW_NV_conditional_render = !_glewInit_GL_NV_conditional_render();
+#endif /* GL_NV_conditional_render */
+#ifdef GL_NV_conservative_raster
+ if (glewExperimental || GLEW_NV_conservative_raster) GLEW_NV_conservative_raster = !_glewInit_GL_NV_conservative_raster();
+#endif /* GL_NV_conservative_raster */
+#ifdef GL_NV_conservative_raster_dilate
+ if (glewExperimental || GLEW_NV_conservative_raster_dilate) GLEW_NV_conservative_raster_dilate = !_glewInit_GL_NV_conservative_raster_dilate();
+#endif /* GL_NV_conservative_raster_dilate */
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ if (glewExperimental || GLEW_NV_conservative_raster_pre_snap_triangles) GLEW_NV_conservative_raster_pre_snap_triangles = !_glewInit_GL_NV_conservative_raster_pre_snap_triangles();
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+#ifdef GL_NV_copy_buffer
+ if (glewExperimental || GLEW_NV_copy_buffer) GLEW_NV_copy_buffer = !_glewInit_GL_NV_copy_buffer();
+#endif /* GL_NV_copy_buffer */
+#ifdef GL_NV_copy_image
+ if (glewExperimental || GLEW_NV_copy_image) GLEW_NV_copy_image = !_glewInit_GL_NV_copy_image();
+#endif /* GL_NV_copy_image */
+#ifdef GL_NV_depth_buffer_float
+ if (glewExperimental || GLEW_NV_depth_buffer_float) GLEW_NV_depth_buffer_float = !_glewInit_GL_NV_depth_buffer_float();
+#endif /* GL_NV_depth_buffer_float */
+#ifdef GL_NV_draw_buffers
+ if (glewExperimental || GLEW_NV_draw_buffers) GLEW_NV_draw_buffers = !_glewInit_GL_NV_draw_buffers();
+#endif /* GL_NV_draw_buffers */
+#ifdef GL_NV_draw_instanced
+ if (glewExperimental || GLEW_NV_draw_instanced) GLEW_NV_draw_instanced = !_glewInit_GL_NV_draw_instanced();
+#endif /* GL_NV_draw_instanced */
+#ifdef GL_NV_draw_texture
+ if (glewExperimental || GLEW_NV_draw_texture) GLEW_NV_draw_texture = !_glewInit_GL_NV_draw_texture();
+#endif /* GL_NV_draw_texture */
+#ifdef GL_NV_draw_vulkan_image
+ if (glewExperimental || GLEW_NV_draw_vulkan_image) GLEW_NV_draw_vulkan_image = !_glewInit_GL_NV_draw_vulkan_image();
+#endif /* GL_NV_draw_vulkan_image */
+#ifdef GL_NV_evaluators
+ if (glewExperimental || GLEW_NV_evaluators) GLEW_NV_evaluators = !_glewInit_GL_NV_evaluators();
+#endif /* GL_NV_evaluators */
+#ifdef GL_NV_explicit_multisample
+ if (glewExperimental || GLEW_NV_explicit_multisample) GLEW_NV_explicit_multisample = !_glewInit_GL_NV_explicit_multisample();
+#endif /* GL_NV_explicit_multisample */
+#ifdef GL_NV_fence
+ if (glewExperimental || GLEW_NV_fence) GLEW_NV_fence = !_glewInit_GL_NV_fence();
+#endif /* GL_NV_fence */
+#ifdef GL_NV_fragment_coverage_to_color
+ if (glewExperimental || GLEW_NV_fragment_coverage_to_color) GLEW_NV_fragment_coverage_to_color = !_glewInit_GL_NV_fragment_coverage_to_color();
+#endif /* GL_NV_fragment_coverage_to_color */
+#ifdef GL_NV_fragment_program
+ if (glewExperimental || GLEW_NV_fragment_program) GLEW_NV_fragment_program = !_glewInit_GL_NV_fragment_program();
+#endif /* GL_NV_fragment_program */
+#ifdef GL_NV_framebuffer_blit
+ if (glewExperimental || GLEW_NV_framebuffer_blit) GLEW_NV_framebuffer_blit = !_glewInit_GL_NV_framebuffer_blit();
+#endif /* GL_NV_framebuffer_blit */
+#ifdef GL_NV_framebuffer_multisample
+ if (glewExperimental || GLEW_NV_framebuffer_multisample) GLEW_NV_framebuffer_multisample = !_glewInit_GL_NV_framebuffer_multisample();
+#endif /* GL_NV_framebuffer_multisample */
+#ifdef GL_NV_framebuffer_multisample_coverage
+ if (glewExperimental || GLEW_NV_framebuffer_multisample_coverage) GLEW_NV_framebuffer_multisample_coverage = !_glewInit_GL_NV_framebuffer_multisample_coverage();
+#endif /* GL_NV_framebuffer_multisample_coverage */
+#ifdef GL_NV_geometry_program4
+ if (glewExperimental || GLEW_NV_geometry_program4) GLEW_NV_geometry_program4 = !_glewInit_GL_NV_geometry_program4();
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_gpu_multicast
+ if (glewExperimental || GLEW_NV_gpu_multicast) GLEW_NV_gpu_multicast = !_glewInit_GL_NV_gpu_multicast();
+#endif /* GL_NV_gpu_multicast */
+#ifdef GL_NV_gpu_program4
+ if (glewExperimental || GLEW_NV_gpu_program4) GLEW_NV_gpu_program4 = !_glewInit_GL_NV_gpu_program4();
+#endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_shader5
+ if (glewExperimental || GLEW_NV_gpu_shader5) GLEW_NV_gpu_shader5 = !_glewInit_GL_NV_gpu_shader5();
+#endif /* GL_NV_gpu_shader5 */
+#ifdef GL_NV_half_float
+ if (glewExperimental || GLEW_NV_half_float) GLEW_NV_half_float = !_glewInit_GL_NV_half_float();
+#endif /* GL_NV_half_float */
+#ifdef GL_NV_instanced_arrays
+ if (glewExperimental || GLEW_NV_instanced_arrays) GLEW_NV_instanced_arrays = !_glewInit_GL_NV_instanced_arrays();
+#endif /* GL_NV_instanced_arrays */
+#ifdef GL_NV_internalformat_sample_query
+ if (glewExperimental || GLEW_NV_internalformat_sample_query) GLEW_NV_internalformat_sample_query = !_glewInit_GL_NV_internalformat_sample_query();
+#endif /* GL_NV_internalformat_sample_query */
+#ifdef GL_NV_memory_attachment
+ if (glewExperimental || GLEW_NV_memory_attachment) GLEW_NV_memory_attachment = !_glewInit_GL_NV_memory_attachment();
+#endif /* GL_NV_memory_attachment */
+#ifdef GL_NV_memory_object_sparse
+ if (glewExperimental || GLEW_NV_memory_object_sparse) GLEW_NV_memory_object_sparse = !_glewInit_GL_NV_memory_object_sparse();
+#endif /* GL_NV_memory_object_sparse */
+#ifdef GL_NV_mesh_shader
+ if (glewExperimental || GLEW_NV_mesh_shader) GLEW_NV_mesh_shader = !_glewInit_GL_NV_mesh_shader();
+#endif /* GL_NV_mesh_shader */
+#ifdef GL_NV_non_square_matrices
+ if (glewExperimental || GLEW_NV_non_square_matrices) GLEW_NV_non_square_matrices = !_glewInit_GL_NV_non_square_matrices();
+#endif /* GL_NV_non_square_matrices */
+#ifdef GL_NV_occlusion_query
+ if (glewExperimental || GLEW_NV_occlusion_query) GLEW_NV_occlusion_query = !_glewInit_GL_NV_occlusion_query();
+#endif /* GL_NV_occlusion_query */
+#ifdef GL_NV_parameter_buffer_object
+ if (glewExperimental || GLEW_NV_parameter_buffer_object) GLEW_NV_parameter_buffer_object = !_glewInit_GL_NV_parameter_buffer_object();
+#endif /* GL_NV_parameter_buffer_object */
+#ifdef GL_NV_path_rendering
+ if (glewExperimental || GLEW_NV_path_rendering) GLEW_NV_path_rendering = !_glewInit_GL_NV_path_rendering();
+#endif /* GL_NV_path_rendering */
+#ifdef GL_NV_pixel_data_range
+ if (glewExperimental || GLEW_NV_pixel_data_range) GLEW_NV_pixel_data_range = !_glewInit_GL_NV_pixel_data_range();
+#endif /* GL_NV_pixel_data_range */
+#ifdef GL_NV_point_sprite
+ if (glewExperimental || GLEW_NV_point_sprite) GLEW_NV_point_sprite = !_glewInit_GL_NV_point_sprite();
+#endif /* GL_NV_point_sprite */
+#ifdef GL_NV_polygon_mode
+ if (glewExperimental || GLEW_NV_polygon_mode) GLEW_NV_polygon_mode = !_glewInit_GL_NV_polygon_mode();
+#endif /* GL_NV_polygon_mode */
+#ifdef GL_NV_present_video
+ if (glewExperimental || GLEW_NV_present_video) GLEW_NV_present_video = !_glewInit_GL_NV_present_video();
+#endif /* GL_NV_present_video */
+#ifdef GL_NV_primitive_restart
+ if (glewExperimental || GLEW_NV_primitive_restart) GLEW_NV_primitive_restart = !_glewInit_GL_NV_primitive_restart();
+#endif /* GL_NV_primitive_restart */
+#ifdef GL_NV_read_buffer
+ if (glewExperimental || GLEW_NV_read_buffer) GLEW_NV_read_buffer = !_glewInit_GL_NV_read_buffer();
+#endif /* GL_NV_read_buffer */
+#ifdef GL_NV_register_combiners
+ if (glewExperimental || GLEW_NV_register_combiners) GLEW_NV_register_combiners = !_glewInit_GL_NV_register_combiners();
+#endif /* GL_NV_register_combiners */
+#ifdef GL_NV_register_combiners2
+ if (glewExperimental || GLEW_NV_register_combiners2) GLEW_NV_register_combiners2 = !_glewInit_GL_NV_register_combiners2();
+#endif /* GL_NV_register_combiners2 */
+#ifdef GL_NV_sample_locations
+ if (glewExperimental || GLEW_NV_sample_locations) GLEW_NV_sample_locations = !_glewInit_GL_NV_sample_locations();
+#endif /* GL_NV_sample_locations */
+#ifdef GL_NV_scissor_exclusive
+ if (glewExperimental || GLEW_NV_scissor_exclusive) GLEW_NV_scissor_exclusive = !_glewInit_GL_NV_scissor_exclusive();
+#endif /* GL_NV_scissor_exclusive */
+#ifdef GL_NV_shader_buffer_load
+ if (glewExperimental || GLEW_NV_shader_buffer_load) GLEW_NV_shader_buffer_load = !_glewInit_GL_NV_shader_buffer_load();
+#endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_shading_rate_image
+ if (glewExperimental || GLEW_NV_shading_rate_image) GLEW_NV_shading_rate_image = !_glewInit_GL_NV_shading_rate_image();
+#endif /* GL_NV_shading_rate_image */
+#ifdef GL_NV_texture_array
+ if (glewExperimental || GLEW_NV_texture_array) GLEW_NV_texture_array = !_glewInit_GL_NV_texture_array();
+#endif /* GL_NV_texture_array */
+#ifdef GL_NV_texture_barrier
+ if (glewExperimental || GLEW_NV_texture_barrier) GLEW_NV_texture_barrier = !_glewInit_GL_NV_texture_barrier();
+#endif /* GL_NV_texture_barrier */
+#ifdef GL_NV_texture_multisample
+ if (glewExperimental || GLEW_NV_texture_multisample) GLEW_NV_texture_multisample = !_glewInit_GL_NV_texture_multisample();
+#endif /* GL_NV_texture_multisample */
+#ifdef GL_NV_timeline_semaphore
+ if (glewExperimental || GLEW_NV_timeline_semaphore) GLEW_NV_timeline_semaphore = !_glewInit_GL_NV_timeline_semaphore();
+#endif /* GL_NV_timeline_semaphore */
+#ifdef GL_NV_transform_feedback
+ if (glewExperimental || GLEW_NV_transform_feedback) GLEW_NV_transform_feedback = !_glewInit_GL_NV_transform_feedback();
+#endif /* GL_NV_transform_feedback */
+#ifdef GL_NV_transform_feedback2
+ if (glewExperimental || GLEW_NV_transform_feedback2) GLEW_NV_transform_feedback2 = !_glewInit_GL_NV_transform_feedback2();
+#endif /* GL_NV_transform_feedback2 */
+#ifdef GL_NV_vdpau_interop
+ if (glewExperimental || GLEW_NV_vdpau_interop) GLEW_NV_vdpau_interop = !_glewInit_GL_NV_vdpau_interop();
+#endif /* GL_NV_vdpau_interop */
+#ifdef GL_NV_vdpau_interop2
+ if (glewExperimental || GLEW_NV_vdpau_interop2) GLEW_NV_vdpau_interop2 = !_glewInit_GL_NV_vdpau_interop2();
+#endif /* GL_NV_vdpau_interop2 */
+#ifdef GL_NV_vertex_array_range
+ if (glewExperimental || GLEW_NV_vertex_array_range) GLEW_NV_vertex_array_range = !_glewInit_GL_NV_vertex_array_range();
+#endif /* GL_NV_vertex_array_range */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ if (glewExperimental || GLEW_NV_vertex_attrib_integer_64bit) GLEW_NV_vertex_attrib_integer_64bit = !_glewInit_GL_NV_vertex_attrib_integer_64bit();
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+#ifdef GL_NV_vertex_buffer_unified_memory
+ if (glewExperimental || GLEW_NV_vertex_buffer_unified_memory) GLEW_NV_vertex_buffer_unified_memory = !_glewInit_GL_NV_vertex_buffer_unified_memory();
+#endif /* GL_NV_vertex_buffer_unified_memory */
+#ifdef GL_NV_vertex_program
+ if (glewExperimental || GLEW_NV_vertex_program) GLEW_NV_vertex_program = !_glewInit_GL_NV_vertex_program();
+#endif /* GL_NV_vertex_program */
+#ifdef GL_NV_video_capture
+ if (glewExperimental || GLEW_NV_video_capture) GLEW_NV_video_capture = !_glewInit_GL_NV_video_capture();
+#endif /* GL_NV_video_capture */
+#ifdef GL_NV_viewport_array
+ if (glewExperimental || GLEW_NV_viewport_array) GLEW_NV_viewport_array = !_glewInit_GL_NV_viewport_array();
+#endif /* GL_NV_viewport_array */
+#ifdef GL_NV_viewport_swizzle
+ if (glewExperimental || GLEW_NV_viewport_swizzle) GLEW_NV_viewport_swizzle = !_glewInit_GL_NV_viewport_swizzle();
+#endif /* GL_NV_viewport_swizzle */
+#ifdef GL_OES_EGL_image
+ if (glewExperimental || GLEW_OES_EGL_image) GLEW_OES_EGL_image = !_glewInit_GL_OES_EGL_image();
+#endif /* GL_OES_EGL_image */
+#ifdef GL_OES_blend_equation_separate
+ if (glewExperimental || GLEW_OES_blend_equation_separate) GLEW_OES_blend_equation_separate = !_glewInit_GL_OES_blend_equation_separate();
+#endif /* GL_OES_blend_equation_separate */
+#ifdef GL_OES_blend_func_separate
+ if (glewExperimental || GLEW_OES_blend_func_separate) GLEW_OES_blend_func_separate = !_glewInit_GL_OES_blend_func_separate();
+#endif /* GL_OES_blend_func_separate */
+#ifdef GL_OES_blend_subtract
+ if (glewExperimental || GLEW_OES_blend_subtract) GLEW_OES_blend_subtract = !_glewInit_GL_OES_blend_subtract();
+#endif /* GL_OES_blend_subtract */
+#ifdef GL_OES_copy_image
+ if (glewExperimental || GLEW_OES_copy_image) GLEW_OES_copy_image = !_glewInit_GL_OES_copy_image();
+#endif /* GL_OES_copy_image */
+#ifdef GL_OES_draw_buffers_indexed
+ if (glewExperimental || GLEW_OES_draw_buffers_indexed) GLEW_OES_draw_buffers_indexed = !_glewInit_GL_OES_draw_buffers_indexed();
+#endif /* GL_OES_draw_buffers_indexed */
+#ifdef GL_OES_framebuffer_object
+ if (glewExperimental || GLEW_OES_framebuffer_object) GLEW_OES_framebuffer_object = !_glewInit_GL_OES_framebuffer_object();
+#endif /* GL_OES_framebuffer_object */
+#ifdef GL_OES_get_program_binary
+ if (glewExperimental || GLEW_OES_get_program_binary) GLEW_OES_get_program_binary = !_glewInit_GL_OES_get_program_binary();
+#endif /* GL_OES_get_program_binary */
+#ifdef GL_OES_mapbuffer
+ if (glewExperimental || GLEW_OES_mapbuffer) GLEW_OES_mapbuffer = !_glewInit_GL_OES_mapbuffer();
+#endif /* GL_OES_mapbuffer */
+#ifdef GL_OES_matrix_palette
+ if (glewExperimental || GLEW_OES_matrix_palette) GLEW_OES_matrix_palette = !_glewInit_GL_OES_matrix_palette();
+#endif /* GL_OES_matrix_palette */
+#ifdef GL_OES_sample_shading
+ if (glewExperimental || GLEW_OES_sample_shading) GLEW_OES_sample_shading = !_glewInit_GL_OES_sample_shading();
+#endif /* GL_OES_sample_shading */
+#ifdef GL_OES_single_precision
+ if (glewExperimental || GLEW_OES_single_precision) GLEW_OES_single_precision = !_glewInit_GL_OES_single_precision();
+#endif /* GL_OES_single_precision */
+#ifdef GL_OES_texture_3D
+ if (glewExperimental || GLEW_OES_texture_3D) GLEW_OES_texture_3D = !_glewInit_GL_OES_texture_3D();
+#endif /* GL_OES_texture_3D */
+#ifdef GL_OES_texture_border_clamp
+ if (glewExperimental || GLEW_OES_texture_border_clamp) GLEW_OES_texture_border_clamp = !_glewInit_GL_OES_texture_border_clamp();
+#endif /* GL_OES_texture_border_clamp */
+#ifdef GL_OES_texture_buffer
+ if (glewExperimental || GLEW_OES_texture_buffer) GLEW_OES_texture_buffer = !_glewInit_GL_OES_texture_buffer();
+#endif /* GL_OES_texture_buffer */
+#ifdef GL_OES_texture_cube_map
+ if (glewExperimental || GLEW_OES_texture_cube_map) GLEW_OES_texture_cube_map = !_glewInit_GL_OES_texture_cube_map();
+#endif /* GL_OES_texture_cube_map */
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ if (glewExperimental || GLEW_OES_texture_storage_multisample_2d_array) GLEW_OES_texture_storage_multisample_2d_array = !_glewInit_GL_OES_texture_storage_multisample_2d_array();
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+#ifdef GL_OES_texture_view
+ if (glewExperimental || GLEW_OES_texture_view) GLEW_OES_texture_view = !_glewInit_GL_OES_texture_view();
+#endif /* GL_OES_texture_view */
+#ifdef GL_OES_vertex_array_object
+ if (glewExperimental || GLEW_OES_vertex_array_object) GLEW_OES_vertex_array_object = !_glewInit_GL_OES_vertex_array_object();
+#endif /* GL_OES_vertex_array_object */
+#ifdef GL_OVR_multiview
+ if (glewExperimental || GLEW_OVR_multiview) GLEW_OVR_multiview = !_glewInit_GL_OVR_multiview();
+#endif /* GL_OVR_multiview */
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ if (glewExperimental || GLEW_OVR_multiview_multisampled_render_to_texture) GLEW_OVR_multiview_multisampled_render_to_texture = !_glewInit_GL_OVR_multiview_multisampled_render_to_texture();
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+#ifdef GL_QCOM_alpha_test
+ if (glewExperimental || GLEW_QCOM_alpha_test) GLEW_QCOM_alpha_test = !_glewInit_GL_QCOM_alpha_test();
+#endif /* GL_QCOM_alpha_test */
+#ifdef GL_QCOM_driver_control
+ if (glewExperimental || GLEW_QCOM_driver_control) GLEW_QCOM_driver_control = !_glewInit_GL_QCOM_driver_control();
+#endif /* GL_QCOM_driver_control */
+#ifdef GL_QCOM_extended_get
+ if (glewExperimental || GLEW_QCOM_extended_get) GLEW_QCOM_extended_get = !_glewInit_GL_QCOM_extended_get();
+#endif /* GL_QCOM_extended_get */
+#ifdef GL_QCOM_extended_get2
+ if (glewExperimental || GLEW_QCOM_extended_get2) GLEW_QCOM_extended_get2 = !_glewInit_GL_QCOM_extended_get2();
+#endif /* GL_QCOM_extended_get2 */
+#ifdef GL_QCOM_frame_extrapolation
+ if (glewExperimental || GLEW_QCOM_frame_extrapolation) GLEW_QCOM_frame_extrapolation = !_glewInit_GL_QCOM_frame_extrapolation();
+#endif /* GL_QCOM_frame_extrapolation */
+#ifdef GL_QCOM_framebuffer_foveated
+ if (glewExperimental || GLEW_QCOM_framebuffer_foveated) GLEW_QCOM_framebuffer_foveated = !_glewInit_GL_QCOM_framebuffer_foveated();
+#endif /* GL_QCOM_framebuffer_foveated */
+#ifdef GL_QCOM_motion_estimation
+ if (glewExperimental || GLEW_QCOM_motion_estimation) GLEW_QCOM_motion_estimation = !_glewInit_GL_QCOM_motion_estimation();
+#endif /* GL_QCOM_motion_estimation */
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ if (glewExperimental || GLEW_QCOM_shader_framebuffer_fetch_noncoherent) GLEW_QCOM_shader_framebuffer_fetch_noncoherent = !_glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent();
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+#ifdef GL_QCOM_shading_rate
+ if (glewExperimental || GLEW_QCOM_shading_rate) GLEW_QCOM_shading_rate = !_glewInit_GL_QCOM_shading_rate();
+#endif /* GL_QCOM_shading_rate */
+#ifdef GL_QCOM_texture_foveated
+ if (glewExperimental || GLEW_QCOM_texture_foveated) GLEW_QCOM_texture_foveated = !_glewInit_GL_QCOM_texture_foveated();
+#endif /* GL_QCOM_texture_foveated */
+#ifdef GL_QCOM_tiled_rendering
+ if (glewExperimental || GLEW_QCOM_tiled_rendering) GLEW_QCOM_tiled_rendering = !_glewInit_GL_QCOM_tiled_rendering();
+#endif /* GL_QCOM_tiled_rendering */
+#ifdef GL_REGAL_ES1_0_compatibility
+ if (glewExperimental || GLEW_REGAL_ES1_0_compatibility) GLEW_REGAL_ES1_0_compatibility = !_glewInit_GL_REGAL_ES1_0_compatibility();
+#endif /* GL_REGAL_ES1_0_compatibility */
+#ifdef GL_REGAL_ES1_1_compatibility
+ if (glewExperimental || GLEW_REGAL_ES1_1_compatibility) GLEW_REGAL_ES1_1_compatibility = !_glewInit_GL_REGAL_ES1_1_compatibility();
+#endif /* GL_REGAL_ES1_1_compatibility */
+#ifdef GL_REGAL_error_string
+ if (glewExperimental || GLEW_REGAL_error_string) GLEW_REGAL_error_string = !_glewInit_GL_REGAL_error_string();
+#endif /* GL_REGAL_error_string */
+#ifdef GL_REGAL_extension_query
+ if (glewExperimental || GLEW_REGAL_extension_query) GLEW_REGAL_extension_query = !_glewInit_GL_REGAL_extension_query();
+#endif /* GL_REGAL_extension_query */
+#ifdef GL_REGAL_log
+ if (glewExperimental || GLEW_REGAL_log) GLEW_REGAL_log = !_glewInit_GL_REGAL_log();
+#endif /* GL_REGAL_log */
+#ifdef GL_REGAL_proc_address
+ if (glewExperimental || GLEW_REGAL_proc_address) GLEW_REGAL_proc_address = !_glewInit_GL_REGAL_proc_address();
+#endif /* GL_REGAL_proc_address */
+#ifdef GL_SGIS_detail_texture
+ if (glewExperimental || GLEW_SGIS_detail_texture) GLEW_SGIS_detail_texture = !_glewInit_GL_SGIS_detail_texture();
+#endif /* GL_SGIS_detail_texture */
+#ifdef GL_SGIS_fog_function
+ if (glewExperimental || GLEW_SGIS_fog_function) GLEW_SGIS_fog_function = !_glewInit_GL_SGIS_fog_function();
+#endif /* GL_SGIS_fog_function */
+#ifdef GL_SGIS_multisample
+ if (glewExperimental || GLEW_SGIS_multisample) GLEW_SGIS_multisample = !_glewInit_GL_SGIS_multisample();
+#endif /* GL_SGIS_multisample */
+#ifdef GL_SGIS_multitexture
+ if (glewExperimental || GLEW_SGIS_multitexture) GLEW_SGIS_multitexture = !_glewInit_GL_SGIS_multitexture();
+#endif /* GL_SGIS_multitexture */
+#ifdef GL_SGIS_shared_multisample
+ if (glewExperimental || GLEW_SGIS_shared_multisample) GLEW_SGIS_shared_multisample = !_glewInit_GL_SGIS_shared_multisample();
+#endif /* GL_SGIS_shared_multisample */
+#ifdef GL_SGIS_sharpen_texture
+ if (glewExperimental || GLEW_SGIS_sharpen_texture) GLEW_SGIS_sharpen_texture = !_glewInit_GL_SGIS_sharpen_texture();
+#endif /* GL_SGIS_sharpen_texture */
+#ifdef GL_SGIS_texture4D
+ if (glewExperimental || GLEW_SGIS_texture4D) GLEW_SGIS_texture4D = !_glewInit_GL_SGIS_texture4D();
+#endif /* GL_SGIS_texture4D */
+#ifdef GL_SGIS_texture_filter4
+ if (glewExperimental || GLEW_SGIS_texture_filter4) GLEW_SGIS_texture_filter4 = !_glewInit_GL_SGIS_texture_filter4();
+#endif /* GL_SGIS_texture_filter4 */
+#ifdef GL_SGIX_async
+ if (glewExperimental || GLEW_SGIX_async) GLEW_SGIX_async = !_glewInit_GL_SGIX_async();
+#endif /* GL_SGIX_async */
+#ifdef GL_SGIX_datapipe
+ if (glewExperimental || GLEW_SGIX_datapipe) GLEW_SGIX_datapipe = !_glewInit_GL_SGIX_datapipe();
+#endif /* GL_SGIX_datapipe */
+#ifdef GL_SGIX_flush_raster
+ if (glewExperimental || GLEW_SGIX_flush_raster) GLEW_SGIX_flush_raster = !_glewInit_GL_SGIX_flush_raster();
+#endif /* GL_SGIX_flush_raster */
+#ifdef GL_SGIX_fog_layers
+ if (glewExperimental || GLEW_SGIX_fog_layers) GLEW_SGIX_fog_layers = !_glewInit_GL_SGIX_fog_layers();
+#endif /* GL_SGIX_fog_layers */
+#ifdef GL_SGIX_fog_texture
+ if (glewExperimental || GLEW_SGIX_fog_texture) GLEW_SGIX_fog_texture = !_glewInit_GL_SGIX_fog_texture();
+#endif /* GL_SGIX_fog_texture */
+#ifdef GL_SGIX_fragment_specular_lighting
+ if (glewExperimental || GLEW_SGIX_fragment_specular_lighting) GLEW_SGIX_fragment_specular_lighting = !_glewInit_GL_SGIX_fragment_specular_lighting();
+#endif /* GL_SGIX_fragment_specular_lighting */
+#ifdef GL_SGIX_framezoom
+ if (glewExperimental || GLEW_SGIX_framezoom) GLEW_SGIX_framezoom = !_glewInit_GL_SGIX_framezoom();
+#endif /* GL_SGIX_framezoom */
+#ifdef GL_SGIX_igloo_interface
+ if (glewExperimental || GLEW_SGIX_igloo_interface) GLEW_SGIX_igloo_interface = !_glewInit_GL_SGIX_igloo_interface();
+#endif /* GL_SGIX_igloo_interface */
+#ifdef GL_SGIX_mpeg1
+ if (glewExperimental || GLEW_SGIX_mpeg1) GLEW_SGIX_mpeg1 = !_glewInit_GL_SGIX_mpeg1();
+#endif /* GL_SGIX_mpeg1 */
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ if (glewExperimental || GLEW_SGIX_nonlinear_lighting_pervertex) GLEW_SGIX_nonlinear_lighting_pervertex = !_glewInit_GL_SGIX_nonlinear_lighting_pervertex();
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+#ifdef GL_SGIX_pixel_texture
+ if (glewExperimental || GLEW_SGIX_pixel_texture) GLEW_SGIX_pixel_texture = !_glewInit_GL_SGIX_pixel_texture();
+#endif /* GL_SGIX_pixel_texture */
+#ifdef GL_SGIX_polynomial_ffd
+ if (glewExperimental || GLEW_SGIX_polynomial_ffd) GLEW_SGIX_polynomial_ffd = !_glewInit_GL_SGIX_polynomial_ffd();
+#endif /* GL_SGIX_polynomial_ffd */
+#ifdef GL_SGIX_quad_mesh
+ if (glewExperimental || GLEW_SGIX_quad_mesh) GLEW_SGIX_quad_mesh = !_glewInit_GL_SGIX_quad_mesh();
+#endif /* GL_SGIX_quad_mesh */
+#ifdef GL_SGIX_reference_plane
+ if (glewExperimental || GLEW_SGIX_reference_plane) GLEW_SGIX_reference_plane = !_glewInit_GL_SGIX_reference_plane();
+#endif /* GL_SGIX_reference_plane */
+#ifdef GL_SGIX_sprite
+ if (glewExperimental || GLEW_SGIX_sprite) GLEW_SGIX_sprite = !_glewInit_GL_SGIX_sprite();
+#endif /* GL_SGIX_sprite */
+#ifdef GL_SGIX_tag_sample_buffer
+ if (glewExperimental || GLEW_SGIX_tag_sample_buffer) GLEW_SGIX_tag_sample_buffer = !_glewInit_GL_SGIX_tag_sample_buffer();
+#endif /* GL_SGIX_tag_sample_buffer */
+#ifdef GL_SGIX_vector_ops
+ if (glewExperimental || GLEW_SGIX_vector_ops) GLEW_SGIX_vector_ops = !_glewInit_GL_SGIX_vector_ops();
+#endif /* GL_SGIX_vector_ops */
+#ifdef GL_SGIX_vertex_array_object
+ if (glewExperimental || GLEW_SGIX_vertex_array_object) GLEW_SGIX_vertex_array_object = !_glewInit_GL_SGIX_vertex_array_object();
+#endif /* GL_SGIX_vertex_array_object */
+#ifdef GL_SGI_color_table
+ if (glewExperimental || GLEW_SGI_color_table) GLEW_SGI_color_table = !_glewInit_GL_SGI_color_table();
+#endif /* GL_SGI_color_table */
+#ifdef GL_SGI_fft
+ if (glewExperimental || GLEW_SGI_fft) GLEW_SGI_fft = !_glewInit_GL_SGI_fft();
+#endif /* GL_SGI_fft */
+#ifdef GL_SUNX_constant_data
+ if (glewExperimental || GLEW_SUNX_constant_data) GLEW_SUNX_constant_data = !_glewInit_GL_SUNX_constant_data();
+#endif /* GL_SUNX_constant_data */
+#ifdef GL_SUN_global_alpha
+ if (glewExperimental || GLEW_SUN_global_alpha) GLEW_SUN_global_alpha = !_glewInit_GL_SUN_global_alpha();
+#endif /* GL_SUN_global_alpha */
+#ifdef GL_SUN_read_video_pixels
+ if (glewExperimental || GLEW_SUN_read_video_pixels) GLEW_SUN_read_video_pixels = !_glewInit_GL_SUN_read_video_pixels();
+#endif /* GL_SUN_read_video_pixels */
+#ifdef GL_SUN_triangle_list
+ if (glewExperimental || GLEW_SUN_triangle_list) GLEW_SUN_triangle_list = !_glewInit_GL_SUN_triangle_list();
+#endif /* GL_SUN_triangle_list */
+#ifdef GL_SUN_vertex
+ if (glewExperimental || GLEW_SUN_vertex) GLEW_SUN_vertex = !_glewInit_GL_SUN_vertex();
+#endif /* GL_SUN_vertex */
+#ifdef GL_WIN_swap_hint
+ if (glewExperimental || GLEW_WIN_swap_hint) GLEW_WIN_swap_hint = !_glewInit_GL_WIN_swap_hint();
+#endif /* GL_WIN_swap_hint */
+#ifdef GL_NV_fragment_program4
+ GLEW_NV_fragment_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_fragment_program4 */
+#ifdef GL_NV_geometry_program4
+ GLEW_NV_geometry_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_tessellation_program5
+ GLEW_NV_tessellation_program5 = GLEW_NV_gpu_program5;
+#endif /* GL_NV_tessellation_program5 */
+#ifdef GL_NV_vertex_program4
+ GLEW_NV_vertex_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_vertex_program4 */
+
+ return GLEW_OK;
+}
+
+
+#if defined(GLEW_OSMESA)
+
+#elif defined(GLEW_EGL)
+
+PFNEGLCHOOSECONFIGPROC __eglewChooseConfig = NULL;
+PFNEGLCOPYBUFFERSPROC __eglewCopyBuffers = NULL;
+PFNEGLCREATECONTEXTPROC __eglewCreateContext = NULL;
+PFNEGLCREATEPBUFFERSURFACEPROC __eglewCreatePbufferSurface = NULL;
+PFNEGLCREATEPIXMAPSURFACEPROC __eglewCreatePixmapSurface = NULL;
+PFNEGLCREATEWINDOWSURFACEPROC __eglewCreateWindowSurface = NULL;
+PFNEGLDESTROYCONTEXTPROC __eglewDestroyContext = NULL;
+PFNEGLDESTROYSURFACEPROC __eglewDestroySurface = NULL;
+PFNEGLGETCONFIGATTRIBPROC __eglewGetConfigAttrib = NULL;
+PFNEGLGETCONFIGSPROC __eglewGetConfigs = NULL;
+PFNEGLGETCURRENTDISPLAYPROC __eglewGetCurrentDisplay = NULL;
+PFNEGLGETCURRENTSURFACEPROC __eglewGetCurrentSurface = NULL;
+PFNEGLGETDISPLAYPROC __eglewGetDisplay = NULL;
+PFNEGLGETERRORPROC __eglewGetError = NULL;
+PFNEGLINITIALIZEPROC __eglewInitialize = NULL;
+PFNEGLMAKECURRENTPROC __eglewMakeCurrent = NULL;
+PFNEGLQUERYCONTEXTPROC __eglewQueryContext = NULL;
+PFNEGLQUERYSTRINGPROC __eglewQueryString = NULL;
+PFNEGLQUERYSURFACEPROC __eglewQuerySurface = NULL;
+PFNEGLSWAPBUFFERSPROC __eglewSwapBuffers = NULL;
+PFNEGLTERMINATEPROC __eglewTerminate = NULL;
+PFNEGLWAITGLPROC __eglewWaitGL = NULL;
+PFNEGLWAITNATIVEPROC __eglewWaitNative = NULL;
+
+PFNEGLBINDTEXIMAGEPROC __eglewBindTexImage = NULL;
+PFNEGLRELEASETEXIMAGEPROC __eglewReleaseTexImage = NULL;
+PFNEGLSURFACEATTRIBPROC __eglewSurfaceAttrib = NULL;
+PFNEGLSWAPINTERVALPROC __eglewSwapInterval = NULL;
+
+PFNEGLBINDAPIPROC __eglewBindAPI = NULL;
+PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC __eglewCreatePbufferFromClientBuffer = NULL;
+PFNEGLQUERYAPIPROC __eglewQueryAPI = NULL;
+PFNEGLRELEASETHREADPROC __eglewReleaseThread = NULL;
+PFNEGLWAITCLIENTPROC __eglewWaitClient = NULL;
+
+PFNEGLGETCURRENTCONTEXTPROC __eglewGetCurrentContext = NULL;
+
+PFNEGLCLIENTWAITSYNCPROC __eglewClientWaitSync = NULL;
+PFNEGLCREATEIMAGEPROC __eglewCreateImage = NULL;
+PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC __eglewCreatePlatformPixmapSurface = NULL;
+PFNEGLCREATEPLATFORMWINDOWSURFACEPROC __eglewCreatePlatformWindowSurface = NULL;
+PFNEGLCREATESYNCPROC __eglewCreateSync = NULL;
+PFNEGLDESTROYIMAGEPROC __eglewDestroyImage = NULL;
+PFNEGLDESTROYSYNCPROC __eglewDestroySync = NULL;
+PFNEGLGETPLATFORMDISPLAYPROC __eglewGetPlatformDisplay = NULL;
+PFNEGLGETSYNCATTRIBPROC __eglewGetSyncAttrib = NULL;
+PFNEGLWAITSYNCPROC __eglewWaitSync = NULL;
+
+PFNEGLSETBLOBCACHEFUNCSANDROIDPROC __eglewSetBlobCacheFuncsANDROID = NULL;
+
+PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC __eglewCreateNativeClientBufferANDROID = NULL;
+
+PFNEGLGETCOMPOSITORTIMINGANDROIDPROC __eglewGetCompositorTimingANDROID = NULL;
+PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC __eglewGetCompositorTimingSupportedANDROID = NULL;
+PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC __eglewGetFrameTimestampSupportedANDROID = NULL;
+PFNEGLGETFRAMETIMESTAMPSANDROIDPROC __eglewGetFrameTimestampsANDROID = NULL;
+PFNEGLGETNEXTFRAMEIDANDROIDPROC __eglewGetNextFrameIdANDROID = NULL;
+
+PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC __eglewGetNativeClientBufferANDROID = NULL;
+
+PFNEGLDUPNATIVEFENCEFDANDROIDPROC __eglewDupNativeFenceFDANDROID = NULL;
+
+PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID = NULL;
+
+PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE = NULL;
+
+PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE = NULL;
+
+PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT = NULL;
+
+PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT = NULL;
+PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC __eglewCompositorSetContextAttributesEXT = NULL;
+PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC __eglewCompositorSetContextListEXT = NULL;
+PFNEGLCOMPOSITORSETSIZEEXTPROC __eglewCompositorSetSizeEXT = NULL;
+PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC __eglewCompositorSetWindowAttributesEXT = NULL;
+PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC __eglewCompositorSetWindowListEXT = NULL;
+PFNEGLCOMPOSITORSWAPPOLICYEXTPROC __eglewCompositorSwapPolicyEXT = NULL;
+
+PFNEGLQUERYDEVICESEXTPROC __eglewQueryDevicesEXT = NULL;
+
+PFNEGLQUERYDEVICEBINARYEXTPROC __eglewQueryDeviceBinaryEXT = NULL;
+
+PFNEGLQUERYDEVICEATTRIBEXTPROC __eglewQueryDeviceAttribEXT = NULL;
+PFNEGLQUERYDEVICESTRINGEXTPROC __eglewQueryDeviceStringEXT = NULL;
+PFNEGLQUERYDISPLAYATTRIBEXTPROC __eglewQueryDisplayAttribEXT = NULL;
+
+PFNEGLQUERYDMABUFFORMATSEXTPROC __eglewQueryDmaBufFormatsEXT = NULL;
+PFNEGLQUERYDMABUFMODIFIERSEXTPROC __eglewQueryDmaBufModifiersEXT = NULL;
+
+PFNEGLGETOUTPUTLAYERSEXTPROC __eglewGetOutputLayersEXT = NULL;
+PFNEGLGETOUTPUTPORTSEXTPROC __eglewGetOutputPortsEXT = NULL;
+PFNEGLOUTPUTLAYERATTRIBEXTPROC __eglewOutputLayerAttribEXT = NULL;
+PFNEGLOUTPUTPORTATTRIBEXTPROC __eglewOutputPortAttribEXT = NULL;
+PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC __eglewQueryOutputLayerAttribEXT = NULL;
+PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC __eglewQueryOutputLayerStringEXT = NULL;
+PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC __eglewQueryOutputPortAttribEXT = NULL;
+PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC __eglewQueryOutputPortStringEXT = NULL;
+
+PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC __eglewCreatePlatformPixmapSurfaceEXT = NULL;
+PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC __eglewCreatePlatformWindowSurfaceEXT = NULL;
+PFNEGLGETPLATFORMDISPLAYEXTPROC __eglewGetPlatformDisplayEXT = NULL;
+
+PFNEGLSTREAMCONSUMEROUTPUTEXTPROC __eglewStreamConsumerOutputEXT = NULL;
+
+PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC __eglewQuerySupportedCompressionRatesEXT = NULL;
+
+PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC __eglewSwapBuffersWithDamageEXT = NULL;
+
+PFNEGLUNSIGNALSYNCEXTPROC __eglewUnsignalSyncEXT = NULL;
+
+PFNEGLCREATEPIXMAPSURFACEHIPROC __eglewCreatePixmapSurfaceHI = NULL;
+
+PFNEGLCREATESYNC64KHRPROC __eglewCreateSync64KHR = NULL;
+
+PFNEGLDEBUGMESSAGECONTROLKHRPROC __eglewDebugMessageControlKHR = NULL;
+PFNEGLLABELOBJECTKHRPROC __eglewLabelObjectKHR = NULL;
+PFNEGLQUERYDEBUGKHRPROC __eglewQueryDebugKHR = NULL;
+
+PFNEGLQUERYDISPLAYATTRIBKHRPROC __eglewQueryDisplayAttribKHR = NULL;
+
+PFNEGLCREATEIMAGEKHRPROC __eglewCreateImageKHR = NULL;
+PFNEGLDESTROYIMAGEKHRPROC __eglewDestroyImageKHR = NULL;
+
+PFNEGLLOCKSURFACEKHRPROC __eglewLockSurfaceKHR = NULL;
+PFNEGLUNLOCKSURFACEKHRPROC __eglewUnlockSurfaceKHR = NULL;
+
+PFNEGLQUERYSURFACE64KHRPROC __eglewQuerySurface64KHR = NULL;
+
+PFNEGLSETDAMAGEREGIONKHRPROC __eglewSetDamageRegionKHR = NULL;
+
+PFNEGLCLIENTWAITSYNCKHRPROC __eglewClientWaitSyncKHR = NULL;
+PFNEGLCREATESYNCKHRPROC __eglewCreateSyncKHR = NULL;
+PFNEGLDESTROYSYNCKHRPROC __eglewDestroySyncKHR = NULL;
+PFNEGLGETSYNCATTRIBKHRPROC __eglewGetSyncAttribKHR = NULL;
+PFNEGLSIGNALSYNCKHRPROC __eglewSignalSyncKHR = NULL;
+
+PFNEGLCREATESTREAMKHRPROC __eglewCreateStreamKHR = NULL;
+PFNEGLDESTROYSTREAMKHRPROC __eglewDestroyStreamKHR = NULL;
+PFNEGLQUERYSTREAMKHRPROC __eglewQueryStreamKHR = NULL;
+PFNEGLQUERYSTREAMU64KHRPROC __eglewQueryStreamu64KHR = NULL;
+PFNEGLSTREAMATTRIBKHRPROC __eglewStreamAttribKHR = NULL;
+
+PFNEGLCREATESTREAMATTRIBKHRPROC __eglewCreateStreamAttribKHR = NULL;
+PFNEGLQUERYSTREAMATTRIBKHRPROC __eglewQueryStreamAttribKHR = NULL;
+PFNEGLSETSTREAMATTRIBKHRPROC __eglewSetStreamAttribKHR = NULL;
+PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC __eglewStreamConsumerAcquireAttribKHR = NULL;
+PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC __eglewStreamConsumerReleaseAttribKHR = NULL;
+
+PFNEGLSTREAMCONSUMERACQUIREKHRPROC __eglewStreamConsumerAcquireKHR = NULL;
+PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC __eglewStreamConsumerGLTextureExternalKHR = NULL;
+PFNEGLSTREAMCONSUMERRELEASEKHRPROC __eglewStreamConsumerReleaseKHR = NULL;
+
+PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC __eglewCreateStreamFromFileDescriptorKHR = NULL;
+PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC __eglewGetStreamFileDescriptorKHR = NULL;
+
+PFNEGLQUERYSTREAMTIMEKHRPROC __eglewQueryStreamTimeKHR = NULL;
+
+PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC __eglewCreateStreamProducerSurfaceKHR = NULL;
+
+PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC __eglewSwapBuffersWithDamageKHR = NULL;
+
+PFNEGLWAITSYNCKHRPROC __eglewWaitSyncKHR = NULL;
+
+PFNEGLCREATEDRMIMAGEMESAPROC __eglewCreateDRMImageMESA = NULL;
+PFNEGLEXPORTDRMIMAGEMESAPROC __eglewExportDRMImageMESA = NULL;
+
+PFNEGLEXPORTDMABUFIMAGEMESAPROC __eglewExportDMABUFImageMESA = NULL;
+PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC __eglewExportDMABUFImageQueryMESA = NULL;
+
+PFNEGLGETDISPLAYDRIVERCONFIGPROC __eglewGetDisplayDriverConfig = NULL;
+PFNEGLGETDISPLAYDRIVERNAMEPROC __eglewGetDisplayDriverName = NULL;
+
+PFNEGLSWAPBUFFERSREGIONNOKPROC __eglewSwapBuffersRegionNOK = NULL;
+
+PFNEGLSWAPBUFFERSREGION2NOKPROC __eglewSwapBuffersRegion2NOK = NULL;
+
+PFNEGLQUERYNATIVEDISPLAYNVPROC __eglewQueryNativeDisplayNV = NULL;
+PFNEGLQUERYNATIVEPIXMAPNVPROC __eglewQueryNativePixmapNV = NULL;
+PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV = NULL;
+
+PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV = NULL;
+
+PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV = NULL;
+PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV = NULL;
+PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV = NULL;
+PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV = NULL;
+
+PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV = NULL;
+
+PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV = NULL;
+
+PFNEGLQUERYDISPLAYATTRIBNVPROC __eglewQueryDisplayAttribNV = NULL;
+PFNEGLQUERYSTREAMMETADATANVPROC __eglewQueryStreamMetadataNV = NULL;
+PFNEGLSETSTREAMMETADATANVPROC __eglewSetStreamMetadataNV = NULL;
+
+PFNEGLRESETSTREAMNVPROC __eglewResetStreamNV = NULL;
+
+PFNEGLCREATESTREAMSYNCNVPROC __eglewCreateStreamSyncNV = NULL;
+
+PFNEGLCLIENTWAITSYNCNVPROC __eglewClientWaitSyncNV = NULL;
+PFNEGLCREATEFENCESYNCNVPROC __eglewCreateFenceSyncNV = NULL;
+PFNEGLDESTROYSYNCNVPROC __eglewDestroySyncNV = NULL;
+PFNEGLFENCENVPROC __eglewFenceNV = NULL;
+PFNEGLGETSYNCATTRIBNVPROC __eglewGetSyncAttribNV = NULL;
+PFNEGLSIGNALSYNCNVPROC __eglewSignalSyncNV = NULL;
+
+PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC __eglewGetSystemTimeFrequencyNV = NULL;
+PFNEGLGETSYSTEMTIMENVPROC __eglewGetSystemTimeNV = NULL;
+
+PFNEGLBINDWAYLANDDISPLAYWLPROC __eglewBindWaylandDisplayWL = NULL;
+PFNEGLQUERYWAYLANDBUFFERWLPROC __eglewQueryWaylandBufferWL = NULL;
+PFNEGLUNBINDWAYLANDDISPLAYWLPROC __eglewUnbindWaylandDisplayWL = NULL;
+
+PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC __eglewCreateWaylandBufferFromImageWL = NULL;
+GLboolean __EGLEW_VERSION_1_0 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_1 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_2 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_3 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_4 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_5 = GL_FALSE;
+GLboolean __EGLEW_ANDROID_GLES_layers = GL_FALSE;
+GLboolean __EGLEW_ANDROID_blob_cache = GL_FALSE;
+GLboolean __EGLEW_ANDROID_create_native_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_framebuffer_target = GL_FALSE;
+GLboolean __EGLEW_ANDROID_front_buffer_auto_refresh = GL_FALSE;
+GLboolean __EGLEW_ANDROID_get_frame_timestamps = GL_FALSE;
+GLboolean __EGLEW_ANDROID_get_native_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_image_native_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_native_fence_sync = GL_FALSE;
+GLboolean __EGLEW_ANDROID_presentation_time = GL_FALSE;
+GLboolean __EGLEW_ANDROID_recordable = GL_FALSE;
+GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANGLE_device_d3d = GL_FALSE;
+GLboolean __EGLEW_ANGLE_query_surface_pointer = GL_FALSE;
+GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = GL_FALSE;
+GLboolean __EGLEW_ANGLE_sync_control_rate = GL_FALSE;
+GLboolean __EGLEW_ANGLE_window_fixed_size = GL_FALSE;
+GLboolean __EGLEW_ARM_image_format = GL_FALSE;
+GLboolean __EGLEW_ARM_implicit_external_sync = GL_FALSE;
+GLboolean __EGLEW_ARM_pixmap_multisample_discard = GL_FALSE;
+GLboolean __EGLEW_EXT_bind_to_front = GL_FALSE;
+GLboolean __EGLEW_EXT_buffer_age = GL_FALSE;
+GLboolean __EGLEW_EXT_client_extensions = GL_FALSE;
+GLboolean __EGLEW_EXT_client_sync = GL_FALSE;
+GLboolean __EGLEW_EXT_compositor = GL_FALSE;
+GLboolean __EGLEW_EXT_config_select_group = GL_FALSE;
+GLboolean __EGLEW_EXT_create_context_robustness = GL_FALSE;
+GLboolean __EGLEW_EXT_device_base = GL_FALSE;
+GLboolean __EGLEW_EXT_device_drm = GL_FALSE;
+GLboolean __EGLEW_EXT_device_drm_render_node = GL_FALSE;
+GLboolean __EGLEW_EXT_device_enumeration = GL_FALSE;
+GLboolean __EGLEW_EXT_device_openwf = GL_FALSE;
+GLboolean __EGLEW_EXT_device_persistent_id = GL_FALSE;
+GLboolean __EGLEW_EXT_device_query = GL_FALSE;
+GLboolean __EGLEW_EXT_device_query_name = GL_FALSE;
+GLboolean __EGLEW_EXT_explicit_device = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_bt2020_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_bt2020_pq = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3 = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3_passthrough = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_scrgb = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_scrgb_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_image_dma_buf_import = GL_FALSE;
+GLboolean __EGLEW_EXT_image_dma_buf_import_modifiers = GL_FALSE;
+GLboolean __EGLEW_EXT_image_gl_colorspace = GL_FALSE;
+GLboolean __EGLEW_EXT_image_implicit_sync_control = GL_FALSE;
+GLboolean __EGLEW_EXT_multiview_window = GL_FALSE;
+GLboolean __EGLEW_EXT_output_base = GL_FALSE;
+GLboolean __EGLEW_EXT_output_drm = GL_FALSE;
+GLboolean __EGLEW_EXT_output_openwf = GL_FALSE;
+GLboolean __EGLEW_EXT_pixel_format_float = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_base = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_device = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_wayland = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_x11 = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_xcb = GL_FALSE;
+GLboolean __EGLEW_EXT_present_opaque = GL_FALSE;
+GLboolean __EGLEW_EXT_protected_content = GL_FALSE;
+GLboolean __EGLEW_EXT_protected_surface = GL_FALSE;
+GLboolean __EGLEW_EXT_stream_consumer_egloutput = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_CTA861_3_metadata = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_SMPTE2086_metadata = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_compression = GL_FALSE;
+GLboolean __EGLEW_EXT_swap_buffers_with_damage = GL_FALSE;
+GLboolean __EGLEW_EXT_sync_reuse = GL_FALSE;
+GLboolean __EGLEW_EXT_yuv_surface = GL_FALSE;
+GLboolean __EGLEW_HI_clientpixmap = GL_FALSE;
+GLboolean __EGLEW_HI_colorformats = GL_FALSE;
+GLboolean __EGLEW_IMG_context_priority = GL_FALSE;
+GLboolean __EGLEW_IMG_image_plane_attribs = GL_FALSE;
+GLboolean __EGLEW_KHR_cl_event = GL_FALSE;
+GLboolean __EGLEW_KHR_cl_event2 = GL_FALSE;
+GLboolean __EGLEW_KHR_client_get_all_proc_addresses = GL_FALSE;
+GLboolean __EGLEW_KHR_config_attribs = GL_FALSE;
+GLboolean __EGLEW_KHR_context_flush_control = GL_FALSE;
+GLboolean __EGLEW_KHR_create_context = GL_FALSE;
+GLboolean __EGLEW_KHR_create_context_no_error = GL_FALSE;
+GLboolean __EGLEW_KHR_debug = GL_FALSE;
+GLboolean __EGLEW_KHR_display_reference = GL_FALSE;
+GLboolean __EGLEW_KHR_fence_sync = GL_FALSE;
+GLboolean __EGLEW_KHR_get_all_proc_addresses = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_colorspace = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_renderbuffer_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_2D_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_3D_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_cubemap_image = GL_FALSE;
+GLboolean __EGLEW_KHR_image = GL_FALSE;
+GLboolean __EGLEW_KHR_image_base = GL_FALSE;
+GLboolean __EGLEW_KHR_image_pixmap = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface2 = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface3 = GL_FALSE;
+GLboolean __EGLEW_KHR_mutable_render_buffer = GL_FALSE;
+GLboolean __EGLEW_KHR_no_config_context = GL_FALSE;
+GLboolean __EGLEW_KHR_partial_update = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_android = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_gbm = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_wayland = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_x11 = GL_FALSE;
+GLboolean __EGLEW_KHR_reusable_sync = GL_FALSE;
+GLboolean __EGLEW_KHR_stream = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_attrib = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_consumer_gltexture = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_cross_process_fd = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_fifo = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_producer_aldatalocator = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_producer_eglsurface = GL_FALSE;
+GLboolean __EGLEW_KHR_surfaceless_context = GL_FALSE;
+GLboolean __EGLEW_KHR_swap_buffers_with_damage = GL_FALSE;
+GLboolean __EGLEW_KHR_vg_parent_image = GL_FALSE;
+GLboolean __EGLEW_KHR_wait_sync = GL_FALSE;
+GLboolean __EGLEW_MESA_drm_image = GL_FALSE;
+GLboolean __EGLEW_MESA_image_dma_buf_export = GL_FALSE;
+GLboolean __EGLEW_MESA_platform_gbm = GL_FALSE;
+GLboolean __EGLEW_MESA_platform_surfaceless = GL_FALSE;
+GLboolean __EGLEW_MESA_query_driver = GL_FALSE;
+GLboolean __EGLEW_NOK_swap_region = GL_FALSE;
+GLboolean __EGLEW_NOK_swap_region2 = GL_FALSE;
+GLboolean __EGLEW_NOK_texture_from_pixmap = GL_FALSE;
+GLboolean __EGLEW_NV_3dvision_surface = GL_FALSE;
+GLboolean __EGLEW_NV_context_priority_realtime = GL_FALSE;
+GLboolean __EGLEW_NV_coverage_sample = GL_FALSE;
+GLboolean __EGLEW_NV_coverage_sample_resolve = GL_FALSE;
+GLboolean __EGLEW_NV_cuda_event = GL_FALSE;
+GLboolean __EGLEW_NV_depth_nonlinear = GL_FALSE;
+GLboolean __EGLEW_NV_device_cuda = GL_FALSE;
+GLboolean __EGLEW_NV_native_query = GL_FALSE;
+GLboolean __EGLEW_NV_post_convert_rounding = GL_FALSE;
+GLboolean __EGLEW_NV_post_sub_buffer = GL_FALSE;
+GLboolean __EGLEW_NV_quadruple_buffer = GL_FALSE;
+GLboolean __EGLEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __EGLEW_NV_stream_consumer_eglimage = GL_FALSE;
+GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_display = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_object = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_partition = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_process = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_system = GL_FALSE;
+GLboolean __EGLEW_NV_stream_dma = GL_FALSE;
+GLboolean __EGLEW_NV_stream_fifo_next = GL_FALSE;
+GLboolean __EGLEW_NV_stream_fifo_synchronous = GL_FALSE;
+GLboolean __EGLEW_NV_stream_flush = GL_FALSE;
+GLboolean __EGLEW_NV_stream_frame_limits = GL_FALSE;
+GLboolean __EGLEW_NV_stream_metadata = GL_FALSE;
+GLboolean __EGLEW_NV_stream_origin = GL_FALSE;
+GLboolean __EGLEW_NV_stream_remote = GL_FALSE;
+GLboolean __EGLEW_NV_stream_reset = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket_inet = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket_unix = GL_FALSE;
+GLboolean __EGLEW_NV_stream_sync = GL_FALSE;
+GLboolean __EGLEW_NV_sync = GL_FALSE;
+GLboolean __EGLEW_NV_system_time = GL_FALSE;
+GLboolean __EGLEW_NV_triple_buffer = GL_FALSE;
+GLboolean __EGLEW_TIZEN_image_native_buffer = GL_FALSE;
+GLboolean __EGLEW_TIZEN_image_native_surface = GL_FALSE;
+GLboolean __EGLEW_WL_bind_wayland_display = GL_FALSE;
+GLboolean __EGLEW_WL_create_wayland_buffer_from_image = GL_FALSE;
+#ifdef EGL_VERSION_1_0
+
+static GLboolean _glewInit_EGL_VERSION_1_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglChooseConfig = (PFNEGLCHOOSECONFIGPROC)glewGetProcAddress((const GLubyte*)"eglChooseConfig")) == NULL) || r;
+ r = ((eglCopyBuffers = (PFNEGLCOPYBUFFERSPROC)glewGetProcAddress((const GLubyte*)"eglCopyBuffers")) == NULL) || r;
+ r = ((eglCreateContext = (PFNEGLCREATECONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreateContext")) == NULL) || r;
+ r = ((eglCreatePbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePbufferSurface")) == NULL) || r;
+ r = ((eglCreatePixmapSurface = (PFNEGLCREATEPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePixmapSurface")) == NULL) || r;
+ r = ((eglCreateWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreateWindowSurface")) == NULL) || r;
+ r = ((eglDestroyContext = (PFNEGLDESTROYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglDestroyContext")) == NULL) || r;
+ r = ((eglDestroySurface = (PFNEGLDESTROYSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglDestroySurface")) == NULL) || r;
+ r = ((eglGetConfigAttrib = (PFNEGLGETCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglGetConfigAttrib")) == NULL) || r;
+ r = ((eglGetConfigs = (PFNEGLGETCONFIGSPROC)glewGetProcAddress((const GLubyte*)"eglGetConfigs")) == NULL) || r;
+ r = ((eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentDisplay")) == NULL) || r;
+ r = ((eglGetCurrentSurface = (PFNEGLGETCURRENTSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentSurface")) == NULL) || r;
+ r = ((eglGetDisplay = (PFNEGLGETDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplay")) == NULL) || r;
+ r = ((eglGetError = (PFNEGLGETERRORPROC)glewGetProcAddress((const GLubyte*)"eglGetError")) == NULL) || r;
+ r = ((eglInitialize = (PFNEGLINITIALIZEPROC)glewGetProcAddress((const GLubyte*)"eglInitialize")) == NULL) || r;
+ r = ((eglMakeCurrent = (PFNEGLMAKECURRENTPROC)glewGetProcAddress((const GLubyte*)"eglMakeCurrent")) == NULL) || r;
+ r = ((eglQueryContext = (PFNEGLQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryContext")) == NULL) || r;
+ r = ((eglQueryString = (PFNEGLQUERYSTRINGPROC)glewGetProcAddress((const GLubyte*)"eglQueryString")) == NULL) || r;
+ r = ((eglQuerySurface = (PFNEGLQUERYSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurface")) == NULL) || r;
+ r = ((eglSwapBuffers = (PFNEGLSWAPBUFFERSPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffers")) == NULL) || r;
+ r = ((eglTerminate = (PFNEGLTERMINATEPROC)glewGetProcAddress((const GLubyte*)"eglTerminate")) == NULL) || r;
+ r = ((eglWaitGL = (PFNEGLWAITGLPROC)glewGetProcAddress((const GLubyte*)"eglWaitGL")) == NULL) || r;
+ r = ((eglWaitNative = (PFNEGLWAITNATIVEPROC)glewGetProcAddress((const GLubyte*)"eglWaitNative")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_0 */
+
+#ifdef EGL_VERSION_1_1
+
+static GLboolean _glewInit_EGL_VERSION_1_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindTexImage = (PFNEGLBINDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglBindTexImage")) == NULL) || r;
+ r = ((eglReleaseTexImage = (PFNEGLRELEASETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglReleaseTexImage")) == NULL) || r;
+ r = ((eglSurfaceAttrib = (PFNEGLSURFACEATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglSurfaceAttrib")) == NULL) || r;
+ r = ((eglSwapInterval = (PFNEGLSWAPINTERVALPROC)glewGetProcAddress((const GLubyte*)"eglSwapInterval")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_1 */
+
+#ifdef EGL_VERSION_1_2
+
+static GLboolean _glewInit_EGL_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindAPI = (PFNEGLBINDAPIPROC)glewGetProcAddress((const GLubyte*)"eglBindAPI")) == NULL) || r;
+ r = ((eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC)glewGetProcAddress((const GLubyte*)"eglCreatePbufferFromClientBuffer")) == NULL) || r;
+ r = ((eglQueryAPI = (PFNEGLQUERYAPIPROC)glewGetProcAddress((const GLubyte*)"eglQueryAPI")) == NULL) || r;
+ r = ((eglReleaseThread = (PFNEGLRELEASETHREADPROC)glewGetProcAddress((const GLubyte*)"eglReleaseThread")) == NULL) || r;
+ r = ((eglWaitClient = (PFNEGLWAITCLIENTPROC)glewGetProcAddress((const GLubyte*)"eglWaitClient")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_2 */
+
+#ifdef EGL_VERSION_1_4
+
+static GLboolean _glewInit_EGL_VERSION_1_4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetCurrentContext = (PFNEGLGETCURRENTCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentContext")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_4 */
+
+#ifdef EGL_VERSION_1_5
+
+static GLboolean _glewInit_EGL_VERSION_1_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSync")) == NULL) || r;
+ r = ((eglCreateImage = (PFNEGLCREATEIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglCreateImage")) == NULL) || r;
+ r = ((eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformPixmapSurface")) == NULL) || r;
+ r = ((eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformWindowSurface")) == NULL) || r;
+ r = ((eglCreateSync = (PFNEGLCREATESYNCPROC)glewGetProcAddress((const GLubyte*)"eglCreateSync")) == NULL) || r;
+ r = ((eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglDestroyImage")) == NULL) || r;
+ r = ((eglDestroySync = (PFNEGLDESTROYSYNCPROC)glewGetProcAddress((const GLubyte*)"eglDestroySync")) == NULL) || r;
+ r = ((eglGetPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetPlatformDisplay")) == NULL) || r;
+ r = ((eglGetSyncAttrib = (PFNEGLGETSYNCATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttrib")) == NULL) || r;
+ r = ((eglWaitSync = (PFNEGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"eglWaitSync")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef EGL_ANDROID_blob_cache
+
+static GLboolean _glewInit_EGL_ANDROID_blob_cache ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSetBlobCacheFuncsANDROID = (PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglSetBlobCacheFuncsANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifdef EGL_ANDROID_create_native_client_buffer
+
+static GLboolean _glewInit_EGL_ANDROID_create_native_client_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateNativeClientBufferANDROID = (PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglCreateNativeClientBufferANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifdef EGL_ANDROID_get_frame_timestamps
+
+static GLboolean _glewInit_EGL_ANDROID_get_frame_timestamps ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetCompositorTimingANDROID = (PFNEGLGETCOMPOSITORTIMINGANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetCompositorTimingANDROID")) == NULL) || r;
+ r = ((eglGetCompositorTimingSupportedANDROID = (PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetCompositorTimingSupportedANDROID")) == NULL) || r;
+ r = ((eglGetFrameTimestampSupportedANDROID = (PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetFrameTimestampSupportedANDROID")) == NULL) || r;
+ r = ((eglGetFrameTimestampsANDROID = (PFNEGLGETFRAMETIMESTAMPSANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetFrameTimestampsANDROID")) == NULL) || r;
+ r = ((eglGetNextFrameIdANDROID = (PFNEGLGETNEXTFRAMEIDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetNextFrameIdANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifdef EGL_ANDROID_get_native_client_buffer
+
+static GLboolean _glewInit_EGL_ANDROID_get_native_client_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetNativeClientBufferANDROID = (PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetNativeClientBufferANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifdef EGL_ANDROID_native_fence_sync
+
+static GLboolean _glewInit_EGL_ANDROID_native_fence_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglDupNativeFenceFDANDROID = (PFNEGLDUPNATIVEFENCEFDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglDupNativeFenceFDANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifdef EGL_ANDROID_presentation_time
+
+static GLboolean _glewInit_EGL_ANDROID_presentation_time ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglPresentationTimeANDROID = (PFNEGLPRESENTATIONTIMEANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglPresentationTimeANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifdef EGL_ANGLE_query_surface_pointer
+
+static GLboolean _glewInit_EGL_ANGLE_query_surface_pointer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySurfacePointerANGLE = (PFNEGLQUERYSURFACEPOINTERANGLEPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurfacePointerANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifdef EGL_ANGLE_sync_control_rate
+
+static GLboolean _glewInit_EGL_ANGLE_sync_control_rate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetMscRateANGLE = (PFNEGLGETMSCRATEANGLEPROC)glewGetProcAddress((const GLubyte*)"eglGetMscRateANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifdef EGL_EXT_client_sync
+
+static GLboolean _glewInit_EGL_EXT_client_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientSignalSyncEXT = (PFNEGLCLIENTSIGNALSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"eglClientSignalSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_client_sync */
+
+#ifdef EGL_EXT_compositor
+
+static GLboolean _glewInit_EGL_EXT_compositor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCompositorBindTexWindowEXT = (PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorBindTexWindowEXT")) == NULL) || r;
+ r = ((eglCompositorSetContextAttributesEXT = (PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetContextAttributesEXT")) == NULL) || r;
+ r = ((eglCompositorSetContextListEXT = (PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetContextListEXT")) == NULL) || r;
+ r = ((eglCompositorSetSizeEXT = (PFNEGLCOMPOSITORSETSIZEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetSizeEXT")) == NULL) || r;
+ r = ((eglCompositorSetWindowAttributesEXT = (PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetWindowAttributesEXT")) == NULL) || r;
+ r = ((eglCompositorSetWindowListEXT = (PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetWindowListEXT")) == NULL) || r;
+ r = ((eglCompositorSwapPolicyEXT = (PFNEGLCOMPOSITORSWAPPOLICYEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSwapPolicyEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_compositor */
+
+#ifdef EGL_EXT_device_enumeration
+
+static GLboolean _glewInit_EGL_EXT_device_enumeration ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDevicesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_enumeration */
+
+#ifdef EGL_EXT_device_persistent_id
+
+static GLboolean _glewInit_EGL_EXT_device_persistent_id ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDeviceBinaryEXT = (PFNEGLQUERYDEVICEBINARYEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceBinaryEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifdef EGL_EXT_device_query
+
+static GLboolean _glewInit_EGL_EXT_device_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDeviceAttribEXT = (PFNEGLQUERYDEVICEATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceAttribEXT")) == NULL) || r;
+ r = ((eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceStringEXT")) == NULL) || r;
+ r = ((eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_query */
+
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+
+static GLboolean _glewInit_EGL_EXT_image_dma_buf_import_modifiers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDmaBufFormatsEXT")) == NULL) || r;
+ r = ((eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDmaBufModifiersEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifdef EGL_EXT_output_base
+
+static GLboolean _glewInit_EGL_EXT_output_base ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetOutputLayersEXT = (PFNEGLGETOUTPUTLAYERSEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetOutputLayersEXT")) == NULL) || r;
+ r = ((eglGetOutputPortsEXT = (PFNEGLGETOUTPUTPORTSEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetOutputPortsEXT")) == NULL) || r;
+ r = ((eglOutputLayerAttribEXT = (PFNEGLOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglOutputLayerAttribEXT")) == NULL) || r;
+ r = ((eglOutputPortAttribEXT = (PFNEGLOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglOutputPortAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputLayerAttribEXT = (PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputLayerAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputLayerStringEXT = (PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputLayerStringEXT")) == NULL) || r;
+ r = ((eglQueryOutputPortAttribEXT = (PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputPortAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputPortStringEXT = (PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputPortStringEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_output_base */
+
+#ifdef EGL_EXT_platform_base
+
+static GLboolean _glewInit_EGL_EXT_platform_base ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformPixmapSurfaceEXT")) == NULL) || r;
+ r = ((eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformWindowSurfaceEXT")) == NULL) || r;
+ r = ((eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetPlatformDisplayEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_platform_base */
+
+#ifdef EGL_EXT_stream_consumer_egloutput
+
+static GLboolean _glewInit_EGL_EXT_stream_consumer_egloutput ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerOutputEXT = (PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerOutputEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifdef EGL_EXT_surface_compression
+
+static GLboolean _glewInit_EGL_EXT_surface_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySupportedCompressionRatesEXT = (PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC)glewGetProcAddress((const GLubyte*)"eglQuerySupportedCompressionRatesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_surface_compression */
+
+#ifdef EGL_EXT_swap_buffers_with_damage
+
+static GLboolean _glewInit_EGL_EXT_swap_buffers_with_damage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersWithDamageEXT = (PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersWithDamageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifdef EGL_EXT_sync_reuse
+
+static GLboolean _glewInit_EGL_EXT_sync_reuse ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglUnsignalSyncEXT = (PFNEGLUNSIGNALSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"eglUnsignalSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_sync_reuse */
+
+#ifdef EGL_HI_clientpixmap
+
+static GLboolean _glewInit_EGL_HI_clientpixmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreatePixmapSurfaceHI = (PFNEGLCREATEPIXMAPSURFACEHIPROC)glewGetProcAddress((const GLubyte*)"eglCreatePixmapSurfaceHI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_HI_clientpixmap */
+
+#ifdef EGL_KHR_cl_event2
+
+static GLboolean _glewInit_EGL_KHR_cl_event2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateSync64KHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_cl_event2 */
+
+#ifdef EGL_KHR_debug
+
+static GLboolean _glewInit_EGL_KHR_debug ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglDebugMessageControlKHR = (PFNEGLDEBUGMESSAGECONTROLKHRPROC)glewGetProcAddress((const GLubyte*)"eglDebugMessageControlKHR")) == NULL) || r;
+ r = ((eglLabelObjectKHR = (PFNEGLLABELOBJECTKHRPROC)glewGetProcAddress((const GLubyte*)"eglLabelObjectKHR")) == NULL) || r;
+ r = ((eglQueryDebugKHR = (PFNEGLQUERYDEBUGKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryDebugKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_debug */
+
+#ifdef EGL_KHR_display_reference
+
+static GLboolean _glewInit_EGL_KHR_display_reference ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDisplayAttribKHR = (PFNEGLQUERYDISPLAYATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_display_reference */
+
+#ifdef EGL_KHR_image
+
+static GLboolean _glewInit_EGL_KHR_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateImageKHR")) == NULL) || r;
+ r = ((eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroyImageKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_image */
+
+#ifdef EGL_KHR_lock_surface
+
+static GLboolean _glewInit_EGL_KHR_lock_surface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglLockSurfaceKHR = (PFNEGLLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglLockSurfaceKHR")) == NULL) || r;
+ r = ((eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglUnlockSurfaceKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_lock_surface */
+
+#ifdef EGL_KHR_lock_surface3
+
+static GLboolean _glewInit_EGL_KHR_lock_surface3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySurface64KHR = (PFNEGLQUERYSURFACE64KHRPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurface64KHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifdef EGL_KHR_partial_update
+
+static GLboolean _glewInit_EGL_KHR_partial_update ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSetDamageRegionKHR = (PFNEGLSETDAMAGEREGIONKHRPROC)glewGetProcAddress((const GLubyte*)"eglSetDamageRegionKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_partial_update */
+
+#ifdef EGL_KHR_reusable_sync
+
+static GLboolean _glewInit_EGL_KHR_reusable_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSyncKHR")) == NULL) || r;
+ r = ((eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateSyncKHR")) == NULL) || r;
+ r = ((eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroySyncKHR")) == NULL) || r;
+ r = ((eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttribKHR")) == NULL) || r;
+ r = ((eglSignalSyncKHR = (PFNEGLSIGNALSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglSignalSyncKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_reusable_sync */
+
+#ifdef EGL_KHR_stream
+
+static GLboolean _glewInit_EGL_KHR_stream ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamKHR = (PFNEGLCREATESTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamKHR")) == NULL) || r;
+ r = ((eglDestroyStreamKHR = (PFNEGLDESTROYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroyStreamKHR")) == NULL) || r;
+ r = ((eglQueryStreamKHR = (PFNEGLQUERYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamKHR")) == NULL) || r;
+ r = ((eglQueryStreamu64KHR = (PFNEGLQUERYSTREAMU64KHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamu64KHR")) == NULL) || r;
+ r = ((eglStreamAttribKHR = (PFNEGLSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream */
+
+#ifdef EGL_KHR_stream_attrib
+
+static GLboolean _glewInit_EGL_KHR_stream_attrib ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamAttribKHR = (PFNEGLCREATESTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamAttribKHR")) == NULL) || r;
+ r = ((eglQueryStreamAttribKHR = (PFNEGLQUERYSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamAttribKHR")) == NULL) || r;
+ r = ((eglSetStreamAttribKHR = (PFNEGLSETSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglSetStreamAttribKHR")) == NULL) || r;
+ r = ((eglStreamConsumerAcquireAttribKHR = (PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerAcquireAttribKHR")) == NULL) || r;
+ r = ((eglStreamConsumerReleaseAttribKHR = (PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerReleaseAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_attrib */
+
+#ifdef EGL_KHR_stream_consumer_gltexture
+
+static GLboolean _glewInit_EGL_KHR_stream_consumer_gltexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerAcquireKHR = (PFNEGLSTREAMCONSUMERACQUIREKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerAcquireKHR")) == NULL) || r;
+ r = ((eglStreamConsumerGLTextureExternalKHR = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerGLTextureExternalKHR")) == NULL) || r;
+ r = ((eglStreamConsumerReleaseKHR = (PFNEGLSTREAMCONSUMERRELEASEKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerReleaseKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifdef EGL_KHR_stream_cross_process_fd
+
+static GLboolean _glewInit_EGL_KHR_stream_cross_process_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamFromFileDescriptorKHR = (PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamFromFileDescriptorKHR")) == NULL) || r;
+ r = ((eglGetStreamFileDescriptorKHR = (PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)"eglGetStreamFileDescriptorKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifdef EGL_KHR_stream_fifo
+
+static GLboolean _glewInit_EGL_KHR_stream_fifo ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryStreamTimeKHR = (PFNEGLQUERYSTREAMTIMEKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamTimeKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_fifo */
+
+#ifdef EGL_KHR_stream_producer_eglsurface
+
+static GLboolean _glewInit_EGL_KHR_stream_producer_eglsurface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamProducerSurfaceKHR = (PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamProducerSurfaceKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifdef EGL_KHR_swap_buffers_with_damage
+
+static GLboolean _glewInit_EGL_KHR_swap_buffers_with_damage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersWithDamageKHR = (PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersWithDamageKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifdef EGL_KHR_wait_sync
+
+static GLboolean _glewInit_EGL_KHR_wait_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglWaitSyncKHR = (PFNEGLWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglWaitSyncKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_wait_sync */
+
+#ifdef EGL_MESA_drm_image
+
+static GLboolean _glewInit_EGL_MESA_drm_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateDRMImageMESA = (PFNEGLCREATEDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglCreateDRMImageMESA")) == NULL) || r;
+ r = ((eglExportDRMImageMESA = (PFNEGLEXPORTDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDRMImageMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_drm_image */
+
+#ifdef EGL_MESA_image_dma_buf_export
+
+static GLboolean _glewInit_EGL_MESA_image_dma_buf_export ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglExportDMABUFImageMESA = (PFNEGLEXPORTDMABUFIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDMABUFImageMESA")) == NULL) || r;
+ r = ((eglExportDMABUFImageQueryMESA = (PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDMABUFImageQueryMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifdef EGL_MESA_query_driver
+
+static GLboolean _glewInit_EGL_MESA_query_driver ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetDisplayDriverConfig = (PFNEGLGETDISPLAYDRIVERCONFIGPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplayDriverConfig")) == NULL) || r;
+ r = ((eglGetDisplayDriverName = (PFNEGLGETDISPLAYDRIVERNAMEPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplayDriverName")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_query_driver */
+
+#ifdef EGL_NOK_swap_region
+
+static GLboolean _glewInit_EGL_NOK_swap_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersRegionNOK = (PFNEGLSWAPBUFFERSREGIONNOKPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersRegionNOK")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NOK_swap_region */
+
+#ifdef EGL_NOK_swap_region2
+
+static GLboolean _glewInit_EGL_NOK_swap_region2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersRegion2NOK = (PFNEGLSWAPBUFFERSREGION2NOKPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersRegion2NOK")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NOK_swap_region2 */
+
+#ifdef EGL_NV_native_query
+
+static GLboolean _glewInit_EGL_NV_native_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryNativeDisplayNV = (PFNEGLQUERYNATIVEDISPLAYNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativeDisplayNV")) == NULL) || r;
+ r = ((eglQueryNativePixmapNV = (PFNEGLQUERYNATIVEPIXMAPNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativePixmapNV")) == NULL) || r;
+ r = ((eglQueryNativeWindowNV = (PFNEGLQUERYNATIVEWINDOWNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativeWindowNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_native_query */
+
+#ifdef EGL_NV_post_sub_buffer
+
+static GLboolean _glewInit_EGL_NV_post_sub_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglPostSubBufferNV = (PFNEGLPOSTSUBBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"eglPostSubBufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifdef EGL_NV_stream_consumer_eglimage
+
+static GLboolean _glewInit_EGL_NV_stream_consumer_eglimage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryStreamConsumerEventNV = (PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamConsumerEventNV")) == NULL) || r;
+ r = ((eglStreamAcquireImageNV = (PFNEGLSTREAMACQUIREIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamAcquireImageNV")) == NULL) || r;
+ r = ((eglStreamImageConsumerConnectNV = (PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamImageConsumerConnectNV")) == NULL) || r;
+ r = ((eglStreamReleaseImageNV = (PFNEGLSTREAMRELEASEIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamReleaseImageNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+
+static GLboolean _glewInit_EGL_NV_stream_consumer_gltexture_yuv ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerGLTextureExternalAttribsNV = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerGLTextureExternalAttribsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifdef EGL_NV_stream_flush
+
+static GLboolean _glewInit_EGL_NV_stream_flush ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamFlushNV = (PFNEGLSTREAMFLUSHNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamFlushNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_flush */
+
+#ifdef EGL_NV_stream_metadata
+
+static GLboolean _glewInit_EGL_NV_stream_metadata ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDisplayAttribNV = (PFNEGLQUERYDISPLAYATTRIBNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribNV")) == NULL) || r;
+ r = ((eglQueryStreamMetadataNV = (PFNEGLQUERYSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamMetadataNV")) == NULL) || r;
+ r = ((eglSetStreamMetadataNV = (PFNEGLSETSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)"eglSetStreamMetadataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_metadata */
+
+#ifdef EGL_NV_stream_reset
+
+static GLboolean _glewInit_EGL_NV_stream_reset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglResetStreamNV = (PFNEGLRESETSTREAMNVPROC)glewGetProcAddress((const GLubyte*)"eglResetStreamNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_reset */
+
+#ifdef EGL_NV_stream_sync
+
+static GLboolean _glewInit_EGL_NV_stream_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamSyncNV = (PFNEGLCREATESTREAMSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamSyncNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_sync */
+
+#ifdef EGL_NV_sync
+
+static GLboolean _glewInit_EGL_NV_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSyncNV = (PFNEGLCLIENTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSyncNV")) == NULL) || r;
+ r = ((eglCreateFenceSyncNV = (PFNEGLCREATEFENCESYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglCreateFenceSyncNV")) == NULL) || r;
+ r = ((eglDestroySyncNV = (PFNEGLDESTROYSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglDestroySyncNV")) == NULL) || r;
+ r = ((eglFenceNV = (PFNEGLFENCENVPROC)glewGetProcAddress((const GLubyte*)"eglFenceNV")) == NULL) || r;
+ r = ((eglGetSyncAttribNV = (PFNEGLGETSYNCATTRIBNVPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttribNV")) == NULL) || r;
+ r = ((eglSignalSyncNV = (PFNEGLSIGNALSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglSignalSyncNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_sync */
+
+#ifdef EGL_NV_system_time
+
+static GLboolean _glewInit_EGL_NV_system_time ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)glewGetProcAddress((const GLubyte*)"eglGetSystemTimeFrequencyNV")) == NULL) || r;
+ r = ((eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC)glewGetProcAddress((const GLubyte*)"eglGetSystemTimeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_system_time */
+
+#ifdef EGL_WL_bind_wayland_display
+
+static GLboolean _glewInit_EGL_WL_bind_wayland_display ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindWaylandDisplayWL = (PFNEGLBINDWAYLANDDISPLAYWLPROC)glewGetProcAddress((const GLubyte*)"eglBindWaylandDisplayWL")) == NULL) || r;
+ r = ((eglQueryWaylandBufferWL = (PFNEGLQUERYWAYLANDBUFFERWLPROC)glewGetProcAddress((const GLubyte*)"eglQueryWaylandBufferWL")) == NULL) || r;
+ r = ((eglUnbindWaylandDisplayWL = (PFNEGLUNBINDWAYLANDDISPLAYWLPROC)glewGetProcAddress((const GLubyte*)"eglUnbindWaylandDisplayWL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifdef EGL_WL_create_wayland_buffer_from_image
+
+static GLboolean _glewInit_EGL_WL_create_wayland_buffer_from_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateWaylandBufferFromImageWL = (PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC)glewGetProcAddress((const GLubyte*)"eglCreateWaylandBufferFromImageWL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+ /* ------------------------------------------------------------------------ */
+
+GLboolean eglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum eglewInit (EGLDisplay display)
+{
+ EGLint major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLQUERYSTRINGPROC queryString = NULL;
+
+ /* Load necessary entry points */
+ initialize = (PFNEGLINITIALIZEPROC) glewGetProcAddress("eglInitialize");
+ queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress("eglQueryString");
+ if (!initialize || !queryString)
+ return 1;
+
+ /* query EGL version */
+ if (initialize(display, &major, &minor) != EGL_TRUE)
+ return 1;
+
+ EGLEW_VERSION_1_5 = ( major > 1 ) || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_4 = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_3 = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_2 = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_1 = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_0 = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE;
+
+ /* query EGL extension string */
+ extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+
+ /* initialize extensions */
+#ifdef EGL_VERSION_1_0
+ if (glewExperimental || EGLEW_VERSION_1_0) EGLEW_VERSION_1_0 = !_glewInit_EGL_VERSION_1_0();
+#endif /* EGL_VERSION_1_0 */
+#ifdef EGL_VERSION_1_1
+ if (glewExperimental || EGLEW_VERSION_1_1) EGLEW_VERSION_1_1 = !_glewInit_EGL_VERSION_1_1();
+#endif /* EGL_VERSION_1_1 */
+#ifdef EGL_VERSION_1_2
+ if (glewExperimental || EGLEW_VERSION_1_2) EGLEW_VERSION_1_2 = !_glewInit_EGL_VERSION_1_2();
+#endif /* EGL_VERSION_1_2 */
+#ifdef EGL_VERSION_1_4
+ if (glewExperimental || EGLEW_VERSION_1_4) EGLEW_VERSION_1_4 = !_glewInit_EGL_VERSION_1_4();
+#endif /* EGL_VERSION_1_4 */
+#ifdef EGL_VERSION_1_5
+ if (glewExperimental || EGLEW_VERSION_1_5) EGLEW_VERSION_1_5 = !_glewInit_EGL_VERSION_1_5();
+#endif /* EGL_VERSION_1_5 */
+#ifdef EGL_ANDROID_GLES_layers
+ EGLEW_ANDROID_GLES_layers = _glewSearchExtension("EGL_ANDROID_GLES_layers", extStart, extEnd);
+#endif /* EGL_ANDROID_GLES_layers */
+#ifdef EGL_ANDROID_blob_cache
+ EGLEW_ANDROID_blob_cache = _glewSearchExtension("EGL_ANDROID_blob_cache", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_blob_cache) EGLEW_ANDROID_blob_cache = !_glewInit_EGL_ANDROID_blob_cache();
+#endif /* EGL_ANDROID_blob_cache */
+#ifdef EGL_ANDROID_create_native_client_buffer
+ EGLEW_ANDROID_create_native_client_buffer = _glewSearchExtension("EGL_ANDROID_create_native_client_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_create_native_client_buffer) EGLEW_ANDROID_create_native_client_buffer = !_glewInit_EGL_ANDROID_create_native_client_buffer();
+#endif /* EGL_ANDROID_create_native_client_buffer */
+#ifdef EGL_ANDROID_framebuffer_target
+ EGLEW_ANDROID_framebuffer_target = _glewSearchExtension("EGL_ANDROID_framebuffer_target", extStart, extEnd);
+#endif /* EGL_ANDROID_framebuffer_target */
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ EGLEW_ANDROID_front_buffer_auto_refresh = _glewSearchExtension("EGL_ANDROID_front_buffer_auto_refresh", extStart, extEnd);
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+#ifdef EGL_ANDROID_get_frame_timestamps
+ EGLEW_ANDROID_get_frame_timestamps = _glewSearchExtension("EGL_ANDROID_get_frame_timestamps", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_get_frame_timestamps) EGLEW_ANDROID_get_frame_timestamps = !_glewInit_EGL_ANDROID_get_frame_timestamps();
+#endif /* EGL_ANDROID_get_frame_timestamps */
+#ifdef EGL_ANDROID_get_native_client_buffer
+ EGLEW_ANDROID_get_native_client_buffer = _glewSearchExtension("EGL_ANDROID_get_native_client_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_get_native_client_buffer) EGLEW_ANDROID_get_native_client_buffer = !_glewInit_EGL_ANDROID_get_native_client_buffer();
+#endif /* EGL_ANDROID_get_native_client_buffer */
+#ifdef EGL_ANDROID_image_native_buffer
+ EGLEW_ANDROID_image_native_buffer = _glewSearchExtension("EGL_ANDROID_image_native_buffer", extStart, extEnd);
+#endif /* EGL_ANDROID_image_native_buffer */
+#ifdef EGL_ANDROID_native_fence_sync
+ EGLEW_ANDROID_native_fence_sync = _glewSearchExtension("EGL_ANDROID_native_fence_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_native_fence_sync) EGLEW_ANDROID_native_fence_sync = !_glewInit_EGL_ANDROID_native_fence_sync();
+#endif /* EGL_ANDROID_native_fence_sync */
+#ifdef EGL_ANDROID_presentation_time
+ EGLEW_ANDROID_presentation_time = _glewSearchExtension("EGL_ANDROID_presentation_time", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_presentation_time) EGLEW_ANDROID_presentation_time = !_glewInit_EGL_ANDROID_presentation_time();
+#endif /* EGL_ANDROID_presentation_time */
+#ifdef EGL_ANDROID_recordable
+ EGLEW_ANDROID_recordable = _glewSearchExtension("EGL_ANDROID_recordable", extStart, extEnd);
+#endif /* EGL_ANDROID_recordable */
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ EGLEW_ANGLE_d3d_share_handle_client_buffer = _glewSearchExtension("EGL_ANGLE_d3d_share_handle_client_buffer", extStart, extEnd);
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+#ifdef EGL_ANGLE_device_d3d
+ EGLEW_ANGLE_device_d3d = _glewSearchExtension("EGL_ANGLE_device_d3d", extStart, extEnd);
+#endif /* EGL_ANGLE_device_d3d */
+#ifdef EGL_ANGLE_query_surface_pointer
+ EGLEW_ANGLE_query_surface_pointer = _glewSearchExtension("EGL_ANGLE_query_surface_pointer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANGLE_query_surface_pointer) EGLEW_ANGLE_query_surface_pointer = !_glewInit_EGL_ANGLE_query_surface_pointer();
+#endif /* EGL_ANGLE_query_surface_pointer */
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = _glewSearchExtension("EGL_ANGLE_surface_d3d_texture_2d_share_handle", extStart, extEnd);
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+#ifdef EGL_ANGLE_sync_control_rate
+ EGLEW_ANGLE_sync_control_rate = _glewSearchExtension("EGL_ANGLE_sync_control_rate", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANGLE_sync_control_rate) EGLEW_ANGLE_sync_control_rate = !_glewInit_EGL_ANGLE_sync_control_rate();
+#endif /* EGL_ANGLE_sync_control_rate */
+#ifdef EGL_ANGLE_window_fixed_size
+ EGLEW_ANGLE_window_fixed_size = _glewSearchExtension("EGL_ANGLE_window_fixed_size", extStart, extEnd);
+#endif /* EGL_ANGLE_window_fixed_size */
+#ifdef EGL_ARM_image_format
+ EGLEW_ARM_image_format = _glewSearchExtension("EGL_ARM_image_format", extStart, extEnd);
+#endif /* EGL_ARM_image_format */
+#ifdef EGL_ARM_implicit_external_sync
+ EGLEW_ARM_implicit_external_sync = _glewSearchExtension("EGL_ARM_implicit_external_sync", extStart, extEnd);
+#endif /* EGL_ARM_implicit_external_sync */
+#ifdef EGL_ARM_pixmap_multisample_discard
+ EGLEW_ARM_pixmap_multisample_discard = _glewSearchExtension("EGL_ARM_pixmap_multisample_discard", extStart, extEnd);
+#endif /* EGL_ARM_pixmap_multisample_discard */
+#ifdef EGL_EXT_bind_to_front
+ EGLEW_EXT_bind_to_front = _glewSearchExtension("EGL_EXT_bind_to_front", extStart, extEnd);
+#endif /* EGL_EXT_bind_to_front */
+#ifdef EGL_EXT_buffer_age
+ EGLEW_EXT_buffer_age = _glewSearchExtension("EGL_EXT_buffer_age", extStart, extEnd);
+#endif /* EGL_EXT_buffer_age */
+#ifdef EGL_EXT_client_extensions
+ EGLEW_EXT_client_extensions = _glewSearchExtension("EGL_EXT_client_extensions", extStart, extEnd);
+#endif /* EGL_EXT_client_extensions */
+#ifdef EGL_EXT_client_sync
+ EGLEW_EXT_client_sync = _glewSearchExtension("EGL_EXT_client_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_client_sync) EGLEW_EXT_client_sync = !_glewInit_EGL_EXT_client_sync();
+#endif /* EGL_EXT_client_sync */
+#ifdef EGL_EXT_compositor
+ EGLEW_EXT_compositor = _glewSearchExtension("EGL_EXT_compositor", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_compositor) EGLEW_EXT_compositor = !_glewInit_EGL_EXT_compositor();
+#endif /* EGL_EXT_compositor */
+#ifdef EGL_EXT_config_select_group
+ EGLEW_EXT_config_select_group = _glewSearchExtension("EGL_EXT_config_select_group", extStart, extEnd);
+#endif /* EGL_EXT_config_select_group */
+#ifdef EGL_EXT_create_context_robustness
+ EGLEW_EXT_create_context_robustness = _glewSearchExtension("EGL_EXT_create_context_robustness", extStart, extEnd);
+#endif /* EGL_EXT_create_context_robustness */
+#ifdef EGL_EXT_device_base
+ EGLEW_EXT_device_base = _glewSearchExtension("EGL_EXT_device_base", extStart, extEnd);
+#endif /* EGL_EXT_device_base */
+#ifdef EGL_EXT_device_drm
+ EGLEW_EXT_device_drm = _glewSearchExtension("EGL_EXT_device_drm", extStart, extEnd);
+#endif /* EGL_EXT_device_drm */
+#ifdef EGL_EXT_device_drm_render_node
+ EGLEW_EXT_device_drm_render_node = _glewSearchExtension("EGL_EXT_device_drm_render_node", extStart, extEnd);
+#endif /* EGL_EXT_device_drm_render_node */
+#ifdef EGL_EXT_device_enumeration
+ EGLEW_EXT_device_enumeration = _glewSearchExtension("EGL_EXT_device_enumeration", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_enumeration) EGLEW_EXT_device_enumeration = !_glewInit_EGL_EXT_device_enumeration();
+#endif /* EGL_EXT_device_enumeration */
+#ifdef EGL_EXT_device_openwf
+ EGLEW_EXT_device_openwf = _glewSearchExtension("EGL_EXT_device_openwf", extStart, extEnd);
+#endif /* EGL_EXT_device_openwf */
+#ifdef EGL_EXT_device_persistent_id
+ EGLEW_EXT_device_persistent_id = _glewSearchExtension("EGL_EXT_device_persistent_id", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_persistent_id) EGLEW_EXT_device_persistent_id = !_glewInit_EGL_EXT_device_persistent_id();
+#endif /* EGL_EXT_device_persistent_id */
+#ifdef EGL_EXT_device_query
+ EGLEW_EXT_device_query = _glewSearchExtension("EGL_EXT_device_query", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_query) EGLEW_EXT_device_query = !_glewInit_EGL_EXT_device_query();
+#endif /* EGL_EXT_device_query */
+#ifdef EGL_EXT_device_query_name
+ EGLEW_EXT_device_query_name = _glewSearchExtension("EGL_EXT_device_query_name", extStart, extEnd);
+#endif /* EGL_EXT_device_query_name */
+#ifdef EGL_EXT_explicit_device
+ EGLEW_EXT_explicit_device = _glewSearchExtension("EGL_EXT_explicit_device", extStart, extEnd);
+#endif /* EGL_EXT_explicit_device */
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ EGLEW_EXT_gl_colorspace_bt2020_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_bt2020_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ EGLEW_EXT_gl_colorspace_bt2020_pq = _glewSearchExtension("EGL_EXT_gl_colorspace_bt2020_pq", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ EGLEW_EXT_gl_colorspace_display_p3 = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ EGLEW_EXT_gl_colorspace_display_p3_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ EGLEW_EXT_gl_colorspace_display_p3_passthrough = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3_passthrough", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ EGLEW_EXT_gl_colorspace_scrgb = _glewSearchExtension("EGL_EXT_gl_colorspace_scrgb", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ EGLEW_EXT_gl_colorspace_scrgb_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_scrgb_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+#ifdef EGL_EXT_image_dma_buf_import
+ EGLEW_EXT_image_dma_buf_import = _glewSearchExtension("EGL_EXT_image_dma_buf_import", extStart, extEnd);
+#endif /* EGL_EXT_image_dma_buf_import */
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ EGLEW_EXT_image_dma_buf_import_modifiers = _glewSearchExtension("EGL_EXT_image_dma_buf_import_modifiers", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_image_dma_buf_import_modifiers) EGLEW_EXT_image_dma_buf_import_modifiers = !_glewInit_EGL_EXT_image_dma_buf_import_modifiers();
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+#ifdef EGL_EXT_image_gl_colorspace
+ EGLEW_EXT_image_gl_colorspace = _glewSearchExtension("EGL_EXT_image_gl_colorspace", extStart, extEnd);
+#endif /* EGL_EXT_image_gl_colorspace */
+#ifdef EGL_EXT_image_implicit_sync_control
+ EGLEW_EXT_image_implicit_sync_control = _glewSearchExtension("EGL_EXT_image_implicit_sync_control", extStart, extEnd);
+#endif /* EGL_EXT_image_implicit_sync_control */
+#ifdef EGL_EXT_multiview_window
+ EGLEW_EXT_multiview_window = _glewSearchExtension("EGL_EXT_multiview_window", extStart, extEnd);
+#endif /* EGL_EXT_multiview_window */
+#ifdef EGL_EXT_output_base
+ EGLEW_EXT_output_base = _glewSearchExtension("EGL_EXT_output_base", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_output_base) EGLEW_EXT_output_base = !_glewInit_EGL_EXT_output_base();
+#endif /* EGL_EXT_output_base */
+#ifdef EGL_EXT_output_drm
+ EGLEW_EXT_output_drm = _glewSearchExtension("EGL_EXT_output_drm", extStart, extEnd);
+#endif /* EGL_EXT_output_drm */
+#ifdef EGL_EXT_output_openwf
+ EGLEW_EXT_output_openwf = _glewSearchExtension("EGL_EXT_output_openwf", extStart, extEnd);
+#endif /* EGL_EXT_output_openwf */
+#ifdef EGL_EXT_pixel_format_float
+ EGLEW_EXT_pixel_format_float = _glewSearchExtension("EGL_EXT_pixel_format_float", extStart, extEnd);
+#endif /* EGL_EXT_pixel_format_float */
+#ifdef EGL_EXT_platform_base
+ EGLEW_EXT_platform_base = _glewSearchExtension("EGL_EXT_platform_base", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_platform_base) EGLEW_EXT_platform_base = !_glewInit_EGL_EXT_platform_base();
+#endif /* EGL_EXT_platform_base */
+#ifdef EGL_EXT_platform_device
+ EGLEW_EXT_platform_device = _glewSearchExtension("EGL_EXT_platform_device", extStart, extEnd);
+#endif /* EGL_EXT_platform_device */
+#ifdef EGL_EXT_platform_wayland
+ EGLEW_EXT_platform_wayland = _glewSearchExtension("EGL_EXT_platform_wayland", extStart, extEnd);
+#endif /* EGL_EXT_platform_wayland */
+#ifdef EGL_EXT_platform_x11
+ EGLEW_EXT_platform_x11 = _glewSearchExtension("EGL_EXT_platform_x11", extStart, extEnd);
+#endif /* EGL_EXT_platform_x11 */
+#ifdef EGL_EXT_platform_xcb
+ EGLEW_EXT_platform_xcb = _glewSearchExtension("EGL_EXT_platform_xcb", extStart, extEnd);
+#endif /* EGL_EXT_platform_xcb */
+#ifdef EGL_EXT_present_opaque
+ EGLEW_EXT_present_opaque = _glewSearchExtension("EGL_EXT_present_opaque", extStart, extEnd);
+#endif /* EGL_EXT_present_opaque */
+#ifdef EGL_EXT_protected_content
+ EGLEW_EXT_protected_content = _glewSearchExtension("EGL_EXT_protected_content", extStart, extEnd);
+#endif /* EGL_EXT_protected_content */
+#ifdef EGL_EXT_protected_surface
+ EGLEW_EXT_protected_surface = _glewSearchExtension("EGL_EXT_protected_surface", extStart, extEnd);
+#endif /* EGL_EXT_protected_surface */
+#ifdef EGL_EXT_stream_consumer_egloutput
+ EGLEW_EXT_stream_consumer_egloutput = _glewSearchExtension("EGL_EXT_stream_consumer_egloutput", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_stream_consumer_egloutput) EGLEW_EXT_stream_consumer_egloutput = !_glewInit_EGL_EXT_stream_consumer_egloutput();
+#endif /* EGL_EXT_stream_consumer_egloutput */
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ EGLEW_EXT_surface_CTA861_3_metadata = _glewSearchExtension("EGL_EXT_surface_CTA861_3_metadata", extStart, extEnd);
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ EGLEW_EXT_surface_SMPTE2086_metadata = _glewSearchExtension("EGL_EXT_surface_SMPTE2086_metadata", extStart, extEnd);
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+#ifdef EGL_EXT_surface_compression
+ EGLEW_EXT_surface_compression = _glewSearchExtension("EGL_EXT_surface_compression", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_surface_compression) EGLEW_EXT_surface_compression = !_glewInit_EGL_EXT_surface_compression();
+#endif /* EGL_EXT_surface_compression */
+#ifdef EGL_EXT_swap_buffers_with_damage
+ EGLEW_EXT_swap_buffers_with_damage = _glewSearchExtension("EGL_EXT_swap_buffers_with_damage", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_swap_buffers_with_damage) EGLEW_EXT_swap_buffers_with_damage = !_glewInit_EGL_EXT_swap_buffers_with_damage();
+#endif /* EGL_EXT_swap_buffers_with_damage */
+#ifdef EGL_EXT_sync_reuse
+ EGLEW_EXT_sync_reuse = _glewSearchExtension("EGL_EXT_sync_reuse", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_sync_reuse) EGLEW_EXT_sync_reuse = !_glewInit_EGL_EXT_sync_reuse();
+#endif /* EGL_EXT_sync_reuse */
+#ifdef EGL_EXT_yuv_surface
+ EGLEW_EXT_yuv_surface = _glewSearchExtension("EGL_EXT_yuv_surface", extStart, extEnd);
+#endif /* EGL_EXT_yuv_surface */
+#ifdef EGL_HI_clientpixmap
+ EGLEW_HI_clientpixmap = _glewSearchExtension("EGL_HI_clientpixmap", extStart, extEnd);
+ if (glewExperimental || EGLEW_HI_clientpixmap) EGLEW_HI_clientpixmap = !_glewInit_EGL_HI_clientpixmap();
+#endif /* EGL_HI_clientpixmap */
+#ifdef EGL_HI_colorformats
+ EGLEW_HI_colorformats = _glewSearchExtension("EGL_HI_colorformats", extStart, extEnd);
+#endif /* EGL_HI_colorformats */
+#ifdef EGL_IMG_context_priority
+ EGLEW_IMG_context_priority = _glewSearchExtension("EGL_IMG_context_priority", extStart, extEnd);
+#endif /* EGL_IMG_context_priority */
+#ifdef EGL_IMG_image_plane_attribs
+ EGLEW_IMG_image_plane_attribs = _glewSearchExtension("EGL_IMG_image_plane_attribs", extStart, extEnd);
+#endif /* EGL_IMG_image_plane_attribs */
+#ifdef EGL_KHR_cl_event
+ EGLEW_KHR_cl_event = _glewSearchExtension("EGL_KHR_cl_event", extStart, extEnd);
+#endif /* EGL_KHR_cl_event */
+#ifdef EGL_KHR_cl_event2
+ EGLEW_KHR_cl_event2 = _glewSearchExtension("EGL_KHR_cl_event2", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_cl_event2) EGLEW_KHR_cl_event2 = !_glewInit_EGL_KHR_cl_event2();
+#endif /* EGL_KHR_cl_event2 */
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ EGLEW_KHR_client_get_all_proc_addresses = _glewSearchExtension("EGL_KHR_client_get_all_proc_addresses", extStart, extEnd);
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+#ifdef EGL_KHR_config_attribs
+ EGLEW_KHR_config_attribs = _glewSearchExtension("EGL_KHR_config_attribs", extStart, extEnd);
+#endif /* EGL_KHR_config_attribs */
+#ifdef EGL_KHR_context_flush_control
+ EGLEW_KHR_context_flush_control = _glewSearchExtension("EGL_KHR_context_flush_control", extStart, extEnd);
+#endif /* EGL_KHR_context_flush_control */
+#ifdef EGL_KHR_create_context
+ EGLEW_KHR_create_context = _glewSearchExtension("EGL_KHR_create_context", extStart, extEnd);
+#endif /* EGL_KHR_create_context */
+#ifdef EGL_KHR_create_context_no_error
+ EGLEW_KHR_create_context_no_error = _glewSearchExtension("EGL_KHR_create_context_no_error", extStart, extEnd);
+#endif /* EGL_KHR_create_context_no_error */
+#ifdef EGL_KHR_debug
+ EGLEW_KHR_debug = _glewSearchExtension("EGL_KHR_debug", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_debug) EGLEW_KHR_debug = !_glewInit_EGL_KHR_debug();
+#endif /* EGL_KHR_debug */
+#ifdef EGL_KHR_display_reference
+ EGLEW_KHR_display_reference = _glewSearchExtension("EGL_KHR_display_reference", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_display_reference) EGLEW_KHR_display_reference = !_glewInit_EGL_KHR_display_reference();
+#endif /* EGL_KHR_display_reference */
+#ifdef EGL_KHR_fence_sync
+ EGLEW_KHR_fence_sync = _glewSearchExtension("EGL_KHR_fence_sync", extStart, extEnd);
+#endif /* EGL_KHR_fence_sync */
+#ifdef EGL_KHR_get_all_proc_addresses
+ EGLEW_KHR_get_all_proc_addresses = _glewSearchExtension("EGL_KHR_get_all_proc_addresses", extStart, extEnd);
+#endif /* EGL_KHR_get_all_proc_addresses */
+#ifdef EGL_KHR_gl_colorspace
+ EGLEW_KHR_gl_colorspace = _glewSearchExtension("EGL_KHR_gl_colorspace", extStart, extEnd);
+#endif /* EGL_KHR_gl_colorspace */
+#ifdef EGL_KHR_gl_renderbuffer_image
+ EGLEW_KHR_gl_renderbuffer_image = _glewSearchExtension("EGL_KHR_gl_renderbuffer_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_renderbuffer_image */
+#ifdef EGL_KHR_gl_texture_2D_image
+ EGLEW_KHR_gl_texture_2D_image = _glewSearchExtension("EGL_KHR_gl_texture_2D_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_2D_image */
+#ifdef EGL_KHR_gl_texture_3D_image
+ EGLEW_KHR_gl_texture_3D_image = _glewSearchExtension("EGL_KHR_gl_texture_3D_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_3D_image */
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ EGLEW_KHR_gl_texture_cubemap_image = _glewSearchExtension("EGL_KHR_gl_texture_cubemap_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+#ifdef EGL_KHR_image
+ EGLEW_KHR_image = _glewSearchExtension("EGL_KHR_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_image) EGLEW_KHR_image = !_glewInit_EGL_KHR_image();
+#endif /* EGL_KHR_image */
+#ifdef EGL_KHR_image_base
+ EGLEW_KHR_image_base = _glewSearchExtension("EGL_KHR_image_base", extStart, extEnd);
+#endif /* EGL_KHR_image_base */
+#ifdef EGL_KHR_image_pixmap
+ EGLEW_KHR_image_pixmap = _glewSearchExtension("EGL_KHR_image_pixmap", extStart, extEnd);
+#endif /* EGL_KHR_image_pixmap */
+#ifdef EGL_KHR_lock_surface
+ EGLEW_KHR_lock_surface = _glewSearchExtension("EGL_KHR_lock_surface", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_lock_surface) EGLEW_KHR_lock_surface = !_glewInit_EGL_KHR_lock_surface();
+#endif /* EGL_KHR_lock_surface */
+#ifdef EGL_KHR_lock_surface2
+ EGLEW_KHR_lock_surface2 = _glewSearchExtension("EGL_KHR_lock_surface2", extStart, extEnd);
+#endif /* EGL_KHR_lock_surface2 */
+#ifdef EGL_KHR_lock_surface3
+ EGLEW_KHR_lock_surface3 = _glewSearchExtension("EGL_KHR_lock_surface3", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_lock_surface3) EGLEW_KHR_lock_surface3 = !_glewInit_EGL_KHR_lock_surface3();
+#endif /* EGL_KHR_lock_surface3 */
+#ifdef EGL_KHR_mutable_render_buffer
+ EGLEW_KHR_mutable_render_buffer = _glewSearchExtension("EGL_KHR_mutable_render_buffer", extStart, extEnd);
+#endif /* EGL_KHR_mutable_render_buffer */
+#ifdef EGL_KHR_no_config_context
+ EGLEW_KHR_no_config_context = _glewSearchExtension("EGL_KHR_no_config_context", extStart, extEnd);
+#endif /* EGL_KHR_no_config_context */
+#ifdef EGL_KHR_partial_update
+ EGLEW_KHR_partial_update = _glewSearchExtension("EGL_KHR_partial_update", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_partial_update) EGLEW_KHR_partial_update = !_glewInit_EGL_KHR_partial_update();
+#endif /* EGL_KHR_partial_update */
+#ifdef EGL_KHR_platform_android
+ EGLEW_KHR_platform_android = _glewSearchExtension("EGL_KHR_platform_android", extStart, extEnd);
+#endif /* EGL_KHR_platform_android */
+#ifdef EGL_KHR_platform_gbm
+ EGLEW_KHR_platform_gbm = _glewSearchExtension("EGL_KHR_platform_gbm", extStart, extEnd);
+#endif /* EGL_KHR_platform_gbm */
+#ifdef EGL_KHR_platform_wayland
+ EGLEW_KHR_platform_wayland = _glewSearchExtension("EGL_KHR_platform_wayland", extStart, extEnd);
+#endif /* EGL_KHR_platform_wayland */
+#ifdef EGL_KHR_platform_x11
+ EGLEW_KHR_platform_x11 = _glewSearchExtension("EGL_KHR_platform_x11", extStart, extEnd);
+#endif /* EGL_KHR_platform_x11 */
+#ifdef EGL_KHR_reusable_sync
+ EGLEW_KHR_reusable_sync = _glewSearchExtension("EGL_KHR_reusable_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_reusable_sync) EGLEW_KHR_reusable_sync = !_glewInit_EGL_KHR_reusable_sync();
+#endif /* EGL_KHR_reusable_sync */
+#ifdef EGL_KHR_stream
+ EGLEW_KHR_stream = _glewSearchExtension("EGL_KHR_stream", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream) EGLEW_KHR_stream = !_glewInit_EGL_KHR_stream();
+#endif /* EGL_KHR_stream */
+#ifdef EGL_KHR_stream_attrib
+ EGLEW_KHR_stream_attrib = _glewSearchExtension("EGL_KHR_stream_attrib", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_attrib) EGLEW_KHR_stream_attrib = !_glewInit_EGL_KHR_stream_attrib();
+#endif /* EGL_KHR_stream_attrib */
+#ifdef EGL_KHR_stream_consumer_gltexture
+ EGLEW_KHR_stream_consumer_gltexture = _glewSearchExtension("EGL_KHR_stream_consumer_gltexture", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_consumer_gltexture) EGLEW_KHR_stream_consumer_gltexture = !_glewInit_EGL_KHR_stream_consumer_gltexture();
+#endif /* EGL_KHR_stream_consumer_gltexture */
+#ifdef EGL_KHR_stream_cross_process_fd
+ EGLEW_KHR_stream_cross_process_fd = _glewSearchExtension("EGL_KHR_stream_cross_process_fd", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_cross_process_fd) EGLEW_KHR_stream_cross_process_fd = !_glewInit_EGL_KHR_stream_cross_process_fd();
+#endif /* EGL_KHR_stream_cross_process_fd */
+#ifdef EGL_KHR_stream_fifo
+ EGLEW_KHR_stream_fifo = _glewSearchExtension("EGL_KHR_stream_fifo", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_fifo) EGLEW_KHR_stream_fifo = !_glewInit_EGL_KHR_stream_fifo();
+#endif /* EGL_KHR_stream_fifo */
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ EGLEW_KHR_stream_producer_aldatalocator = _glewSearchExtension("EGL_KHR_stream_producer_aldatalocator", extStart, extEnd);
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+#ifdef EGL_KHR_stream_producer_eglsurface
+ EGLEW_KHR_stream_producer_eglsurface = _glewSearchExtension("EGL_KHR_stream_producer_eglsurface", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_producer_eglsurface) EGLEW_KHR_stream_producer_eglsurface = !_glewInit_EGL_KHR_stream_producer_eglsurface();
+#endif /* EGL_KHR_stream_producer_eglsurface */
+#ifdef EGL_KHR_surfaceless_context
+ EGLEW_KHR_surfaceless_context = _glewSearchExtension("EGL_KHR_surfaceless_context", extStart, extEnd);
+#endif /* EGL_KHR_surfaceless_context */
+#ifdef EGL_KHR_swap_buffers_with_damage
+ EGLEW_KHR_swap_buffers_with_damage = _glewSearchExtension("EGL_KHR_swap_buffers_with_damage", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_swap_buffers_with_damage) EGLEW_KHR_swap_buffers_with_damage = !_glewInit_EGL_KHR_swap_buffers_with_damage();
+#endif /* EGL_KHR_swap_buffers_with_damage */
+#ifdef EGL_KHR_vg_parent_image
+ EGLEW_KHR_vg_parent_image = _glewSearchExtension("EGL_KHR_vg_parent_image", extStart, extEnd);
+#endif /* EGL_KHR_vg_parent_image */
+#ifdef EGL_KHR_wait_sync
+ EGLEW_KHR_wait_sync = _glewSearchExtension("EGL_KHR_wait_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_wait_sync) EGLEW_KHR_wait_sync = !_glewInit_EGL_KHR_wait_sync();
+#endif /* EGL_KHR_wait_sync */
+#ifdef EGL_MESA_drm_image
+ EGLEW_MESA_drm_image = _glewSearchExtension("EGL_MESA_drm_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_drm_image) EGLEW_MESA_drm_image = !_glewInit_EGL_MESA_drm_image();
+#endif /* EGL_MESA_drm_image */
+#ifdef EGL_MESA_image_dma_buf_export
+ EGLEW_MESA_image_dma_buf_export = _glewSearchExtension("EGL_MESA_image_dma_buf_export", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_image_dma_buf_export) EGLEW_MESA_image_dma_buf_export = !_glewInit_EGL_MESA_image_dma_buf_export();
+#endif /* EGL_MESA_image_dma_buf_export */
+#ifdef EGL_MESA_platform_gbm
+ EGLEW_MESA_platform_gbm = _glewSearchExtension("EGL_MESA_platform_gbm", extStart, extEnd);
+#endif /* EGL_MESA_platform_gbm */
+#ifdef EGL_MESA_platform_surfaceless
+ EGLEW_MESA_platform_surfaceless = _glewSearchExtension("EGL_MESA_platform_surfaceless", extStart, extEnd);
+#endif /* EGL_MESA_platform_surfaceless */
+#ifdef EGL_MESA_query_driver
+ EGLEW_MESA_query_driver = _glewSearchExtension("EGL_MESA_query_driver", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_query_driver) EGLEW_MESA_query_driver = !_glewInit_EGL_MESA_query_driver();
+#endif /* EGL_MESA_query_driver */
+#ifdef EGL_NOK_swap_region
+ EGLEW_NOK_swap_region = _glewSearchExtension("EGL_NOK_swap_region", extStart, extEnd);
+ if (glewExperimental || EGLEW_NOK_swap_region) EGLEW_NOK_swap_region = !_glewInit_EGL_NOK_swap_region();
+#endif /* EGL_NOK_swap_region */
+#ifdef EGL_NOK_swap_region2
+ EGLEW_NOK_swap_region2 = _glewSearchExtension("EGL_NOK_swap_region2", extStart, extEnd);
+ if (glewExperimental || EGLEW_NOK_swap_region2) EGLEW_NOK_swap_region2 = !_glewInit_EGL_NOK_swap_region2();
+#endif /* EGL_NOK_swap_region2 */
+#ifdef EGL_NOK_texture_from_pixmap
+ EGLEW_NOK_texture_from_pixmap = _glewSearchExtension("EGL_NOK_texture_from_pixmap", extStart, extEnd);
+#endif /* EGL_NOK_texture_from_pixmap */
+#ifdef EGL_NV_3dvision_surface
+ EGLEW_NV_3dvision_surface = _glewSearchExtension("EGL_NV_3dvision_surface", extStart, extEnd);
+#endif /* EGL_NV_3dvision_surface */
+#ifdef EGL_NV_context_priority_realtime
+ EGLEW_NV_context_priority_realtime = _glewSearchExtension("EGL_NV_context_priority_realtime", extStart, extEnd);
+#endif /* EGL_NV_context_priority_realtime */
+#ifdef EGL_NV_coverage_sample
+ EGLEW_NV_coverage_sample = _glewSearchExtension("EGL_NV_coverage_sample", extStart, extEnd);
+#endif /* EGL_NV_coverage_sample */
+#ifdef EGL_NV_coverage_sample_resolve
+ EGLEW_NV_coverage_sample_resolve = _glewSearchExtension("EGL_NV_coverage_sample_resolve", extStart, extEnd);
+#endif /* EGL_NV_coverage_sample_resolve */
+#ifdef EGL_NV_cuda_event
+ EGLEW_NV_cuda_event = _glewSearchExtension("EGL_NV_cuda_event", extStart, extEnd);
+#endif /* EGL_NV_cuda_event */
+#ifdef EGL_NV_depth_nonlinear
+ EGLEW_NV_depth_nonlinear = _glewSearchExtension("EGL_NV_depth_nonlinear", extStart, extEnd);
+#endif /* EGL_NV_depth_nonlinear */
+#ifdef EGL_NV_device_cuda
+ EGLEW_NV_device_cuda = _glewSearchExtension("EGL_NV_device_cuda", extStart, extEnd);
+#endif /* EGL_NV_device_cuda */
+#ifdef EGL_NV_native_query
+ EGLEW_NV_native_query = _glewSearchExtension("EGL_NV_native_query", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_native_query) EGLEW_NV_native_query = !_glewInit_EGL_NV_native_query();
+#endif /* EGL_NV_native_query */
+#ifdef EGL_NV_post_convert_rounding
+ EGLEW_NV_post_convert_rounding = _glewSearchExtension("EGL_NV_post_convert_rounding", extStart, extEnd);
+#endif /* EGL_NV_post_convert_rounding */
+#ifdef EGL_NV_post_sub_buffer
+ EGLEW_NV_post_sub_buffer = _glewSearchExtension("EGL_NV_post_sub_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_post_sub_buffer) EGLEW_NV_post_sub_buffer = !_glewInit_EGL_NV_post_sub_buffer();
+#endif /* EGL_NV_post_sub_buffer */
+#ifdef EGL_NV_quadruple_buffer
+ EGLEW_NV_quadruple_buffer = _glewSearchExtension("EGL_NV_quadruple_buffer", extStart, extEnd);
+#endif /* EGL_NV_quadruple_buffer */
+#ifdef EGL_NV_robustness_video_memory_purge
+ EGLEW_NV_robustness_video_memory_purge = _glewSearchExtension("EGL_NV_robustness_video_memory_purge", extStart, extEnd);
+#endif /* EGL_NV_robustness_video_memory_purge */
+#ifdef EGL_NV_stream_consumer_eglimage
+ EGLEW_NV_stream_consumer_eglimage = _glewSearchExtension("EGL_NV_stream_consumer_eglimage", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_consumer_eglimage) EGLEW_NV_stream_consumer_eglimage = !_glewInit_EGL_NV_stream_consumer_eglimage();
+#endif /* EGL_NV_stream_consumer_eglimage */
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ EGLEW_NV_stream_consumer_gltexture_yuv = _glewSearchExtension("EGL_NV_stream_consumer_gltexture_yuv", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_consumer_gltexture_yuv) EGLEW_NV_stream_consumer_gltexture_yuv = !_glewInit_EGL_NV_stream_consumer_gltexture_yuv();
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+#ifdef EGL_NV_stream_cross_display
+ EGLEW_NV_stream_cross_display = _glewSearchExtension("EGL_NV_stream_cross_display", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_display */
+#ifdef EGL_NV_stream_cross_object
+ EGLEW_NV_stream_cross_object = _glewSearchExtension("EGL_NV_stream_cross_object", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_object */
+#ifdef EGL_NV_stream_cross_partition
+ EGLEW_NV_stream_cross_partition = _glewSearchExtension("EGL_NV_stream_cross_partition", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_partition */
+#ifdef EGL_NV_stream_cross_process
+ EGLEW_NV_stream_cross_process = _glewSearchExtension("EGL_NV_stream_cross_process", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_process */
+#ifdef EGL_NV_stream_cross_system
+ EGLEW_NV_stream_cross_system = _glewSearchExtension("EGL_NV_stream_cross_system", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_system */
+#ifdef EGL_NV_stream_dma
+ EGLEW_NV_stream_dma = _glewSearchExtension("EGL_NV_stream_dma", extStart, extEnd);
+#endif /* EGL_NV_stream_dma */
+#ifdef EGL_NV_stream_fifo_next
+ EGLEW_NV_stream_fifo_next = _glewSearchExtension("EGL_NV_stream_fifo_next", extStart, extEnd);
+#endif /* EGL_NV_stream_fifo_next */
+#ifdef EGL_NV_stream_fifo_synchronous
+ EGLEW_NV_stream_fifo_synchronous = _glewSearchExtension("EGL_NV_stream_fifo_synchronous", extStart, extEnd);
+#endif /* EGL_NV_stream_fifo_synchronous */
+#ifdef EGL_NV_stream_flush
+ EGLEW_NV_stream_flush = _glewSearchExtension("EGL_NV_stream_flush", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_flush) EGLEW_NV_stream_flush = !_glewInit_EGL_NV_stream_flush();
+#endif /* EGL_NV_stream_flush */
+#ifdef EGL_NV_stream_frame_limits
+ EGLEW_NV_stream_frame_limits = _glewSearchExtension("EGL_NV_stream_frame_limits", extStart, extEnd);
+#endif /* EGL_NV_stream_frame_limits */
+#ifdef EGL_NV_stream_metadata
+ EGLEW_NV_stream_metadata = _glewSearchExtension("EGL_NV_stream_metadata", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_metadata) EGLEW_NV_stream_metadata = !_glewInit_EGL_NV_stream_metadata();
+#endif /* EGL_NV_stream_metadata */
+#ifdef EGL_NV_stream_origin
+ EGLEW_NV_stream_origin = _glewSearchExtension("EGL_NV_stream_origin", extStart, extEnd);
+#endif /* EGL_NV_stream_origin */
+#ifdef EGL_NV_stream_remote
+ EGLEW_NV_stream_remote = _glewSearchExtension("EGL_NV_stream_remote", extStart, extEnd);
+#endif /* EGL_NV_stream_remote */
+#ifdef EGL_NV_stream_reset
+ EGLEW_NV_stream_reset = _glewSearchExtension("EGL_NV_stream_reset", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_reset) EGLEW_NV_stream_reset = !_glewInit_EGL_NV_stream_reset();
+#endif /* EGL_NV_stream_reset */
+#ifdef EGL_NV_stream_socket
+ EGLEW_NV_stream_socket = _glewSearchExtension("EGL_NV_stream_socket", extStart, extEnd);
+#endif /* EGL_NV_stream_socket */
+#ifdef EGL_NV_stream_socket_inet
+ EGLEW_NV_stream_socket_inet = _glewSearchExtension("EGL_NV_stream_socket_inet", extStart, extEnd);
+#endif /* EGL_NV_stream_socket_inet */
+#ifdef EGL_NV_stream_socket_unix
+ EGLEW_NV_stream_socket_unix = _glewSearchExtension("EGL_NV_stream_socket_unix", extStart, extEnd);
+#endif /* EGL_NV_stream_socket_unix */
+#ifdef EGL_NV_stream_sync
+ EGLEW_NV_stream_sync = _glewSearchExtension("EGL_NV_stream_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_sync) EGLEW_NV_stream_sync = !_glewInit_EGL_NV_stream_sync();
+#endif /* EGL_NV_stream_sync */
+#ifdef EGL_NV_sync
+ EGLEW_NV_sync = _glewSearchExtension("EGL_NV_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_sync) EGLEW_NV_sync = !_glewInit_EGL_NV_sync();
+#endif /* EGL_NV_sync */
+#ifdef EGL_NV_system_time
+ EGLEW_NV_system_time = _glewSearchExtension("EGL_NV_system_time", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_system_time) EGLEW_NV_system_time = !_glewInit_EGL_NV_system_time();
+#endif /* EGL_NV_system_time */
+#ifdef EGL_NV_triple_buffer
+ EGLEW_NV_triple_buffer = _glewSearchExtension("EGL_NV_triple_buffer", extStart, extEnd);
+#endif /* EGL_NV_triple_buffer */
+#ifdef EGL_TIZEN_image_native_buffer
+ EGLEW_TIZEN_image_native_buffer = _glewSearchExtension("EGL_TIZEN_image_native_buffer", extStart, extEnd);
+#endif /* EGL_TIZEN_image_native_buffer */
+#ifdef EGL_TIZEN_image_native_surface
+ EGLEW_TIZEN_image_native_surface = _glewSearchExtension("EGL_TIZEN_image_native_surface", extStart, extEnd);
+#endif /* EGL_TIZEN_image_native_surface */
+#ifdef EGL_WL_bind_wayland_display
+ EGLEW_WL_bind_wayland_display = _glewSearchExtension("EGL_WL_bind_wayland_display", extStart, extEnd);
+ if (glewExperimental || EGLEW_WL_bind_wayland_display) EGLEW_WL_bind_wayland_display = !_glewInit_EGL_WL_bind_wayland_display();
+#endif /* EGL_WL_bind_wayland_display */
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ EGLEW_WL_create_wayland_buffer_from_image = _glewSearchExtension("EGL_WL_create_wayland_buffer_from_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_WL_create_wayland_buffer_from_image) EGLEW_WL_create_wayland_buffer_from_image = !_glewInit_EGL_WL_create_wayland_buffer_from_image();
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+ return GLEW_OK;
+}
+
+#elif defined(_WIN32)
+
+PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL;
+
+PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD = NULL;
+PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD = NULL;
+PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD = NULL;
+PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD = NULL;
+PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD = NULL;
+PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD = NULL;
+PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD = NULL;
+PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD = NULL;
+PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD = NULL;
+
+PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL;
+PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL;
+PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL;
+PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL;
+
+PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL;
+
+PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL;
+
+PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB = NULL;
+PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB = NULL;
+
+PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB = NULL;
+PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB = NULL;
+PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB = NULL;
+PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB = NULL;
+PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB = NULL;
+
+PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB = NULL;
+PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB = NULL;
+PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB = NULL;
+
+PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB = NULL;
+PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB = NULL;
+PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB = NULL;
+
+PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT = NULL;
+PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT = NULL;
+PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT = NULL;
+PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT = NULL;
+
+PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT = NULL;
+
+PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT = NULL;
+PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT = NULL;
+
+PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT = NULL;
+PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT = NULL;
+PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT = NULL;
+PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT = NULL;
+PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT = NULL;
+
+PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT = NULL;
+PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT = NULL;
+PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT = NULL;
+
+PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT = NULL;
+PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT = NULL;
+
+PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D = NULL;
+PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D = NULL;
+
+PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D = NULL;
+PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D = NULL;
+PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D = NULL;
+PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D = NULL;
+
+PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D = NULL;
+PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D = NULL;
+PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D = NULL;
+PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D = NULL;
+PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D = NULL;
+PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D = NULL;
+PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D = NULL;
+PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D = NULL;
+PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D = NULL;
+PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D = NULL;
+PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D = NULL;
+PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D = NULL;
+
+PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D = NULL;
+PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D = NULL;
+PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D = NULL;
+PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D = NULL;
+
+PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D = NULL;
+PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D = NULL;
+PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D = NULL;
+PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D = NULL;
+
+PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D = NULL;
+PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D = NULL;
+PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D = NULL;
+PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D = NULL;
+
+PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV = NULL;
+PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV = NULL;
+PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV = NULL;
+PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV = NULL;
+PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV = NULL;
+PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV = NULL;
+PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV = NULL;
+PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV = NULL;
+
+PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV = NULL;
+
+PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV = NULL;
+
+PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV = NULL;
+PFNWGLDELETEDCNVPROC __wglewDeleteDCNV = NULL;
+PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV = NULL;
+PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV = NULL;
+PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV = NULL;
+
+PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV = NULL;
+PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV = NULL;
+PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV = NULL;
+
+PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV = NULL;
+PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV = NULL;
+PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV = NULL;
+PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV = NULL;
+PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV = NULL;
+PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV = NULL;
+
+PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV = NULL;
+PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV = NULL;
+
+PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV = NULL;
+PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV = NULL;
+PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV = NULL;
+PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV = NULL;
+PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV = NULL;
+
+PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV = NULL;
+PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV = NULL;
+PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV = NULL;
+PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV = NULL;
+PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV = NULL;
+PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV = NULL;
+
+PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML = NULL;
+PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML = NULL;
+PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML = NULL;
+PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML = NULL;
+PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML = NULL;
+PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML = NULL;
+GLboolean __WGLEW_3DFX_multisample = GL_FALSE;
+GLboolean __WGLEW_3DL_stereo_control = GL_FALSE;
+GLboolean __WGLEW_AMD_gpu_association = GL_FALSE;
+GLboolean __WGLEW_ARB_buffer_region = GL_FALSE;
+GLboolean __WGLEW_ARB_context_flush_control = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_no_error = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_profile = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_robustness = GL_FALSE;
+GLboolean __WGLEW_ARB_extensions_string = GL_FALSE;
+GLboolean __WGLEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __WGLEW_ARB_make_current_read = GL_FALSE;
+GLboolean __WGLEW_ARB_multisample = GL_FALSE;
+GLboolean __WGLEW_ARB_pbuffer = GL_FALSE;
+GLboolean __WGLEW_ARB_pixel_format = GL_FALSE;
+GLboolean __WGLEW_ARB_pixel_format_float = GL_FALSE;
+GLboolean __WGLEW_ARB_render_texture = GL_FALSE;
+GLboolean __WGLEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __WGLEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __WGLEW_ATI_pixel_format_float = GL_FALSE;
+GLboolean __WGLEW_ATI_render_texture_rectangle = GL_FALSE;
+GLboolean __WGLEW_EXT_colorspace = GL_FALSE;
+GLboolean __WGLEW_EXT_create_context_es2_profile = GL_FALSE;
+GLboolean __WGLEW_EXT_create_context_es_profile = GL_FALSE;
+GLboolean __WGLEW_EXT_depth_float = GL_FALSE;
+GLboolean __WGLEW_EXT_display_color_table = GL_FALSE;
+GLboolean __WGLEW_EXT_extensions_string = GL_FALSE;
+GLboolean __WGLEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __WGLEW_EXT_make_current_read = GL_FALSE;
+GLboolean __WGLEW_EXT_multisample = GL_FALSE;
+GLboolean __WGLEW_EXT_pbuffer = GL_FALSE;
+GLboolean __WGLEW_EXT_pixel_format = GL_FALSE;
+GLboolean __WGLEW_EXT_pixel_format_packed_float = GL_FALSE;
+GLboolean __WGLEW_EXT_swap_control = GL_FALSE;
+GLboolean __WGLEW_EXT_swap_control_tear = GL_FALSE;
+GLboolean __WGLEW_I3D_digital_video_control = GL_FALSE;
+GLboolean __WGLEW_I3D_gamma = GL_FALSE;
+GLboolean __WGLEW_I3D_genlock = GL_FALSE;
+GLboolean __WGLEW_I3D_image_buffer = GL_FALSE;
+GLboolean __WGLEW_I3D_swap_frame_lock = GL_FALSE;
+GLboolean __WGLEW_I3D_swap_frame_usage = GL_FALSE;
+GLboolean __WGLEW_NV_DX_interop = GL_FALSE;
+GLboolean __WGLEW_NV_DX_interop2 = GL_FALSE;
+GLboolean __WGLEW_NV_copy_image = GL_FALSE;
+GLboolean __WGLEW_NV_delay_before_swap = GL_FALSE;
+GLboolean __WGLEW_NV_float_buffer = GL_FALSE;
+GLboolean __WGLEW_NV_gpu_affinity = GL_FALSE;
+GLboolean __WGLEW_NV_multigpu_context = GL_FALSE;
+GLboolean __WGLEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __WGLEW_NV_present_video = GL_FALSE;
+GLboolean __WGLEW_NV_render_depth_texture = GL_FALSE;
+GLboolean __WGLEW_NV_render_texture_rectangle = GL_FALSE;
+GLboolean __WGLEW_NV_swap_group = GL_FALSE;
+GLboolean __WGLEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __WGLEW_NV_video_capture = GL_FALSE;
+GLboolean __WGLEW_NV_video_output = GL_FALSE;
+GLboolean __WGLEW_OML_sync_control = GL_FALSE;
+#ifdef WGL_3DL_stereo_control
+
+static GLboolean _glewInit_WGL_3DL_stereo_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC)glewGetProcAddress((const GLubyte*)"wglSetStereoEmitterState3DL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_3DL_stereo_control */
+
+#ifdef WGL_AMD_gpu_association
+
+static GLboolean _glewInit_WGL_AMD_gpu_association ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBlitContextFramebufferAMD = (PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)"wglBlitContextFramebufferAMD")) == NULL) || r;
+ r = ((wglCreateAssociatedContextAMD = (PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglCreateAssociatedContextAMD")) == NULL) || r;
+ r = ((wglCreateAssociatedContextAttribsAMD = (PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)"wglCreateAssociatedContextAttribsAMD")) == NULL) || r;
+ r = ((wglDeleteAssociatedContextAMD = (PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglDeleteAssociatedContextAMD")) == NULL) || r;
+ r = ((wglGetContextGPUIDAMD = (PFNWGLGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetContextGPUIDAMD")) == NULL) || r;
+ r = ((wglGetCurrentAssociatedContextAMD = (PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentAssociatedContextAMD")) == NULL) || r;
+ r = ((wglGetGPUIDsAMD = (PFNWGLGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetGPUIDsAMD")) == NULL) || r;
+ r = ((wglGetGPUInfoAMD = (PFNWGLGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetGPUInfoAMD")) == NULL) || r;
+ r = ((wglMakeAssociatedContextCurrentAMD = (PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)"wglMakeAssociatedContextCurrentAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_AMD_gpu_association */
+
+#ifdef WGL_ARB_buffer_region
+
+static GLboolean _glewInit_WGL_ARB_buffer_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateBufferRegionARB")) == NULL) || r;
+ r = ((wglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglDeleteBufferRegionARB")) == NULL) || r;
+ r = ((wglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglRestoreBufferRegionARB")) == NULL) || r;
+ r = ((wglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglSaveBufferRegionARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_buffer_region */
+
+#ifdef WGL_ARB_create_context
+
+static GLboolean _glewInit_WGL_ARB_create_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateContextAttribsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_create_context */
+
+#ifdef WGL_ARB_extensions_string
+
+static GLboolean _glewInit_WGL_ARB_extensions_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_extensions_string */
+
+#ifdef WGL_ARB_make_current_read
+
+static GLboolean _glewInit_WGL_ARB_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCARB")) == NULL) || r;
+ r = ((wglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_make_current_read */
+
+#ifdef WGL_ARB_pbuffer
+
+static GLboolean _glewInit_WGL_ARB_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferARB")) == NULL) || r;
+ r = ((wglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferARB")) == NULL) || r;
+ r = ((wglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCARB")) == NULL) || r;
+ r = ((wglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferARB")) == NULL) || r;
+ r = ((wglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_pbuffer */
+
+#ifdef WGL_ARB_pixel_format
+
+static GLboolean _glewInit_WGL_ARB_pixel_format ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatARB")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvARB")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_pixel_format */
+
+#ifdef WGL_ARB_render_texture
+
+static GLboolean _glewInit_WGL_ARB_render_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglBindTexImageARB")) == NULL) || r;
+ r = ((wglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglReleaseTexImageARB")) == NULL) || r;
+ r = ((wglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"wglSetPbufferAttribARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_render_texture */
+
+#ifdef WGL_EXT_display_color_table
+
+static GLboolean _glewInit_WGL_EXT_display_color_table ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglBindDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglCreateDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglLoadDisplayColorTableEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_display_color_table */
+
+#ifdef WGL_EXT_extensions_string
+
+static GLboolean _glewInit_WGL_EXT_extensions_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_extensions_string */
+
+#ifdef WGL_EXT_make_current_read
+
+static GLboolean _glewInit_WGL_EXT_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCEXT")) == NULL) || r;
+ r = ((wglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_make_current_read */
+
+#ifdef WGL_EXT_pbuffer
+
+static GLboolean _glewInit_WGL_EXT_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferEXT")) == NULL) || r;
+ r = ((wglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferEXT")) == NULL) || r;
+ r = ((wglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCEXT")) == NULL) || r;
+ r = ((wglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferEXT")) == NULL) || r;
+ r = ((wglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_pbuffer */
+
+#ifdef WGL_EXT_pixel_format
+
+static GLboolean _glewInit_WGL_EXT_pixel_format ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatEXT")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvEXT")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_pixel_format */
+
+#ifdef WGL_EXT_swap_control
+
+static GLboolean _glewInit_WGL_EXT_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetSwapIntervalEXT")) == NULL) || r;
+ r = ((wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglSwapIntervalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_swap_control */
+
+#ifdef WGL_I3D_digital_video_control
+
+static GLboolean _glewInit_WGL_I3D_digital_video_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetDigitalVideoParametersI3D")) == NULL) || r;
+ r = ((wglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetDigitalVideoParametersI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_digital_video_control */
+
+#ifdef WGL_I3D_gamma
+
+static GLboolean _glewInit_WGL_I3D_gamma ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableI3D")) == NULL) || r;
+ r = ((wglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableParametersI3D")) == NULL) || r;
+ r = ((wglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableI3D")) == NULL) || r;
+ r = ((wglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableParametersI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_gamma */
+
+#ifdef WGL_I3D_genlock
+
+static GLboolean _glewInit_WGL_I3D_genlock ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableGenlockI3D")) == NULL) || r;
+ r = ((wglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableGenlockI3D")) == NULL) || r;
+ r = ((wglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSampleRateI3D")) == NULL) || r;
+ r = ((wglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceDelayI3D")) == NULL) || r;
+ r = ((wglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceEdgeI3D")) == NULL) || r;
+ r = ((wglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceI3D")) == NULL) || r;
+ r = ((wglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSampleRateI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceDelayI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceEdgeI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceI3D")) == NULL) || r;
+ r = ((wglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledGenlockI3D")) == NULL) || r;
+ r = ((wglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryGenlockMaxSourceDelayI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_genlock */
+
+#ifdef WGL_I3D_image_buffer
+
+static GLboolean _glewInit_WGL_I3D_image_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglAssociateImageBufferEventsI3D")) == NULL) || r;
+ r = ((wglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglCreateImageBufferI3D")) == NULL) || r;
+ r = ((wglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglDestroyImageBufferI3D")) == NULL) || r;
+ r = ((wglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglReleaseImageBufferEventsI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_image_buffer */
+
+#ifdef WGL_I3D_swap_frame_lock
+
+static GLboolean _glewInit_WGL_I3D_swap_frame_lock ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableFrameLockI3D")) == NULL) || r;
+ r = ((wglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableFrameLockI3D")) == NULL) || r;
+ r = ((wglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledFrameLockI3D")) == NULL) || r;
+ r = ((wglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameLockMasterI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+#ifdef WGL_I3D_swap_frame_usage
+
+static GLboolean _glewInit_WGL_I3D_swap_frame_usage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglBeginFrameTrackingI3D")) == NULL) || r;
+ r = ((wglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglEndFrameTrackingI3D")) == NULL) || r;
+ r = ((wglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetFrameUsageI3D")) == NULL) || r;
+ r = ((wglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameTrackingI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+#ifdef WGL_NV_DX_interop
+
+static GLboolean _glewInit_WGL_NV_DX_interop ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDXCloseDeviceNV = (PFNWGLDXCLOSEDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglDXCloseDeviceNV")) == NULL) || r;
+ r = ((wglDXLockObjectsNV = (PFNWGLDXLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXLockObjectsNV")) == NULL) || r;
+ r = ((wglDXObjectAccessNV = (PFNWGLDXOBJECTACCESSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXObjectAccessNV")) == NULL) || r;
+ r = ((wglDXOpenDeviceNV = (PFNWGLDXOPENDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglDXOpenDeviceNV")) == NULL) || r;
+ r = ((wglDXRegisterObjectNV = (PFNWGLDXREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)"wglDXRegisterObjectNV")) == NULL) || r;
+ r = ((wglDXSetResourceShareHandleNV = (PFNWGLDXSETRESOURCESHAREHANDLENVPROC)glewGetProcAddress((const GLubyte*)"wglDXSetResourceShareHandleNV")) == NULL) || r;
+ r = ((wglDXUnlockObjectsNV = (PFNWGLDXUNLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXUnlockObjectsNV")) == NULL) || r;
+ r = ((wglDXUnregisterObjectNV = (PFNWGLDXUNREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)"wglDXUnregisterObjectNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_DX_interop */
+
+#ifdef WGL_NV_copy_image
+
+static GLboolean _glewInit_WGL_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCopyImageSubDataNV = (PFNWGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"wglCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_copy_image */
+
+#ifdef WGL_NV_delay_before_swap
+
+static GLboolean _glewInit_WGL_NV_delay_before_swap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDelayBeforeSwapNV = (PFNWGLDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)"wglDelayBeforeSwapNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_delay_before_swap */
+
+#ifdef WGL_NV_gpu_affinity
+
+static GLboolean _glewInit_WGL_NV_gpu_affinity ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateAffinityDCNV = (PFNWGLCREATEAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglCreateAffinityDCNV")) == NULL) || r;
+ r = ((wglDeleteDCNV = (PFNWGLDELETEDCNVPROC)glewGetProcAddress((const GLubyte*)"wglDeleteDCNV")) == NULL) || r;
+ r = ((wglEnumGpuDevicesNV = (PFNWGLENUMGPUDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpuDevicesNV")) == NULL) || r;
+ r = ((wglEnumGpusFromAffinityDCNV = (PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusFromAffinityDCNV")) == NULL) || r;
+ r = ((wglEnumGpusNV = (PFNWGLENUMGPUSNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_gpu_affinity */
+
+#ifdef WGL_NV_present_video
+
+static GLboolean _glewInit_WGL_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoDeviceNV = (PFNWGLBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoDeviceNV")) == NULL) || r;
+ r = ((wglEnumerateVideoDevicesNV = (PFNWGLENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumerateVideoDevicesNV")) == NULL) || r;
+ r = ((wglQueryCurrentContextNV = (PFNWGLQUERYCURRENTCONTEXTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryCurrentContextNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_present_video */
+
+#ifdef WGL_NV_swap_group
+
+static GLboolean _glewInit_WGL_NV_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindSwapBarrierNV = (PFNWGLBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"wglBindSwapBarrierNV")) == NULL) || r;
+ r = ((wglJoinSwapGroupNV = (PFNWGLJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglJoinSwapGroupNV")) == NULL) || r;
+ r = ((wglQueryFrameCountNV = (PFNWGLQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameCountNV")) == NULL) || r;
+ r = ((wglQueryMaxSwapGroupsNV = (PFNWGLQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryMaxSwapGroupsNV")) == NULL) || r;
+ r = ((wglQuerySwapGroupNV = (PFNWGLQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglQuerySwapGroupNV")) == NULL) || r;
+ r = ((wglResetFrameCountNV = (PFNWGLRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglResetFrameCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_swap_group */
+
+#ifdef WGL_NV_vertex_array_range
+
+static GLboolean _glewInit_WGL_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglAllocateMemoryNV")) == NULL) || r;
+ r = ((wglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglFreeMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_vertex_array_range */
+
+#ifdef WGL_NV_video_capture
+
+static GLboolean _glewInit_WGL_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoCaptureDeviceNV = (PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglEnumerateVideoCaptureDevicesNV = (PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumerateVideoCaptureDevicesNV")) == NULL) || r;
+ r = ((wglLockVideoCaptureDeviceNV = (PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglLockVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglQueryVideoCaptureDeviceNV = (PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglQueryVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglReleaseVideoCaptureDeviceNV = (PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoCaptureDeviceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_video_capture */
+
+#ifdef WGL_NV_video_output
+
+static GLboolean _glewInit_WGL_NV_video_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoImageNV = (PFNWGLBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoImageNV")) == NULL) || r;
+ r = ((wglGetVideoDeviceNV = (PFNWGLGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoDeviceNV")) == NULL) || r;
+ r = ((wglGetVideoInfoNV = (PFNWGLGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoInfoNV")) == NULL) || r;
+ r = ((wglReleaseVideoDeviceNV = (PFNWGLRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoDeviceNV")) == NULL) || r;
+ r = ((wglReleaseVideoImageNV = (PFNWGLRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoImageNV")) == NULL) || r;
+ r = ((wglSendPbufferToVideoNV = (PFNWGLSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"wglSendPbufferToVideoNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_video_output */
+
+#ifdef WGL_OML_sync_control
+
+static GLboolean _glewInit_WGL_OML_sync_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetMscRateOML")) == NULL) || r;
+ r = ((wglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetSyncValuesOML")) == NULL) || r;
+ r = ((wglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapBuffersMscOML")) == NULL) || r;
+ r = ((wglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapLayerBuffersMscOML")) == NULL) || r;
+ r = ((wglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForMscOML")) == NULL) || r;
+ r = ((wglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForSbcOML")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_OML_sync_control */
+
+/* ------------------------------------------------------------------------- */
+
+static PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL;
+static PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL;
+
+GLboolean GLEWAPIENTRY wglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ return GL_FALSE;
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ if (start == 0)
+ return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum GLEWAPIENTRY wglewInit ()
+{
+ GLboolean crippled;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* find wgl extension string query functions */
+ _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB");
+ _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");
+ /* query wgl extension string */
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ extStart = (const GLubyte*)"";
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+ crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL;
+#ifdef WGL_3DFX_multisample
+ WGLEW_3DFX_multisample = _glewSearchExtension("WGL_3DFX_multisample", extStart, extEnd);
+#endif /* WGL_3DFX_multisample */
+#ifdef WGL_3DL_stereo_control
+ WGLEW_3DL_stereo_control = _glewSearchExtension("WGL_3DL_stereo_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_3DL_stereo_control|| crippled) WGLEW_3DL_stereo_control= !_glewInit_WGL_3DL_stereo_control();
+#endif /* WGL_3DL_stereo_control */
+#ifdef WGL_AMD_gpu_association
+ WGLEW_AMD_gpu_association = _glewSearchExtension("WGL_AMD_gpu_association", extStart, extEnd);
+ if (glewExperimental || WGLEW_AMD_gpu_association|| crippled) WGLEW_AMD_gpu_association= !_glewInit_WGL_AMD_gpu_association();
+#endif /* WGL_AMD_gpu_association */
+#ifdef WGL_ARB_buffer_region
+ WGLEW_ARB_buffer_region = _glewSearchExtension("WGL_ARB_buffer_region", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_buffer_region|| crippled) WGLEW_ARB_buffer_region= !_glewInit_WGL_ARB_buffer_region();
+#endif /* WGL_ARB_buffer_region */
+#ifdef WGL_ARB_context_flush_control
+ WGLEW_ARB_context_flush_control = _glewSearchExtension("WGL_ARB_context_flush_control", extStart, extEnd);
+#endif /* WGL_ARB_context_flush_control */
+#ifdef WGL_ARB_create_context
+ WGLEW_ARB_create_context = _glewSearchExtension("WGL_ARB_create_context", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_create_context|| crippled) WGLEW_ARB_create_context= !_glewInit_WGL_ARB_create_context();
+#endif /* WGL_ARB_create_context */
+#ifdef WGL_ARB_create_context_no_error
+ WGLEW_ARB_create_context_no_error = _glewSearchExtension("WGL_ARB_create_context_no_error", extStart, extEnd);
+#endif /* WGL_ARB_create_context_no_error */
+#ifdef WGL_ARB_create_context_profile
+ WGLEW_ARB_create_context_profile = _glewSearchExtension("WGL_ARB_create_context_profile", extStart, extEnd);
+#endif /* WGL_ARB_create_context_profile */
+#ifdef WGL_ARB_create_context_robustness
+ WGLEW_ARB_create_context_robustness = _glewSearchExtension("WGL_ARB_create_context_robustness", extStart, extEnd);
+#endif /* WGL_ARB_create_context_robustness */
+#ifdef WGL_ARB_extensions_string
+ WGLEW_ARB_extensions_string = _glewSearchExtension("WGL_ARB_extensions_string", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_extensions_string|| crippled) WGLEW_ARB_extensions_string= !_glewInit_WGL_ARB_extensions_string();
+#endif /* WGL_ARB_extensions_string */
+#ifdef WGL_ARB_framebuffer_sRGB
+ WGLEW_ARB_framebuffer_sRGB = _glewSearchExtension("WGL_ARB_framebuffer_sRGB", extStart, extEnd);
+#endif /* WGL_ARB_framebuffer_sRGB */
+#ifdef WGL_ARB_make_current_read
+ WGLEW_ARB_make_current_read = _glewSearchExtension("WGL_ARB_make_current_read", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_make_current_read|| crippled) WGLEW_ARB_make_current_read= !_glewInit_WGL_ARB_make_current_read();
+#endif /* WGL_ARB_make_current_read */
+#ifdef WGL_ARB_multisample
+ WGLEW_ARB_multisample = _glewSearchExtension("WGL_ARB_multisample", extStart, extEnd);
+#endif /* WGL_ARB_multisample */
+#ifdef WGL_ARB_pbuffer
+ WGLEW_ARB_pbuffer = _glewSearchExtension("WGL_ARB_pbuffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_pbuffer|| crippled) WGLEW_ARB_pbuffer= !_glewInit_WGL_ARB_pbuffer();
+#endif /* WGL_ARB_pbuffer */
+#ifdef WGL_ARB_pixel_format
+ WGLEW_ARB_pixel_format = _glewSearchExtension("WGL_ARB_pixel_format", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_pixel_format|| crippled) WGLEW_ARB_pixel_format= !_glewInit_WGL_ARB_pixel_format();
+#endif /* WGL_ARB_pixel_format */
+#ifdef WGL_ARB_pixel_format_float
+ WGLEW_ARB_pixel_format_float = _glewSearchExtension("WGL_ARB_pixel_format_float", extStart, extEnd);
+#endif /* WGL_ARB_pixel_format_float */
+#ifdef WGL_ARB_render_texture
+ WGLEW_ARB_render_texture = _glewSearchExtension("WGL_ARB_render_texture", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_render_texture|| crippled) WGLEW_ARB_render_texture= !_glewInit_WGL_ARB_render_texture();
+#endif /* WGL_ARB_render_texture */
+#ifdef WGL_ARB_robustness_application_isolation
+ WGLEW_ARB_robustness_application_isolation = _glewSearchExtension("WGL_ARB_robustness_application_isolation", extStart, extEnd);
+#endif /* WGL_ARB_robustness_application_isolation */
+#ifdef WGL_ARB_robustness_share_group_isolation
+ WGLEW_ARB_robustness_share_group_isolation = _glewSearchExtension("WGL_ARB_robustness_share_group_isolation", extStart, extEnd);
+#endif /* WGL_ARB_robustness_share_group_isolation */
+#ifdef WGL_ATI_pixel_format_float
+ WGLEW_ATI_pixel_format_float = _glewSearchExtension("WGL_ATI_pixel_format_float", extStart, extEnd);
+#endif /* WGL_ATI_pixel_format_float */
+#ifdef WGL_ATI_render_texture_rectangle
+ WGLEW_ATI_render_texture_rectangle = _glewSearchExtension("WGL_ATI_render_texture_rectangle", extStart, extEnd);
+#endif /* WGL_ATI_render_texture_rectangle */
+#ifdef WGL_EXT_colorspace
+ WGLEW_EXT_colorspace = _glewSearchExtension("WGL_EXT_colorspace", extStart, extEnd);
+#endif /* WGL_EXT_colorspace */
+#ifdef WGL_EXT_create_context_es2_profile
+ WGLEW_EXT_create_context_es2_profile = _glewSearchExtension("WGL_EXT_create_context_es2_profile", extStart, extEnd);
+#endif /* WGL_EXT_create_context_es2_profile */
+#ifdef WGL_EXT_create_context_es_profile
+ WGLEW_EXT_create_context_es_profile = _glewSearchExtension("WGL_EXT_create_context_es_profile", extStart, extEnd);
+#endif /* WGL_EXT_create_context_es_profile */
+#ifdef WGL_EXT_depth_float
+ WGLEW_EXT_depth_float = _glewSearchExtension("WGL_EXT_depth_float", extStart, extEnd);
+#endif /* WGL_EXT_depth_float */
+#ifdef WGL_EXT_display_color_table
+ WGLEW_EXT_display_color_table = _glewSearchExtension("WGL_EXT_display_color_table", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_display_color_table|| crippled) WGLEW_EXT_display_color_table= !_glewInit_WGL_EXT_display_color_table();
+#endif /* WGL_EXT_display_color_table */
+#ifdef WGL_EXT_extensions_string
+ WGLEW_EXT_extensions_string = _glewSearchExtension("WGL_EXT_extensions_string", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_extensions_string|| crippled) WGLEW_EXT_extensions_string= !_glewInit_WGL_EXT_extensions_string();
+#endif /* WGL_EXT_extensions_string */
+#ifdef WGL_EXT_framebuffer_sRGB
+ WGLEW_EXT_framebuffer_sRGB = _glewSearchExtension("WGL_EXT_framebuffer_sRGB", extStart, extEnd);
+#endif /* WGL_EXT_framebuffer_sRGB */
+#ifdef WGL_EXT_make_current_read
+ WGLEW_EXT_make_current_read = _glewSearchExtension("WGL_EXT_make_current_read", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_make_current_read|| crippled) WGLEW_EXT_make_current_read= !_glewInit_WGL_EXT_make_current_read();
+#endif /* WGL_EXT_make_current_read */
+#ifdef WGL_EXT_multisample
+ WGLEW_EXT_multisample = _glewSearchExtension("WGL_EXT_multisample", extStart, extEnd);
+#endif /* WGL_EXT_multisample */
+#ifdef WGL_EXT_pbuffer
+ WGLEW_EXT_pbuffer = _glewSearchExtension("WGL_EXT_pbuffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_pbuffer|| crippled) WGLEW_EXT_pbuffer= !_glewInit_WGL_EXT_pbuffer();
+#endif /* WGL_EXT_pbuffer */
+#ifdef WGL_EXT_pixel_format
+ WGLEW_EXT_pixel_format = _glewSearchExtension("WGL_EXT_pixel_format", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_pixel_format|| crippled) WGLEW_EXT_pixel_format= !_glewInit_WGL_EXT_pixel_format();
+#endif /* WGL_EXT_pixel_format */
+#ifdef WGL_EXT_pixel_format_packed_float
+ WGLEW_EXT_pixel_format_packed_float = _glewSearchExtension("WGL_EXT_pixel_format_packed_float", extStart, extEnd);
+#endif /* WGL_EXT_pixel_format_packed_float */
+#ifdef WGL_EXT_swap_control
+ WGLEW_EXT_swap_control = _glewSearchExtension("WGL_EXT_swap_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_swap_control|| crippled) WGLEW_EXT_swap_control= !_glewInit_WGL_EXT_swap_control();
+#endif /* WGL_EXT_swap_control */
+#ifdef WGL_EXT_swap_control_tear
+ WGLEW_EXT_swap_control_tear = _glewSearchExtension("WGL_EXT_swap_control_tear", extStart, extEnd);
+#endif /* WGL_EXT_swap_control_tear */
+#ifdef WGL_I3D_digital_video_control
+ WGLEW_I3D_digital_video_control = _glewSearchExtension("WGL_I3D_digital_video_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_digital_video_control|| crippled) WGLEW_I3D_digital_video_control= !_glewInit_WGL_I3D_digital_video_control();
+#endif /* WGL_I3D_digital_video_control */
+#ifdef WGL_I3D_gamma
+ WGLEW_I3D_gamma = _glewSearchExtension("WGL_I3D_gamma", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_gamma|| crippled) WGLEW_I3D_gamma= !_glewInit_WGL_I3D_gamma();
+#endif /* WGL_I3D_gamma */
+#ifdef WGL_I3D_genlock
+ WGLEW_I3D_genlock = _glewSearchExtension("WGL_I3D_genlock", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_genlock|| crippled) WGLEW_I3D_genlock= !_glewInit_WGL_I3D_genlock();
+#endif /* WGL_I3D_genlock */
+#ifdef WGL_I3D_image_buffer
+ WGLEW_I3D_image_buffer = _glewSearchExtension("WGL_I3D_image_buffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_image_buffer|| crippled) WGLEW_I3D_image_buffer= !_glewInit_WGL_I3D_image_buffer();
+#endif /* WGL_I3D_image_buffer */
+#ifdef WGL_I3D_swap_frame_lock
+ WGLEW_I3D_swap_frame_lock = _glewSearchExtension("WGL_I3D_swap_frame_lock", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_swap_frame_lock|| crippled) WGLEW_I3D_swap_frame_lock= !_glewInit_WGL_I3D_swap_frame_lock();
+#endif /* WGL_I3D_swap_frame_lock */
+#ifdef WGL_I3D_swap_frame_usage
+ WGLEW_I3D_swap_frame_usage = _glewSearchExtension("WGL_I3D_swap_frame_usage", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_swap_frame_usage|| crippled) WGLEW_I3D_swap_frame_usage= !_glewInit_WGL_I3D_swap_frame_usage();
+#endif /* WGL_I3D_swap_frame_usage */
+#ifdef WGL_NV_DX_interop
+ WGLEW_NV_DX_interop = _glewSearchExtension("WGL_NV_DX_interop", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_DX_interop|| crippled) WGLEW_NV_DX_interop= !_glewInit_WGL_NV_DX_interop();
+#endif /* WGL_NV_DX_interop */
+#ifdef WGL_NV_DX_interop2
+ WGLEW_NV_DX_interop2 = _glewSearchExtension("WGL_NV_DX_interop2", extStart, extEnd);
+#endif /* WGL_NV_DX_interop2 */
+#ifdef WGL_NV_copy_image
+ WGLEW_NV_copy_image = _glewSearchExtension("WGL_NV_copy_image", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_copy_image|| crippled) WGLEW_NV_copy_image= !_glewInit_WGL_NV_copy_image();
+#endif /* WGL_NV_copy_image */
+#ifdef WGL_NV_delay_before_swap
+ WGLEW_NV_delay_before_swap = _glewSearchExtension("WGL_NV_delay_before_swap", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_delay_before_swap|| crippled) WGLEW_NV_delay_before_swap= !_glewInit_WGL_NV_delay_before_swap();
+#endif /* WGL_NV_delay_before_swap */
+#ifdef WGL_NV_float_buffer
+ WGLEW_NV_float_buffer = _glewSearchExtension("WGL_NV_float_buffer", extStart, extEnd);
+#endif /* WGL_NV_float_buffer */
+#ifdef WGL_NV_gpu_affinity
+ WGLEW_NV_gpu_affinity = _glewSearchExtension("WGL_NV_gpu_affinity", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_gpu_affinity|| crippled) WGLEW_NV_gpu_affinity= !_glewInit_WGL_NV_gpu_affinity();
+#endif /* WGL_NV_gpu_affinity */
+#ifdef WGL_NV_multigpu_context
+ WGLEW_NV_multigpu_context = _glewSearchExtension("WGL_NV_multigpu_context", extStart, extEnd);
+#endif /* WGL_NV_multigpu_context */
+#ifdef WGL_NV_multisample_coverage
+ WGLEW_NV_multisample_coverage = _glewSearchExtension("WGL_NV_multisample_coverage", extStart, extEnd);
+#endif /* WGL_NV_multisample_coverage */
+#ifdef WGL_NV_present_video
+ WGLEW_NV_present_video = _glewSearchExtension("WGL_NV_present_video", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_present_video|| crippled) WGLEW_NV_present_video= !_glewInit_WGL_NV_present_video();
+#endif /* WGL_NV_present_video */
+#ifdef WGL_NV_render_depth_texture
+ WGLEW_NV_render_depth_texture = _glewSearchExtension("WGL_NV_render_depth_texture", extStart, extEnd);
+#endif /* WGL_NV_render_depth_texture */
+#ifdef WGL_NV_render_texture_rectangle
+ WGLEW_NV_render_texture_rectangle = _glewSearchExtension("WGL_NV_render_texture_rectangle", extStart, extEnd);
+#endif /* WGL_NV_render_texture_rectangle */
+#ifdef WGL_NV_swap_group
+ WGLEW_NV_swap_group = _glewSearchExtension("WGL_NV_swap_group", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_swap_group|| crippled) WGLEW_NV_swap_group= !_glewInit_WGL_NV_swap_group();
+#endif /* WGL_NV_swap_group */
+#ifdef WGL_NV_vertex_array_range
+ WGLEW_NV_vertex_array_range = _glewSearchExtension("WGL_NV_vertex_array_range", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_vertex_array_range|| crippled) WGLEW_NV_vertex_array_range= !_glewInit_WGL_NV_vertex_array_range();
+#endif /* WGL_NV_vertex_array_range */
+#ifdef WGL_NV_video_capture
+ WGLEW_NV_video_capture = _glewSearchExtension("WGL_NV_video_capture", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_video_capture|| crippled) WGLEW_NV_video_capture= !_glewInit_WGL_NV_video_capture();
+#endif /* WGL_NV_video_capture */
+#ifdef WGL_NV_video_output
+ WGLEW_NV_video_output = _glewSearchExtension("WGL_NV_video_output", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_video_output|| crippled) WGLEW_NV_video_output= !_glewInit_WGL_NV_video_output();
+#endif /* WGL_NV_video_output */
+#ifdef WGL_OML_sync_control
+ WGLEW_OML_sync_control = _glewSearchExtension("WGL_OML_sync_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_OML_sync_control|| crippled) WGLEW_OML_sync_control= !_glewInit_WGL_OML_sync_control();
+#endif /* WGL_OML_sync_control */
+
+ return GLEW_OK;
+}
+
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+
+PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay = NULL;
+
+PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig = NULL;
+PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext = NULL;
+PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer = NULL;
+PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap = NULL;
+PFNGLXCREATEWINDOWPROC __glewXCreateWindow = NULL;
+PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer = NULL;
+PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap = NULL;
+PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow = NULL;
+PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable = NULL;
+PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib = NULL;
+PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs = NULL;
+PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent = NULL;
+PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig = NULL;
+PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent = NULL;
+PFNGLXQUERYCONTEXTPROC __glewXQueryContext = NULL;
+PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable = NULL;
+PFNGLXSELECTEVENTPROC __glewXSelectEvent = NULL;
+
+PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD = NULL;
+PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD = NULL;
+PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD = NULL;
+PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD = NULL;
+PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD = NULL;
+PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD = NULL;
+PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD = NULL;
+PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD = NULL;
+PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD = NULL;
+
+PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB = NULL;
+
+PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI = NULL;
+PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI = NULL;
+PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI = NULL;
+
+PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT = NULL;
+PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT = NULL;
+PFNGLXGETCURRENTDISPLAYEXTPROC __glewXGetCurrentDisplayEXT = NULL;
+PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT = NULL;
+PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT = NULL;
+
+PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT = NULL;
+
+PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT = NULL;
+PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT = NULL;
+
+PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA = NULL;
+
+PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA = NULL;
+
+PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA = NULL;
+
+PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA = NULL;
+PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA = NULL;
+PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA = NULL;
+PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA = NULL;
+
+PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA = NULL;
+
+PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA = NULL;
+
+PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA = NULL;
+PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA = NULL;
+
+PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV = NULL;
+PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV = NULL;
+
+PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV = NULL;
+
+PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV = NULL;
+
+PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV = NULL;
+PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV = NULL;
+
+PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV = NULL;
+PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV = NULL;
+PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV = NULL;
+PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV = NULL;
+PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV = NULL;
+PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV = NULL;
+
+PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV = NULL;
+PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV = NULL;
+
+PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV = NULL;
+PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV = NULL;
+PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV = NULL;
+PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV = NULL;
+PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV = NULL;
+
+PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV = NULL;
+PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV = NULL;
+PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV = NULL;
+PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV = NULL;
+PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV = NULL;
+PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV = NULL;
+
+PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML = NULL;
+PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML = NULL;
+PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML = NULL;
+PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML = NULL;
+PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML = NULL;
+
+PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX = NULL;
+PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX = NULL;
+PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX = NULL;
+PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX = NULL;
+PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX = NULL;
+PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX = NULL;
+
+PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX = NULL;
+PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX = NULL;
+PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX = NULL;
+PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX = NULL;
+PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX = NULL;
+PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX = NULL;
+PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX = NULL;
+PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX = NULL;
+
+PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX = NULL;
+PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX = NULL;
+PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX = NULL;
+PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX = NULL;
+PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX = NULL;
+
+PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX = NULL;
+PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX = NULL;
+
+PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX = NULL;
+
+PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX = NULL;
+PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX = NULL;
+PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX = NULL;
+PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX = NULL;
+PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX = NULL;
+
+PFNGLXCUSHIONSGIPROC __glewXCushionSGI = NULL;
+
+PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI = NULL;
+PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI = NULL;
+
+PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI = NULL;
+
+PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI = NULL;
+PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI = NULL;
+
+PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN = NULL;
+
+PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN = NULL;
+PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN = NULL;
+
+GLboolean __GLXEW_VERSION_1_0 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_1 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_2 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_3 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_4 = GL_FALSE;
+GLboolean __GLXEW_3DFX_multisample = GL_FALSE;
+GLboolean __GLXEW_AMD_gpu_association = GL_FALSE;
+GLboolean __GLXEW_ARB_context_flush_control = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_no_error = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_profile = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_robustness = GL_FALSE;
+GLboolean __GLXEW_ARB_fbconfig_float = GL_FALSE;
+GLboolean __GLXEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLXEW_ARB_get_proc_address = GL_FALSE;
+GLboolean __GLXEW_ARB_multisample = GL_FALSE;
+GLboolean __GLXEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __GLXEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __GLXEW_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean __GLXEW_ATI_pixel_format_float = GL_FALSE;
+GLboolean __GLXEW_ATI_render_texture = GL_FALSE;
+GLboolean __GLXEW_EXT_buffer_age = GL_FALSE;
+GLboolean __GLXEW_EXT_context_priority = GL_FALSE;
+GLboolean __GLXEW_EXT_create_context_es2_profile = GL_FALSE;
+GLboolean __GLXEW_EXT_create_context_es_profile = GL_FALSE;
+GLboolean __GLXEW_EXT_fbconfig_packed_float = GL_FALSE;
+GLboolean __GLXEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLXEW_EXT_get_drawable_type = GL_FALSE;
+GLboolean __GLXEW_EXT_import_context = GL_FALSE;
+GLboolean __GLXEW_EXT_libglvnd = GL_FALSE;
+GLboolean __GLXEW_EXT_no_config_context = GL_FALSE;
+GLboolean __GLXEW_EXT_scene_marker = GL_FALSE;
+GLboolean __GLXEW_EXT_stereo_tree = GL_FALSE;
+GLboolean __GLXEW_EXT_swap_control = GL_FALSE;
+GLboolean __GLXEW_EXT_swap_control_tear = GL_FALSE;
+GLboolean __GLXEW_EXT_texture_from_pixmap = GL_FALSE;
+GLboolean __GLXEW_EXT_visual_info = GL_FALSE;
+GLboolean __GLXEW_EXT_visual_rating = GL_FALSE;
+GLboolean __GLXEW_INTEL_swap_event = GL_FALSE;
+GLboolean __GLXEW_MESA_agp_offset = GL_FALSE;
+GLboolean __GLXEW_MESA_copy_sub_buffer = GL_FALSE;
+GLboolean __GLXEW_MESA_pixmap_colormap = GL_FALSE;
+GLboolean __GLXEW_MESA_query_renderer = GL_FALSE;
+GLboolean __GLXEW_MESA_release_buffers = GL_FALSE;
+GLboolean __GLXEW_MESA_set_3dfx_mode = GL_FALSE;
+GLboolean __GLXEW_MESA_swap_control = GL_FALSE;
+GLboolean __GLXEW_NV_copy_buffer = GL_FALSE;
+GLboolean __GLXEW_NV_copy_image = GL_FALSE;
+GLboolean __GLXEW_NV_delay_before_swap = GL_FALSE;
+GLboolean __GLXEW_NV_float_buffer = GL_FALSE;
+GLboolean __GLXEW_NV_multigpu_context = GL_FALSE;
+GLboolean __GLXEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __GLXEW_NV_present_video = GL_FALSE;
+GLboolean __GLXEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __GLXEW_NV_swap_group = GL_FALSE;
+GLboolean __GLXEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __GLXEW_NV_video_capture = GL_FALSE;
+GLboolean __GLXEW_NV_video_out = GL_FALSE;
+GLboolean __GLXEW_OML_swap_method = GL_FALSE;
+GLboolean __GLXEW_OML_sync_control = GL_FALSE;
+GLboolean __GLXEW_SGIS_blended_overlay = GL_FALSE;
+GLboolean __GLXEW_SGIS_color_range = GL_FALSE;
+GLboolean __GLXEW_SGIS_multisample = GL_FALSE;
+GLboolean __GLXEW_SGIS_shared_multisample = GL_FALSE;
+GLboolean __GLXEW_SGIX_fbconfig = GL_FALSE;
+GLboolean __GLXEW_SGIX_hyperpipe = GL_FALSE;
+GLboolean __GLXEW_SGIX_pbuffer = GL_FALSE;
+GLboolean __GLXEW_SGIX_swap_barrier = GL_FALSE;
+GLboolean __GLXEW_SGIX_swap_group = GL_FALSE;
+GLboolean __GLXEW_SGIX_video_resize = GL_FALSE;
+GLboolean __GLXEW_SGIX_visual_select_group = GL_FALSE;
+GLboolean __GLXEW_SGI_cushion = GL_FALSE;
+GLboolean __GLXEW_SGI_make_current_read = GL_FALSE;
+GLboolean __GLXEW_SGI_swap_control = GL_FALSE;
+GLboolean __GLXEW_SGI_video_sync = GL_FALSE;
+GLboolean __GLXEW_SUN_get_transparent_index = GL_FALSE;
+GLboolean __GLXEW_SUN_video_resize = GL_FALSE;
+#ifdef GLX_VERSION_1_2
+
+static GLboolean _glewInit_GLX_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentDisplay")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_VERSION_1_2 */
+
+#ifdef GLX_VERSION_1_3
+
+static GLboolean _glewInit_GLX_VERSION_1_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfig")) == NULL) || r;
+ r = ((glXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXCreateNewContext")) == NULL) || r;
+ r = ((glXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXCreatePbuffer")) == NULL) || r;
+ r = ((glXCreatePixmap = (PFNGLXCREATEPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXCreatePixmap")) == NULL) || r;
+ r = ((glXCreateWindow = (PFNGLXCREATEWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXCreateWindow")) == NULL) || r;
+ r = ((glXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPbuffer")) == NULL) || r;
+ r = ((glXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPixmap")) == NULL) || r;
+ r = ((glXDestroyWindow = (PFNGLXDESTROYWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXDestroyWindow")) == NULL) || r;
+ r = ((glXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawable")) == NULL) || r;
+ r = ((glXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttrib")) == NULL) || r;
+ r = ((glXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigs")) == NULL) || r;
+ r = ((glXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEvent")) == NULL) || r;
+ r = ((glXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfig")) == NULL) || r;
+ r = ((glXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC)glewGetProcAddress((const GLubyte*)"glXMakeContextCurrent")) == NULL) || r;
+ r = ((glXQueryContext = (PFNGLXQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContext")) == NULL) || r;
+ r = ((glXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXQueryDrawable")) == NULL) || r;
+ r = ((glXSelectEvent = (PFNGLXSELECTEVENTPROC)glewGetProcAddress((const GLubyte*)"glXSelectEvent")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_VERSION_1_3 */
+
+#ifdef GLX_AMD_gpu_association
+
+static GLboolean _glewInit_GLX_AMD_gpu_association ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBlitContextFramebufferAMD = (PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)"glXBlitContextFramebufferAMD")) == NULL) || r;
+ r = ((glXCreateAssociatedContextAMD = (PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXCreateAssociatedContextAMD")) == NULL) || r;
+ r = ((glXCreateAssociatedContextAttribsAMD = (PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)"glXCreateAssociatedContextAttribsAMD")) == NULL) || r;
+ r = ((glXDeleteAssociatedContextAMD = (PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXDeleteAssociatedContextAMD")) == NULL) || r;
+ r = ((glXGetContextGPUIDAMD = (PFNGLXGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetContextGPUIDAMD")) == NULL) || r;
+ r = ((glXGetCurrentAssociatedContextAMD = (PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentAssociatedContextAMD")) == NULL) || r;
+ r = ((glXGetGPUIDsAMD = (PFNGLXGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetGPUIDsAMD")) == NULL) || r;
+ r = ((glXGetGPUInfoAMD = (PFNGLXGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetGPUInfoAMD")) == NULL) || r;
+ r = ((glXMakeAssociatedContextCurrentAMD = (PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)"glXMakeAssociatedContextCurrentAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_AMD_gpu_association */
+
+#ifdef GLX_ARB_create_context
+
+static GLboolean _glewInit_GLX_ARB_create_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_ARB_create_context */
+
+#ifdef GLX_ATI_render_texture
+
+static GLboolean _glewInit_GLX_ATI_render_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindTexImageATI = (PFNGLXBINDTEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageATI")) == NULL) || r;
+ r = ((glXDrawableAttribATI = (PFNGLXDRAWABLEATTRIBATIPROC)glewGetProcAddress((const GLubyte*)"glXDrawableAttribATI")) == NULL) || r;
+ r = ((glXReleaseTexImageATI = (PFNGLXRELEASETEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_ATI_render_texture */
+
+#ifdef GLX_EXT_import_context
+
+static GLboolean _glewInit_GLX_EXT_import_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXFreeContextEXT")) == NULL) || r;
+ r = ((glXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC)glewGetProcAddress((const GLubyte*)"glXGetContextIDEXT")) == NULL) || r;
+ r = ((glXGetCurrentDisplayEXT = (PFNGLXGETCURRENTDISPLAYEXTPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentDisplayEXT")) == NULL) || r;
+ r = ((glXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXImportContextEXT")) == NULL) || r;
+ r = ((glXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContextInfoEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_import_context */
+
+#ifdef GLX_EXT_swap_control
+
+static GLboolean _glewInit_GLX_EXT_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_swap_control */
+
+#ifdef GLX_EXT_texture_from_pixmap
+
+static GLboolean _glewInit_GLX_EXT_texture_from_pixmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageEXT")) == NULL) || r;
+ r = ((glXReleaseTexImageEXT = (PFNGLXRELEASETEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+#ifdef GLX_MESA_agp_offset
+
+static GLboolean _glewInit_GLX_MESA_agp_offset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC)glewGetProcAddress((const GLubyte*)"glXGetAGPOffsetMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_agp_offset */
+
+#ifdef GLX_MESA_copy_sub_buffer
+
+static GLboolean _glewInit_GLX_MESA_copy_sub_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC)glewGetProcAddress((const GLubyte*)"glXCopySubBufferMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+#ifdef GLX_MESA_pixmap_colormap
+
+static GLboolean _glewInit_GLX_MESA_pixmap_colormap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+#ifdef GLX_MESA_query_renderer
+
+static GLboolean _glewInit_GLX_MESA_query_renderer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXQueryCurrentRendererIntegerMESA = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryCurrentRendererIntegerMESA")) == NULL) || r;
+ r = ((glXQueryCurrentRendererStringMESA = (PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryCurrentRendererStringMESA")) == NULL) || r;
+ r = ((glXQueryRendererIntegerMESA = (PFNGLXQUERYRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryRendererIntegerMESA")) == NULL) || r;
+ r = ((glXQueryRendererStringMESA = (PFNGLXQUERYRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryRendererStringMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_query_renderer */
+
+#ifdef GLX_MESA_release_buffers
+
+static GLboolean _glewInit_GLX_MESA_release_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glXReleaseBuffersMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_release_buffers */
+
+#ifdef GLX_MESA_set_3dfx_mode
+
+static GLboolean _glewInit_GLX_MESA_set_3dfx_mode ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC)glewGetProcAddress((const GLubyte*)"glXSet3DfxModeMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+#ifdef GLX_MESA_swap_control
+
+static GLboolean _glewInit_GLX_MESA_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetSwapIntervalMESA = (PFNGLXGETSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)"glXGetSwapIntervalMESA")) == NULL) || r;
+ r = ((glXSwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_swap_control */
+
+#ifdef GLX_NV_copy_buffer
+
+static GLboolean _glewInit_GLX_NV_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopyBufferSubDataNV = (PFNGLXCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXCopyBufferSubDataNV")) == NULL) || r;
+ r = ((glXNamedCopyBufferSubDataNV = (PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXNamedCopyBufferSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_copy_buffer */
+
+#ifdef GLX_NV_copy_image
+
+static GLboolean _glewInit_GLX_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopyImageSubDataNV = (PFNGLXCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_copy_image */
+
+#ifdef GLX_NV_delay_before_swap
+
+static GLboolean _glewInit_GLX_NV_delay_before_swap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXDelayBeforeSwapNV = (PFNGLXDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)"glXDelayBeforeSwapNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_delay_before_swap */
+
+#ifdef GLX_NV_present_video
+
+static GLboolean _glewInit_GLX_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoDeviceNV = (PFNGLXBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoDeviceNV")) == NULL) || r;
+ r = ((glXEnumerateVideoDevicesNV = (PFNGLXENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"glXEnumerateVideoDevicesNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_present_video */
+
+#ifdef GLX_NV_swap_group
+
+static GLboolean _glewInit_GLX_NV_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindSwapBarrierNV = (PFNGLXBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierNV")) == NULL) || r;
+ r = ((glXJoinSwapGroupNV = (PFNGLXJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupNV")) == NULL) || r;
+ r = ((glXQueryFrameCountNV = (PFNGLXQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryFrameCountNV")) == NULL) || r;
+ r = ((glXQueryMaxSwapGroupsNV = (PFNGLXQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapGroupsNV")) == NULL) || r;
+ r = ((glXQuerySwapGroupNV = (PFNGLXQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXQuerySwapGroupNV")) == NULL) || r;
+ r = ((glXResetFrameCountNV = (PFNGLXRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXResetFrameCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_swap_group */
+
+#ifdef GLX_NV_vertex_array_range
+
+static GLboolean _glewInit_GLX_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXAllocateMemoryNV = (PFNGLXALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXAllocateMemoryNV")) == NULL) || r;
+ r = ((glXFreeMemoryNV = (PFNGLXFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXFreeMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_vertex_array_range */
+
+#ifdef GLX_NV_video_capture
+
+static GLboolean _glewInit_GLX_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoCaptureDeviceNV = (PFNGLXBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXEnumerateVideoCaptureDevicesNV = (PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"glXEnumerateVideoCaptureDevicesNV")) == NULL) || r;
+ r = ((glXLockVideoCaptureDeviceNV = (PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXLockVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXQueryVideoCaptureDeviceNV = (PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXQueryVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXReleaseVideoCaptureDeviceNV = (PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoCaptureDeviceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_video_capture */
+
+#ifdef GLX_NV_video_out
+
+static GLboolean _glewInit_GLX_NV_video_out ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoImageNV = (PFNGLXBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoImageNV")) == NULL) || r;
+ r = ((glXGetVideoDeviceNV = (PFNGLXGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoDeviceNV")) == NULL) || r;
+ r = ((glXGetVideoInfoNV = (PFNGLXGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoInfoNV")) == NULL) || r;
+ r = ((glXReleaseVideoDeviceNV = (PFNGLXRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoDeviceNV")) == NULL) || r;
+ r = ((glXReleaseVideoImageNV = (PFNGLXRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoImageNV")) == NULL) || r;
+ r = ((glXSendPbufferToVideoNV = (PFNGLXSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"glXSendPbufferToVideoNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_video_out */
+
+#ifdef GLX_OML_sync_control
+
+static GLboolean _glewInit_GLX_OML_sync_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetMscRateOML")) == NULL) || r;
+ r = ((glXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetSyncValuesOML")) == NULL) || r;
+ r = ((glXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXSwapBuffersMscOML")) == NULL) || r;
+ r = ((glXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForMscOML")) == NULL) || r;
+ r = ((glXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForSbcOML")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_OML_sync_control */
+
+#ifdef GLX_SGIX_fbconfig
+
+static GLboolean _glewInit_GLX_SGIX_fbconfig ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfigSGIX")) == NULL) || r;
+ r = ((glXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextWithConfigSGIX")) == NULL) || r;
+ r = ((glXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapWithConfigSGIX")) == NULL) || r;
+ r = ((glXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttribSGIX")) == NULL) || r;
+ r = ((glXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigFromVisualSGIX")) == NULL) || r;
+ r = ((glXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfigSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_fbconfig */
+
+#ifdef GLX_SGIX_hyperpipe
+
+static GLboolean _glewInit_GLX_SGIX_hyperpipe ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindHyperpipeSGIX")) == NULL) || r;
+ r = ((glXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeAttribSGIX")) == NULL) || r;
+ r = ((glXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeAttribSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeBestAttribSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeNetworkSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_hyperpipe */
+
+#ifdef GLX_SGIX_pbuffer
+
+static GLboolean _glewInit_GLX_SGIX_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEventSGIX")) == NULL) || r;
+ r = ((glXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXSelectEventSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_pbuffer */
+
+#ifdef GLX_SGIX_swap_barrier
+
+static GLboolean _glewInit_GLX_SGIX_swap_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierSGIX")) == NULL) || r;
+ r = ((glXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapBarriersSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_swap_barrier */
+
+#ifdef GLX_SGIX_swap_group
+
+static GLboolean _glewInit_GLX_SGIX_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_swap_group */
+
+#ifdef GLX_SGIX_video_resize
+
+static GLboolean _glewInit_GLX_SGIX_video_resize ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindChannelToWindowSGIX")) == NULL) || r;
+ r = ((glXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSGIX")) == NULL) || r;
+ r = ((glXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSyncSGIX")) == NULL) || r;
+ r = ((glXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelDeltasSGIX")) == NULL) || r;
+ r = ((glXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelRectSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_video_resize */
+
+#ifdef GLX_SGI_cushion
+
+static GLboolean _glewInit_GLX_SGI_cushion ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCushionSGI = (PFNGLXCUSHIONSGIPROC)glewGetProcAddress((const GLubyte*)"glXCushionSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_cushion */
+
+#ifdef GLX_SGI_make_current_read
+
+static GLboolean _glewInit_GLX_SGI_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawableSGI")) == NULL) || r;
+ r = ((glXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC)glewGetProcAddress((const GLubyte*)"glXMakeCurrentReadSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_make_current_read */
+
+#ifdef GLX_SGI_swap_control
+
+static GLboolean _glewInit_GLX_SGI_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_swap_control */
+
+#ifdef GLX_SGI_video_sync
+
+static GLboolean _glewInit_GLX_SGI_video_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoSyncSGI")) == NULL) || r;
+ r = ((glXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXWaitVideoSyncSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_video_sync */
+
+#ifdef GLX_SUN_get_transparent_index
+
+static GLboolean _glewInit_GLX_SUN_get_transparent_index ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC)glewGetProcAddress((const GLubyte*)"glXGetTransparentIndexSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SUN_get_transparent_index */
+
+#ifdef GLX_SUN_video_resize
+
+static GLboolean _glewInit_GLX_SUN_video_resize ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetVideoResizeSUN = (PFNGLXGETVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoResizeSUN")) == NULL) || r;
+ r = ((glXVideoResizeSUN = (PFNGLXVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXVideoResizeSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SUN_video_resize */
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glxewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ if (glXGetCurrentDisplay == NULL) return GL_FALSE;
+ start = (const GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum glxewInit ()
+{
+ Display* display;
+ int major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* initialize core GLX 1.2 */
+ if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ /* check for a display */
+ display = glXGetCurrentDisplay();
+ if (display == NULL) return GLEW_ERROR_NO_GLX_DISPLAY;
+ /* initialize flags */
+ GLXEW_VERSION_1_0 = GL_TRUE;
+ GLXEW_VERSION_1_1 = GL_TRUE;
+ GLXEW_VERSION_1_2 = GL_TRUE;
+ GLXEW_VERSION_1_3 = GL_TRUE;
+ GLXEW_VERSION_1_4 = GL_TRUE;
+ /* query GLX version */
+ glXQueryVersion(display, &major, &minor);
+ if (major == 1 && minor <= 3)
+ {
+ switch (minor)
+ {
+ case 3:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ break;
+ case 2:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ GLXEW_VERSION_1_3 = GL_FALSE;
+ break;
+ default:
+ return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ break;
+ }
+ }
+ /* query GLX extension string */
+ extStart = 0;
+ if (glXGetCurrentDisplay != NULL)
+ extStart = (const GLubyte*)glXGetClientString(display, GLX_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+#ifdef GLX_VERSION_1_3
+ if (glewExperimental || GLXEW_VERSION_1_3) GLXEW_VERSION_1_3 = !_glewInit_GLX_VERSION_1_3();
+#endif /* GLX_VERSION_1_3 */
+#ifdef GLX_3DFX_multisample
+ GLXEW_3DFX_multisample = _glewSearchExtension("GLX_3DFX_multisample", extStart, extEnd);
+#endif /* GLX_3DFX_multisample */
+#ifdef GLX_AMD_gpu_association
+ GLXEW_AMD_gpu_association = _glewSearchExtension("GLX_AMD_gpu_association", extStart, extEnd);
+ if (glewExperimental || GLXEW_AMD_gpu_association) GLXEW_AMD_gpu_association = !_glewInit_GLX_AMD_gpu_association();
+#endif /* GLX_AMD_gpu_association */
+#ifdef GLX_ARB_context_flush_control
+ GLXEW_ARB_context_flush_control = _glewSearchExtension("GLX_ARB_context_flush_control", extStart, extEnd);
+#endif /* GLX_ARB_context_flush_control */
+#ifdef GLX_ARB_create_context
+ GLXEW_ARB_create_context = _glewSearchExtension("GLX_ARB_create_context", extStart, extEnd);
+ if (glewExperimental || GLXEW_ARB_create_context) GLXEW_ARB_create_context = !_glewInit_GLX_ARB_create_context();
+#endif /* GLX_ARB_create_context */
+#ifdef GLX_ARB_create_context_no_error
+ GLXEW_ARB_create_context_no_error = _glewSearchExtension("GLX_ARB_create_context_no_error", extStart, extEnd);
+#endif /* GLX_ARB_create_context_no_error */
+#ifdef GLX_ARB_create_context_profile
+ GLXEW_ARB_create_context_profile = _glewSearchExtension("GLX_ARB_create_context_profile", extStart, extEnd);
+#endif /* GLX_ARB_create_context_profile */
+#ifdef GLX_ARB_create_context_robustness
+ GLXEW_ARB_create_context_robustness = _glewSearchExtension("GLX_ARB_create_context_robustness", extStart, extEnd);
+#endif /* GLX_ARB_create_context_robustness */
+#ifdef GLX_ARB_fbconfig_float
+ GLXEW_ARB_fbconfig_float = _glewSearchExtension("GLX_ARB_fbconfig_float", extStart, extEnd);
+#endif /* GLX_ARB_fbconfig_float */
+#ifdef GLX_ARB_framebuffer_sRGB
+ GLXEW_ARB_framebuffer_sRGB = _glewSearchExtension("GLX_ARB_framebuffer_sRGB", extStart, extEnd);
+#endif /* GLX_ARB_framebuffer_sRGB */
+#ifdef GLX_ARB_get_proc_address
+ GLXEW_ARB_get_proc_address = _glewSearchExtension("GLX_ARB_get_proc_address", extStart, extEnd);
+#endif /* GLX_ARB_get_proc_address */
+#ifdef GLX_ARB_multisample
+ GLXEW_ARB_multisample = _glewSearchExtension("GLX_ARB_multisample", extStart, extEnd);
+#endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_robustness_application_isolation
+ GLXEW_ARB_robustness_application_isolation = _glewSearchExtension("GLX_ARB_robustness_application_isolation", extStart, extEnd);
+#endif /* GLX_ARB_robustness_application_isolation */
+#ifdef GLX_ARB_robustness_share_group_isolation
+ GLXEW_ARB_robustness_share_group_isolation = _glewSearchExtension("GLX_ARB_robustness_share_group_isolation", extStart, extEnd);
+#endif /* GLX_ARB_robustness_share_group_isolation */
+#ifdef GLX_ARB_vertex_buffer_object
+ GLXEW_ARB_vertex_buffer_object = _glewSearchExtension("GLX_ARB_vertex_buffer_object", extStart, extEnd);
+#endif /* GLX_ARB_vertex_buffer_object */
+#ifdef GLX_ATI_pixel_format_float
+ GLXEW_ATI_pixel_format_float = _glewSearchExtension("GLX_ATI_pixel_format_float", extStart, extEnd);
+#endif /* GLX_ATI_pixel_format_float */
+#ifdef GLX_ATI_render_texture
+ GLXEW_ATI_render_texture = _glewSearchExtension("GLX_ATI_render_texture", extStart, extEnd);
+ if (glewExperimental || GLXEW_ATI_render_texture) GLXEW_ATI_render_texture = !_glewInit_GLX_ATI_render_texture();
+#endif /* GLX_ATI_render_texture */
+#ifdef GLX_EXT_buffer_age
+ GLXEW_EXT_buffer_age = _glewSearchExtension("GLX_EXT_buffer_age", extStart, extEnd);
+#endif /* GLX_EXT_buffer_age */
+#ifdef GLX_EXT_context_priority
+ GLXEW_EXT_context_priority = _glewSearchExtension("GLX_EXT_context_priority", extStart, extEnd);
+#endif /* GLX_EXT_context_priority */
+#ifdef GLX_EXT_create_context_es2_profile
+ GLXEW_EXT_create_context_es2_profile = _glewSearchExtension("GLX_EXT_create_context_es2_profile", extStart, extEnd);
+#endif /* GLX_EXT_create_context_es2_profile */
+#ifdef GLX_EXT_create_context_es_profile
+ GLXEW_EXT_create_context_es_profile = _glewSearchExtension("GLX_EXT_create_context_es_profile", extStart, extEnd);
+#endif /* GLX_EXT_create_context_es_profile */
+#ifdef GLX_EXT_fbconfig_packed_float
+ GLXEW_EXT_fbconfig_packed_float = _glewSearchExtension("GLX_EXT_fbconfig_packed_float", extStart, extEnd);
+#endif /* GLX_EXT_fbconfig_packed_float */
+#ifdef GLX_EXT_framebuffer_sRGB
+ GLXEW_EXT_framebuffer_sRGB = _glewSearchExtension("GLX_EXT_framebuffer_sRGB", extStart, extEnd);
+#endif /* GLX_EXT_framebuffer_sRGB */
+#ifdef GLX_EXT_get_drawable_type
+ GLXEW_EXT_get_drawable_type = _glewSearchExtension("GLX_EXT_get_drawable_type", extStart, extEnd);
+#endif /* GLX_EXT_get_drawable_type */
+#ifdef GLX_EXT_import_context
+ GLXEW_EXT_import_context = _glewSearchExtension("GLX_EXT_import_context", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_import_context) GLXEW_EXT_import_context = !_glewInit_GLX_EXT_import_context();
+#endif /* GLX_EXT_import_context */
+#ifdef GLX_EXT_libglvnd
+ GLXEW_EXT_libglvnd = _glewSearchExtension("GLX_EXT_libglvnd", extStart, extEnd);
+#endif /* GLX_EXT_libglvnd */
+#ifdef GLX_EXT_no_config_context
+ GLXEW_EXT_no_config_context = _glewSearchExtension("GLX_EXT_no_config_context", extStart, extEnd);
+#endif /* GLX_EXT_no_config_context */
+#ifdef GLX_EXT_scene_marker
+ GLXEW_EXT_scene_marker = _glewSearchExtension("GLX_EXT_scene_marker", extStart, extEnd);
+#endif /* GLX_EXT_scene_marker */
+#ifdef GLX_EXT_stereo_tree
+ GLXEW_EXT_stereo_tree = _glewSearchExtension("GLX_EXT_stereo_tree", extStart, extEnd);
+#endif /* GLX_EXT_stereo_tree */
+#ifdef GLX_EXT_swap_control
+ GLXEW_EXT_swap_control = _glewSearchExtension("GLX_EXT_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_swap_control) GLXEW_EXT_swap_control = !_glewInit_GLX_EXT_swap_control();
+#endif /* GLX_EXT_swap_control */
+#ifdef GLX_EXT_swap_control_tear
+ GLXEW_EXT_swap_control_tear = _glewSearchExtension("GLX_EXT_swap_control_tear", extStart, extEnd);
+#endif /* GLX_EXT_swap_control_tear */
+#ifdef GLX_EXT_texture_from_pixmap
+ GLXEW_EXT_texture_from_pixmap = _glewSearchExtension("GLX_EXT_texture_from_pixmap", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_texture_from_pixmap) GLXEW_EXT_texture_from_pixmap = !_glewInit_GLX_EXT_texture_from_pixmap();
+#endif /* GLX_EXT_texture_from_pixmap */
+#ifdef GLX_EXT_visual_info
+ GLXEW_EXT_visual_info = _glewSearchExtension("GLX_EXT_visual_info", extStart, extEnd);
+#endif /* GLX_EXT_visual_info */
+#ifdef GLX_EXT_visual_rating
+ GLXEW_EXT_visual_rating = _glewSearchExtension("GLX_EXT_visual_rating", extStart, extEnd);
+#endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+ GLXEW_INTEL_swap_event = _glewSearchExtension("GLX_INTEL_swap_event", extStart, extEnd);
+#endif /* GLX_INTEL_swap_event */
+#ifdef GLX_MESA_agp_offset
+ GLXEW_MESA_agp_offset = _glewSearchExtension("GLX_MESA_agp_offset", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_agp_offset) GLXEW_MESA_agp_offset = !_glewInit_GLX_MESA_agp_offset();
+#endif /* GLX_MESA_agp_offset */
+#ifdef GLX_MESA_copy_sub_buffer
+ GLXEW_MESA_copy_sub_buffer = _glewSearchExtension("GLX_MESA_copy_sub_buffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_copy_sub_buffer) GLXEW_MESA_copy_sub_buffer = !_glewInit_GLX_MESA_copy_sub_buffer();
+#endif /* GLX_MESA_copy_sub_buffer */
+#ifdef GLX_MESA_pixmap_colormap
+ GLXEW_MESA_pixmap_colormap = _glewSearchExtension("GLX_MESA_pixmap_colormap", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_pixmap_colormap) GLXEW_MESA_pixmap_colormap = !_glewInit_GLX_MESA_pixmap_colormap();
+#endif /* GLX_MESA_pixmap_colormap */
+#ifdef GLX_MESA_query_renderer
+ GLXEW_MESA_query_renderer = _glewSearchExtension("GLX_MESA_query_renderer", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_query_renderer) GLXEW_MESA_query_renderer = !_glewInit_GLX_MESA_query_renderer();
+#endif /* GLX_MESA_query_renderer */
+#ifdef GLX_MESA_release_buffers
+ GLXEW_MESA_release_buffers = _glewSearchExtension("GLX_MESA_release_buffers", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_release_buffers) GLXEW_MESA_release_buffers = !_glewInit_GLX_MESA_release_buffers();
+#endif /* GLX_MESA_release_buffers */
+#ifdef GLX_MESA_set_3dfx_mode
+ GLXEW_MESA_set_3dfx_mode = _glewSearchExtension("GLX_MESA_set_3dfx_mode", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_set_3dfx_mode) GLXEW_MESA_set_3dfx_mode = !_glewInit_GLX_MESA_set_3dfx_mode();
+#endif /* GLX_MESA_set_3dfx_mode */
+#ifdef GLX_MESA_swap_control
+ GLXEW_MESA_swap_control = _glewSearchExtension("GLX_MESA_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_swap_control) GLXEW_MESA_swap_control = !_glewInit_GLX_MESA_swap_control();
+#endif /* GLX_MESA_swap_control */
+#ifdef GLX_NV_copy_buffer
+ GLXEW_NV_copy_buffer = _glewSearchExtension("GLX_NV_copy_buffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_copy_buffer) GLXEW_NV_copy_buffer = !_glewInit_GLX_NV_copy_buffer();
+#endif /* GLX_NV_copy_buffer */
+#ifdef GLX_NV_copy_image
+ GLXEW_NV_copy_image = _glewSearchExtension("GLX_NV_copy_image", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_copy_image) GLXEW_NV_copy_image = !_glewInit_GLX_NV_copy_image();
+#endif /* GLX_NV_copy_image */
+#ifdef GLX_NV_delay_before_swap
+ GLXEW_NV_delay_before_swap = _glewSearchExtension("GLX_NV_delay_before_swap", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_delay_before_swap) GLXEW_NV_delay_before_swap = !_glewInit_GLX_NV_delay_before_swap();
+#endif /* GLX_NV_delay_before_swap */
+#ifdef GLX_NV_float_buffer
+ GLXEW_NV_float_buffer = _glewSearchExtension("GLX_NV_float_buffer", extStart, extEnd);
+#endif /* GLX_NV_float_buffer */
+#ifdef GLX_NV_multigpu_context
+ GLXEW_NV_multigpu_context = _glewSearchExtension("GLX_NV_multigpu_context", extStart, extEnd);
+#endif /* GLX_NV_multigpu_context */
+#ifdef GLX_NV_multisample_coverage
+ GLXEW_NV_multisample_coverage = _glewSearchExtension("GLX_NV_multisample_coverage", extStart, extEnd);
+#endif /* GLX_NV_multisample_coverage */
+#ifdef GLX_NV_present_video
+ GLXEW_NV_present_video = _glewSearchExtension("GLX_NV_present_video", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_present_video) GLXEW_NV_present_video = !_glewInit_GLX_NV_present_video();
+#endif /* GLX_NV_present_video */
+#ifdef GLX_NV_robustness_video_memory_purge
+ GLXEW_NV_robustness_video_memory_purge = _glewSearchExtension("GLX_NV_robustness_video_memory_purge", extStart, extEnd);
+#endif /* GLX_NV_robustness_video_memory_purge */
+#ifdef GLX_NV_swap_group
+ GLXEW_NV_swap_group = _glewSearchExtension("GLX_NV_swap_group", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_swap_group) GLXEW_NV_swap_group = !_glewInit_GLX_NV_swap_group();
+#endif /* GLX_NV_swap_group */
+#ifdef GLX_NV_vertex_array_range
+ GLXEW_NV_vertex_array_range = _glewSearchExtension("GLX_NV_vertex_array_range", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_vertex_array_range) GLXEW_NV_vertex_array_range = !_glewInit_GLX_NV_vertex_array_range();
+#endif /* GLX_NV_vertex_array_range */
+#ifdef GLX_NV_video_capture
+ GLXEW_NV_video_capture = _glewSearchExtension("GLX_NV_video_capture", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_video_capture) GLXEW_NV_video_capture = !_glewInit_GLX_NV_video_capture();
+#endif /* GLX_NV_video_capture */
+#ifdef GLX_NV_video_out
+ GLXEW_NV_video_out = _glewSearchExtension("GLX_NV_video_out", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_video_out) GLXEW_NV_video_out = !_glewInit_GLX_NV_video_out();
+#endif /* GLX_NV_video_out */
+#ifdef GLX_OML_swap_method
+ GLXEW_OML_swap_method = _glewSearchExtension("GLX_OML_swap_method", extStart, extEnd);
+#endif /* GLX_OML_swap_method */
+#ifdef GLX_OML_sync_control
+ GLXEW_OML_sync_control = _glewSearchExtension("GLX_OML_sync_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_OML_sync_control) GLXEW_OML_sync_control = !_glewInit_GLX_OML_sync_control();
+#endif /* GLX_OML_sync_control */
+#ifdef GLX_SGIS_blended_overlay
+ GLXEW_SGIS_blended_overlay = _glewSearchExtension("GLX_SGIS_blended_overlay", extStart, extEnd);
+#endif /* GLX_SGIS_blended_overlay */
+#ifdef GLX_SGIS_color_range
+ GLXEW_SGIS_color_range = _glewSearchExtension("GLX_SGIS_color_range", extStart, extEnd);
+#endif /* GLX_SGIS_color_range */
+#ifdef GLX_SGIS_multisample
+ GLXEW_SGIS_multisample = _glewSearchExtension("GLX_SGIS_multisample", extStart, extEnd);
+#endif /* GLX_SGIS_multisample */
+#ifdef GLX_SGIS_shared_multisample
+ GLXEW_SGIS_shared_multisample = _glewSearchExtension("GLX_SGIS_shared_multisample", extStart, extEnd);
+#endif /* GLX_SGIS_shared_multisample */
+#ifdef GLX_SGIX_fbconfig
+ GLXEW_SGIX_fbconfig = _glewSearchExtension("GLX_SGIX_fbconfig", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_fbconfig) GLXEW_SGIX_fbconfig = !_glewInit_GLX_SGIX_fbconfig();
+#endif /* GLX_SGIX_fbconfig */
+#ifdef GLX_SGIX_hyperpipe
+ GLXEW_SGIX_hyperpipe = _glewSearchExtension("GLX_SGIX_hyperpipe", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_hyperpipe) GLXEW_SGIX_hyperpipe = !_glewInit_GLX_SGIX_hyperpipe();
+#endif /* GLX_SGIX_hyperpipe */
+#ifdef GLX_SGIX_pbuffer
+ GLXEW_SGIX_pbuffer = _glewSearchExtension("GLX_SGIX_pbuffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_pbuffer) GLXEW_SGIX_pbuffer = !_glewInit_GLX_SGIX_pbuffer();
+#endif /* GLX_SGIX_pbuffer */
+#ifdef GLX_SGIX_swap_barrier
+ GLXEW_SGIX_swap_barrier = _glewSearchExtension("GLX_SGIX_swap_barrier", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_swap_barrier) GLXEW_SGIX_swap_barrier = !_glewInit_GLX_SGIX_swap_barrier();
+#endif /* GLX_SGIX_swap_barrier */
+#ifdef GLX_SGIX_swap_group
+ GLXEW_SGIX_swap_group = _glewSearchExtension("GLX_SGIX_swap_group", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_swap_group) GLXEW_SGIX_swap_group = !_glewInit_GLX_SGIX_swap_group();
+#endif /* GLX_SGIX_swap_group */
+#ifdef GLX_SGIX_video_resize
+ GLXEW_SGIX_video_resize = _glewSearchExtension("GLX_SGIX_video_resize", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_video_resize) GLXEW_SGIX_video_resize = !_glewInit_GLX_SGIX_video_resize();
+#endif /* GLX_SGIX_video_resize */
+#ifdef GLX_SGIX_visual_select_group
+ GLXEW_SGIX_visual_select_group = _glewSearchExtension("GLX_SGIX_visual_select_group", extStart, extEnd);
+#endif /* GLX_SGIX_visual_select_group */
+#ifdef GLX_SGI_cushion
+ GLXEW_SGI_cushion = _glewSearchExtension("GLX_SGI_cushion", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_cushion) GLXEW_SGI_cushion = !_glewInit_GLX_SGI_cushion();
+#endif /* GLX_SGI_cushion */
+#ifdef GLX_SGI_make_current_read
+ GLXEW_SGI_make_current_read = _glewSearchExtension("GLX_SGI_make_current_read", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_make_current_read) GLXEW_SGI_make_current_read = !_glewInit_GLX_SGI_make_current_read();
+#endif /* GLX_SGI_make_current_read */
+#ifdef GLX_SGI_swap_control
+ GLXEW_SGI_swap_control = _glewSearchExtension("GLX_SGI_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_swap_control) GLXEW_SGI_swap_control = !_glewInit_GLX_SGI_swap_control();
+#endif /* GLX_SGI_swap_control */
+#ifdef GLX_SGI_video_sync
+ GLXEW_SGI_video_sync = _glewSearchExtension("GLX_SGI_video_sync", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_video_sync) GLXEW_SGI_video_sync = !_glewInit_GLX_SGI_video_sync();
+#endif /* GLX_SGI_video_sync */
+#ifdef GLX_SUN_get_transparent_index
+ GLXEW_SUN_get_transparent_index = _glewSearchExtension("GLX_SUN_get_transparent_index", extStart, extEnd);
+ if (glewExperimental || GLXEW_SUN_get_transparent_index) GLXEW_SUN_get_transparent_index = !_glewInit_GLX_SUN_get_transparent_index();
+#endif /* GLX_SUN_get_transparent_index */
+#ifdef GLX_SUN_video_resize
+ GLXEW_SUN_video_resize = _glewSearchExtension("GLX_SUN_video_resize", extStart, extEnd);
+ if (glewExperimental || GLXEW_SUN_video_resize) GLXEW_SUN_video_resize = !_glewInit_GLX_SUN_video_resize();
+#endif /* GLX_SUN_video_resize */
+
+ return GLEW_OK;
+}
+
+#endif /* !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX)) */
+
+/* ------------------------------------------------------------------------ */
+
+const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error)
+{
+ static const GLubyte* _glewErrorString[] =
+ {
+ (const GLubyte*)"No error",
+ (const GLubyte*)"Missing GL version",
+ (const GLubyte*)"GL 1.1 and up are not supported",
+ (const GLubyte*)"GLX 1.2 and up are not supported",
+ (const GLubyte*)"No GLX display",
+ (const GLubyte*)"Unknown error"
+ };
+ const size_t max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1;
+ return _glewErrorString[(size_t)error > max_error ? max_error : (size_t)error];
+}
+
+const GLubyte * GLEWAPIENTRY glewGetString (GLenum name)
+{
+ static const GLubyte* _glewString[] =
+ {
+ (const GLubyte*)NULL,
+ (const GLubyte*)"2.2.0",
+ (const GLubyte*)"2",
+ (const GLubyte*)"2",
+ (const GLubyte*)"0"
+ };
+ const size_t max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;
+ return _glewString[(size_t)name > max_string ? 0 : (size_t)name];
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewExperimental = GL_FALSE;
+
+GLenum GLEWAPIENTRY glewInit (void)
+{
+ GLenum r;
+#if defined(GLEW_EGL)
+ PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;
+#endif
+ r = glewContextInit();
+ if ( r != 0 ) return r;
+#if defined(GLEW_EGL)
+ getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress("eglGetCurrentDisplay");
+ return eglewInit(getCurrentDisplay());
+#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__)
+ return r;
+#elif defined(_WIN32)
+ return wglewInit();
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */
+ return glxewInit();
+#else
+ return r;
+#endif /* _WIN32 */
+}
+
+#if defined(_WIN32) && defined(GLEW_BUILD) && defined(__GNUC__)
+/* GCC requires a DLL entry point even without any standard library included. */
+/* Types extracted from windows.h to avoid polluting the rest of the file. */
+int __stdcall DllMainCRTStartup(void* instance, unsigned reason, void* reserved)
+{
+ (void) instance;
+ (void) reason;
+ (void) reserved;
+ return 1;
+}
+#endif
+GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"GL_", 3))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef GL_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = GLEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_2_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2_1", 5))
+ {
+ ret = GLEW_VERSION_1_2_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = GLEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = GLEW_VERSION_1_4;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_5", 3))
+ {
+ ret = GLEW_VERSION_1_5;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_2_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_0", 3))
+ {
+ ret = GLEW_VERSION_2_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_2_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_1", 3))
+ {
+ ret = GLEW_VERSION_2_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_0", 3))
+ {
+ ret = GLEW_VERSION_3_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_1", 3))
+ {
+ ret = GLEW_VERSION_3_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_2", 3))
+ {
+ ret = GLEW_VERSION_3_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_3", 3))
+ {
+ ret = GLEW_VERSION_3_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_0", 3))
+ {
+ ret = GLEW_VERSION_4_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_1", 3))
+ {
+ ret = GLEW_VERSION_4_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_2", 3))
+ {
+ ret = GLEW_VERSION_4_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_3", 3))
+ {
+ ret = GLEW_VERSION_4_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_4", 3))
+ {
+ ret = GLEW_VERSION_4_4;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_5", 3))
+ {
+ ret = GLEW_VERSION_4_5;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_6
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_6", 3))
+ {
+ ret = GLEW_VERSION_4_6;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef GL_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_3DFX_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_3DFX_tbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tbuffer", 7))
+ {
+ ret = GLEW_3DFX_tbuffer;
+ continue;
+ }
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_FXT1", 24))
+ {
+ ret = GLEW_3DFX_texture_compression_FXT1;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef GL_AMD_blend_minmax_factor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax_factor", 19))
+ {
+ ret = GLEW_AMD_blend_minmax_factor;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_3DC_texture", 22))
+ {
+ ret = GLEW_AMD_compressed_3DC_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ATC_texture", 22))
+ {
+ ret = GLEW_AMD_compressed_ATC_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_AMD_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_debug_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_output", 12))
+ {
+ ret = GLEW_AMD_debug_output;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp_separate", 20))
+ {
+ ret = GLEW_AMD_depth_clamp_separate;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_blend", 18))
+ {
+ ret = GLEW_AMD_draw_buffers_blend;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_advanced", 32))
+ {
+ ret = GLEW_AMD_framebuffer_multisample_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sample_positions", 28))
+ {
+ ret = GLEW_AMD_framebuffer_sample_positions;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gcn_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gcn_shader", 10))
+ {
+ ret = GLEW_AMD_gcn_shader;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_half_float", 21))
+ {
+ ret = GLEW_AMD_gpu_shader_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_half_float_fetch", 27))
+ {
+ ret = GLEW_AMD_gpu_shader_half_float_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int16", 16))
+ {
+ ret = GLEW_AMD_gpu_shader_int16;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int64", 16))
+ {
+ ret = GLEW_AMD_gpu_shader_int64;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_interleaved_elements
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interleaved_elements", 20))
+ {
+ ret = GLEW_AMD_interleaved_elements;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_AMD_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_name_gen_delete
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"name_gen_delete", 15))
+ {
+ ret = GLEW_AMD_name_gen_delete;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query_event", 21))
+ {
+ ret = GLEW_AMD_occlusion_query_event;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_performance_monitor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"performance_monitor", 19))
+ {
+ ret = GLEW_AMD_performance_monitor;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_pinned_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pinned_memory", 13))
+ {
+ ret = GLEW_AMD_pinned_memory;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary_Z400", 19))
+ {
+ ret = GLEW_AMD_program_binary_Z400;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_query_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_buffer_object", 19))
+ {
+ ret = GLEW_AMD_query_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_sample_positions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_positions", 16))
+ {
+ ret = GLEW_AMD_sample_positions;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cubemap_per_texture", 28))
+ {
+ ret = GLEW_AMD_seamless_cubemap_per_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counter_ops", 25))
+ {
+ ret = GLEW_AMD_shader_atomic_counter_ops;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_ballot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_ballot", 13))
+ {
+ ret = GLEW_AMD_shader_ballot;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_explicit_vertex_parameter", 32))
+ {
+ ret = GLEW_AMD_shader_explicit_vertex_parameter;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store_lod", 27))
+ {
+ ret = GLEW_AMD_shader_image_load_store_lod;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_export", 21))
+ {
+ ret = GLEW_AMD_shader_stencil_export;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_value_export", 27))
+ {
+ ret = GLEW_AMD_shader_stencil_value_export;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_trinary_minmax", 21))
+ {
+ ret = GLEW_AMD_shader_trinary_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_AMD_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_operation_extended", 26))
+ {
+ ret = GLEW_AMD_stencil_operation_extended;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_gather_bias_lod", 23))
+ {
+ ret = GLEW_AMD_texture_gather_bias_lod;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_texture_texture4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_texture4", 16))
+ {
+ ret = GLEW_AMD_texture_texture4;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback3_lines_triangles", 35))
+ {
+ ret = GLEW_AMD_transform_feedback3_lines_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_transform_feedback4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback4", 19))
+ {
+ ret = GLEW_AMD_transform_feedback4;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_layer", 19))
+ {
+ ret = GLEW_AMD_vertex_shader_layer;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_tessellator", 25))
+ {
+ ret = GLEW_AMD_vertex_shader_tessellator;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_viewport_index", 28))
+ {
+ ret = GLEW_AMD_vertex_shader_viewport_index;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANDROID_", 8))
+ {
+#ifdef GL_ANDROID_extension_pack_es31a
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extension_pack_es31a", 20))
+ {
+ ret = GLEW_ANDROID_extension_pack_es31a;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANGLE_", 6))
+ {
+#ifdef GL_ANGLE_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_ANGLE_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_ANGLE_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_ANGLE_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_ANGLE_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_reverse_row_order", 22))
+ {
+ ret = GLEW_ANGLE_pack_reverse_row_order;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_ANGLE_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt1", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt1;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt3", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt3;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt5", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt5;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_usage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_usage", 13))
+ {
+ ret = GLEW_ANGLE_texture_usage;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_ANGLE_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"translated_shader_source", 24))
+ {
+ ret = GLEW_ANGLE_translated_shader_source;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"APPLE_", 6))
+ {
+#ifdef GL_APPLE_aux_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"aux_depth_stencil", 17))
+ {
+ ret = GLEW_APPLE_aux_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_client_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_storage", 14))
+ {
+ ret = GLEW_APPLE_client_storage;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_clip_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_distance", 13))
+ {
+ ret = GLEW_APPLE_clip_distance;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_packed_float", 25))
+ {
+ ret = GLEW_APPLE_color_buffer_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_texture_levels", 19))
+ {
+ ret = GLEW_APPLE_copy_texture_levels;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_element_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13))
+ {
+ ret = GLEW_APPLE_element_array;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5))
+ {
+ ret = GLEW_APPLE_fence;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_float_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_pixels", 12))
+ {
+ ret = GLEW_APPLE_float_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_buffer_range", 18))
+ {
+ ret = GLEW_APPLE_flush_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_APPLE_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_object_purgeable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"object_purgeable", 16))
+ {
+ ret = GLEW_APPLE_object_purgeable;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer", 12))
+ {
+ ret = GLEW_APPLE_pixel_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_rgb_422
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgb_422", 7))
+ {
+ ret = GLEW_APPLE_rgb_422;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_row_bytes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"row_bytes", 9))
+ {
+ ret = GLEW_APPLE_row_bytes;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_specular_vector
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_vector", 15))
+ {
+ ret = GLEW_APPLE_specular_vector;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = GLEW_APPLE_sync;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_2D_limited_npot", 23))
+ {
+ ret = GLEW_APPLE_texture_2D_limited_npot;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_BGRA8888", 23))
+ {
+ ret = GLEW_APPLE_texture_format_BGRA8888;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_max_level
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_max_level", 17))
+ {
+ ret = GLEW_APPLE_texture_max_level;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_packed_float", 20))
+ {
+ ret = GLEW_APPLE_texture_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13))
+ {
+ ret = GLEW_APPLE_texture_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_transform_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_hint", 14))
+ {
+ ret = GLEW_APPLE_transform_hint;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_APPLE_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLEW_APPLE_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program_evaluators", 25))
+ {
+ ret = GLEW_APPLE_vertex_program_evaluators;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_422", 9))
+ {
+ ret = GLEW_APPLE_ycbcr_422;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef GL_ARB_ES2_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES2_compatibility", 17))
+ {
+ ret = GLEW_ARB_ES2_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_1_compatibility", 19))
+ {
+ ret = GLEW_ARB_ES3_1_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_2_compatibility", 19))
+ {
+ ret = GLEW_ARB_ES3_2_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_compatibility", 17))
+ {
+ ret = GLEW_ARB_ES3_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"arrays_of_arrays", 16))
+ {
+ ret = GLEW_ARB_arrays_of_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_base_instance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"base_instance", 13))
+ {
+ ret = GLEW_ARB_base_instance;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_ARB_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_blend_func_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_extended", 19))
+ {
+ ret = GLEW_ARB_blend_func_extended;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_buffer_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_storage", 14))
+ {
+ ret = GLEW_ARB_buffer_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_cl_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event", 8))
+ {
+ ret = GLEW_ARB_cl_event;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_buffer_object", 19))
+ {
+ ret = GLEW_ARB_clear_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clear_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_texture", 13))
+ {
+ ret = GLEW_ARB_clear_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clip_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_control", 12))
+ {
+ ret = GLEW_ARB_clip_control;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_color_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18))
+ {
+ ret = GLEW_ARB_color_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compatibility", 13))
+ {
+ ret = GLEW_ARB_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_texture_pixel_storage", 32))
+ {
+ ret = GLEW_ARB_compressed_texture_pixel_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compute_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_shader", 14))
+ {
+ ret = GLEW_ARB_compute_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_variable_group_size", 27))
+ {
+ ret = GLEW_ARB_compute_variable_group_size;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render_inverted", 27))
+ {
+ ret = GLEW_ARB_conditional_render_inverted;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_ARB_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLEW_ARB_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_ARB_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_cull_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_distance", 13))
+ {
+ ret = GLEW_ARB_cull_distance;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_debug_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_output", 12))
+ {
+ ret = GLEW_ARB_debug_output;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18))
+ {
+ ret = GLEW_ARB_depth_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_ARB_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_ARB_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_derivative_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"derivative_control", 18))
+ {
+ ret = GLEW_ARB_derivative_control;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_direct_state_access
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"direct_state_access", 19))
+ {
+ ret = GLEW_ARB_direct_state_access;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_ARB_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_blend", 18))
+ {
+ ret = GLEW_ARB_draw_buffers_blend;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_elements_base_vertex", 25))
+ {
+ ret = GLEW_ARB_draw_elements_base_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_indirect", 13))
+ {
+ ret = GLEW_ARB_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_ARB_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"enhanced_layouts", 16))
+ {
+ ret = GLEW_ARB_enhanced_layouts;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_attrib_location", 24))
+ {
+ ret = GLEW_ARB_explicit_attrib_location;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_uniform_location", 25))
+ {
+ ret = GLEW_ARB_explicit_uniform_location;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_coord_conventions", 26))
+ {
+ ret = GLEW_ARB_fragment_coord_conventions;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_layer_viewport", 23))
+ {
+ ret = GLEW_ARB_fragment_layer_viewport;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16))
+ {
+ ret = GLEW_ARB_fragment_program;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_shadow", 23))
+ {
+ ret = GLEW_ARB_fragment_program_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15))
+ {
+ ret = GLEW_ARB_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_interlock", 25))
+ {
+ ret = GLEW_ARB_fragment_shader_interlock;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_no_attachments", 26))
+ {
+ ret = GLEW_ARB_framebuffer_no_attachments;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_ARB_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_ARB_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_get_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_program_binary", 18))
+ {
+ ret = GLEW_ARB_get_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_texture_sub_image", 21))
+ {
+ ret = GLEW_ARB_get_texture_sub_image;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gl_spirv
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_spirv", 8))
+ {
+ ret = GLEW_ARB_gl_spirv;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_ARB_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_fp64", 15))
+ {
+ ret = GLEW_ARB_gpu_shader_fp64;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int64", 16))
+ {
+ ret = GLEW_ARB_gpu_shader_int64;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_half_float_pixel
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_pixel", 16))
+ {
+ ret = GLEW_ARB_half_float_pixel;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_half_float_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_vertex", 17))
+ {
+ ret = GLEW_ARB_half_float_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_imaging
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"imaging", 7))
+ {
+ ret = GLEW_ARB_imaging;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_indirect_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"indirect_parameters", 19))
+ {
+ ret = GLEW_ARB_indirect_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_ARB_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_internalformat_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_query", 20))
+ {
+ ret = GLEW_ARB_internalformat_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_internalformat_query2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_query2", 21))
+ {
+ ret = GLEW_ARB_internalformat_query2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"invalidate_subdata", 18))
+ {
+ ret = GLEW_ARB_invalidate_subdata;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_alignment", 20))
+ {
+ ret = GLEW_ARB_map_buffer_alignment;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_map_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_range", 16))
+ {
+ ret = GLEW_ARB_map_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_palette", 14))
+ {
+ ret = GLEW_ARB_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multi_bind
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_bind", 10))
+ {
+ ret = GLEW_ARB_multi_bind;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_ARB_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multitexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multitexture", 12))
+ {
+ ret = GLEW_ARB_multitexture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_occlusion_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15))
+ {
+ ret = GLEW_ARB_occlusion_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_occlusion_query2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query2", 16))
+ {
+ ret = GLEW_ARB_occlusion_query2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_shader_compile", 23))
+ {
+ ret = GLEW_ARB_parallel_shader_compile;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pipeline_statistics_query", 25))
+ {
+ ret = GLEW_ARB_pipeline_statistics_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_ARB_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_point_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16))
+ {
+ ret = GLEW_ARB_point_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_ARB_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset_clamp", 20))
+ {
+ ret = GLEW_ARB_polygon_offset_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_depth_coverage", 19))
+ {
+ ret = GLEW_ARB_post_depth_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_program_interface_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_interface_query", 23))
+ {
+ ret = GLEW_ARB_program_interface_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_provoking_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"provoking_vertex", 16))
+ {
+ ret = GLEW_ARB_provoking_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_query_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_buffer_object", 19))
+ {
+ ret = GLEW_ARB_query_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robust_buffer_access_behavior", 29))
+ {
+ ret = GLEW_ARB_robust_buffer_access_behavior;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_ARB_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = GLEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = GLEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sample_locations
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_locations", 16))
+ {
+ ret = GLEW_ARB_sample_locations;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sample_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_shading", 14))
+ {
+ ret = GLEW_ARB_sample_shading;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sampler_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sampler_objects", 15))
+ {
+ ret = GLEW_ARB_sampler_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cube_map", 17))
+ {
+ ret = GLEW_ARB_seamless_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cubemap_per_texture", 28))
+ {
+ ret = GLEW_ARB_seamless_cubemap_per_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_shader_objects", 23))
+ {
+ ret = GLEW_ARB_separate_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counter_ops", 25))
+ {
+ ret = GLEW_ARB_shader_atomic_counter_ops;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counters", 22))
+ {
+ ret = GLEW_ARB_shader_atomic_counters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_ballot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_ballot", 13))
+ {
+ ret = GLEW_ARB_shader_ballot;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_bit_encoding", 19))
+ {
+ ret = GLEW_ARB_shader_bit_encoding;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_clock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_clock", 12))
+ {
+ ret = GLEW_ARB_shader_clock;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_draw_parameters", 22))
+ {
+ ret = GLEW_ARB_shader_draw_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_group_vote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_group_vote", 17))
+ {
+ ret = GLEW_ARB_shader_group_vote;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store", 23))
+ {
+ ret = GLEW_ARB_shader_image_load_store;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_image_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_size", 17))
+ {
+ ret = GLEW_ARB_shader_image_size;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_objects", 14))
+ {
+ ret = GLEW_ARB_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_precision
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_precision", 16))
+ {
+ ret = GLEW_ARB_shader_precision;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_export", 21))
+ {
+ ret = GLEW_ARB_shader_stencil_export;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_storage_buffer_object", 28))
+ {
+ ret = GLEW_ARB_shader_storage_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_subroutine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subroutine", 17))
+ {
+ ret = GLEW_ARB_shader_subroutine;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_image_samples", 28))
+ {
+ ret = GLEW_ARB_shader_texture_image_samples;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_ARB_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_viewport_layer_array", 27))
+ {
+ ret = GLEW_ARB_shader_viewport_layer_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_100
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_100", 20))
+ {
+ ret = GLEW_ARB_shading_language_100;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_420pack", 24))
+ {
+ ret = GLEW_ARB_shading_language_420pack;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_include
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_include", 24))
+ {
+ ret = GLEW_ARB_shading_language_include;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_packing
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_packing", 24))
+ {
+ ret = GLEW_ARB_shading_language_packing;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6))
+ {
+ ret = GLEW_ARB_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shadow_ambient
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14))
+ {
+ ret = GLEW_ARB_shadow_ambient;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_buffer", 13))
+ {
+ ret = GLEW_ARB_sparse_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_ARB_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture2", 15))
+ {
+ ret = GLEW_ARB_sparse_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture_clamp", 20))
+ {
+ ret = GLEW_ARB_sparse_texture_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_spirv_extensions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"spirv_extensions", 16))
+ {
+ ret = GLEW_ARB_spirv_extensions;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_stencil_texturing
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_texturing", 17))
+ {
+ ret = GLEW_ARB_stencil_texturing;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = GLEW_ARB_sync;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_ARB_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_barrier", 15))
+ {
+ ret = GLEW_ARB_texture_barrier;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_ARB_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21))
+ {
+ ret = GLEW_ARB_texture_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object_rgb32", 27))
+ {
+ ret = GLEW_ARB_texture_buffer_object_rgb32;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_range", 20))
+ {
+ ret = GLEW_ARB_texture_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression", 19))
+ {
+ ret = GLEW_ARB_texture_compression;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_bptc", 24))
+ {
+ ret = GLEW_ARB_texture_compression_bptc;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24))
+ {
+ ret = GLEW_ARB_texture_compression_rgtc;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_ARB_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_ARB_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_add
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15))
+ {
+ ret = GLEW_ARB_texture_env_add;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_combine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19))
+ {
+ ret = GLEW_ARB_texture_env_combine;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_crossbar", 20))
+ {
+ ret = GLEW_ARB_texture_env_crossbar;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16))
+ {
+ ret = GLEW_ARB_texture_env_dot3;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_anisotropic", 26))
+ {
+ ret = GLEW_ARB_texture_filter_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_minmax", 21))
+ {
+ ret = GLEW_ARB_texture_filter_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13))
+ {
+ ret = GLEW_ARB_texture_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_gather
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_gather", 14))
+ {
+ ret = GLEW_ARB_texture_gather;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp_to_edge", 28))
+ {
+ ret = GLEW_ARB_texture_mirror_clamp_to_edge;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_ARB_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multisample", 19))
+ {
+ ret = GLEW_ARB_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_non_power_of_two", 24))
+ {
+ ret = GLEW_ARB_texture_non_power_of_two;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_query_levels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_levels", 20))
+ {
+ ret = GLEW_ARB_texture_query_levels;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_query_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_lod", 17))
+ {
+ ret = GLEW_ARB_texture_query_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_ARB_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rg
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rg", 10))
+ {
+ ret = GLEW_ARB_texture_rg;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rgb10_a2ui", 18))
+ {
+ ret = GLEW_ARB_texture_rgb10_a2ui;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stencil8", 16))
+ {
+ ret = GLEW_ARB_texture_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage", 15))
+ {
+ ret = GLEW_ARB_texture_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_multisample", 27))
+ {
+ ret = GLEW_ARB_texture_storage_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15))
+ {
+ ret = GLEW_ARB_texture_swizzle;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_ARB_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_ARB_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback2", 19))
+ {
+ ret = GLEW_ARB_transform_feedback2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback3", 19))
+ {
+ ret = GLEW_ARB_transform_feedback3;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback_instanced", 28))
+ {
+ ret = GLEW_ARB_transform_feedback_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback_overflow_query", 33))
+ {
+ ret = GLEW_ARB_transform_feedback_overflow_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transpose_matrix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transpose_matrix", 16))
+ {
+ ret = GLEW_ARB_transpose_matrix;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"uniform_buffer_object", 21))
+ {
+ ret = GLEW_ARB_uniform_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_bgra", 17))
+ {
+ ret = GLEW_ARB_vertex_array_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_ARB_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_64bit", 19))
+ {
+ ret = GLEW_ARB_vertex_attrib_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_binding", 21))
+ {
+ ret = GLEW_ARB_vertex_attrib_binding;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_blend", 12))
+ {
+ ret = GLEW_ARB_vertex_blend;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20))
+ {
+ ret = GLEW_ARB_vertex_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14))
+ {
+ ret = GLEW_ARB_vertex_program;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13))
+ {
+ ret = GLEW_ARB_vertex_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_10f_11f_11f_rev", 27))
+ {
+ ret = GLEW_ARB_vertex_type_10f_11f_11f_rev;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_2_10_10_10_rev", 26))
+ {
+ ret = GLEW_ARB_vertex_type_2_10_10_10_rev;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_viewport_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array", 14))
+ {
+ ret = GLEW_ARB_viewport_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_window_pos
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10))
+ {
+ ret = GLEW_ARB_window_pos;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARM_", 4))
+ {
+#ifdef GL_ARM_mali_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mali_program_binary", 19))
+ {
+ ret = GLEW_ARM_mali_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mali_shader_binary", 18))
+ {
+ ret = GLEW_ARM_mali_shader_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_rgba8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgba8", 5))
+ {
+ ret = GLEW_ARM_rgba8;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch", 24))
+ {
+ ret = GLEW_ARM_shader_framebuffer_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_depth_stencil", 38))
+ {
+ ret = GLEW_ARM_shader_framebuffer_fetch_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_unnormalized_coordinates", 32))
+ {
+ ret = GLEW_ARM_texture_unnormalized_coordinates;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATIX_", 5))
+ {
+#ifdef GL_ATIX_point_sprites
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprites", 13))
+ {
+ ret = GLEW_ATIX_point_sprites;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20))
+ {
+ ret = GLEW_ATIX_texture_env_combine3;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_texture_env_route
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_route", 17))
+ {
+ ret = GLEW_ATIX_texture_env_route;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_output_point_size", 31))
+ {
+ ret = GLEW_ATIX_vertex_shader_output_point_size;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef GL_ATI_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_ATI_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_element_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13))
+ {
+ ret = GLEW_ATI_element_array;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"envmap_bumpmap", 14))
+ {
+ ret = GLEW_ATI_envmap_bumpmap;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15))
+ {
+ ret = GLEW_ATI_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_map_object_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_object_buffer", 17))
+ {
+ ret = GLEW_ATI_map_object_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_meminfo
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"meminfo", 7))
+ {
+ ret = GLEW_ATI_meminfo;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_pn_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pn_triangles", 12))
+ {
+ ret = GLEW_ATI_pn_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_separate_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_stencil", 16))
+ {
+ ret = GLEW_ATI_separate_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_ATI_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"text_fragment_shader", 20))
+ {
+ ret = GLEW_ATI_text_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_3dc", 23))
+ {
+ ret = GLEW_ATI_texture_compression_3dc;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20))
+ {
+ ret = GLEW_ATI_texture_env_combine3;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13))
+ {
+ ret = GLEW_ATI_texture_float;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_once", 19))
+ {
+ ret = GLEW_ATI_texture_mirror_once;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_ATI_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_array_object", 26))
+ {
+ ret = GLEW_ATI_vertex_attrib_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_streams
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_streams", 14))
+ {
+ ret = GLEW_ATI_vertex_streams;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"DMP_", 4))
+ {
+#ifdef GL_DMP_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_DMP_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_DMP_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_DMP_shader_binary;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef GL_EXT_422_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"422_pixels", 10))
+ {
+ ret = GLEW_EXT_422_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_Cg_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"Cg_shader", 9))
+ {
+ ret = GLEW_EXT_Cg_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_array", 15))
+ {
+ ret = GLEW_EXT_EGL_image_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external_wrap_modes", 29))
+ {
+ ret = GLEW_EXT_EGL_image_external_wrap_modes;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_storage", 17))
+ {
+ ret = GLEW_EXT_EGL_image_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_storage_compression", 29))
+ {
+ ret = GLEW_EXT_EGL_image_storage_compression;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_sync", 8))
+ {
+ ret = GLEW_EXT_EGL_sync;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_YUV_target
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"YUV_target", 10))
+ {
+ ret = GLEW_EXT_YUV_target;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_abgr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"abgr", 4))
+ {
+ ret = GLEW_EXT_abgr;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_base_instance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"base_instance", 13))
+ {
+ ret = GLEW_EXT_base_instance;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgra", 4))
+ {
+ ret = GLEW_EXT_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_bindable_uniform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindable_uniform", 16))
+ {
+ ret = GLEW_EXT_bindable_uniform;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_color", 11))
+ {
+ ret = GLEW_EXT_blend_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_separate", 23))
+ {
+ ret = GLEW_EXT_blend_equation_separate;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_func_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_extended", 19))
+ {
+ ret = GLEW_EXT_blend_func_extended;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_func_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_separate", 19))
+ {
+ ret = GLEW_EXT_blend_func_separate;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_logic_op
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_logic_op", 14))
+ {
+ ret = GLEW_EXT_blend_logic_op;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax", 12))
+ {
+ ret = GLEW_EXT_blend_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_subtract
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_subtract", 14))
+ {
+ ret = GLEW_EXT_blend_subtract;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_buffer_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_storage", 14))
+ {
+ ret = GLEW_EXT_buffer_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clear_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_texture", 13))
+ {
+ ret = GLEW_EXT_clear_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_control", 12))
+ {
+ ret = GLEW_EXT_clip_control;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_cull_distance", 18))
+ {
+ ret = GLEW_EXT_clip_cull_distance;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_volume_hint", 16))
+ {
+ ret = GLEW_EXT_clip_volume_hint;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_cmyka
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cmyka", 5))
+ {
+ ret = GLEW_EXT_cmyka;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18))
+ {
+ ret = GLEW_EXT_color_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_half_float", 23))
+ {
+ ret = GLEW_EXT_color_buffer_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_subtable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_subtable", 14))
+ {
+ ret = GLEW_EXT_color_subtable;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compiled_vertex_array", 21))
+ {
+ ret = GLEW_EXT_compiled_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ETC1_RGB8_sub_texture", 32))
+ {
+ ret = GLEW_EXT_compressed_ETC1_RGB8_sub_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_EXT_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_convolution
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution", 11))
+ {
+ ret = GLEW_EXT_convolution;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_coordinate_frame
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coordinate_frame", 16))
+ {
+ ret = GLEW_EXT_coordinate_frame;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_EXT_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_copy_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_texture", 12))
+ {
+ ret = GLEW_EXT_copy_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_cull_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11))
+ {
+ ret = GLEW_EXT_cull_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_debug_label
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_label", 11))
+ {
+ ret = GLEW_EXT_debug_label;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_debug_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_marker", 12))
+ {
+ ret = GLEW_EXT_debug_marker;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_bounds_test", 17))
+ {
+ ret = GLEW_EXT_depth_bounds_test;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_EXT_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_direct_state_access
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"direct_state_access", 19))
+ {
+ ret = GLEW_EXT_direct_state_access;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"discard_framebuffer", 19))
+ {
+ ret = GLEW_EXT_discard_framebuffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"disjoint_timer_query", 20))
+ {
+ ret = GLEW_EXT_disjoint_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_EXT_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers2", 13))
+ {
+ ret = GLEW_EXT_draw_buffers2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_indexed", 20))
+ {
+ ret = GLEW_EXT_draw_buffers_indexed;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_elements_base_vertex", 25))
+ {
+ ret = GLEW_EXT_draw_elements_base_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_EXT_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_range_elements
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_range_elements", 19))
+ {
+ ret = GLEW_EXT_draw_range_elements;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_transform_feedback", 23))
+ {
+ ret = GLEW_EXT_draw_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_external_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"external_buffer", 15))
+ {
+ ret = GLEW_EXT_external_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_float_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_blend", 11))
+ {
+ ret = GLEW_EXT_float_blend;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_fog_coord
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_coord", 9))
+ {
+ ret = GLEW_EXT_fog_coord;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_frag_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frag_depth", 10))
+ {
+ ret = GLEW_EXT_frag_depth;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_fragment_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_lighting", 17))
+ {
+ ret = GLEW_EXT_fragment_lighting;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_EXT_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_EXT_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_blit_scaled", 35))
+ {
+ ret = GLEW_EXT_framebuffer_multisample_blit_scaled;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_EXT_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_point_size", 19))
+ {
+ ret = GLEW_EXT_geometry_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader", 15))
+ {
+ ret = GLEW_EXT_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_EXT_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_parameters", 22))
+ {
+ ret = GLEW_EXT_gpu_program_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader4", 11))
+ {
+ ret = GLEW_EXT_gpu_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_EXT_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_histogram
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"histogram", 9))
+ {
+ ret = GLEW_EXT_histogram;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_array_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_array_formats", 19))
+ {
+ ret = GLEW_EXT_index_array_formats;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_func
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_func", 10))
+ {
+ ret = GLEW_EXT_index_func;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_material
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_material", 14))
+ {
+ ret = GLEW_EXT_index_material;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_texture", 13))
+ {
+ ret = GLEW_EXT_index_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_EXT_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_light_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_texture", 13))
+ {
+ ret = GLEW_EXT_light_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_map_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_range", 16))
+ {
+ ret = GLEW_EXT_map_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object", 13))
+ {
+ ret = GLEW_EXT_memory_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_fd", 16))
+ {
+ ret = GLEW_EXT_memory_object_fd;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object_win32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_win32", 19))
+ {
+ ret = GLEW_EXT_memory_object_win32;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_misc_attribute
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_attribute", 14))
+ {
+ ret = GLEW_EXT_misc_attribute;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_arrays", 17))
+ {
+ ret = GLEW_EXT_multi_draw_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_EXT_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiple_textures
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiple_textures", 17))
+ {
+ ret = GLEW_EXT_multiple_textures;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_EXT_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_compatibility", 25))
+ {
+ ret = GLEW_EXT_multisample_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture", 30))
+ {
+ ret = GLEW_EXT_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture2", 31))
+ {
+ ret = GLEW_EXT_multisampled_render_to_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_draw_buffers", 22))
+ {
+ ret = GLEW_EXT_multiview_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_tessellation_geometry_shader", 38))
+ {
+ ret = GLEW_EXT_multiview_tessellation_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_texture_multisample", 29))
+ {
+ ret = GLEW_EXT_multiview_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_timer_query", 21))
+ {
+ ret = GLEW_EXT_multiview_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query_boolean", 23))
+ {
+ ret = GLEW_EXT_occlusion_query_boolean;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_EXT_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float", 12))
+ {
+ ret = GLEW_EXT_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_pixels", 13))
+ {
+ ret = GLEW_EXT_packed_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_paletted_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"paletted_texture", 16))
+ {
+ ret = GLEW_EXT_paletted_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_EXT_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_transform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform", 15))
+ {
+ ret = GLEW_EXT_pixel_transform;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform_color_table", 27))
+ {
+ ret = GLEW_EXT_pixel_transform_color_table;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_point_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16))
+ {
+ ret = GLEW_EXT_point_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_polygon_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset", 14))
+ {
+ ret = GLEW_EXT_polygon_offset;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset_clamp", 20))
+ {
+ ret = GLEW_EXT_polygon_offset_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_depth_coverage", 19))
+ {
+ ret = GLEW_EXT_post_depth_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_bounding_box", 22))
+ {
+ ret = GLEW_EXT_primitive_bounding_box;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_protected_textures
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_textures", 18))
+ {
+ ret = GLEW_EXT_protected_textures;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_provoking_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"provoking_vertex", 16))
+ {
+ ret = GLEW_EXT_provoking_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pvrtc_sRGB", 10))
+ {
+ ret = GLEW_EXT_pvrtc_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_raster_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"raster_multisample", 18))
+ {
+ ret = GLEW_EXT_raster_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_read_format_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format_bgra", 16))
+ {
+ ret = GLEW_EXT_read_format_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_render_snorm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_snorm", 12))
+ {
+ ret = GLEW_EXT_render_snorm;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_rescale_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rescale_normal", 14))
+ {
+ ret = GLEW_EXT_rescale_normal;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_EXT_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB", 4))
+ {
+ ret = GLEW_EXT_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB_write_control", 18))
+ {
+ ret = GLEW_EXT_sRGB_write_control;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_scene_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12))
+ {
+ ret = GLEW_EXT_scene_marker;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_secondary_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"secondary_color", 15))
+ {
+ ret = GLEW_EXT_secondary_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore", 9))
+ {
+ ret = GLEW_EXT_semaphore;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore_fd", 12))
+ {
+ ret = GLEW_EXT_semaphore_fd;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore_win32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore_win32", 15))
+ {
+ ret = GLEW_EXT_semaphore_win32;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_depth_stencil", 22))
+ {
+ ret = GLEW_EXT_separate_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_shader_objects", 23))
+ {
+ ret = GLEW_EXT_separate_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_specular_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_specular_color", 23))
+ {
+ ret = GLEW_EXT_separate_specular_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch", 24))
+ {
+ ret = GLEW_EXT_shader_framebuffer_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_non_coherent", 37))
+ {
+ ret = GLEW_EXT_shader_framebuffer_fetch_non_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_group_vote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_group_vote", 17))
+ {
+ ret = GLEW_EXT_shader_group_vote;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_formatted", 27))
+ {
+ ret = GLEW_EXT_shader_image_load_formatted;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store", 23))
+ {
+ ret = GLEW_EXT_shader_image_load_store;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_implicit_conversions", 27))
+ {
+ ret = GLEW_EXT_shader_implicit_conversions;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_mix", 18))
+ {
+ ret = GLEW_EXT_shader_integer_mix;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_io_blocks", 16))
+ {
+ ret = GLEW_EXT_shader_io_blocks;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_non_constant_global_initializers", 39))
+ {
+ ret = GLEW_EXT_shader_non_constant_global_initializers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_pixel_local_storage", 26))
+ {
+ ret = GLEW_EXT_shader_pixel_local_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_pixel_local_storage2", 27))
+ {
+ ret = GLEW_EXT_shader_pixel_local_storage2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_samples_identical", 24))
+ {
+ ret = GLEW_EXT_shader_samples_identical;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_EXT_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shadow_funcs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_funcs", 12))
+ {
+ ret = GLEW_EXT_shadow_funcs;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shadow_samplers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers", 15))
+ {
+ ret = GLEW_EXT_shadow_samplers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_texture_palette", 22))
+ {
+ ret = GLEW_EXT_shared_texture_palette;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_EXT_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sparse_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture2", 15))
+ {
+ ret = GLEW_EXT_sparse_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_static_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"static_vertex_array", 19))
+ {
+ ret = GLEW_EXT_static_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_clear_tag", 17))
+ {
+ ret = GLEW_EXT_stencil_clear_tag;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_two_side
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_two_side", 16))
+ {
+ ret = GLEW_EXT_stencil_two_side;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_wrap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_wrap", 12))
+ {
+ ret = GLEW_EXT_stencil_wrap;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_subtexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subtexture", 10))
+ {
+ ret = GLEW_EXT_subtexture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_point_size", 23))
+ {
+ ret = GLEW_EXT_tessellation_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_EXT_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture", 7))
+ {
+ ret = GLEW_EXT_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture3D", 9))
+ {
+ ret = GLEW_EXT_texture3D;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_array", 13))
+ {
+ ret = GLEW_EXT_texture_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_EXT_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer", 14))
+ {
+ ret = GLEW_EXT_texture_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21))
+ {
+ ret = GLEW_EXT_texture_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_decode_mode", 36))
+ {
+ ret = GLEW_EXT_texture_compression_astc_decode_mode;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_decode_mode_rgb9e5", 43))
+ {
+ ret = GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_bptc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_bptc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt1", 24))
+ {
+ ret = GLEW_EXT_texture_compression_dxt1;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_latc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_latc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_rgtc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_s3tc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc_srgb", 29))
+ {
+ ret = GLEW_EXT_texture_compression_s3tc_srgb;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_EXT_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_EXT_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18))
+ {
+ ret = GLEW_EXT_texture_edge_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env", 11))
+ {
+ ret = GLEW_EXT_texture_env;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_add
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15))
+ {
+ ret = GLEW_EXT_texture_env_add;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_combine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19))
+ {
+ ret = GLEW_EXT_texture_env_combine;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16))
+ {
+ ret = GLEW_EXT_texture_env_dot3;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_anisotropic", 26))
+ {
+ ret = GLEW_EXT_texture_filter_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_minmax", 21))
+ {
+ ret = GLEW_EXT_texture_filter_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_BGRA8888", 23))
+ {
+ ret = GLEW_EXT_texture_format_BGRA8888;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_sRGB_override", 28))
+ {
+ ret = GLEW_EXT_texture_format_sRGB_override;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_integer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_integer", 15))
+ {
+ ret = GLEW_EXT_texture_integer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16))
+ {
+ ret = GLEW_EXT_texture_lod_bias;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp", 20))
+ {
+ ret = GLEW_EXT_texture_mirror_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp_to_edge", 28))
+ {
+ ret = GLEW_EXT_texture_mirror_clamp_to_edge;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_norm16
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_norm16", 14))
+ {
+ ret = GLEW_EXT_texture_norm16;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_object", 14))
+ {
+ ret = GLEW_EXT_texture_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_perturb_normal", 22))
+ {
+ ret = GLEW_EXT_texture_perturb_normal;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_query_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_lod", 17))
+ {
+ ret = GLEW_EXT_texture_query_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_EXT_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_rg
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rg", 10))
+ {
+ ret = GLEW_EXT_texture_rg;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB", 12))
+ {
+ ret = GLEW_EXT_texture_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_R8", 15))
+ {
+ ret = GLEW_EXT_texture_sRGB_R8;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_RG8", 16))
+ {
+ ret = GLEW_EXT_texture_sRGB_RG8;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_decode", 19))
+ {
+ ret = GLEW_EXT_texture_sRGB_decode;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shadow_lod", 18))
+ {
+ ret = GLEW_EXT_texture_shadow_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shared_exponent", 23))
+ {
+ ret = GLEW_EXT_texture_shared_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_snorm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_snorm", 13))
+ {
+ ret = GLEW_EXT_texture_snorm;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage", 15))
+ {
+ ret = GLEW_EXT_texture_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_compression", 27))
+ {
+ ret = GLEW_EXT_texture_storage_compression;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15))
+ {
+ ret = GLEW_EXT_texture_swizzle;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_type_2_10_10_10_REV", 27))
+ {
+ ret = GLEW_EXT_texture_type_2_10_10_10_REV;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_EXT_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_EXT_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18))
+ {
+ ret = GLEW_EXT_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_unpack_subimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"unpack_subimage", 15))
+ {
+ ret = GLEW_EXT_unpack_subimage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array", 12))
+ {
+ ret = GLEW_EXT_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_bgra", 17))
+ {
+ ret = GLEW_EXT_vertex_array_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_setXXX", 19))
+ {
+ ret = GLEW_EXT_vertex_array_setXXX;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_64bit", 19))
+ {
+ ret = GLEW_EXT_vertex_attrib_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13))
+ {
+ ret = GLEW_EXT_vertex_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_weighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_weighting", 16))
+ {
+ ret = GLEW_EXT_vertex_weighting;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"win32_keyed_mutex", 17))
+ {
+ ret = GLEW_EXT_win32_keyed_mutex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_window_rectangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_rectangles", 17))
+ {
+ ret = GLEW_EXT_window_rectangles;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_x11_sync_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"x11_sync_object", 15))
+ {
+ ret = GLEW_EXT_x11_sync_object;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"FJ_", 3))
+ {
+#ifdef GL_FJ_shader_binary_GCCSO
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary_GCCSO", 19))
+ {
+ ret = GLEW_FJ_shader_binary_GCCSO;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"GREMEDY_", 8))
+ {
+#ifdef GL_GREMEDY_frame_terminator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frame_terminator", 16))
+ {
+ ret = GLEW_GREMEDY_frame_terminator;
+ continue;
+ }
+#endif
+#ifdef GL_GREMEDY_string_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"string_marker", 13))
+ {
+ ret = GLEW_GREMEDY_string_marker;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"HP_", 3))
+ {
+#ifdef GL_HP_convolution_border_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24))
+ {
+ ret = GLEW_HP_convolution_border_modes;
+ continue;
+ }
+#endif
+#ifdef GL_HP_image_transform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_transform", 15))
+ {
+ ret = GLEW_HP_image_transform;
+ continue;
+ }
+#endif
+#ifdef GL_HP_occlusion_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_test", 14))
+ {
+ ret = GLEW_HP_occlusion_test;
+ continue;
+ }
+#endif
+#ifdef GL_HP_texture_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lighting", 16))
+ {
+ ret = GLEW_HP_texture_lighting;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IBM_", 4))
+ {
+#ifdef GL_IBM_cull_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11))
+ {
+ ret = GLEW_IBM_cull_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multimode_draw_arrays", 21))
+ {
+ ret = GLEW_IBM_multimode_draw_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rasterpos_clip", 14))
+ {
+ ret = GLEW_IBM_rasterpos_clip;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_static_data
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"static_data", 11))
+ {
+ ret = GLEW_IBM_static_data;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_IBM_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_lists", 18))
+ {
+ ret = GLEW_IBM_vertex_array_lists;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IMG_", 4))
+ {
+#ifdef GL_IMG_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_IMG_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_downsample", 22))
+ {
+ ret = GLEW_IMG_framebuffer_downsample;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture", 30))
+ {
+ ret = GLEW_IMG_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_IMG_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_read_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format", 11))
+ {
+ ret = GLEW_IMG_read_format;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_IMG_shader_binary;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_pvrtc", 25))
+ {
+ ret = GLEW_IMG_texture_compression_pvrtc;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_pvrtc2", 26))
+ {
+ ret = GLEW_IMG_texture_compression_pvrtc2;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_enhanced_fixed_function", 35))
+ {
+ ret = GLEW_IMG_texture_env_enhanced_fixed_function;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_cubic", 20))
+ {
+ ret = GLEW_IMG_texture_filter_cubic;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_tile_region_protection
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tile_region_protection", 22))
+ {
+ ret = GLEW_IMG_tile_region_protection;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INGR_", 5))
+ {
+#ifdef GL_INGR_color_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_clamp", 11))
+ {
+ ret = GLEW_INGR_color_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_INGR_interlace_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace_read", 14))
+ {
+ ret = GLEW_INGR_interlace_read;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6))
+ {
+#ifdef GL_INTEL_blackhole_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blackhole_render", 16))
+ {
+ ret = GLEW_INTEL_blackhole_render;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_rasterization", 26))
+ {
+ ret = GLEW_INTEL_conservative_rasterization;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_ordering", 24))
+ {
+ ret = GLEW_INTEL_fragment_shader_ordering;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_CMAA", 16))
+ {
+ ret = GLEW_INTEL_framebuffer_CMAA;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_map_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_texture", 11))
+ {
+ ret = GLEW_INTEL_map_texture;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_arrays", 15))
+ {
+ ret = GLEW_INTEL_parallel_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_performance_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"performance_query", 17))
+ {
+ ret = GLEW_INTEL_performance_query;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_functions2", 25))
+ {
+ ret = GLEW_INTEL_shader_integer_functions2;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_texture_scissor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scissor", 15))
+ {
+ ret = GLEW_INTEL_texture_scissor;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KHR_", 4))
+ {
+#ifdef GL_KHR_blend_equation_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced", 23))
+ {
+ ret = GLEW_KHR_blend_equation_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_coherent", 32))
+ {
+ ret = GLEW_KHR_blend_equation_advanced_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = GLEW_KHR_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_debug
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug", 5))
+ {
+ ret = GLEW_KHR_debug;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_error", 8))
+ {
+ ret = GLEW_KHR_no_error;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_shader_compile", 23))
+ {
+ ret = GLEW_KHR_parallel_shader_compile;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robust_buffer_access_behavior", 29))
+ {
+ ret = GLEW_KHR_robust_buffer_access_behavior;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_KHR_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_shader_subgroup
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subgroup", 15))
+ {
+ ret = GLEW_KHR_shader_subgroup;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_hdr", 28))
+ {
+ ret = GLEW_KHR_texture_compression_astc_hdr;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_ldr", 28))
+ {
+ ret = GLEW_KHR_texture_compression_astc_ldr;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_sliced_3d", 34))
+ {
+ ret = GLEW_KHR_texture_compression_astc_sliced_3d;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KTX_", 4))
+ {
+#ifdef GL_KTX_buffer_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13))
+ {
+ ret = GLEW_KTX_buffer_region;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESAX_", 6))
+ {
+#ifdef GL_MESAX_texture_stack
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stack", 13))
+ {
+ ret = GLEW_MESAX_texture_stack;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef GL_MESA_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgra", 4))
+ {
+ ret = GLEW_MESA_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_flip_x", 18))
+ {
+ ret = GLEW_MESA_framebuffer_flip_x;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_flip_y", 18))
+ {
+ ret = GLEW_MESA_framebuffer_flip_y;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_swap_xy", 19))
+ {
+ ret = GLEW_MESA_framebuffer_swap_xy;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_pack_invert
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_invert", 11))
+ {
+ ret = GLEW_MESA_pack_invert;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_program_binary_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary_formats", 22))
+ {
+ ret = GLEW_MESA_program_binary_formats;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_resize_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resize_buffers", 14))
+ {
+ ret = GLEW_MESA_resize_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_functions", 24))
+ {
+ ret = GLEW_MESA_shader_integer_functions;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_tile_raster_order
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tile_raster_order", 17))
+ {
+ ret = GLEW_MESA_tile_raster_order;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_window_pos
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10))
+ {
+ ret = GLEW_MESA_window_pos;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_texture", 13))
+ {
+ ret = GLEW_MESA_ycbcr_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NVX_", 4))
+ {
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_multi_draw_buffers", 42))
+ {
+ ret = GLEW_NVX_blend_equation_advanced_multi_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_conditional_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render", 18))
+ {
+ ret = GLEW_NVX_conditional_render;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_memory_info", 15))
+ {
+ ret = GLEW_NVX_gpu_memory_info;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_multicast2", 14))
+ {
+ ret = GLEW_NVX_gpu_multicast2;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"linked_gpu_multicast", 20))
+ {
+ ret = GLEW_NVX_linked_gpu_multicast;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_progress_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"progress_fence", 14))
+ {
+ ret = GLEW_NVX_progress_fence;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef GL_NV_3dvision_settings
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3dvision_settings", 17))
+ {
+ ret = GLEW_NV_3dvision_settings;
+ continue;
+ }
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_stream_consumer_external", 28))
+ {
+ ret = GLEW_NV_EGL_stream_consumer_external;
+ continue;
+ }
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"alpha_to_coverage_dither_control", 32))
+ {
+ ret = GLEW_NV_alpha_to_coverage_dither_control;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bgr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgr", 3))
+ {
+ ret = GLEW_NV_bgr;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_multi_draw_indirect", 28))
+ {
+ ret = GLEW_NV_bindless_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_multi_draw_indirect_count", 34))
+ {
+ ret = GLEW_NV_bindless_multi_draw_indirect_count;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_NV_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced", 23))
+ {
+ ret = GLEW_NV_blend_equation_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_coherent", 32))
+ {
+ ret = GLEW_NV_blend_equation_advanced_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax_factor", 19))
+ {
+ ret = GLEW_NV_blend_minmax_factor;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_square
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_square", 12))
+ {
+ ret = GLEW_NV_blend_square;
+ continue;
+ }
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_space_w_scaling", 20))
+ {
+ ret = GLEW_NV_clip_space_w_scaling;
+ continue;
+ }
+#endif
+#ifdef GL_NV_command_list
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"command_list", 12))
+ {
+ ret = GLEW_NV_command_list;
+ continue;
+ }
+#endif
+#ifdef GL_NV_compute_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_program5", 16))
+ {
+ ret = GLEW_NV_compute_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_shader_derivatives", 26))
+ {
+ ret = GLEW_NV_compute_shader_derivatives;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conditional_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render", 18))
+ {
+ ret = GLEW_NV_conditional_render;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster", 19))
+ {
+ ret = GLEW_NV_conservative_raster;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_dilate", 26))
+ {
+ ret = GLEW_NV_conservative_raster_dilate;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_pre_snap", 28))
+ {
+ ret = GLEW_NV_conservative_raster_pre_snap;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_pre_snap_triangles", 38))
+ {
+ ret = GLEW_NV_conservative_raster_pre_snap_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_underestimation", 35))
+ {
+ ret = GLEW_NV_conservative_raster_underestimation;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLEW_NV_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_depth_to_color", 19))
+ {
+ ret = GLEW_NV_copy_depth_to_color;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_deep_texture3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"deep_texture3D", 14))
+ {
+ ret = GLEW_NV_deep_texture3D;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18))
+ {
+ ret = GLEW_NV_depth_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_NV_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_nonlinear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_nonlinear", 15))
+ {
+ ret = GLEW_NV_depth_nonlinear;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_range_unclamped", 21))
+ {
+ ret = GLEW_NV_depth_range_unclamped;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_NV_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_NV_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_texture", 12))
+ {
+ ret = GLEW_NV_draw_texture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_vulkan_image", 17))
+ {
+ ret = GLEW_NV_draw_vulkan_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_evaluators
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"evaluators", 10))
+ {
+ ret = GLEW_NV_evaluators;
+ continue;
+ }
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_attrib_location", 24))
+ {
+ ret = GLEW_NV_explicit_attrib_location;
+ continue;
+ }
+#endif
+#ifdef GL_NV_explicit_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_multisample", 20))
+ {
+ ret = GLEW_NV_explicit_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbo_color_attachments", 21))
+ {
+ ret = GLEW_NV_fbo_color_attachments;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5))
+ {
+ ret = GLEW_NV_fence;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fill_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fill_rectangle", 14))
+ {
+ ret = GLEW_NV_fill_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = GLEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fog_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_distance", 12))
+ {
+ ret = GLEW_NV_fog_distance;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_coverage_to_color", 26))
+ {
+ ret = GLEW_NV_fragment_coverage_to_color;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16))
+ {
+ ret = GLEW_NV_fragment_program;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program2", 17))
+ {
+ ret = GLEW_NV_fragment_program2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program4", 17))
+ {
+ ret = GLEW_NV_fragment_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program_option
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_option", 23))
+ {
+ ret = GLEW_NV_fragment_program_option;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_barycentric", 27))
+ {
+ ret = GLEW_NV_fragment_shader_barycentric;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_interlock", 25))
+ {
+ ret = GLEW_NV_fragment_shader_interlock;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_NV_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_mixed_samples", 25))
+ {
+ ret = GLEW_NV_framebuffer_mixed_samples;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_NV_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_coverage", 32))
+ {
+ ret = GLEW_NV_framebuffer_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"generate_mipmap_sRGB", 20))
+ {
+ ret = GLEW_NV_generate_mipmap_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_program4", 17))
+ {
+ ret = GLEW_NV_geometry_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_NV_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader_passthrough", 27))
+ {
+ ret = GLEW_NV_geometry_shader_passthrough;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_multicast
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_multicast", 13))
+ {
+ ret = GLEW_NV_gpu_multicast;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program4", 12))
+ {
+ ret = GLEW_NV_gpu_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program5", 12))
+ {
+ ret = GLEW_NV_gpu_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program5_mem_extended", 25))
+ {
+ ret = GLEW_NV_gpu_program5_mem_extended;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_fp64", 16))
+ {
+ ret = GLEW_NV_gpu_program_fp64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_NV_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float", 10))
+ {
+ ret = GLEW_NV_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_image_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_formats", 13))
+ {
+ ret = GLEW_NV_image_formats;
+ continue;
+ }
+#endif
+#ifdef GL_NV_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_NV_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_sample_query", 27))
+ {
+ ret = GLEW_NV_internalformat_sample_query;
+ continue;
+ }
+#endif
+#ifdef GL_NV_light_max_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_max_exponent", 18))
+ {
+ ret = GLEW_NV_light_max_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_NV_memory_attachment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_attachment", 17))
+ {
+ ret = GLEW_NV_memory_attachment;
+ continue;
+ }
+#endif
+#ifdef GL_NV_memory_object_sparse
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_sparse", 20))
+ {
+ ret = GLEW_NV_memory_object_sparse;
+ continue;
+ }
+#endif
+#ifdef GL_NV_mesh_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mesh_shader", 11))
+ {
+ ret = GLEW_NV_mesh_shader;
+ continue;
+ }
+#endif
+#ifdef GL_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = GLEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_filter_hint", 23))
+ {
+ ret = GLEW_NV_multisample_filter_hint;
+ continue;
+ }
+#endif
+#ifdef GL_NV_non_square_matrices
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"non_square_matrices", 19))
+ {
+ ret = GLEW_NV_non_square_matrices;
+ continue;
+ }
+#endif
+#ifdef GL_NV_occlusion_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15))
+ {
+ ret = GLEW_NV_occlusion_query;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pack_subimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_subimage", 13))
+ {
+ ret = GLEW_NV_pack_subimage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_NV_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float", 12))
+ {
+ ret = GLEW_NV_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_float_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float_linear", 19))
+ {
+ ret = GLEW_NV_packed_float_linear;
+ continue;
+ }
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parameter_buffer_object", 23))
+ {
+ ret = GLEW_NV_parameter_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parameter_buffer_object2", 24))
+ {
+ ret = GLEW_NV_parameter_buffer_object2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_path_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"path_rendering", 14))
+ {
+ ret = GLEW_NV_path_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"path_rendering_shared_edge", 26))
+ {
+ ret = GLEW_NV_path_rendering_shared_edge;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_NV_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pixel_data_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_data_range", 16))
+ {
+ ret = GLEW_NV_pixel_data_range;
+ continue;
+ }
+#endif
+#ifdef GL_NV_platform_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_binary", 15))
+ {
+ ret = GLEW_NV_platform_binary;
+ continue;
+ }
+#endif
+#ifdef GL_NV_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_NV_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_NV_polygon_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_mode", 12))
+ {
+ ret = GLEW_NV_polygon_mode;
+ continue;
+ }
+#endif
+#ifdef GL_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = GLEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef GL_NV_primitive_restart
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_restart", 17))
+ {
+ ret = GLEW_NV_primitive_restart;
+ continue;
+ }
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_shading_rate", 22))
+ {
+ ret = GLEW_NV_primitive_shading_rate;
+ continue;
+ }
+#endif
+#ifdef GL_NV_query_resource_tag
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_resource_tag", 18))
+ {
+ ret = GLEW_NV_query_resource_tag;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_buffer", 11))
+ {
+ ret = GLEW_NV_read_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_buffer_front
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_buffer_front", 17))
+ {
+ ret = GLEW_NV_read_buffer_front;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_depth", 10))
+ {
+ ret = GLEW_NV_read_depth;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_depth_stencil", 18))
+ {
+ ret = GLEW_NV_read_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_stencil", 12))
+ {
+ ret = GLEW_NV_read_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_register_combiners
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners", 18))
+ {
+ ret = GLEW_NV_register_combiners;
+ continue;
+ }
+#endif
+#ifdef GL_NV_register_combiners2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners2", 19))
+ {
+ ret = GLEW_NV_register_combiners2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_representative_fragment_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"representative_fragment_test", 28))
+ {
+ ret = GLEW_NV_representative_fragment_test;
+ continue;
+ }
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = GLEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sRGB_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB_formats", 12))
+ {
+ ret = GLEW_NV_sRGB_formats;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sample_locations
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_locations", 16))
+ {
+ ret = GLEW_NV_sample_locations;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_mask_override_coverage", 29))
+ {
+ ret = GLEW_NV_sample_mask_override_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_scissor_exclusive
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scissor_exclusive", 17))
+ {
+ ret = GLEW_NV_scissor_exclusive;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counters", 22))
+ {
+ ret = GLEW_NV_shader_atomic_counters;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_float", 19))
+ {
+ ret = GLEW_NV_shader_atomic_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_float64", 21))
+ {
+ ret = GLEW_NV_shader_atomic_float64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_fp16_vector", 25))
+ {
+ ret = GLEW_NV_shader_atomic_fp16_vector;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_int64", 19))
+ {
+ ret = GLEW_NV_shader_atomic_int64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_buffer_load
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_buffer_load", 18))
+ {
+ ret = GLEW_NV_shader_buffer_load;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_noperspective_interpolation", 34))
+ {
+ ret = GLEW_NV_shader_noperspective_interpolation;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_storage_buffer_object", 28))
+ {
+ ret = GLEW_NV_shader_storage_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subgroup_partitioned", 27))
+ {
+ ret = GLEW_NV_shader_subgroup_partitioned;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_footprint", 24))
+ {
+ ret = GLEW_NV_shader_texture_footprint;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_thread_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_thread_group", 19))
+ {
+ ret = GLEW_NV_shader_thread_group;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_thread_shuffle", 21))
+ {
+ ret = GLEW_NV_shader_thread_shuffle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shading_rate_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_rate_image", 18))
+ {
+ ret = GLEW_NV_shading_rate_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers_array", 21))
+ {
+ ret = GLEW_NV_shadow_samplers_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers_cube", 20))
+ {
+ ret = GLEW_NV_shadow_samplers_cube;
+ continue;
+ }
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_view_rendering", 21))
+ {
+ ret = GLEW_NV_stereo_view_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_NV_tessellation_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_program5", 21))
+ {
+ ret = GLEW_NV_tessellation_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texgen_emboss
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_emboss", 13))
+ {
+ ret = GLEW_NV_texgen_emboss;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texgen_reflection
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_reflection", 17))
+ {
+ ret = GLEW_NV_texgen_reflection;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_array", 13))
+ {
+ ret = GLEW_NV_texture_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_barrier", 15))
+ {
+ ret = GLEW_NV_texture_barrier;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_NV_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_latc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_latc", 24))
+ {
+ ret = GLEW_NV_texture_compression_latc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc", 24))
+ {
+ ret = GLEW_NV_texture_compression_s3tc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc_update", 31))
+ {
+ ret = GLEW_NV_texture_compression_s3tc_update;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_vtc", 23))
+ {
+ ret = GLEW_NV_texture_compression_vtc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_env_combine4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine4", 20))
+ {
+ ret = GLEW_NV_texture_env_combine4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_expand_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_expand_normal", 21))
+ {
+ ret = GLEW_NV_texture_expand_normal;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multisample", 19))
+ {
+ ret = GLEW_NV_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_npot_2D_mipmap", 22))
+ {
+ ret = GLEW_NV_texture_npot_2D_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_NV_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle_compressed", 28))
+ {
+ ret = GLEW_NV_texture_rectangle_compressed;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader", 14))
+ {
+ ret = GLEW_NV_texture_shader;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader2", 15))
+ {
+ ret = GLEW_NV_texture_shader2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader3", 15))
+ {
+ ret = GLEW_NV_texture_shader3;
+ continue;
+ }
+#endif
+#ifdef GL_NV_timeline_semaphore
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timeline_semaphore", 18))
+ {
+ ret = GLEW_NV_timeline_semaphore;
+ continue;
+ }
+#endif
+#ifdef GL_NV_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18))
+ {
+ ret = GLEW_NV_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_NV_transform_feedback2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback2", 19))
+ {
+ ret = GLEW_NV_transform_feedback2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"uniform_buffer_unified_memory", 29))
+ {
+ ret = GLEW_NV_uniform_buffer_unified_memory;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vdpau_interop
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vdpau_interop", 13))
+ {
+ ret = GLEW_NV_vdpau_interop;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vdpau_interop2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vdpau_interop2", 14))
+ {
+ ret = GLEW_NV_vdpau_interop2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_array_range2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range2", 19))
+ {
+ ret = GLEW_NV_vertex_array_range2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_integer_64bit", 27))
+ {
+ ret = GLEW_NV_vertex_attrib_integer_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_unified_memory", 28))
+ {
+ ret = GLEW_NV_vertex_buffer_unified_memory;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14))
+ {
+ ret = GLEW_NV_vertex_program;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program1_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program1_1", 17))
+ {
+ ret = GLEW_NV_vertex_program1_1;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2", 15))
+ {
+ ret = GLEW_NV_vertex_program2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program2_option
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2_option", 22))
+ {
+ ret = GLEW_NV_vertex_program2_option;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program3", 15))
+ {
+ ret = GLEW_NV_vertex_program3;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program4", 15))
+ {
+ ret = GLEW_NV_vertex_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = GLEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array", 14))
+ {
+ ret = GLEW_NV_viewport_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_array2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array2", 15))
+ {
+ ret = GLEW_NV_viewport_array2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_swizzle", 16))
+ {
+ ret = GLEW_NV_viewport_swizzle;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OES_", 4))
+ {
+#ifdef GL_OES_EGL_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image", 9))
+ {
+ ret = GLEW_OES_EGL_image;
+ continue;
+ }
+#endif
+#ifdef GL_OES_EGL_image_external
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external", 18))
+ {
+ ret = GLEW_OES_EGL_image_external;
+ continue;
+ }
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external_essl3", 24))
+ {
+ ret = GLEW_OES_EGL_image_external_essl3;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_equation_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_separate", 23))
+ {
+ ret = GLEW_OES_blend_equation_separate;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_func_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_separate", 19))
+ {
+ ret = GLEW_OES_blend_func_separate;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_subtract
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_subtract", 14))
+ {
+ ret = GLEW_OES_blend_subtract;
+ continue;
+ }
+#endif
+#ifdef GL_OES_byte_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"byte_coordinates", 16))
+ {
+ ret = GLEW_OES_byte_coordinates;
+ continue;
+ }
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ETC1_RGB8_texture", 28))
+ {
+ ret = GLEW_OES_compressed_ETC1_RGB8_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_paletted_texture", 27))
+ {
+ ret = GLEW_OES_compressed_paletted_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_OES_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth24
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth24", 7))
+ {
+ ret = GLEW_OES_depth24;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth32", 7))
+ {
+ ret = GLEW_OES_depth32;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_OES_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture_cube_map", 22))
+ {
+ ret = GLEW_OES_depth_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_indexed", 20))
+ {
+ ret = GLEW_OES_draw_buffers_indexed;
+ continue;
+ }
+#endif
+#ifdef GL_OES_draw_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_texture", 12))
+ {
+ ret = GLEW_OES_draw_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_element_index_uint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_index_uint", 18))
+ {
+ ret = GLEW_OES_element_index_uint;
+ continue;
+ }
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_matrix_palette", 23))
+ {
+ ret = GLEW_OES_extended_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbo_render_mipmap", 17))
+ {
+ ret = GLEW_OES_fbo_render_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_OES_fragment_precision_high
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_precision_high", 23))
+ {
+ ret = GLEW_OES_fragment_precision_high;
+ continue;
+ }
+#endif
+#ifdef GL_OES_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_OES_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_OES_geometry_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_point_size", 19))
+ {
+ ret = GLEW_OES_geometry_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_OES_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader", 15))
+ {
+ ret = GLEW_OES_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_OES_get_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_program_binary", 18))
+ {
+ ret = GLEW_OES_get_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_OES_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_OES_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_OES_mapbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mapbuffer", 9))
+ {
+ ret = GLEW_OES_mapbuffer;
+ continue;
+ }
+#endif
+#ifdef GL_OES_matrix_get
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_get", 10))
+ {
+ ret = GLEW_OES_matrix_get;
+ continue;
+ }
+#endif
+#ifdef GL_OES_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_palette", 14))
+ {
+ ret = GLEW_OES_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_OES_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_OES_point_size_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_size_array", 16))
+ {
+ ret = GLEW_OES_point_size_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_OES_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_OES_read_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format", 11))
+ {
+ ret = GLEW_OES_read_format;
+ continue;
+ }
+#endif
+#ifdef GL_OES_required_internalformat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"required_internalformat", 23))
+ {
+ ret = GLEW_OES_required_internalformat;
+ continue;
+ }
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgb8_rgba8", 10))
+ {
+ ret = GLEW_OES_rgb8_rgba8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_sample_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_shading", 14))
+ {
+ ret = GLEW_OES_sample_shading;
+ continue;
+ }
+#endif
+#ifdef GL_OES_sample_variables
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_variables", 16))
+ {
+ ret = GLEW_OES_sample_variables;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_image_atomic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_atomic", 19))
+ {
+ ret = GLEW_OES_shader_image_atomic;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_io_blocks
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_io_blocks", 16))
+ {
+ ret = GLEW_OES_shader_io_blocks;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_multisample_interpolation", 32))
+ {
+ ret = GLEW_OES_shader_multisample_interpolation;
+ continue;
+ }
+#endif
+#ifdef GL_OES_single_precision
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"single_precision", 16))
+ {
+ ret = GLEW_OES_single_precision;
+ continue;
+ }
+#endif
+#ifdef GL_OES_standard_derivatives
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"standard_derivatives", 20))
+ {
+ ret = GLEW_OES_standard_derivatives;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil1", 8))
+ {
+ ret = GLEW_OES_stencil1;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil4", 8))
+ {
+ ret = GLEW_OES_stencil4;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil8", 8))
+ {
+ ret = GLEW_OES_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_surfaceless_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surfaceless_context", 19))
+ {
+ ret = GLEW_OES_surfaceless_context;
+ continue;
+ }
+#endif
+#ifdef GL_OES_tessellation_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_point_size", 23))
+ {
+ ret = GLEW_OES_tessellation_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_OES_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_OES_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_3D", 10))
+ {
+ ret = GLEW_OES_texture_3D;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_OES_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer", 14))
+ {
+ ret = GLEW_OES_texture_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_compression_astc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc", 24))
+ {
+ ret = GLEW_OES_texture_compression_astc;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_OES_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_OES_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_crossbar", 20))
+ {
+ ret = GLEW_OES_texture_env_crossbar;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_OES_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_npot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_npot", 12))
+ {
+ ret = GLEW_OES_texture_npot;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stencil8", 16))
+ {
+ ret = GLEW_OES_texture_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_multisample_2d_array", 36))
+ {
+ ret = GLEW_OES_texture_storage_multisample_2d_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_OES_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_OES_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_half_float", 17))
+ {
+ ret = GLEW_OES_vertex_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_10_10_10_2", 22))
+ {
+ ret = GLEW_OES_vertex_type_10_10_10_2;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef GL_OML_interlace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9))
+ {
+ ret = GLEW_OML_interlace;
+ continue;
+ }
+#endif
+#ifdef GL_OML_resample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8))
+ {
+ ret = GLEW_OML_resample;
+ continue;
+ }
+#endif
+#ifdef GL_OML_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subsample", 9))
+ {
+ ret = GLEW_OML_subsample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OVR_", 4))
+ {
+#ifdef GL_OVR_multiview
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview", 9))
+ {
+ ret = GLEW_OVR_multiview;
+ continue;
+ }
+#endif
+#ifdef GL_OVR_multiview2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview2", 10))
+ {
+ ret = GLEW_OVR_multiview2;
+ continue;
+ }
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_multisampled_render_to_texture", 40))
+ {
+ ret = GLEW_OVR_multiview_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"PGI_", 4))
+ {
+#ifdef GL_PGI_misc_hints
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_hints", 10))
+ {
+ ret = GLEW_PGI_misc_hints;
+ continue;
+ }
+#endif
+#ifdef GL_PGI_vertex_hints
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_hints", 12))
+ {
+ ret = GLEW_PGI_vertex_hints;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"QCOM_", 5))
+ {
+#ifdef GL_QCOM_YUV_texture_gather
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"YUV_texture_gather", 18))
+ {
+ ret = GLEW_QCOM_YUV_texture_gather;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_alpha_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"alpha_test", 10))
+ {
+ ret = GLEW_QCOM_alpha_test;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_binning_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"binning_control", 15))
+ {
+ ret = GLEW_QCOM_binning_control;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_driver_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"driver_control", 14))
+ {
+ ret = GLEW_QCOM_driver_control;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_extended_get
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_get", 12))
+ {
+ ret = GLEW_QCOM_extended_get;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_extended_get2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_get2", 13))
+ {
+ ret = GLEW_QCOM_extended_get2;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frame_extrapolation", 19))
+ {
+ ret = GLEW_QCOM_frame_extrapolation;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_foveated", 20))
+ {
+ ret = GLEW_QCOM_framebuffer_foveated;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_motion_estimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"motion_estimation", 17))
+ {
+ ret = GLEW_QCOM_motion_estimation;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"perfmon_global_mode", 19))
+ {
+ ret = GLEW_QCOM_perfmon_global_mode;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_shared_exponent", 22))
+ {
+ ret = GLEW_QCOM_render_shared_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_noncoherent", 36))
+ {
+ ret = GLEW_QCOM_shader_framebuffer_fetch_noncoherent;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_rate", 29))
+ {
+ ret = GLEW_QCOM_shader_framebuffer_fetch_rate;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shading_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_rate", 12))
+ {
+ ret = GLEW_QCOM_shading_rate;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated", 16))
+ {
+ ret = GLEW_QCOM_texture_foveated;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated2", 17))
+ {
+ ret = GLEW_QCOM_texture_foveated2;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated_subsampled_layout", 34))
+ {
+ ret = GLEW_QCOM_texture_foveated_subsampled_layout;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tiled_rendering", 15))
+ {
+ ret = GLEW_QCOM_tiled_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"writeonly_rendering", 19))
+ {
+ ret = GLEW_QCOM_writeonly_rendering;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"REGAL_", 6))
+ {
+#ifdef GL_REGAL_ES1_0_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES1_0_compatibility", 19))
+ {
+ ret = GLEW_REGAL_ES1_0_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES1_1_compatibility", 19))
+ {
+ ret = GLEW_REGAL_ES1_1_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_enable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"enable", 6))
+ {
+ ret = GLEW_REGAL_enable;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_error_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"error_string", 12))
+ {
+ ret = GLEW_REGAL_error_string;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_extension_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extension_query", 15))
+ {
+ ret = GLEW_REGAL_extension_query;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_log
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"log", 3))
+ {
+ ret = GLEW_REGAL_log;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_proc_address
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"proc_address", 12))
+ {
+ ret = GLEW_REGAL_proc_address;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"REND_", 5))
+ {
+#ifdef GL_REND_screen_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"screen_coordinates", 18))
+ {
+ ret = GLEW_REND_screen_coordinates;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"S3_", 3))
+ {
+#ifdef GL_S3_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"s3tc", 4))
+ {
+ ret = GLEW_S3_s3tc;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5))
+ {
+#ifdef GL_SGIS_clip_band_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_band_hint", 14))
+ {
+ ret = GLEW_SGIS_clip_band_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_color_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11))
+ {
+ ret = GLEW_SGIS_color_range;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_detail_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"detail_texture", 14))
+ {
+ ret = GLEW_SGIS_detail_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_fog_function
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_function", 12))
+ {
+ ret = GLEW_SGIS_fog_function;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"generate_mipmap", 15))
+ {
+ ret = GLEW_SGIS_generate_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_line_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"line_texgen", 11))
+ {
+ ret = GLEW_SGIS_line_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_SGIS_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_multitexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multitexture", 12))
+ {
+ ret = GLEW_SGIS_multitexture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13))
+ {
+ ret = GLEW_SGIS_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_line_texgen", 17))
+ {
+ ret = GLEW_SGIS_point_line_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_shared_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_multisample", 18))
+ {
+ ret = GLEW_SGIS_shared_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sharpen_texture", 15))
+ {
+ ret = GLEW_SGIS_sharpen_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture4D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture4D", 9))
+ {
+ ret = GLEW_SGIS_texture4D;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_SGIS_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18))
+ {
+ ret = GLEW_SGIS_texture_edge_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_filter4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter4", 15))
+ {
+ ret = GLEW_SGIS_texture_filter4;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod", 11))
+ {
+ ret = GLEW_SGIS_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_select
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_select", 14))
+ {
+ ret = GLEW_SGIS_texture_select;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5))
+ {
+#ifdef GL_SGIX_async
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async", 5))
+ {
+ ret = GLEW_SGIX_async;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_async_histogram
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_histogram", 15))
+ {
+ ret = GLEW_SGIX_async_histogram;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_async_pixel
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_pixel", 11))
+ {
+ ret = GLEW_SGIX_async_pixel;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_g_instruments", 18))
+ {
+ ret = GLEW_SGIX_bali_g_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_r_instruments", 18))
+ {
+ ret = GLEW_SGIX_bali_r_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_timer_instruments", 22))
+ {
+ ret = GLEW_SGIX_bali_timer_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_alpha_minmax", 18))
+ {
+ ret = GLEW_SGIX_blend_alpha_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_cadd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_cadd", 10))
+ {
+ ret = GLEW_SGIX_blend_cadd;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_cmultiply", 15))
+ {
+ ret = GLEW_SGIX_blend_cmultiply;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"calligraphic_fragment", 21))
+ {
+ ret = GLEW_SGIX_calligraphic_fragment;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_clipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clipmap", 7))
+ {
+ ret = GLEW_SGIX_clipmap;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_matrix_accuracy", 21))
+ {
+ ret = GLEW_SGIX_color_matrix_accuracy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_table_index_mode", 22))
+ {
+ ret = GLEW_SGIX_color_table_index_mode;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_complex_polar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex_polar", 13))
+ {
+ ret = GLEW_SGIX_complex_polar;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_accuracy", 20))
+ {
+ ret = GLEW_SGIX_convolution_accuracy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cube_map", 8))
+ {
+ ret = GLEW_SGIX_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cylinder_texgen", 15))
+ {
+ ret = GLEW_SGIX_cylinder_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_datapipe
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"datapipe", 8))
+ {
+ ret = GLEW_SGIX_datapipe;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_decimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"decimation", 10))
+ {
+ ret = GLEW_SGIX_decimation;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_pass_instrument", 21))
+ {
+ ret = GLEW_SGIX_depth_pass_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_SGIX_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_dvc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"dvc", 3))
+ {
+ ret = GLEW_SGIX_dvc;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_flush_raster
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_raster", 12))
+ {
+ ret = GLEW_SGIX_flush_raster;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_blend", 9))
+ {
+ ret = GLEW_SGIX_fog_blend;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_factor_to_alpha", 19))
+ {
+ ret = GLEW_SGIX_fog_factor_to_alpha;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_layers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_layers", 10))
+ {
+ ret = GLEW_SGIX_fog_layers;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_offset", 10))
+ {
+ ret = GLEW_SGIX_fog_offset;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_patchy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_patchy", 10))
+ {
+ ret = GLEW_SGIX_fog_patchy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_scale
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_scale", 9))
+ {
+ ret = GLEW_SGIX_fog_scale;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_texture", 11))
+ {
+ ret = GLEW_SGIX_fog_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_lighting_space", 23))
+ {
+ ret = GLEW_SGIX_fragment_lighting_space;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_specular_lighting", 26))
+ {
+ ret = GLEW_SGIX_fragment_specular_lighting;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragments_instrument", 20))
+ {
+ ret = GLEW_SGIX_fragments_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_framezoom
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framezoom", 9))
+ {
+ ret = GLEW_SGIX_framezoom;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_icc_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"icc_texture", 11))
+ {
+ ret = GLEW_SGIX_icc_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_igloo_interface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"igloo_interface", 15))
+ {
+ ret = GLEW_SGIX_igloo_interface;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_image_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_compression", 17))
+ {
+ ret = GLEW_SGIX_image_compression;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"impact_pixel_texture", 20))
+ {
+ ret = GLEW_SGIX_impact_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_instrument_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instrument_error", 16))
+ {
+ ret = GLEW_SGIX_instrument_error;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_interlace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9))
+ {
+ ret = GLEW_SGIX_interlace;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ir_instrument1", 14))
+ {
+ ret = GLEW_SGIX_ir_instrument1;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"line_quality_hint", 17))
+ {
+ ret = GLEW_SGIX_line_quality_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_list_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"list_priority", 13))
+ {
+ ret = GLEW_SGIX_list_priority;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_mpeg1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mpeg1", 5))
+ {
+ ret = GLEW_SGIX_mpeg1;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_mpeg2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mpeg2", 5))
+ {
+ ret = GLEW_SGIX_mpeg2;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"nonlinear_lighting_pervertex", 28))
+ {
+ ret = GLEW_SGIX_nonlinear_lighting_pervertex;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"nurbs_eval", 10))
+ {
+ ret = GLEW_SGIX_nurbs_eval;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_instrument", 20))
+ {
+ ret = GLEW_SGIX_occlusion_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_6bytes", 13))
+ {
+ ret = GLEW_SGIX_packed_6bytes;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13))
+ {
+ ret = GLEW_SGIX_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture_bits", 18))
+ {
+ ret = GLEW_SGIX_pixel_texture_bits;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture_lod", 17))
+ {
+ ret = GLEW_SGIX_pixel_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_tiles", 11))
+ {
+ ret = GLEW_SGIX_pixel_tiles;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polynomial_ffd", 14))
+ {
+ ret = GLEW_SGIX_polynomial_ffd;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_quad_mesh
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"quad_mesh", 9))
+ {
+ ret = GLEW_SGIX_quad_mesh;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_reference_plane
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"reference_plane", 15))
+ {
+ ret = GLEW_SGIX_reference_plane;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_resample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8))
+ {
+ ret = GLEW_SGIX_resample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scalebias_hint", 14))
+ {
+ ret = GLEW_SGIX_scalebias_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6))
+ {
+ ret = GLEW_SGIX_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14))
+ {
+ ret = GLEW_SGIX_shadow_ambient;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_slim
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"slim", 4))
+ {
+ ret = GLEW_SGIX_slim;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"spotlight_cutoff", 16))
+ {
+ ret = GLEW_SGIX_spotlight_cutoff;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sprite", 6))
+ {
+ ret = GLEW_SGIX_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subdiv_patch", 12))
+ {
+ ret = GLEW_SGIX_subdiv_patch;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subsample", 9))
+ {
+ ret = GLEW_SGIX_subsample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tag_sample_buffer", 17))
+ {
+ ret = GLEW_SGIX_tag_sample_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_add_env
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_add_env", 15))
+ {
+ ret = GLEW_SGIX_texture_add_env;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_coordinate_clamp", 24))
+ {
+ ret = GLEW_SGIX_texture_coordinate_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16))
+ {
+ ret = GLEW_SGIX_texture_lod_bias;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mipmap_anisotropic", 26))
+ {
+ ret = GLEW_SGIX_texture_mipmap_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multi_buffer", 20))
+ {
+ ret = GLEW_SGIX_texture_multi_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_phase
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_phase", 13))
+ {
+ ret = GLEW_SGIX_texture_phase;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13))
+ {
+ ret = GLEW_SGIX_texture_range;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scale_bias", 18))
+ {
+ ret = GLEW_SGIX_texture_scale_bias;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_supersample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_supersample", 19))
+ {
+ ret = GLEW_SGIX_texture_supersample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vector_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vector_ops", 10))
+ {
+ ret = GLEW_SGIX_vector_ops;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_SGIX_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip", 14))
+ {
+ ret = GLEW_SGIX_vertex_preclip;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip_hint", 19))
+ {
+ ret = GLEW_SGIX_vertex_preclip_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcb", 5))
+ {
+ ret = GLEW_SGIX_ycrcb;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcb_subsample", 15))
+ {
+ ret = GLEW_SGIX_ycrcb_subsample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcba
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcba", 6))
+ {
+ ret = GLEW_SGIX_ycrcba;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4))
+ {
+#ifdef GL_SGI_color_matrix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_matrix", 12))
+ {
+ ret = GLEW_SGI_color_matrix;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_table", 11))
+ {
+ ret = GLEW_SGI_color_table;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_complex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex", 7))
+ {
+ ret = GLEW_SGI_complex;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_complex_type
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex_type", 12))
+ {
+ ret = GLEW_SGI_complex_type;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_fft
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fft", 3))
+ {
+ ret = GLEW_SGI_fft;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_texture_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_color_table", 19))
+ {
+ ret = GLEW_SGI_texture_color_table;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUNX_", 5))
+ {
+#ifdef GL_SUNX_constant_data
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"constant_data", 13))
+ {
+ ret = GLEW_SUNX_constant_data;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4))
+ {
+#ifdef GL_SUN_convolution_border_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24))
+ {
+ ret = GLEW_SUN_convolution_border_modes;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_global_alpha
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"global_alpha", 12))
+ {
+ ret = GLEW_SUN_global_alpha;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_mesh_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mesh_array", 10))
+ {
+ ret = GLEW_SUN_mesh_array;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_read_video_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_video_pixels", 17))
+ {
+ ret = GLEW_SUN_read_video_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_slice_accum
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"slice_accum", 11))
+ {
+ ret = GLEW_SUN_slice_accum;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_triangle_list
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"triangle_list", 13))
+ {
+ ret = GLEW_SUN_triangle_list;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex", 6))
+ {
+ ret = GLEW_SUN_vertex;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VIV_", 4))
+ {
+#ifdef GL_VIV_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_VIV_shader_binary;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"WIN_", 4))
+ {
+#ifdef GL_WIN_phong_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"phong_shading", 13))
+ {
+ ret = GLEW_WIN_phong_shading;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_markerXXX", 15))
+ {
+ ret = GLEW_WIN_scene_markerXXX;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_specular_fog
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_fog", 12))
+ {
+ ret = GLEW_WIN_specular_fog;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_swap_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_hint", 9))
+ {
+ ret = GLEW_WIN_swap_hint;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"WGL_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef WGL_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_3DFX_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DL_", 4))
+ {
+#ifdef WGL_3DL_stereo_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_control", 14))
+ {
+ ret = WGLEW_3DL_stereo_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef WGL_AMD_gpu_association
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_association", 15))
+ {
+ ret = WGLEW_AMD_gpu_association;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef WGL_ARB_buffer_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13))
+ {
+ ret = WGLEW_ARB_buffer_region;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = WGLEW_ARB_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = WGLEW_ARB_create_context;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = WGLEW_ARB_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_profile", 22))
+ {
+ ret = WGLEW_ARB_create_context_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = WGLEW_ARB_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_extensions_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17))
+ {
+ ret = WGLEW_ARB_extensions_string;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = WGLEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = WGLEW_ARB_make_current_read;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = WGLEW_ARB_pbuffer;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pixel_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12))
+ {
+ ret = WGLEW_ARB_pixel_format;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = WGLEW_ARB_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_render_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14))
+ {
+ ret = WGLEW_ARB_render_texture;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = WGLEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = WGLEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef WGL_ATI_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = WGLEW_ATI_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef WGL_ATI_render_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24))
+ {
+ ret = WGLEW_ATI_render_texture_rectangle;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef WGL_EXT_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"colorspace", 10))
+ {
+ ret = WGLEW_EXT_colorspace;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_create_context_es2_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es2_profile", 26))
+ {
+ ret = WGLEW_EXT_create_context_es2_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_create_context_es_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es_profile", 25))
+ {
+ ret = WGLEW_EXT_create_context_es_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_depth_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_float", 11))
+ {
+ ret = WGLEW_EXT_depth_float;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_display_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"display_color_table", 19))
+ {
+ ret = WGLEW_EXT_display_color_table;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_extensions_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17))
+ {
+ ret = WGLEW_EXT_extensions_string;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = WGLEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = WGLEW_EXT_make_current_read;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_EXT_multisample;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = WGLEW_EXT_pbuffer;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pixel_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12))
+ {
+ ret = WGLEW_EXT_pixel_format;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pixel_format_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_packed_float", 25))
+ {
+ ret = WGLEW_EXT_pixel_format_packed_float;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = WGLEW_EXT_swap_control;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_swap_control_tear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control_tear", 17))
+ {
+ ret = WGLEW_EXT_swap_control_tear;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"I3D_", 4))
+ {
+#ifdef WGL_I3D_digital_video_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"digital_video_control", 21))
+ {
+ ret = WGLEW_I3D_digital_video_control;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_gamma
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gamma", 5))
+ {
+ ret = WGLEW_I3D_gamma;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_genlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"genlock", 7))
+ {
+ ret = WGLEW_I3D_genlock;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_image_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_buffer", 12))
+ {
+ ret = WGLEW_I3D_image_buffer;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_swap_frame_lock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_lock", 15))
+ {
+ ret = WGLEW_I3D_swap_frame_lock;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_swap_frame_usage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_usage", 16))
+ {
+ ret = WGLEW_I3D_swap_frame_usage;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef WGL_NV_DX_interop
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"DX_interop", 10))
+ {
+ ret = WGLEW_NV_DX_interop;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_DX_interop2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"DX_interop2", 11))
+ {
+ ret = WGLEW_NV_DX_interop2;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = WGLEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_delay_before_swap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"delay_before_swap", 17))
+ {
+ ret = WGLEW_NV_delay_before_swap;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = WGLEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_gpu_affinity
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_affinity", 12))
+ {
+ ret = WGLEW_NV_gpu_affinity;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_multigpu_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multigpu_context", 16))
+ {
+ ret = WGLEW_NV_multigpu_context;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = WGLEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = WGLEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_render_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_depth_texture", 20))
+ {
+ ret = WGLEW_NV_render_depth_texture;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_render_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24))
+ {
+ ret = WGLEW_NV_render_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = WGLEW_NV_swap_group;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = WGLEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = WGLEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_video_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_output", 12))
+ {
+ ret = WGLEW_NV_video_output;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef WGL_OML_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12))
+ {
+ ret = WGLEW_OML_sync_control;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+
+GLboolean glxewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"GLX_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef GLX_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = GLXEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef GLX_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = GLXEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef GLX_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = GLXEW_VERSION_1_4;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef GLX_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_3DFX_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef GLX_AMD_gpu_association
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_association", 15))
+ {
+ ret = GLXEW_AMD_gpu_association;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef GLX_ARB_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = GLXEW_ARB_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = GLXEW_ARB_create_context;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = GLXEW_ARB_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_profile", 22))
+ {
+ ret = GLXEW_ARB_create_context_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = GLXEW_ARB_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_fbconfig_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_float", 14))
+ {
+ ret = GLXEW_ARB_fbconfig_float;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLXEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_get_proc_address
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_proc_address", 16))
+ {
+ ret = GLXEW_ARB_get_proc_address;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = GLXEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = GLXEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_vertex_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20))
+ {
+ ret = GLXEW_ARB_vertex_buffer_object;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef GLX_ATI_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = GLXEW_ATI_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef GLX_ATI_render_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14))
+ {
+ ret = GLXEW_ATI_render_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef GLX_EXT_buffer_age
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_age", 10))
+ {
+ ret = GLXEW_EXT_buffer_age;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_context_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority", 16))
+ {
+ ret = GLXEW_EXT_context_priority;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_create_context_es2_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es2_profile", 26))
+ {
+ ret = GLXEW_EXT_create_context_es2_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_create_context_es_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es_profile", 25))
+ {
+ ret = GLXEW_EXT_create_context_es_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_fbconfig_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_packed_float", 21))
+ {
+ ret = GLXEW_EXT_fbconfig_packed_float;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLXEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_get_drawable_type
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_drawable_type", 17))
+ {
+ ret = GLXEW_EXT_get_drawable_type;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_import_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"import_context", 14))
+ {
+ ret = GLXEW_EXT_import_context;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_libglvnd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"libglvnd", 8))
+ {
+ ret = GLXEW_EXT_libglvnd;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_no_config_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_config_context", 17))
+ {
+ ret = GLXEW_EXT_no_config_context;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_scene_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12))
+ {
+ ret = GLXEW_EXT_scene_marker;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_stereo_tree
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_tree", 11))
+ {
+ ret = GLXEW_EXT_stereo_tree;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_EXT_swap_control;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_swap_control_tear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control_tear", 17))
+ {
+ ret = GLXEW_EXT_swap_control_tear;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_texture_from_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_from_pixmap", 19))
+ {
+ ret = GLXEW_EXT_texture_from_pixmap;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_visual_info
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_info", 11))
+ {
+ ret = GLXEW_EXT_visual_info;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_visual_rating
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_rating", 13))
+ {
+ ret = GLXEW_EXT_visual_rating;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6))
+ {
+#ifdef GLX_INTEL_swap_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_event", 10))
+ {
+ ret = GLXEW_INTEL_swap_event;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef GLX_MESA_agp_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"agp_offset", 10))
+ {
+ ret = GLXEW_MESA_agp_offset;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_copy_sub_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_sub_buffer", 15))
+ {
+ ret = GLXEW_MESA_copy_sub_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_pixmap_colormap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixmap_colormap", 15))
+ {
+ ret = GLXEW_MESA_pixmap_colormap;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_query_renderer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_renderer", 14))
+ {
+ ret = GLXEW_MESA_query_renderer;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_release_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"release_buffers", 15))
+ {
+ ret = GLXEW_MESA_release_buffers;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_set_3dfx_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"set_3dfx_mode", 13))
+ {
+ ret = GLXEW_MESA_set_3dfx_mode;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_MESA_swap_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef GLX_NV_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLXEW_NV_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLXEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_delay_before_swap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"delay_before_swap", 17))
+ {
+ ret = GLXEW_NV_delay_before_swap;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = GLXEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_multigpu_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multigpu_context", 16))
+ {
+ ret = GLXEW_NV_multigpu_context;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = GLXEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = GLXEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = GLXEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = GLXEW_NV_swap_group;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLXEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = GLXEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_video_out
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_out", 9))
+ {
+ ret = GLXEW_NV_video_out;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef GLX_OML_swap_method
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_method", 11))
+ {
+ ret = GLXEW_OML_swap_method;
+ continue;
+ }
+#endif
+#ifdef GLX_OML_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12))
+ {
+ ret = GLXEW_OML_sync_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5))
+ {
+#ifdef GLX_SGIS_blended_overlay
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blended_overlay", 15))
+ {
+ ret = GLXEW_SGIS_blended_overlay;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_color_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11))
+ {
+ ret = GLXEW_SGIS_color_range;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_SGIS_multisample;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_shared_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_multisample", 18))
+ {
+ ret = GLXEW_SGIS_shared_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5))
+ {
+#ifdef GLX_SGIX_fbconfig
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig", 8))
+ {
+ ret = GLXEW_SGIX_fbconfig;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_hyperpipe
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"hyperpipe", 9))
+ {
+ ret = GLXEW_SGIX_hyperpipe;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = GLXEW_SGIX_pbuffer;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_swap_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_barrier", 12))
+ {
+ ret = GLXEW_SGIX_swap_barrier;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = GLXEW_SGIX_swap_group;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_video_resize
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12))
+ {
+ ret = GLXEW_SGIX_video_resize;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_visual_select_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_select_group", 19))
+ {
+ ret = GLXEW_SGIX_visual_select_group;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4))
+ {
+#ifdef GLX_SGI_cushion
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cushion", 7))
+ {
+ ret = GLXEW_SGI_cushion;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = GLXEW_SGI_make_current_read;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_SGI_swap_control;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_video_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_sync", 10))
+ {
+ ret = GLXEW_SGI_video_sync;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4))
+ {
+#ifdef GLX_SUN_get_transparent_index
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_transparent_index", 21))
+ {
+ ret = GLXEW_SUN_get_transparent_index;
+ continue;
+ }
+#endif
+#ifdef GLX_SUN_video_resize
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12))
+ {
+ ret = GLXEW_SUN_video_resize;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif defined(GLEW_EGL)
+
+GLboolean eglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"EGL_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef EGL_VERSION_1_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_0", 3))
+ {
+ ret = EGLEW_VERSION_1_0;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_1", 3))
+ {
+ ret = EGLEW_VERSION_1_1;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = EGLEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = EGLEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = EGLEW_VERSION_1_4;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_5", 3))
+ {
+ ret = EGLEW_VERSION_1_5;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANDROID_", 8))
+ {
+#ifdef EGL_ANDROID_GLES_layers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"GLES_layers", 11))
+ {
+ ret = EGLEW_ANDROID_GLES_layers;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_blob_cache
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blob_cache", 10))
+ {
+ ret = EGLEW_ANDROID_blob_cache;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_create_native_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_native_client_buffer", 27))
+ {
+ ret = EGLEW_ANDROID_create_native_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_framebuffer_target
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_target", 18))
+ {
+ ret = EGLEW_ANDROID_framebuffer_target;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"front_buffer_auto_refresh", 25))
+ {
+ ret = EGLEW_ANDROID_front_buffer_auto_refresh;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_get_frame_timestamps
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_frame_timestamps", 20))
+ {
+ ret = EGLEW_ANDROID_get_frame_timestamps;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_get_native_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_native_client_buffer", 24))
+ {
+ ret = EGLEW_ANDROID_get_native_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_image_native_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_buffer", 19))
+ {
+ ret = EGLEW_ANDROID_image_native_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_native_fence_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"native_fence_sync", 17))
+ {
+ ret = EGLEW_ANDROID_native_fence_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_presentation_time
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"presentation_time", 17))
+ {
+ ret = EGLEW_ANDROID_presentation_time;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_recordable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"recordable", 10))
+ {
+ ret = EGLEW_ANDROID_recordable;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANGLE_", 6))
+ {
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"d3d_share_handle_client_buffer", 30))
+ {
+ ret = EGLEW_ANGLE_d3d_share_handle_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_device_d3d
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_d3d", 10))
+ {
+ ret = EGLEW_ANGLE_device_d3d;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_query_surface_pointer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_surface_pointer", 21))
+ {
+ ret = EGLEW_ANGLE_query_surface_pointer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_d3d_texture_2d_share_handle", 35))
+ {
+ ret = EGLEW_ANGLE_surface_d3d_texture_2d_share_handle;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_sync_control_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control_rate", 17))
+ {
+ ret = EGLEW_ANGLE_sync_control_rate;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_window_fixed_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_fixed_size", 17))
+ {
+ ret = EGLEW_ANGLE_window_fixed_size;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARM_", 4))
+ {
+#ifdef EGL_ARM_image_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_format", 12))
+ {
+ ret = EGLEW_ARM_image_format;
+ continue;
+ }
+#endif
+#ifdef EGL_ARM_implicit_external_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"implicit_external_sync", 22))
+ {
+ ret = EGLEW_ARM_implicit_external_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_ARM_pixmap_multisample_discard
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixmap_multisample_discard", 26))
+ {
+ ret = EGLEW_ARM_pixmap_multisample_discard;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef EGL_EXT_bind_to_front
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bind_to_front", 13))
+ {
+ ret = EGLEW_EXT_bind_to_front;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_buffer_age
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_age", 10))
+ {
+ ret = EGLEW_EXT_buffer_age;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_client_extensions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_extensions", 17))
+ {
+ ret = EGLEW_EXT_client_extensions;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_client_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_sync", 11))
+ {
+ ret = EGLEW_EXT_client_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_compositor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compositor", 10))
+ {
+ ret = EGLEW_EXT_compositor;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_config_select_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"config_select_group", 19))
+ {
+ ret = EGLEW_EXT_config_select_group;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = EGLEW_EXT_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_base", 11))
+ {
+ ret = EGLEW_EXT_device_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_drm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_drm", 10))
+ {
+ ret = EGLEW_EXT_device_drm;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_drm_render_node
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_drm_render_node", 22))
+ {
+ ret = EGLEW_EXT_device_drm_render_node;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_enumeration
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_enumeration", 18))
+ {
+ ret = EGLEW_EXT_device_enumeration;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_openwf
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_openwf", 13))
+ {
+ ret = EGLEW_EXT_device_openwf;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_persistent_id
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_persistent_id", 20))
+ {
+ ret = EGLEW_EXT_device_persistent_id;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_query", 12))
+ {
+ ret = EGLEW_EXT_device_query;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_query_name
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_query_name", 17))
+ {
+ ret = EGLEW_EXT_device_query_name;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_explicit_device
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_device", 15))
+ {
+ ret = EGLEW_EXT_explicit_device;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_bt2020_linear", 27))
+ {
+ ret = EGLEW_EXT_gl_colorspace_bt2020_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_bt2020_pq", 23))
+ {
+ ret = EGLEW_EXT_gl_colorspace_bt2020_pq;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3", 24))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3_linear", 31))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3_passthrough", 36))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3_passthrough;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_scrgb", 19))
+ {
+ ret = EGLEW_EXT_gl_colorspace_scrgb;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_scrgb_linear", 26))
+ {
+ ret = EGLEW_EXT_gl_colorspace_scrgb_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_dma_buf_import
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_import", 20))
+ {
+ ret = EGLEW_EXT_image_dma_buf_import;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_import_modifiers", 30))
+ {
+ ret = EGLEW_EXT_image_dma_buf_import_modifiers;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_gl_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_gl_colorspace", 19))
+ {
+ ret = EGLEW_EXT_image_gl_colorspace;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_implicit_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_implicit_sync_control", 27))
+ {
+ ret = EGLEW_EXT_image_implicit_sync_control;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_multiview_window
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_window", 16))
+ {
+ ret = EGLEW_EXT_multiview_window;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_base", 11))
+ {
+ ret = EGLEW_EXT_output_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_drm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_drm", 10))
+ {
+ ret = EGLEW_EXT_output_drm;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_openwf
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_openwf", 13))
+ {
+ ret = EGLEW_EXT_output_openwf;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = EGLEW_EXT_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_base", 13))
+ {
+ ret = EGLEW_EXT_platform_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_device
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_device", 15))
+ {
+ ret = EGLEW_EXT_platform_device;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_wayland
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_wayland", 16))
+ {
+ ret = EGLEW_EXT_platform_wayland;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_x11
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_x11", 12))
+ {
+ ret = EGLEW_EXT_platform_x11;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_xcb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_xcb", 12))
+ {
+ ret = EGLEW_EXT_platform_xcb;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_present_opaque
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_opaque", 14))
+ {
+ ret = EGLEW_EXT_present_opaque;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_protected_content
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_content", 17))
+ {
+ ret = EGLEW_EXT_protected_content;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_protected_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_surface", 17))
+ {
+ ret = EGLEW_EXT_protected_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_stream_consumer_egloutput
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_egloutput", 25))
+ {
+ ret = EGLEW_EXT_stream_consumer_egloutput;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_CTA861_3_metadata", 25))
+ {
+ ret = EGLEW_EXT_surface_CTA861_3_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_SMPTE2086_metadata", 26))
+ {
+ ret = EGLEW_EXT_surface_SMPTE2086_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_compression", 19))
+ {
+ ret = EGLEW_EXT_surface_compression;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_swap_buffers_with_damage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_buffers_with_damage", 24))
+ {
+ ret = EGLEW_EXT_swap_buffers_with_damage;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_sync_reuse
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_reuse", 10))
+ {
+ ret = EGLEW_EXT_sync_reuse;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_yuv_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"yuv_surface", 11))
+ {
+ ret = EGLEW_EXT_yuv_surface;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"HI_", 3))
+ {
+#ifdef EGL_HI_clientpixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clientpixmap", 12))
+ {
+ ret = EGLEW_HI_clientpixmap;
+ continue;
+ }
+#endif
+#ifdef EGL_HI_colorformats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"colorformats", 12))
+ {
+ ret = EGLEW_HI_colorformats;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IMG_", 4))
+ {
+#ifdef EGL_IMG_context_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority", 16))
+ {
+ ret = EGLEW_IMG_context_priority;
+ continue;
+ }
+#endif
+#ifdef EGL_IMG_image_plane_attribs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_plane_attribs", 19))
+ {
+ ret = EGLEW_IMG_image_plane_attribs;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KHR_", 4))
+ {
+#ifdef EGL_KHR_cl_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event", 8))
+ {
+ ret = EGLEW_KHR_cl_event;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_cl_event2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event2", 9))
+ {
+ ret = EGLEW_KHR_cl_event2;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_get_all_proc_addresses", 29))
+ {
+ ret = EGLEW_KHR_client_get_all_proc_addresses;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_config_attribs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"config_attribs", 14))
+ {
+ ret = EGLEW_KHR_config_attribs;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = EGLEW_KHR_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = EGLEW_KHR_create_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = EGLEW_KHR_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_debug
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug", 5))
+ {
+ ret = EGLEW_KHR_debug;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_display_reference
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"display_reference", 17))
+ {
+ ret = EGLEW_KHR_display_reference;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_fence_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence_sync", 10))
+ {
+ ret = EGLEW_KHR_fence_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_get_all_proc_addresses
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_all_proc_addresses", 22))
+ {
+ ret = EGLEW_KHR_get_all_proc_addresses;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace", 13))
+ {
+ ret = EGLEW_KHR_gl_colorspace;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_renderbuffer_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_renderbuffer_image", 21))
+ {
+ ret = EGLEW_KHR_gl_renderbuffer_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_2D_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_2D_image", 19))
+ {
+ ret = EGLEW_KHR_gl_texture_2D_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_3D_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_3D_image", 19))
+ {
+ ret = EGLEW_KHR_gl_texture_3D_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_cubemap_image", 24))
+ {
+ ret = EGLEW_KHR_gl_texture_cubemap_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image", 5))
+ {
+ ret = EGLEW_KHR_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_base", 10))
+ {
+ ret = EGLEW_KHR_image_base;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_pixmap", 12))
+ {
+ ret = EGLEW_KHR_image_pixmap;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface", 12))
+ {
+ ret = EGLEW_KHR_lock_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface2", 13))
+ {
+ ret = EGLEW_KHR_lock_surface2;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface3", 13))
+ {
+ ret = EGLEW_KHR_lock_surface3;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_mutable_render_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mutable_render_buffer", 21))
+ {
+ ret = EGLEW_KHR_mutable_render_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_no_config_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_config_context", 17))
+ {
+ ret = EGLEW_KHR_no_config_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_partial_update
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"partial_update", 14))
+ {
+ ret = EGLEW_KHR_partial_update;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_android
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_android", 16))
+ {
+ ret = EGLEW_KHR_platform_android;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_gbm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_gbm", 12))
+ {
+ ret = EGLEW_KHR_platform_gbm;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_wayland
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_wayland", 16))
+ {
+ ret = EGLEW_KHR_platform_wayland;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_x11
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_x11", 12))
+ {
+ ret = EGLEW_KHR_platform_x11;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_reusable_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"reusable_sync", 13))
+ {
+ ret = EGLEW_KHR_reusable_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream", 6))
+ {
+ ret = EGLEW_KHR_stream;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_attrib
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_attrib", 13))
+ {
+ ret = EGLEW_KHR_stream_attrib;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_consumer_gltexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_gltexture", 25))
+ {
+ ret = EGLEW_KHR_stream_consumer_gltexture;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_cross_process_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_process_fd", 23))
+ {
+ ret = EGLEW_KHR_stream_cross_process_fd;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_fifo
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo", 11))
+ {
+ ret = EGLEW_KHR_stream_fifo;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_producer_aldatalocator", 29))
+ {
+ ret = EGLEW_KHR_stream_producer_aldatalocator;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_producer_eglsurface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_producer_eglsurface", 26))
+ {
+ ret = EGLEW_KHR_stream_producer_eglsurface;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_surfaceless_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surfaceless_context", 19))
+ {
+ ret = EGLEW_KHR_surfaceless_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_swap_buffers_with_damage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_buffers_with_damage", 24))
+ {
+ ret = EGLEW_KHR_swap_buffers_with_damage;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_vg_parent_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vg_parent_image", 15))
+ {
+ ret = EGLEW_KHR_vg_parent_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_wait_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"wait_sync", 9))
+ {
+ ret = EGLEW_KHR_wait_sync;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef EGL_MESA_drm_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"drm_image", 9))
+ {
+ ret = EGLEW_MESA_drm_image;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_image_dma_buf_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_export", 20))
+ {
+ ret = EGLEW_MESA_image_dma_buf_export;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_platform_gbm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_gbm", 12))
+ {
+ ret = EGLEW_MESA_platform_gbm;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_platform_surfaceless
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_surfaceless", 20))
+ {
+ ret = EGLEW_MESA_platform_surfaceless;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_query_driver
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_driver", 12))
+ {
+ ret = EGLEW_MESA_query_driver;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NOK_", 4))
+ {
+#ifdef EGL_NOK_swap_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_region", 11))
+ {
+ ret = EGLEW_NOK_swap_region;
+ continue;
+ }
+#endif
+#ifdef EGL_NOK_swap_region2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_region2", 12))
+ {
+ ret = EGLEW_NOK_swap_region2;
+ continue;
+ }
+#endif
+#ifdef EGL_NOK_texture_from_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_from_pixmap", 19))
+ {
+ ret = EGLEW_NOK_texture_from_pixmap;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef EGL_NV_3dvision_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3dvision_surface", 16))
+ {
+ ret = EGLEW_NV_3dvision_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_context_priority_realtime
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority_realtime", 25))
+ {
+ ret = EGLEW_NV_context_priority_realtime;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_coverage_sample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coverage_sample", 15))
+ {
+ ret = EGLEW_NV_coverage_sample;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_coverage_sample_resolve
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coverage_sample_resolve", 23))
+ {
+ ret = EGLEW_NV_coverage_sample_resolve;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_cuda_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cuda_event", 10))
+ {
+ ret = EGLEW_NV_cuda_event;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_depth_nonlinear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_nonlinear", 15))
+ {
+ ret = EGLEW_NV_depth_nonlinear;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_device_cuda
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_cuda", 11))
+ {
+ ret = EGLEW_NV_device_cuda;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_native_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"native_query", 12))
+ {
+ ret = EGLEW_NV_native_query;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_post_convert_rounding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_convert_rounding", 21))
+ {
+ ret = EGLEW_NV_post_convert_rounding;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_post_sub_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_sub_buffer", 15))
+ {
+ ret = EGLEW_NV_post_sub_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_quadruple_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"quadruple_buffer", 16))
+ {
+ ret = EGLEW_NV_quadruple_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = EGLEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_consumer_eglimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_eglimage", 24))
+ {
+ ret = EGLEW_NV_stream_consumer_eglimage;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_gltexture_yuv", 29))
+ {
+ ret = EGLEW_NV_stream_consumer_gltexture_yuv;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_display
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_display", 20))
+ {
+ ret = EGLEW_NV_stream_cross_display;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_object", 19))
+ {
+ ret = EGLEW_NV_stream_cross_object;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_partition
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_partition", 22))
+ {
+ ret = EGLEW_NV_stream_cross_partition;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_process
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_process", 20))
+ {
+ ret = EGLEW_NV_stream_cross_process;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_system
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_system", 19))
+ {
+ ret = EGLEW_NV_stream_cross_system;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_dma
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_dma", 10))
+ {
+ ret = EGLEW_NV_stream_dma;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_fifo_next
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo_next", 16))
+ {
+ ret = EGLEW_NV_stream_fifo_next;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_fifo_synchronous
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo_synchronous", 23))
+ {
+ ret = EGLEW_NV_stream_fifo_synchronous;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_flush
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_flush", 12))
+ {
+ ret = EGLEW_NV_stream_flush;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_frame_limits
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_frame_limits", 19))
+ {
+ ret = EGLEW_NV_stream_frame_limits;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_metadata", 15))
+ {
+ ret = EGLEW_NV_stream_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_origin
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_origin", 13))
+ {
+ ret = EGLEW_NV_stream_origin;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_remote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_remote", 13))
+ {
+ ret = EGLEW_NV_stream_remote;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_reset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_reset", 12))
+ {
+ ret = EGLEW_NV_stream_reset;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket", 13))
+ {
+ ret = EGLEW_NV_stream_socket;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket_inet
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket_inet", 18))
+ {
+ ret = EGLEW_NV_stream_socket_inet;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket_unix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket_unix", 18))
+ {
+ ret = EGLEW_NV_stream_socket_unix;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_sync", 11))
+ {
+ ret = EGLEW_NV_stream_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = EGLEW_NV_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_system_time
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"system_time", 11))
+ {
+ ret = EGLEW_NV_system_time;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_triple_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"triple_buffer", 13))
+ {
+ ret = EGLEW_NV_triple_buffer;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"TIZEN_", 6))
+ {
+#ifdef EGL_TIZEN_image_native_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_buffer", 19))
+ {
+ ret = EGLEW_TIZEN_image_native_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_TIZEN_image_native_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_surface", 20))
+ {
+ ret = EGLEW_TIZEN_image_native_surface;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"WL_", 3))
+ {
+#ifdef EGL_WL_bind_wayland_display
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bind_wayland_display", 20))
+ {
+ ret = EGLEW_WL_bind_wayland_display;
+ continue;
+ }
+#endif
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_wayland_buffer_from_image", 32))
+ {
+ ret = EGLEW_WL_create_wayland_buffer_from_image;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#endif /* _WIN32 */
diff --git a/glew/src/glewinfo.c b/glew/src/glewinfo.c
new file mode 100644
index 0000000..2122e26
--- /dev/null
+++ b/glew/src/glewinfo.c
@@ -0,0 +1,19392 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <GL/glxew.h>
+#endif
+
+#if defined(__APPLE__)
+#include <AvailabilityMacros.h>
+#endif
+
+#ifdef GLEW_REGAL
+#include <GL/Regal.h>
+#endif
+
+static FILE* f;
+
+/* Command-line parameters for GL context creation */
+
+struct createParams
+{
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ int pixelformat;
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+ const char* display;
+ int visual;
+#endif
+ int major, minor; /* GL context version number */
+
+ /* https://www.opengl.org/registry/specs/ARB/glx_create_context.txt */
+ int profile; /* core = 1, compatibility = 2 */
+ int flags; /* debug = 1, forward compatible = 2 */
+
+ /* GLEW experimental mode */
+ int experimental;
+};
+
+GLboolean glewCreateContext (struct createParams *params);
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *);
+
+void glewDestroyContext ();
+
+/* ------------------------------------------------------------------------- */
+
+static GLboolean glewPrintExt (const char* name, GLboolean def1, GLboolean def2, GLboolean def3)
+{
+ unsigned int i;
+ fprintf(f, "\n%s:", name);
+ for (i=0; i<62-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s ", def1 ? "OK" : "MISSING");
+ if (def1 != def2)
+ fprintf(f, "[%s] ", def2 ? "OK" : "MISSING");
+ if (def1 != def3)
+ fprintf(f, "[%s]\n", def3 ? "OK" : "MISSING");
+ else
+ fprintf(f, "\n");
+ for (i=0; i<strlen(name)+1; i++) fprintf(f, "-");
+ fprintf(f, "\n");
+ fflush(f);
+ return def1 || def2 || def3 || glewExperimental; /* Enable per-function info too? */
+}
+
+static void glewInfoFunc (GLboolean fi, const char* name, GLint undefined)
+{
+ unsigned int i;
+ if (fi)
+ {
+ fprintf(f, " %s:", name);
+ for (i=0; i<60-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s\n", undefined ? "MISSING" : "OK");
+ fflush(f);
+ }
+}
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifdef GL_VERSION_1_1
+
+static void _glewInfo_GL_VERSION_1_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_1", GLEW_VERSION_1_1, GLEW_VERSION_1_1, GLEW_VERSION_1_1);
+}
+
+#endif /* GL_VERSION_1_1 */
+
+#ifdef GL_VERSION_1_2
+
+static void _glewInfo_GL_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_2", GLEW_VERSION_1_2, GLEW_VERSION_1_2, GLEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "glCopyTexSubImage3D", glCopyTexSubImage3D == NULL);
+ glewInfoFunc(fi, "glDrawRangeElements", glDrawRangeElements == NULL);
+ glewInfoFunc(fi, "glTexImage3D", glTexImage3D == NULL);
+ glewInfoFunc(fi, "glTexSubImage3D", glTexSubImage3D == NULL);
+}
+
+#endif /* GL_VERSION_1_2 */
+
+#ifdef GL_VERSION_1_2_1
+
+static void _glewInfo_GL_VERSION_1_2_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_2_1", GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1);
+}
+
+#endif /* GL_VERSION_1_2_1 */
+
+#ifdef GL_VERSION_1_3
+
+static void _glewInfo_GL_VERSION_1_3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_3", GLEW_VERSION_1_3, GLEW_VERSION_1_3, GLEW_VERSION_1_3);
+
+ glewInfoFunc(fi, "glActiveTexture", glActiveTexture == NULL);
+ glewInfoFunc(fi, "glClientActiveTexture", glClientActiveTexture == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage1D", glCompressedTexImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage2D", glCompressedTexImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage3D", glCompressedTexImage3D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage1D", glCompressedTexSubImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage2D", glCompressedTexSubImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3D", glCompressedTexSubImage3D == NULL);
+ glewInfoFunc(fi, "glGetCompressedTexImage", glGetCompressedTexImage == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixd", glLoadTransposeMatrixd == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixf", glLoadTransposeMatrixf == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixd", glMultTransposeMatrixd == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixf", glMultTransposeMatrixf == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1d", glMultiTexCoord1d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dv", glMultiTexCoord1dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1f", glMultiTexCoord1f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fv", glMultiTexCoord1fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1i", glMultiTexCoord1i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1iv", glMultiTexCoord1iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1s", glMultiTexCoord1s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1sv", glMultiTexCoord1sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2d", glMultiTexCoord2d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dv", glMultiTexCoord2dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2f", glMultiTexCoord2f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fv", glMultiTexCoord2fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2i", glMultiTexCoord2i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2iv", glMultiTexCoord2iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2s", glMultiTexCoord2s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2sv", glMultiTexCoord2sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3d", glMultiTexCoord3d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dv", glMultiTexCoord3dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3f", glMultiTexCoord3f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fv", glMultiTexCoord3fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3i", glMultiTexCoord3i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3iv", glMultiTexCoord3iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3s", glMultiTexCoord3s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3sv", glMultiTexCoord3sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4d", glMultiTexCoord4d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dv", glMultiTexCoord4dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4f", glMultiTexCoord4f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fv", glMultiTexCoord4fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4i", glMultiTexCoord4i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4iv", glMultiTexCoord4iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4s", glMultiTexCoord4s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4sv", glMultiTexCoord4sv == NULL);
+ glewInfoFunc(fi, "glSampleCoverage", glSampleCoverage == NULL);
+}
+
+#endif /* GL_VERSION_1_3 */
+
+#ifdef GL_VERSION_1_4
+
+static void _glewInfo_GL_VERSION_1_4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_4", GLEW_VERSION_1_4, GLEW_VERSION_1_4, GLEW_VERSION_1_4);
+
+ glewInfoFunc(fi, "glBlendColor", glBlendColor == NULL);
+ glewInfoFunc(fi, "glBlendEquation", glBlendEquation == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparate", glBlendFuncSeparate == NULL);
+ glewInfoFunc(fi, "glFogCoordPointer", glFogCoordPointer == NULL);
+ glewInfoFunc(fi, "glFogCoordd", glFogCoordd == NULL);
+ glewInfoFunc(fi, "glFogCoorddv", glFogCoorddv == NULL);
+ glewInfoFunc(fi, "glFogCoordf", glFogCoordf == NULL);
+ glewInfoFunc(fi, "glFogCoordfv", glFogCoordfv == NULL);
+ glewInfoFunc(fi, "glMultiDrawArrays", glMultiDrawArrays == NULL);
+ glewInfoFunc(fi, "glMultiDrawElements", glMultiDrawElements == NULL);
+ glewInfoFunc(fi, "glPointParameterf", glPointParameterf == NULL);
+ glewInfoFunc(fi, "glPointParameterfv", glPointParameterfv == NULL);
+ glewInfoFunc(fi, "glPointParameteri", glPointParameteri == NULL);
+ glewInfoFunc(fi, "glPointParameteriv", glPointParameteriv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3b", glSecondaryColor3b == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3bv", glSecondaryColor3bv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3d", glSecondaryColor3d == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dv", glSecondaryColor3dv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3f", glSecondaryColor3f == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fv", glSecondaryColor3fv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3i", glSecondaryColor3i == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3iv", glSecondaryColor3iv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3s", glSecondaryColor3s == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3sv", glSecondaryColor3sv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ub", glSecondaryColor3ub == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubv", glSecondaryColor3ubv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ui", glSecondaryColor3ui == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uiv", glSecondaryColor3uiv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3us", glSecondaryColor3us == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usv", glSecondaryColor3usv == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointer", glSecondaryColorPointer == NULL);
+ glewInfoFunc(fi, "glWindowPos2d", glWindowPos2d == NULL);
+ glewInfoFunc(fi, "glWindowPos2dv", glWindowPos2dv == NULL);
+ glewInfoFunc(fi, "glWindowPos2f", glWindowPos2f == NULL);
+ glewInfoFunc(fi, "glWindowPos2fv", glWindowPos2fv == NULL);
+ glewInfoFunc(fi, "glWindowPos2i", glWindowPos2i == NULL);
+ glewInfoFunc(fi, "glWindowPos2iv", glWindowPos2iv == NULL);
+ glewInfoFunc(fi, "glWindowPos2s", glWindowPos2s == NULL);
+ glewInfoFunc(fi, "glWindowPos2sv", glWindowPos2sv == NULL);
+ glewInfoFunc(fi, "glWindowPos3d", glWindowPos3d == NULL);
+ glewInfoFunc(fi, "glWindowPos3dv", glWindowPos3dv == NULL);
+ glewInfoFunc(fi, "glWindowPos3f", glWindowPos3f == NULL);
+ glewInfoFunc(fi, "glWindowPos3fv", glWindowPos3fv == NULL);
+ glewInfoFunc(fi, "glWindowPos3i", glWindowPos3i == NULL);
+ glewInfoFunc(fi, "glWindowPos3iv", glWindowPos3iv == NULL);
+ glewInfoFunc(fi, "glWindowPos3s", glWindowPos3s == NULL);
+ glewInfoFunc(fi, "glWindowPos3sv", glWindowPos3sv == NULL);
+}
+
+#endif /* GL_VERSION_1_4 */
+
+#ifdef GL_VERSION_1_5
+
+static void _glewInfo_GL_VERSION_1_5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_5", GLEW_VERSION_1_5, GLEW_VERSION_1_5, GLEW_VERSION_1_5);
+
+ glewInfoFunc(fi, "glBeginQuery", glBeginQuery == NULL);
+ glewInfoFunc(fi, "glBindBuffer", glBindBuffer == NULL);
+ glewInfoFunc(fi, "glBufferData", glBufferData == NULL);
+ glewInfoFunc(fi, "glBufferSubData", glBufferSubData == NULL);
+ glewInfoFunc(fi, "glDeleteBuffers", glDeleteBuffers == NULL);
+ glewInfoFunc(fi, "glDeleteQueries", glDeleteQueries == NULL);
+ glewInfoFunc(fi, "glEndQuery", glEndQuery == NULL);
+ glewInfoFunc(fi, "glGenBuffers", glGenBuffers == NULL);
+ glewInfoFunc(fi, "glGenQueries", glGenQueries == NULL);
+ glewInfoFunc(fi, "glGetBufferParameteriv", glGetBufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetBufferPointerv", glGetBufferPointerv == NULL);
+ glewInfoFunc(fi, "glGetBufferSubData", glGetBufferSubData == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectiv", glGetQueryObjectiv == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuiv", glGetQueryObjectuiv == NULL);
+ glewInfoFunc(fi, "glGetQueryiv", glGetQueryiv == NULL);
+ glewInfoFunc(fi, "glIsBuffer", glIsBuffer == NULL);
+ glewInfoFunc(fi, "glIsQuery", glIsQuery == NULL);
+ glewInfoFunc(fi, "glMapBuffer", glMapBuffer == NULL);
+ glewInfoFunc(fi, "glUnmapBuffer", glUnmapBuffer == NULL);
+}
+
+#endif /* GL_VERSION_1_5 */
+
+#ifdef GL_VERSION_2_0
+
+static void _glewInfo_GL_VERSION_2_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_2_0", GLEW_VERSION_2_0, GLEW_VERSION_2_0, GLEW_VERSION_2_0);
+
+ glewInfoFunc(fi, "glAttachShader", glAttachShader == NULL);
+ glewInfoFunc(fi, "glBindAttribLocation", glBindAttribLocation == NULL);
+ glewInfoFunc(fi, "glBlendEquationSeparate", glBlendEquationSeparate == NULL);
+ glewInfoFunc(fi, "glCompileShader", glCompileShader == NULL);
+ glewInfoFunc(fi, "glCreateProgram", glCreateProgram == NULL);
+ glewInfoFunc(fi, "glCreateShader", glCreateShader == NULL);
+ glewInfoFunc(fi, "glDeleteProgram", glDeleteProgram == NULL);
+ glewInfoFunc(fi, "glDeleteShader", glDeleteShader == NULL);
+ glewInfoFunc(fi, "glDetachShader", glDetachShader == NULL);
+ glewInfoFunc(fi, "glDisableVertexAttribArray", glDisableVertexAttribArray == NULL);
+ glewInfoFunc(fi, "glDrawBuffers", glDrawBuffers == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribArray", glEnableVertexAttribArray == NULL);
+ glewInfoFunc(fi, "glGetActiveAttrib", glGetActiveAttrib == NULL);
+ glewInfoFunc(fi, "glGetActiveUniform", glGetActiveUniform == NULL);
+ glewInfoFunc(fi, "glGetAttachedShaders", glGetAttachedShaders == NULL);
+ glewInfoFunc(fi, "glGetAttribLocation", glGetAttribLocation == NULL);
+ glewInfoFunc(fi, "glGetProgramInfoLog", glGetProgramInfoLog == NULL);
+ glewInfoFunc(fi, "glGetProgramiv", glGetProgramiv == NULL);
+ glewInfoFunc(fi, "glGetShaderInfoLog", glGetShaderInfoLog == NULL);
+ glewInfoFunc(fi, "glGetShaderSource", glGetShaderSource == NULL);
+ glewInfoFunc(fi, "glGetShaderiv", glGetShaderiv == NULL);
+ glewInfoFunc(fi, "glGetUniformLocation", glGetUniformLocation == NULL);
+ glewInfoFunc(fi, "glGetUniformfv", glGetUniformfv == NULL);
+ glewInfoFunc(fi, "glGetUniformiv", glGetUniformiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointerv", glGetVertexAttribPointerv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdv", glGetVertexAttribdv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfv", glGetVertexAttribfv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribiv", glGetVertexAttribiv == NULL);
+ glewInfoFunc(fi, "glIsProgram", glIsProgram == NULL);
+ glewInfoFunc(fi, "glIsShader", glIsShader == NULL);
+ glewInfoFunc(fi, "glLinkProgram", glLinkProgram == NULL);
+ glewInfoFunc(fi, "glShaderSource", glShaderSource == NULL);
+ glewInfoFunc(fi, "glStencilFuncSeparate", glStencilFuncSeparate == NULL);
+ glewInfoFunc(fi, "glStencilMaskSeparate", glStencilMaskSeparate == NULL);
+ glewInfoFunc(fi, "glStencilOpSeparate", glStencilOpSeparate == NULL);
+ glewInfoFunc(fi, "glUniform1f", glUniform1f == NULL);
+ glewInfoFunc(fi, "glUniform1fv", glUniform1fv == NULL);
+ glewInfoFunc(fi, "glUniform1i", glUniform1i == NULL);
+ glewInfoFunc(fi, "glUniform1iv", glUniform1iv == NULL);
+ glewInfoFunc(fi, "glUniform2f", glUniform2f == NULL);
+ glewInfoFunc(fi, "glUniform2fv", glUniform2fv == NULL);
+ glewInfoFunc(fi, "glUniform2i", glUniform2i == NULL);
+ glewInfoFunc(fi, "glUniform2iv", glUniform2iv == NULL);
+ glewInfoFunc(fi, "glUniform3f", glUniform3f == NULL);
+ glewInfoFunc(fi, "glUniform3fv", glUniform3fv == NULL);
+ glewInfoFunc(fi, "glUniform3i", glUniform3i == NULL);
+ glewInfoFunc(fi, "glUniform3iv", glUniform3iv == NULL);
+ glewInfoFunc(fi, "glUniform4f", glUniform4f == NULL);
+ glewInfoFunc(fi, "glUniform4fv", glUniform4fv == NULL);
+ glewInfoFunc(fi, "glUniform4i", glUniform4i == NULL);
+ glewInfoFunc(fi, "glUniform4iv", glUniform4iv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2fv", glUniformMatrix2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3fv", glUniformMatrix3fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4fv", glUniformMatrix4fv == NULL);
+ glewInfoFunc(fi, "glUseProgram", glUseProgram == NULL);
+ glewInfoFunc(fi, "glValidateProgram", glValidateProgram == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1d", glVertexAttrib1d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dv", glVertexAttrib1dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1f", glVertexAttrib1f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fv", glVertexAttrib1fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1s", glVertexAttrib1s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sv", glVertexAttrib1sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2d", glVertexAttrib2d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dv", glVertexAttrib2dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2f", glVertexAttrib2f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fv", glVertexAttrib2fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2s", glVertexAttrib2s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sv", glVertexAttrib2sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3d", glVertexAttrib3d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dv", glVertexAttrib3dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3f", glVertexAttrib3f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fv", glVertexAttrib3fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3s", glVertexAttrib3s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sv", glVertexAttrib3sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nbv", glVertexAttrib4Nbv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Niv", glVertexAttrib4Niv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nsv", glVertexAttrib4Nsv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nub", glVertexAttrib4Nub == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nubv", glVertexAttrib4Nubv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nuiv", glVertexAttrib4Nuiv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nusv", glVertexAttrib4Nusv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4bv", glVertexAttrib4bv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4d", glVertexAttrib4d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dv", glVertexAttrib4dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4f", glVertexAttrib4f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fv", glVertexAttrib4fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4iv", glVertexAttrib4iv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4s", glVertexAttrib4s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sv", glVertexAttrib4sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubv", glVertexAttrib4ubv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4uiv", glVertexAttrib4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4usv", glVertexAttrib4usv == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointer", glVertexAttribPointer == NULL);
+}
+
+#endif /* GL_VERSION_2_0 */
+
+#ifdef GL_VERSION_2_1
+
+static void _glewInfo_GL_VERSION_2_1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_2_1", GLEW_VERSION_2_1, GLEW_VERSION_2_1, GLEW_VERSION_2_1);
+
+ glewInfoFunc(fi, "glUniformMatrix2x3fv", glUniformMatrix2x3fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4fv", glUniformMatrix2x4fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2fv", glUniformMatrix3x2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4fv", glUniformMatrix3x4fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2fv", glUniformMatrix4x2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3fv", glUniformMatrix4x3fv == NULL);
+}
+
+#endif /* GL_VERSION_2_1 */
+
+#ifdef GL_VERSION_3_0
+
+static void _glewInfo_GL_VERSION_3_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_0", GLEW_VERSION_3_0, GLEW_VERSION_3_0, GLEW_VERSION_3_0);
+
+ glewInfoFunc(fi, "glBeginConditionalRender", glBeginConditionalRender == NULL);
+ glewInfoFunc(fi, "glBeginTransformFeedback", glBeginTransformFeedback == NULL);
+ glewInfoFunc(fi, "glBindFragDataLocation", glBindFragDataLocation == NULL);
+ glewInfoFunc(fi, "glClampColor", glClampColor == NULL);
+ glewInfoFunc(fi, "glClearBufferfi", glClearBufferfi == NULL);
+ glewInfoFunc(fi, "glClearBufferfv", glClearBufferfv == NULL);
+ glewInfoFunc(fi, "glClearBufferiv", glClearBufferiv == NULL);
+ glewInfoFunc(fi, "glClearBufferuiv", glClearBufferuiv == NULL);
+ glewInfoFunc(fi, "glColorMaski", glColorMaski == NULL);
+ glewInfoFunc(fi, "glDisablei", glDisablei == NULL);
+ glewInfoFunc(fi, "glEnablei", glEnablei == NULL);
+ glewInfoFunc(fi, "glEndConditionalRender", glEndConditionalRender == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedback", glEndTransformFeedback == NULL);
+ glewInfoFunc(fi, "glGetBooleani_v", glGetBooleani_v == NULL);
+ glewInfoFunc(fi, "glGetFragDataLocation", glGetFragDataLocation == NULL);
+ glewInfoFunc(fi, "glGetStringi", glGetStringi == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIiv", glGetTexParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuiv", glGetTexParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVarying", glGetTransformFeedbackVarying == NULL);
+ glewInfoFunc(fi, "glGetUniformuiv", glGetUniformuiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIiv", glGetVertexAttribIiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIuiv", glGetVertexAttribIuiv == NULL);
+ glewInfoFunc(fi, "glIsEnabledi", glIsEnabledi == NULL);
+ glewInfoFunc(fi, "glTexParameterIiv", glTexParameterIiv == NULL);
+ glewInfoFunc(fi, "glTexParameterIuiv", glTexParameterIuiv == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryings", glTransformFeedbackVaryings == NULL);
+ glewInfoFunc(fi, "glUniform1ui", glUniform1ui == NULL);
+ glewInfoFunc(fi, "glUniform1uiv", glUniform1uiv == NULL);
+ glewInfoFunc(fi, "glUniform2ui", glUniform2ui == NULL);
+ glewInfoFunc(fi, "glUniform2uiv", glUniform2uiv == NULL);
+ glewInfoFunc(fi, "glUniform3ui", glUniform3ui == NULL);
+ glewInfoFunc(fi, "glUniform3uiv", glUniform3uiv == NULL);
+ glewInfoFunc(fi, "glUniform4ui", glUniform4ui == NULL);
+ glewInfoFunc(fi, "glUniform4uiv", glUniform4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1i", glVertexAttribI1i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1iv", glVertexAttribI1iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1ui", glVertexAttribI1ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uiv", glVertexAttribI1uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2i", glVertexAttribI2i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2iv", glVertexAttribI2iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2ui", glVertexAttribI2ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uiv", glVertexAttribI2uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3i", glVertexAttribI3i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3iv", glVertexAttribI3iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3ui", glVertexAttribI3ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uiv", glVertexAttribI3uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4bv", glVertexAttribI4bv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4i", glVertexAttribI4i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4iv", glVertexAttribI4iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4sv", glVertexAttribI4sv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ubv", glVertexAttribI4ubv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ui", glVertexAttribI4ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uiv", glVertexAttribI4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4usv", glVertexAttribI4usv == NULL);
+ glewInfoFunc(fi, "glVertexAttribIPointer", glVertexAttribIPointer == NULL);
+}
+
+#endif /* GL_VERSION_3_0 */
+
+#ifdef GL_VERSION_3_1
+
+static void _glewInfo_GL_VERSION_3_1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_1", GLEW_VERSION_3_1, GLEW_VERSION_3_1, GLEW_VERSION_3_1);
+
+ glewInfoFunc(fi, "glDrawArraysInstanced", glDrawArraysInstanced == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstanced", glDrawElementsInstanced == NULL);
+ glewInfoFunc(fi, "glPrimitiveRestartIndex", glPrimitiveRestartIndex == NULL);
+ glewInfoFunc(fi, "glTexBuffer", glTexBuffer == NULL);
+}
+
+#endif /* GL_VERSION_3_1 */
+
+#ifdef GL_VERSION_3_2
+
+static void _glewInfo_GL_VERSION_3_2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_2", GLEW_VERSION_3_2, GLEW_VERSION_3_2, GLEW_VERSION_3_2);
+
+ glewInfoFunc(fi, "glFramebufferTexture", glFramebufferTexture == NULL);
+ glewInfoFunc(fi, "glGetBufferParameteri64v", glGetBufferParameteri64v == NULL);
+ glewInfoFunc(fi, "glGetInteger64i_v", glGetInteger64i_v == NULL);
+}
+
+#endif /* GL_VERSION_3_2 */
+
+#ifdef GL_VERSION_3_3
+
+static void _glewInfo_GL_VERSION_3_3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_3", GLEW_VERSION_3_3, GLEW_VERSION_3_3, GLEW_VERSION_3_3);
+
+ glewInfoFunc(fi, "glVertexAttribDivisor", glVertexAttribDivisor == NULL);
+}
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static void _glewInfo_GL_VERSION_4_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_0", GLEW_VERSION_4_0, GLEW_VERSION_4_0, GLEW_VERSION_4_0);
+
+ glewInfoFunc(fi, "glBlendEquationSeparatei", glBlendEquationSeparatei == NULL);
+ glewInfoFunc(fi, "glBlendEquationi", glBlendEquationi == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparatei", glBlendFuncSeparatei == NULL);
+ glewInfoFunc(fi, "glBlendFunci", glBlendFunci == NULL);
+ glewInfoFunc(fi, "glMinSampleShading", glMinSampleShading == NULL);
+}
+
+#endif /* GL_VERSION_4_0 */
+
+#ifdef GL_VERSION_4_1
+
+static void _glewInfo_GL_VERSION_4_1 (void)
+{
+ glewPrintExt("GL_VERSION_4_1", GLEW_VERSION_4_1, GLEW_VERSION_4_1, GLEW_VERSION_4_1);
+}
+
+#endif /* GL_VERSION_4_1 */
+
+#ifdef GL_VERSION_4_2
+
+static void _glewInfo_GL_VERSION_4_2 (void)
+{
+ glewPrintExt("GL_VERSION_4_2", GLEW_VERSION_4_2, GLEW_VERSION_4_2, GLEW_VERSION_4_2);
+}
+
+#endif /* GL_VERSION_4_2 */
+
+#ifdef GL_VERSION_4_3
+
+static void _glewInfo_GL_VERSION_4_3 (void)
+{
+ glewPrintExt("GL_VERSION_4_3", GLEW_VERSION_4_3, GLEW_VERSION_4_3, GLEW_VERSION_4_3);
+}
+
+#endif /* GL_VERSION_4_3 */
+
+#ifdef GL_VERSION_4_4
+
+static void _glewInfo_GL_VERSION_4_4 (void)
+{
+ glewPrintExt("GL_VERSION_4_4", GLEW_VERSION_4_4, GLEW_VERSION_4_4, GLEW_VERSION_4_4);
+}
+
+#endif /* GL_VERSION_4_4 */
+
+#ifdef GL_VERSION_4_5
+
+static void _glewInfo_GL_VERSION_4_5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_5", GLEW_VERSION_4_5, GLEW_VERSION_4_5, GLEW_VERSION_4_5);
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatus", glGetGraphicsResetStatus == NULL);
+ glewInfoFunc(fi, "glGetnCompressedTexImage", glGetnCompressedTexImage == NULL);
+ glewInfoFunc(fi, "glGetnTexImage", glGetnTexImage == NULL);
+ glewInfoFunc(fi, "glGetnUniformdv", glGetnUniformdv == NULL);
+}
+
+#endif /* GL_VERSION_4_5 */
+
+#ifdef GL_VERSION_4_6
+
+static void _glewInfo_GL_VERSION_4_6 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_6", GLEW_VERSION_4_6, GLEW_VERSION_4_6, GLEW_VERSION_4_6);
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectCount", glMultiDrawArraysIndirectCount == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectCount", glMultiDrawElementsIndirectCount == NULL);
+ glewInfoFunc(fi, "glSpecializeShader", glSpecializeShader == NULL);
+}
+
+#endif /* GL_VERSION_4_6 */
+
+#ifdef GL_3DFX_multisample
+
+static void _glewInfo_GL_3DFX_multisample (void)
+{
+ glewPrintExt("GL_3DFX_multisample", GLEW_3DFX_multisample, glewIsSupported("GL_3DFX_multisample"), glewGetExtension("GL_3DFX_multisample"));
+}
+
+#endif /* GL_3DFX_multisample */
+
+#ifdef GL_3DFX_tbuffer
+
+static void _glewInfo_GL_3DFX_tbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_3DFX_tbuffer", GLEW_3DFX_tbuffer, glewIsSupported("GL_3DFX_tbuffer"), glewGetExtension("GL_3DFX_tbuffer"));
+
+ glewInfoFunc(fi, "glTbufferMask3DFX", glTbufferMask3DFX == NULL);
+}
+
+#endif /* GL_3DFX_tbuffer */
+
+#ifdef GL_3DFX_texture_compression_FXT1
+
+static void _glewInfo_GL_3DFX_texture_compression_FXT1 (void)
+{
+ glewPrintExt("GL_3DFX_texture_compression_FXT1", GLEW_3DFX_texture_compression_FXT1, glewIsSupported("GL_3DFX_texture_compression_FXT1"), glewGetExtension("GL_3DFX_texture_compression_FXT1"));
+}
+
+#endif /* GL_3DFX_texture_compression_FXT1 */
+
+#ifdef GL_AMD_blend_minmax_factor
+
+static void _glewInfo_GL_AMD_blend_minmax_factor (void)
+{
+ glewPrintExt("GL_AMD_blend_minmax_factor", GLEW_AMD_blend_minmax_factor, glewIsSupported("GL_AMD_blend_minmax_factor"), glewGetExtension("GL_AMD_blend_minmax_factor"));
+}
+
+#endif /* GL_AMD_blend_minmax_factor */
+
+#ifdef GL_AMD_compressed_3DC_texture
+
+static void _glewInfo_GL_AMD_compressed_3DC_texture (void)
+{
+ glewPrintExt("GL_AMD_compressed_3DC_texture", GLEW_AMD_compressed_3DC_texture, glewIsSupported("GL_AMD_compressed_3DC_texture"), glewGetExtension("GL_AMD_compressed_3DC_texture"));
+}
+
+#endif /* GL_AMD_compressed_3DC_texture */
+
+#ifdef GL_AMD_compressed_ATC_texture
+
+static void _glewInfo_GL_AMD_compressed_ATC_texture (void)
+{
+ glewPrintExt("GL_AMD_compressed_ATC_texture", GLEW_AMD_compressed_ATC_texture, glewIsSupported("GL_AMD_compressed_ATC_texture"), glewGetExtension("GL_AMD_compressed_ATC_texture"));
+}
+
+#endif /* GL_AMD_compressed_ATC_texture */
+
+#ifdef GL_AMD_conservative_depth
+
+static void _glewInfo_GL_AMD_conservative_depth (void)
+{
+ glewPrintExt("GL_AMD_conservative_depth", GLEW_AMD_conservative_depth, glewIsSupported("GL_AMD_conservative_depth"), glewGetExtension("GL_AMD_conservative_depth"));
+}
+
+#endif /* GL_AMD_conservative_depth */
+
+#ifdef GL_AMD_debug_output
+
+static void _glewInfo_GL_AMD_debug_output (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_debug_output", GLEW_AMD_debug_output, glewIsSupported("GL_AMD_debug_output"), glewGetExtension("GL_AMD_debug_output"));
+
+ glewInfoFunc(fi, "glDebugMessageCallbackAMD", glDebugMessageCallbackAMD == NULL);
+ glewInfoFunc(fi, "glDebugMessageEnableAMD", glDebugMessageEnableAMD == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsertAMD", glDebugMessageInsertAMD == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLogAMD", glGetDebugMessageLogAMD == NULL);
+}
+
+#endif /* GL_AMD_debug_output */
+
+#ifdef GL_AMD_depth_clamp_separate
+
+static void _glewInfo_GL_AMD_depth_clamp_separate (void)
+{
+ glewPrintExt("GL_AMD_depth_clamp_separate", GLEW_AMD_depth_clamp_separate, glewIsSupported("GL_AMD_depth_clamp_separate"), glewGetExtension("GL_AMD_depth_clamp_separate"));
+}
+
+#endif /* GL_AMD_depth_clamp_separate */
+
+#ifdef GL_AMD_draw_buffers_blend
+
+static void _glewInfo_GL_AMD_draw_buffers_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_draw_buffers_blend", GLEW_AMD_draw_buffers_blend, glewIsSupported("GL_AMD_draw_buffers_blend"), glewGetExtension("GL_AMD_draw_buffers_blend"));
+
+ glewInfoFunc(fi, "glBlendEquationIndexedAMD", glBlendEquationIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendEquationSeparateIndexedAMD", glBlendEquationSeparateIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendFuncIndexedAMD", glBlendFuncIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateIndexedAMD", glBlendFuncSeparateIndexedAMD == NULL);
+}
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+#ifdef GL_AMD_framebuffer_multisample_advanced
+
+static void _glewInfo_GL_AMD_framebuffer_multisample_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_framebuffer_multisample_advanced", GLEW_AMD_framebuffer_multisample_advanced, glewIsSupported("GL_AMD_framebuffer_multisample_advanced"), glewGetExtension("GL_AMD_framebuffer_multisample_advanced"));
+
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleAdvancedAMD", glNamedRenderbufferStorageMultisampleAdvancedAMD == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleAdvancedAMD", glRenderbufferStorageMultisampleAdvancedAMD == NULL);
+}
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+#ifdef GL_AMD_framebuffer_sample_positions
+
+static void _glewInfo_GL_AMD_framebuffer_sample_positions (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_framebuffer_sample_positions", GLEW_AMD_framebuffer_sample_positions, glewIsSupported("GL_AMD_framebuffer_sample_positions"), glewGetExtension("GL_AMD_framebuffer_sample_positions"));
+
+ glewInfoFunc(fi, "glFramebufferSamplePositionsfvAMD", glFramebufferSamplePositionsfvAMD == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterfvAMD", glGetFramebufferParameterfvAMD == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameterfvAMD", glGetNamedFramebufferParameterfvAMD == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSamplePositionsfvAMD", glNamedFramebufferSamplePositionsfvAMD == NULL);
+}
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+#ifdef GL_AMD_gcn_shader
+
+static void _glewInfo_GL_AMD_gcn_shader (void)
+{
+ glewPrintExt("GL_AMD_gcn_shader", GLEW_AMD_gcn_shader, glewIsSupported("GL_AMD_gcn_shader"), glewGetExtension("GL_AMD_gcn_shader"));
+}
+
+#endif /* GL_AMD_gcn_shader */
+
+#ifdef GL_AMD_gpu_shader_half_float
+
+static void _glewInfo_GL_AMD_gpu_shader_half_float (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_half_float", GLEW_AMD_gpu_shader_half_float, glewIsSupported("GL_AMD_gpu_shader_half_float"), glewGetExtension("GL_AMD_gpu_shader_half_float"));
+}
+
+#endif /* GL_AMD_gpu_shader_half_float */
+
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+
+static void _glewInfo_GL_AMD_gpu_shader_half_float_fetch (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_half_float_fetch", GLEW_AMD_gpu_shader_half_float_fetch, glewIsSupported("GL_AMD_gpu_shader_half_float_fetch"), glewGetExtension("GL_AMD_gpu_shader_half_float_fetch"));
+}
+
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+
+#ifdef GL_AMD_gpu_shader_int16
+
+static void _glewInfo_GL_AMD_gpu_shader_int16 (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_int16", GLEW_AMD_gpu_shader_int16, glewIsSupported("GL_AMD_gpu_shader_int16"), glewGetExtension("GL_AMD_gpu_shader_int16"));
+}
+
+#endif /* GL_AMD_gpu_shader_int16 */
+
+#ifdef GL_AMD_gpu_shader_int64
+
+static void _glewInfo_GL_AMD_gpu_shader_int64 (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_int64", GLEW_AMD_gpu_shader_int64, glewIsSupported("GL_AMD_gpu_shader_int64"), glewGetExtension("GL_AMD_gpu_shader_int64"));
+}
+
+#endif /* GL_AMD_gpu_shader_int64 */
+
+#ifdef GL_AMD_interleaved_elements
+
+static void _glewInfo_GL_AMD_interleaved_elements (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_interleaved_elements", GLEW_AMD_interleaved_elements, glewIsSupported("GL_AMD_interleaved_elements"), glewGetExtension("GL_AMD_interleaved_elements"));
+
+ glewInfoFunc(fi, "glVertexAttribParameteriAMD", glVertexAttribParameteriAMD == NULL);
+}
+
+#endif /* GL_AMD_interleaved_elements */
+
+#ifdef GL_AMD_multi_draw_indirect
+
+static void _glewInfo_GL_AMD_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_multi_draw_indirect", GLEW_AMD_multi_draw_indirect, glewIsSupported("GL_AMD_multi_draw_indirect"), glewGetExtension("GL_AMD_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectAMD", glMultiDrawArraysIndirectAMD == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectAMD", glMultiDrawElementsIndirectAMD == NULL);
+}
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+#ifdef GL_AMD_name_gen_delete
+
+static void _glewInfo_GL_AMD_name_gen_delete (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_name_gen_delete", GLEW_AMD_name_gen_delete, glewIsSupported("GL_AMD_name_gen_delete"), glewGetExtension("GL_AMD_name_gen_delete"));
+
+ glewInfoFunc(fi, "glDeleteNamesAMD", glDeleteNamesAMD == NULL);
+ glewInfoFunc(fi, "glGenNamesAMD", glGenNamesAMD == NULL);
+ glewInfoFunc(fi, "glIsNameAMD", glIsNameAMD == NULL);
+}
+
+#endif /* GL_AMD_name_gen_delete */
+
+#ifdef GL_AMD_occlusion_query_event
+
+static void _glewInfo_GL_AMD_occlusion_query_event (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_occlusion_query_event", GLEW_AMD_occlusion_query_event, glewIsSupported("GL_AMD_occlusion_query_event"), glewGetExtension("GL_AMD_occlusion_query_event"));
+
+ glewInfoFunc(fi, "glQueryObjectParameteruiAMD", glQueryObjectParameteruiAMD == NULL);
+}
+
+#endif /* GL_AMD_occlusion_query_event */
+
+#ifdef GL_AMD_performance_monitor
+
+static void _glewInfo_GL_AMD_performance_monitor (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_performance_monitor", GLEW_AMD_performance_monitor, glewIsSupported("GL_AMD_performance_monitor"), glewGetExtension("GL_AMD_performance_monitor"));
+
+ glewInfoFunc(fi, "glBeginPerfMonitorAMD", glBeginPerfMonitorAMD == NULL);
+ glewInfoFunc(fi, "glDeletePerfMonitorsAMD", glDeletePerfMonitorsAMD == NULL);
+ glewInfoFunc(fi, "glEndPerfMonitorAMD", glEndPerfMonitorAMD == NULL);
+ glewInfoFunc(fi, "glGenPerfMonitorsAMD", glGenPerfMonitorsAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterDataAMD", glGetPerfMonitorCounterDataAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterInfoAMD", glGetPerfMonitorCounterInfoAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterStringAMD", glGetPerfMonitorCounterStringAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCountersAMD", glGetPerfMonitorCountersAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorGroupStringAMD", glGetPerfMonitorGroupStringAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorGroupsAMD", glGetPerfMonitorGroupsAMD == NULL);
+ glewInfoFunc(fi, "glSelectPerfMonitorCountersAMD", glSelectPerfMonitorCountersAMD == NULL);
+}
+
+#endif /* GL_AMD_performance_monitor */
+
+#ifdef GL_AMD_pinned_memory
+
+static void _glewInfo_GL_AMD_pinned_memory (void)
+{
+ glewPrintExt("GL_AMD_pinned_memory", GLEW_AMD_pinned_memory, glewIsSupported("GL_AMD_pinned_memory"), glewGetExtension("GL_AMD_pinned_memory"));
+}
+
+#endif /* GL_AMD_pinned_memory */
+
+#ifdef GL_AMD_program_binary_Z400
+
+static void _glewInfo_GL_AMD_program_binary_Z400 (void)
+{
+ glewPrintExt("GL_AMD_program_binary_Z400", GLEW_AMD_program_binary_Z400, glewIsSupported("GL_AMD_program_binary_Z400"), glewGetExtension("GL_AMD_program_binary_Z400"));
+}
+
+#endif /* GL_AMD_program_binary_Z400 */
+
+#ifdef GL_AMD_query_buffer_object
+
+static void _glewInfo_GL_AMD_query_buffer_object (void)
+{
+ glewPrintExt("GL_AMD_query_buffer_object", GLEW_AMD_query_buffer_object, glewIsSupported("GL_AMD_query_buffer_object"), glewGetExtension("GL_AMD_query_buffer_object"));
+}
+
+#endif /* GL_AMD_query_buffer_object */
+
+#ifdef GL_AMD_sample_positions
+
+static void _glewInfo_GL_AMD_sample_positions (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_sample_positions", GLEW_AMD_sample_positions, glewIsSupported("GL_AMD_sample_positions"), glewGetExtension("GL_AMD_sample_positions"));
+
+ glewInfoFunc(fi, "glSetMultisamplefvAMD", glSetMultisamplefvAMD == NULL);
+}
+
+#endif /* GL_AMD_sample_positions */
+
+#ifdef GL_AMD_seamless_cubemap_per_texture
+
+static void _glewInfo_GL_AMD_seamless_cubemap_per_texture (void)
+{
+ glewPrintExt("GL_AMD_seamless_cubemap_per_texture", GLEW_AMD_seamless_cubemap_per_texture, glewIsSupported("GL_AMD_seamless_cubemap_per_texture"), glewGetExtension("GL_AMD_seamless_cubemap_per_texture"));
+}
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+#ifdef GL_AMD_shader_atomic_counter_ops
+
+static void _glewInfo_GL_AMD_shader_atomic_counter_ops (void)
+{
+ glewPrintExt("GL_AMD_shader_atomic_counter_ops", GLEW_AMD_shader_atomic_counter_ops, glewIsSupported("GL_AMD_shader_atomic_counter_ops"), glewGetExtension("GL_AMD_shader_atomic_counter_ops"));
+}
+
+#endif /* GL_AMD_shader_atomic_counter_ops */
+
+#ifdef GL_AMD_shader_ballot
+
+static void _glewInfo_GL_AMD_shader_ballot (void)
+{
+ glewPrintExt("GL_AMD_shader_ballot", GLEW_AMD_shader_ballot, glewIsSupported("GL_AMD_shader_ballot"), glewGetExtension("GL_AMD_shader_ballot"));
+}
+
+#endif /* GL_AMD_shader_ballot */
+
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+
+static void _glewInfo_GL_AMD_shader_explicit_vertex_parameter (void)
+{
+ glewPrintExt("GL_AMD_shader_explicit_vertex_parameter", GLEW_AMD_shader_explicit_vertex_parameter, glewIsSupported("GL_AMD_shader_explicit_vertex_parameter"), glewGetExtension("GL_AMD_shader_explicit_vertex_parameter"));
+}
+
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+
+#ifdef GL_AMD_shader_image_load_store_lod
+
+static void _glewInfo_GL_AMD_shader_image_load_store_lod (void)
+{
+ glewPrintExt("GL_AMD_shader_image_load_store_lod", GLEW_AMD_shader_image_load_store_lod, glewIsSupported("GL_AMD_shader_image_load_store_lod"), glewGetExtension("GL_AMD_shader_image_load_store_lod"));
+}
+
+#endif /* GL_AMD_shader_image_load_store_lod */
+
+#ifdef GL_AMD_shader_stencil_export
+
+static void _glewInfo_GL_AMD_shader_stencil_export (void)
+{
+ glewPrintExt("GL_AMD_shader_stencil_export", GLEW_AMD_shader_stencil_export, glewIsSupported("GL_AMD_shader_stencil_export"), glewGetExtension("GL_AMD_shader_stencil_export"));
+}
+
+#endif /* GL_AMD_shader_stencil_export */
+
+#ifdef GL_AMD_shader_stencil_value_export
+
+static void _glewInfo_GL_AMD_shader_stencil_value_export (void)
+{
+ glewPrintExt("GL_AMD_shader_stencil_value_export", GLEW_AMD_shader_stencil_value_export, glewIsSupported("GL_AMD_shader_stencil_value_export"), glewGetExtension("GL_AMD_shader_stencil_value_export"));
+}
+
+#endif /* GL_AMD_shader_stencil_value_export */
+
+#ifdef GL_AMD_shader_trinary_minmax
+
+static void _glewInfo_GL_AMD_shader_trinary_minmax (void)
+{
+ glewPrintExt("GL_AMD_shader_trinary_minmax", GLEW_AMD_shader_trinary_minmax, glewIsSupported("GL_AMD_shader_trinary_minmax"), glewGetExtension("GL_AMD_shader_trinary_minmax"));
+}
+
+#endif /* GL_AMD_shader_trinary_minmax */
+
+#ifdef GL_AMD_sparse_texture
+
+static void _glewInfo_GL_AMD_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_sparse_texture", GLEW_AMD_sparse_texture, glewIsSupported("GL_AMD_sparse_texture"), glewGetExtension("GL_AMD_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexStorageSparseAMD", glTexStorageSparseAMD == NULL);
+ glewInfoFunc(fi, "glTextureStorageSparseAMD", glTextureStorageSparseAMD == NULL);
+}
+
+#endif /* GL_AMD_sparse_texture */
+
+#ifdef GL_AMD_stencil_operation_extended
+
+static void _glewInfo_GL_AMD_stencil_operation_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_stencil_operation_extended", GLEW_AMD_stencil_operation_extended, glewIsSupported("GL_AMD_stencil_operation_extended"), glewGetExtension("GL_AMD_stencil_operation_extended"));
+
+ glewInfoFunc(fi, "glStencilOpValueAMD", glStencilOpValueAMD == NULL);
+}
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+#ifdef GL_AMD_texture_gather_bias_lod
+
+static void _glewInfo_GL_AMD_texture_gather_bias_lod (void)
+{
+ glewPrintExt("GL_AMD_texture_gather_bias_lod", GLEW_AMD_texture_gather_bias_lod, glewIsSupported("GL_AMD_texture_gather_bias_lod"), glewGetExtension("GL_AMD_texture_gather_bias_lod"));
+}
+
+#endif /* GL_AMD_texture_gather_bias_lod */
+
+#ifdef GL_AMD_texture_texture4
+
+static void _glewInfo_GL_AMD_texture_texture4 (void)
+{
+ glewPrintExt("GL_AMD_texture_texture4", GLEW_AMD_texture_texture4, glewIsSupported("GL_AMD_texture_texture4"), glewGetExtension("GL_AMD_texture_texture4"));
+}
+
+#endif /* GL_AMD_texture_texture4 */
+
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+
+static void _glewInfo_GL_AMD_transform_feedback3_lines_triangles (void)
+{
+ glewPrintExt("GL_AMD_transform_feedback3_lines_triangles", GLEW_AMD_transform_feedback3_lines_triangles, glewIsSupported("GL_AMD_transform_feedback3_lines_triangles"), glewGetExtension("GL_AMD_transform_feedback3_lines_triangles"));
+}
+
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+
+#ifdef GL_AMD_transform_feedback4
+
+static void _glewInfo_GL_AMD_transform_feedback4 (void)
+{
+ glewPrintExt("GL_AMD_transform_feedback4", GLEW_AMD_transform_feedback4, glewIsSupported("GL_AMD_transform_feedback4"), glewGetExtension("GL_AMD_transform_feedback4"));
+}
+
+#endif /* GL_AMD_transform_feedback4 */
+
+#ifdef GL_AMD_vertex_shader_layer
+
+static void _glewInfo_GL_AMD_vertex_shader_layer (void)
+{
+ glewPrintExt("GL_AMD_vertex_shader_layer", GLEW_AMD_vertex_shader_layer, glewIsSupported("GL_AMD_vertex_shader_layer"), glewGetExtension("GL_AMD_vertex_shader_layer"));
+}
+
+#endif /* GL_AMD_vertex_shader_layer */
+
+#ifdef GL_AMD_vertex_shader_tessellator
+
+static void _glewInfo_GL_AMD_vertex_shader_tessellator (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_vertex_shader_tessellator", GLEW_AMD_vertex_shader_tessellator, glewIsSupported("GL_AMD_vertex_shader_tessellator"), glewGetExtension("GL_AMD_vertex_shader_tessellator"));
+
+ glewInfoFunc(fi, "glTessellationFactorAMD", glTessellationFactorAMD == NULL);
+ glewInfoFunc(fi, "glTessellationModeAMD", glTessellationModeAMD == NULL);
+}
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+#ifdef GL_AMD_vertex_shader_viewport_index
+
+static void _glewInfo_GL_AMD_vertex_shader_viewport_index (void)
+{
+ glewPrintExt("GL_AMD_vertex_shader_viewport_index", GLEW_AMD_vertex_shader_viewport_index, glewIsSupported("GL_AMD_vertex_shader_viewport_index"), glewGetExtension("GL_AMD_vertex_shader_viewport_index"));
+}
+
+#endif /* GL_AMD_vertex_shader_viewport_index */
+
+#ifdef GL_ANDROID_extension_pack_es31a
+
+static void _glewInfo_GL_ANDROID_extension_pack_es31a (void)
+{
+ glewPrintExt("GL_ANDROID_extension_pack_es31a", GLEW_ANDROID_extension_pack_es31a, glewIsSupported("GL_ANDROID_extension_pack_es31a"), glewGetExtension("GL_ANDROID_extension_pack_es31a"));
+}
+
+#endif /* GL_ANDROID_extension_pack_es31a */
+
+#ifdef GL_ANGLE_depth_texture
+
+static void _glewInfo_GL_ANGLE_depth_texture (void)
+{
+ glewPrintExt("GL_ANGLE_depth_texture", GLEW_ANGLE_depth_texture, glewIsSupported("GL_ANGLE_depth_texture"), glewGetExtension("GL_ANGLE_depth_texture"));
+}
+
+#endif /* GL_ANGLE_depth_texture */
+
+#ifdef GL_ANGLE_framebuffer_blit
+
+static void _glewInfo_GL_ANGLE_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_framebuffer_blit", GLEW_ANGLE_framebuffer_blit, glewIsSupported("GL_ANGLE_framebuffer_blit"), glewGetExtension("GL_ANGLE_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferANGLE", glBlitFramebufferANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+#ifdef GL_ANGLE_framebuffer_multisample
+
+static void _glewInfo_GL_ANGLE_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_framebuffer_multisample", GLEW_ANGLE_framebuffer_multisample, glewIsSupported("GL_ANGLE_framebuffer_multisample"), glewGetExtension("GL_ANGLE_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleANGLE", glRenderbufferStorageMultisampleANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+#ifdef GL_ANGLE_instanced_arrays
+
+static void _glewInfo_GL_ANGLE_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_instanced_arrays", GLEW_ANGLE_instanced_arrays, glewIsSupported("GL_ANGLE_instanced_arrays"), glewGetExtension("GL_ANGLE_instanced_arrays"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedANGLE", glDrawArraysInstancedANGLE == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedANGLE", glDrawElementsInstancedANGLE == NULL);
+ glewInfoFunc(fi, "glVertexAttribDivisorANGLE", glVertexAttribDivisorANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+#ifdef GL_ANGLE_pack_reverse_row_order
+
+static void _glewInfo_GL_ANGLE_pack_reverse_row_order (void)
+{
+ glewPrintExt("GL_ANGLE_pack_reverse_row_order", GLEW_ANGLE_pack_reverse_row_order, glewIsSupported("GL_ANGLE_pack_reverse_row_order"), glewGetExtension("GL_ANGLE_pack_reverse_row_order"));
+}
+
+#endif /* GL_ANGLE_pack_reverse_row_order */
+
+#ifdef GL_ANGLE_program_binary
+
+static void _glewInfo_GL_ANGLE_program_binary (void)
+{
+ glewPrintExt("GL_ANGLE_program_binary", GLEW_ANGLE_program_binary, glewIsSupported("GL_ANGLE_program_binary"), glewGetExtension("GL_ANGLE_program_binary"));
+}
+
+#endif /* GL_ANGLE_program_binary */
+
+#ifdef GL_ANGLE_texture_compression_dxt1
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt1 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt1", GLEW_ANGLE_texture_compression_dxt1, glewIsSupported("GL_ANGLE_texture_compression_dxt1"), glewGetExtension("GL_ANGLE_texture_compression_dxt1"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+
+#ifdef GL_ANGLE_texture_compression_dxt3
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt3 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt3", GLEW_ANGLE_texture_compression_dxt3, glewIsSupported("GL_ANGLE_texture_compression_dxt3"), glewGetExtension("GL_ANGLE_texture_compression_dxt3"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+
+#ifdef GL_ANGLE_texture_compression_dxt5
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt5 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt5", GLEW_ANGLE_texture_compression_dxt5, glewIsSupported("GL_ANGLE_texture_compression_dxt5"), glewGetExtension("GL_ANGLE_texture_compression_dxt5"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+
+#ifdef GL_ANGLE_texture_usage
+
+static void _glewInfo_GL_ANGLE_texture_usage (void)
+{
+ glewPrintExt("GL_ANGLE_texture_usage", GLEW_ANGLE_texture_usage, glewIsSupported("GL_ANGLE_texture_usage"), glewGetExtension("GL_ANGLE_texture_usage"));
+}
+
+#endif /* GL_ANGLE_texture_usage */
+
+#ifdef GL_ANGLE_timer_query
+
+static void _glewInfo_GL_ANGLE_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_timer_query", GLEW_ANGLE_timer_query, glewIsSupported("GL_ANGLE_timer_query"), glewGetExtension("GL_ANGLE_timer_query"));
+
+ glewInfoFunc(fi, "glBeginQueryANGLE", glBeginQueryANGLE == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesANGLE", glDeleteQueriesANGLE == NULL);
+ glewInfoFunc(fi, "glEndQueryANGLE", glEndQueryANGLE == NULL);
+ glewInfoFunc(fi, "glGenQueriesANGLE", glGenQueriesANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjecti64vANGLE", glGetQueryObjecti64vANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivANGLE", glGetQueryObjectivANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64vANGLE", glGetQueryObjectui64vANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivANGLE", glGetQueryObjectuivANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryivANGLE", glGetQueryivANGLE == NULL);
+ glewInfoFunc(fi, "glIsQueryANGLE", glIsQueryANGLE == NULL);
+ glewInfoFunc(fi, "glQueryCounterANGLE", glQueryCounterANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_timer_query */
+
+#ifdef GL_ANGLE_translated_shader_source
+
+static void _glewInfo_GL_ANGLE_translated_shader_source (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_translated_shader_source", GLEW_ANGLE_translated_shader_source, glewIsSupported("GL_ANGLE_translated_shader_source"), glewGetExtension("GL_ANGLE_translated_shader_source"));
+
+ glewInfoFunc(fi, "glGetTranslatedShaderSourceANGLE", glGetTranslatedShaderSourceANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+#ifdef GL_APPLE_aux_depth_stencil
+
+static void _glewInfo_GL_APPLE_aux_depth_stencil (void)
+{
+ glewPrintExt("GL_APPLE_aux_depth_stencil", GLEW_APPLE_aux_depth_stencil, glewIsSupported("GL_APPLE_aux_depth_stencil"), glewGetExtension("GL_APPLE_aux_depth_stencil"));
+}
+
+#endif /* GL_APPLE_aux_depth_stencil */
+
+#ifdef GL_APPLE_client_storage
+
+static void _glewInfo_GL_APPLE_client_storage (void)
+{
+ glewPrintExt("GL_APPLE_client_storage", GLEW_APPLE_client_storage, glewIsSupported("GL_APPLE_client_storage"), glewGetExtension("GL_APPLE_client_storage"));
+}
+
+#endif /* GL_APPLE_client_storage */
+
+#ifdef GL_APPLE_clip_distance
+
+static void _glewInfo_GL_APPLE_clip_distance (void)
+{
+ glewPrintExt("GL_APPLE_clip_distance", GLEW_APPLE_clip_distance, glewIsSupported("GL_APPLE_clip_distance"), glewGetExtension("GL_APPLE_clip_distance"));
+}
+
+#endif /* GL_APPLE_clip_distance */
+
+#ifdef GL_APPLE_color_buffer_packed_float
+
+static void _glewInfo_GL_APPLE_color_buffer_packed_float (void)
+{
+ glewPrintExt("GL_APPLE_color_buffer_packed_float", GLEW_APPLE_color_buffer_packed_float, glewIsSupported("GL_APPLE_color_buffer_packed_float"), glewGetExtension("GL_APPLE_color_buffer_packed_float"));
+}
+
+#endif /* GL_APPLE_color_buffer_packed_float */
+
+#ifdef GL_APPLE_copy_texture_levels
+
+static void _glewInfo_GL_APPLE_copy_texture_levels (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_copy_texture_levels", GLEW_APPLE_copy_texture_levels, glewIsSupported("GL_APPLE_copy_texture_levels"), glewGetExtension("GL_APPLE_copy_texture_levels"));
+
+ glewInfoFunc(fi, "glCopyTextureLevelsAPPLE", glCopyTextureLevelsAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+#ifdef GL_APPLE_element_array
+
+static void _glewInfo_GL_APPLE_element_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_element_array", GLEW_APPLE_element_array, glewIsSupported("GL_APPLE_element_array"), glewGetExtension("GL_APPLE_element_array"));
+
+ glewInfoFunc(fi, "glDrawElementArrayAPPLE", glDrawElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementArrayAPPLE", glDrawRangeElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glElementPointerAPPLE", glElementPointerAPPLE == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementArrayAPPLE", glMultiDrawElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glMultiDrawRangeElementArrayAPPLE", glMultiDrawRangeElementArrayAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_element_array */
+
+#ifdef GL_APPLE_fence
+
+static void _glewInfo_GL_APPLE_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_fence", GLEW_APPLE_fence, glewIsSupported("GL_APPLE_fence"), glewGetExtension("GL_APPLE_fence"));
+
+ glewInfoFunc(fi, "glDeleteFencesAPPLE", glDeleteFencesAPPLE == NULL);
+ glewInfoFunc(fi, "glFinishFenceAPPLE", glFinishFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glFinishObjectAPPLE", glFinishObjectAPPLE == NULL);
+ glewInfoFunc(fi, "glGenFencesAPPLE", glGenFencesAPPLE == NULL);
+ glewInfoFunc(fi, "glIsFenceAPPLE", glIsFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glSetFenceAPPLE", glSetFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glTestFenceAPPLE", glTestFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glTestObjectAPPLE", glTestObjectAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_fence */
+
+#ifdef GL_APPLE_float_pixels
+
+static void _glewInfo_GL_APPLE_float_pixels (void)
+{
+ glewPrintExt("GL_APPLE_float_pixels", GLEW_APPLE_float_pixels, glewIsSupported("GL_APPLE_float_pixels"), glewGetExtension("GL_APPLE_float_pixels"));
+}
+
+#endif /* GL_APPLE_float_pixels */
+
+#ifdef GL_APPLE_flush_buffer_range
+
+static void _glewInfo_GL_APPLE_flush_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_flush_buffer_range", GLEW_APPLE_flush_buffer_range, glewIsSupported("GL_APPLE_flush_buffer_range"), glewGetExtension("GL_APPLE_flush_buffer_range"));
+
+ glewInfoFunc(fi, "glBufferParameteriAPPLE", glBufferParameteriAPPLE == NULL);
+ glewInfoFunc(fi, "glFlushMappedBufferRangeAPPLE", glFlushMappedBufferRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+#ifdef GL_APPLE_framebuffer_multisample
+
+static void _glewInfo_GL_APPLE_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_framebuffer_multisample", GLEW_APPLE_framebuffer_multisample, glewIsSupported("GL_APPLE_framebuffer_multisample"), glewGetExtension("GL_APPLE_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleAPPLE", glRenderbufferStorageMultisampleAPPLE == NULL);
+ glewInfoFunc(fi, "glResolveMultisampleFramebufferAPPLE", glResolveMultisampleFramebufferAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+#ifdef GL_APPLE_object_purgeable
+
+static void _glewInfo_GL_APPLE_object_purgeable (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_object_purgeable", GLEW_APPLE_object_purgeable, glewIsSupported("GL_APPLE_object_purgeable"), glewGetExtension("GL_APPLE_object_purgeable"));
+
+ glewInfoFunc(fi, "glGetObjectParameterivAPPLE", glGetObjectParameterivAPPLE == NULL);
+ glewInfoFunc(fi, "glObjectPurgeableAPPLE", glObjectPurgeableAPPLE == NULL);
+ glewInfoFunc(fi, "glObjectUnpurgeableAPPLE", glObjectUnpurgeableAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_object_purgeable */
+
+#ifdef GL_APPLE_pixel_buffer
+
+static void _glewInfo_GL_APPLE_pixel_buffer (void)
+{
+ glewPrintExt("GL_APPLE_pixel_buffer", GLEW_APPLE_pixel_buffer, glewIsSupported("GL_APPLE_pixel_buffer"), glewGetExtension("GL_APPLE_pixel_buffer"));
+}
+
+#endif /* GL_APPLE_pixel_buffer */
+
+#ifdef GL_APPLE_rgb_422
+
+static void _glewInfo_GL_APPLE_rgb_422 (void)
+{
+ glewPrintExt("GL_APPLE_rgb_422", GLEW_APPLE_rgb_422, glewIsSupported("GL_APPLE_rgb_422"), glewGetExtension("GL_APPLE_rgb_422"));
+}
+
+#endif /* GL_APPLE_rgb_422 */
+
+#ifdef GL_APPLE_row_bytes
+
+static void _glewInfo_GL_APPLE_row_bytes (void)
+{
+ glewPrintExt("GL_APPLE_row_bytes", GLEW_APPLE_row_bytes, glewIsSupported("GL_APPLE_row_bytes"), glewGetExtension("GL_APPLE_row_bytes"));
+}
+
+#endif /* GL_APPLE_row_bytes */
+
+#ifdef GL_APPLE_specular_vector
+
+static void _glewInfo_GL_APPLE_specular_vector (void)
+{
+ glewPrintExt("GL_APPLE_specular_vector", GLEW_APPLE_specular_vector, glewIsSupported("GL_APPLE_specular_vector"), glewGetExtension("GL_APPLE_specular_vector"));
+}
+
+#endif /* GL_APPLE_specular_vector */
+
+#ifdef GL_APPLE_sync
+
+static void _glewInfo_GL_APPLE_sync (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_sync", GLEW_APPLE_sync, glewIsSupported("GL_APPLE_sync"), glewGetExtension("GL_APPLE_sync"));
+
+ glewInfoFunc(fi, "glClientWaitSyncAPPLE", glClientWaitSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glDeleteSyncAPPLE", glDeleteSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glFenceSyncAPPLE", glFenceSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glGetInteger64vAPPLE", glGetInteger64vAPPLE == NULL);
+ glewInfoFunc(fi, "glGetSyncivAPPLE", glGetSyncivAPPLE == NULL);
+ glewInfoFunc(fi, "glIsSyncAPPLE", glIsSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glWaitSyncAPPLE", glWaitSyncAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_sync */
+
+#ifdef GL_APPLE_texture_2D_limited_npot
+
+static void _glewInfo_GL_APPLE_texture_2D_limited_npot (void)
+{
+ glewPrintExt("GL_APPLE_texture_2D_limited_npot", GLEW_APPLE_texture_2D_limited_npot, glewIsSupported("GL_APPLE_texture_2D_limited_npot"), glewGetExtension("GL_APPLE_texture_2D_limited_npot"));
+}
+
+#endif /* GL_APPLE_texture_2D_limited_npot */
+
+#ifdef GL_APPLE_texture_format_BGRA8888
+
+static void _glewInfo_GL_APPLE_texture_format_BGRA8888 (void)
+{
+ glewPrintExt("GL_APPLE_texture_format_BGRA8888", GLEW_APPLE_texture_format_BGRA8888, glewIsSupported("GL_APPLE_texture_format_BGRA8888"), glewGetExtension("GL_APPLE_texture_format_BGRA8888"));
+}
+
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+
+#ifdef GL_APPLE_texture_max_level
+
+static void _glewInfo_GL_APPLE_texture_max_level (void)
+{
+ glewPrintExt("GL_APPLE_texture_max_level", GLEW_APPLE_texture_max_level, glewIsSupported("GL_APPLE_texture_max_level"), glewGetExtension("GL_APPLE_texture_max_level"));
+}
+
+#endif /* GL_APPLE_texture_max_level */
+
+#ifdef GL_APPLE_texture_packed_float
+
+static void _glewInfo_GL_APPLE_texture_packed_float (void)
+{
+ glewPrintExt("GL_APPLE_texture_packed_float", GLEW_APPLE_texture_packed_float, glewIsSupported("GL_APPLE_texture_packed_float"), glewGetExtension("GL_APPLE_texture_packed_float"));
+}
+
+#endif /* GL_APPLE_texture_packed_float */
+
+#ifdef GL_APPLE_texture_range
+
+static void _glewInfo_GL_APPLE_texture_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_texture_range", GLEW_APPLE_texture_range, glewIsSupported("GL_APPLE_texture_range"), glewGetExtension("GL_APPLE_texture_range"));
+
+ glewInfoFunc(fi, "glGetTexParameterPointervAPPLE", glGetTexParameterPointervAPPLE == NULL);
+ glewInfoFunc(fi, "glTextureRangeAPPLE", glTextureRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_texture_range */
+
+#ifdef GL_APPLE_transform_hint
+
+static void _glewInfo_GL_APPLE_transform_hint (void)
+{
+ glewPrintExt("GL_APPLE_transform_hint", GLEW_APPLE_transform_hint, glewIsSupported("GL_APPLE_transform_hint"), glewGetExtension("GL_APPLE_transform_hint"));
+}
+
+#endif /* GL_APPLE_transform_hint */
+
+#ifdef GL_APPLE_vertex_array_object
+
+static void _glewInfo_GL_APPLE_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_array_object", GLEW_APPLE_vertex_array_object, glewIsSupported("GL_APPLE_vertex_array_object"), glewGetExtension("GL_APPLE_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArrayAPPLE", glBindVertexArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysAPPLE", glDeleteVertexArraysAPPLE == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysAPPLE", glGenVertexArraysAPPLE == NULL);
+ glewInfoFunc(fi, "glIsVertexArrayAPPLE", glIsVertexArrayAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_array_object */
+
+#ifdef GL_APPLE_vertex_array_range
+
+static void _glewInfo_GL_APPLE_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_array_range", GLEW_APPLE_vertex_array_range, glewIsSupported("GL_APPLE_vertex_array_range"), glewGetExtension("GL_APPLE_vertex_array_range"));
+
+ glewInfoFunc(fi, "glFlushVertexArrayRangeAPPLE", glFlushVertexArrayRangeAPPLE == NULL);
+ glewInfoFunc(fi, "glVertexArrayParameteriAPPLE", glVertexArrayParameteriAPPLE == NULL);
+ glewInfoFunc(fi, "glVertexArrayRangeAPPLE", glVertexArrayRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_array_range */
+
+#ifdef GL_APPLE_vertex_program_evaluators
+
+static void _glewInfo_GL_APPLE_vertex_program_evaluators (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_program_evaluators", GLEW_APPLE_vertex_program_evaluators, glewIsSupported("GL_APPLE_vertex_program_evaluators"), glewGetExtension("GL_APPLE_vertex_program_evaluators"));
+
+ glewInfoFunc(fi, "glDisableVertexAttribAPPLE", glDisableVertexAttribAPPLE == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribAPPLE", glEnableVertexAttribAPPLE == NULL);
+ glewInfoFunc(fi, "glIsVertexAttribEnabledAPPLE", glIsVertexAttribEnabledAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib1dAPPLE", glMapVertexAttrib1dAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib1fAPPLE", glMapVertexAttrib1fAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib2dAPPLE", glMapVertexAttrib2dAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib2fAPPLE", glMapVertexAttrib2fAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+#ifdef GL_APPLE_ycbcr_422
+
+static void _glewInfo_GL_APPLE_ycbcr_422 (void)
+{
+ glewPrintExt("GL_APPLE_ycbcr_422", GLEW_APPLE_ycbcr_422, glewIsSupported("GL_APPLE_ycbcr_422"), glewGetExtension("GL_APPLE_ycbcr_422"));
+}
+
+#endif /* GL_APPLE_ycbcr_422 */
+
+#ifdef GL_ARB_ES2_compatibility
+
+static void _glewInfo_GL_ARB_ES2_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES2_compatibility", GLEW_ARB_ES2_compatibility, glewIsSupported("GL_ARB_ES2_compatibility"), glewGetExtension("GL_ARB_ES2_compatibility"));
+
+ glewInfoFunc(fi, "glClearDepthf", glClearDepthf == NULL);
+ glewInfoFunc(fi, "glDepthRangef", glDepthRangef == NULL);
+ glewInfoFunc(fi, "glGetShaderPrecisionFormat", glGetShaderPrecisionFormat == NULL);
+ glewInfoFunc(fi, "glReleaseShaderCompiler", glReleaseShaderCompiler == NULL);
+ glewInfoFunc(fi, "glShaderBinary", glShaderBinary == NULL);
+}
+
+#endif /* GL_ARB_ES2_compatibility */
+
+#ifdef GL_ARB_ES3_1_compatibility
+
+static void _glewInfo_GL_ARB_ES3_1_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES3_1_compatibility", GLEW_ARB_ES3_1_compatibility, glewIsSupported("GL_ARB_ES3_1_compatibility"), glewGetExtension("GL_ARB_ES3_1_compatibility"));
+
+ glewInfoFunc(fi, "glMemoryBarrierByRegion", glMemoryBarrierByRegion == NULL);
+}
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+#ifdef GL_ARB_ES3_2_compatibility
+
+static void _glewInfo_GL_ARB_ES3_2_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES3_2_compatibility", GLEW_ARB_ES3_2_compatibility, glewIsSupported("GL_ARB_ES3_2_compatibility"), glewGetExtension("GL_ARB_ES3_2_compatibility"));
+
+ glewInfoFunc(fi, "glPrimitiveBoundingBoxARB", glPrimitiveBoundingBoxARB == NULL);
+}
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+#ifdef GL_ARB_ES3_compatibility
+
+static void _glewInfo_GL_ARB_ES3_compatibility (void)
+{
+ glewPrintExt("GL_ARB_ES3_compatibility", GLEW_ARB_ES3_compatibility, glewIsSupported("GL_ARB_ES3_compatibility"), glewGetExtension("GL_ARB_ES3_compatibility"));
+}
+
+#endif /* GL_ARB_ES3_compatibility */
+
+#ifdef GL_ARB_arrays_of_arrays
+
+static void _glewInfo_GL_ARB_arrays_of_arrays (void)
+{
+ glewPrintExt("GL_ARB_arrays_of_arrays", GLEW_ARB_arrays_of_arrays, glewIsSupported("GL_ARB_arrays_of_arrays"), glewGetExtension("GL_ARB_arrays_of_arrays"));
+}
+
+#endif /* GL_ARB_arrays_of_arrays */
+
+#ifdef GL_ARB_base_instance
+
+static void _glewInfo_GL_ARB_base_instance (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_base_instance", GLEW_ARB_base_instance, glewIsSupported("GL_ARB_base_instance"), glewGetExtension("GL_ARB_base_instance"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedBaseInstance", glDrawArraysInstancedBaseInstance == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseInstance", glDrawElementsInstancedBaseInstance == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexBaseInstance", glDrawElementsInstancedBaseVertexBaseInstance == NULL);
+}
+
+#endif /* GL_ARB_base_instance */
+
+#ifdef GL_ARB_bindless_texture
+
+static void _glewInfo_GL_ARB_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_bindless_texture", GLEW_ARB_bindless_texture, glewIsSupported("GL_ARB_bindless_texture"), glewGetExtension("GL_ARB_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetImageHandleARB", glGetImageHandleARB == NULL);
+ glewInfoFunc(fi, "glGetTextureHandleARB", glGetTextureHandleARB == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleARB", glGetTextureSamplerHandleARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribLui64vARB", glGetVertexAttribLui64vARB == NULL);
+ glewInfoFunc(fi, "glIsImageHandleResidentARB", glIsImageHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glIsTextureHandleResidentARB", glIsTextureHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleNonResidentARB", glMakeImageHandleNonResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleResidentARB", glMakeImageHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleNonResidentARB", glMakeTextureHandleNonResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleResidentARB", glMakeTextureHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64ARB", glProgramUniformHandleui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vARB", glProgramUniformHandleui64vARB == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64ARB", glUniformHandleui64ARB == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vARB", glUniformHandleui64vARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64ARB", glVertexAttribL1ui64ARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64vARB", glVertexAttribL1ui64vARB == NULL);
+}
+
+#endif /* GL_ARB_bindless_texture */
+
+#ifdef GL_ARB_blend_func_extended
+
+static void _glewInfo_GL_ARB_blend_func_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_blend_func_extended", GLEW_ARB_blend_func_extended, glewIsSupported("GL_ARB_blend_func_extended"), glewGetExtension("GL_ARB_blend_func_extended"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationIndexed", glBindFragDataLocationIndexed == NULL);
+ glewInfoFunc(fi, "glGetFragDataIndex", glGetFragDataIndex == NULL);
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
+#ifdef GL_ARB_buffer_storage
+
+static void _glewInfo_GL_ARB_buffer_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_buffer_storage", GLEW_ARB_buffer_storage, glewIsSupported("GL_ARB_buffer_storage"), glewGetExtension("GL_ARB_buffer_storage"));
+
+ glewInfoFunc(fi, "glBufferStorage", glBufferStorage == NULL);
+}
+
+#endif /* GL_ARB_buffer_storage */
+
+#ifdef GL_ARB_cl_event
+
+static void _glewInfo_GL_ARB_cl_event (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_cl_event", GLEW_ARB_cl_event, glewIsSupported("GL_ARB_cl_event"), glewGetExtension("GL_ARB_cl_event"));
+
+ glewInfoFunc(fi, "glCreateSyncFromCLeventARB", glCreateSyncFromCLeventARB == NULL);
+}
+
+#endif /* GL_ARB_cl_event */
+
+#ifdef GL_ARB_clear_buffer_object
+
+static void _glewInfo_GL_ARB_clear_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clear_buffer_object", GLEW_ARB_clear_buffer_object, glewIsSupported("GL_ARB_clear_buffer_object"), glewGetExtension("GL_ARB_clear_buffer_object"));
+
+ glewInfoFunc(fi, "glClearBufferData", glClearBufferData == NULL);
+ glewInfoFunc(fi, "glClearBufferSubData", glClearBufferSubData == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferDataEXT", glClearNamedBufferDataEXT == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferSubDataEXT", glClearNamedBufferSubDataEXT == NULL);
+}
+
+#endif /* GL_ARB_clear_buffer_object */
+
+#ifdef GL_ARB_clear_texture
+
+static void _glewInfo_GL_ARB_clear_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clear_texture", GLEW_ARB_clear_texture, glewIsSupported("GL_ARB_clear_texture"), glewGetExtension("GL_ARB_clear_texture"));
+
+ glewInfoFunc(fi, "glClearTexImage", glClearTexImage == NULL);
+ glewInfoFunc(fi, "glClearTexSubImage", glClearTexSubImage == NULL);
+}
+
+#endif /* GL_ARB_clear_texture */
+
+#ifdef GL_ARB_clip_control
+
+static void _glewInfo_GL_ARB_clip_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clip_control", GLEW_ARB_clip_control, glewIsSupported("GL_ARB_clip_control"), glewGetExtension("GL_ARB_clip_control"));
+
+ glewInfoFunc(fi, "glClipControl", glClipControl == NULL);
+}
+
+#endif /* GL_ARB_clip_control */
+
+#ifdef GL_ARB_color_buffer_float
+
+static void _glewInfo_GL_ARB_color_buffer_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_color_buffer_float", GLEW_ARB_color_buffer_float, glewIsSupported("GL_ARB_color_buffer_float"), glewGetExtension("GL_ARB_color_buffer_float"));
+
+ glewInfoFunc(fi, "glClampColorARB", glClampColorARB == NULL);
+}
+
+#endif /* GL_ARB_color_buffer_float */
+
+#ifdef GL_ARB_compatibility
+
+static void _glewInfo_GL_ARB_compatibility (void)
+{
+ glewPrintExt("GL_ARB_compatibility", GLEW_ARB_compatibility, glewIsSupported("GL_ARB_compatibility"), glewGetExtension("GL_ARB_compatibility"));
+}
+
+#endif /* GL_ARB_compatibility */
+
+#ifdef GL_ARB_compressed_texture_pixel_storage
+
+static void _glewInfo_GL_ARB_compressed_texture_pixel_storage (void)
+{
+ glewPrintExt("GL_ARB_compressed_texture_pixel_storage", GLEW_ARB_compressed_texture_pixel_storage, glewIsSupported("GL_ARB_compressed_texture_pixel_storage"), glewGetExtension("GL_ARB_compressed_texture_pixel_storage"));
+}
+
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+
+#ifdef GL_ARB_compute_shader
+
+static void _glewInfo_GL_ARB_compute_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_compute_shader", GLEW_ARB_compute_shader, glewIsSupported("GL_ARB_compute_shader"), glewGetExtension("GL_ARB_compute_shader"));
+
+ glewInfoFunc(fi, "glDispatchCompute", glDispatchCompute == NULL);
+ glewInfoFunc(fi, "glDispatchComputeIndirect", glDispatchComputeIndirect == NULL);
+}
+
+#endif /* GL_ARB_compute_shader */
+
+#ifdef GL_ARB_compute_variable_group_size
+
+static void _glewInfo_GL_ARB_compute_variable_group_size (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_compute_variable_group_size", GLEW_ARB_compute_variable_group_size, glewIsSupported("GL_ARB_compute_variable_group_size"), glewGetExtension("GL_ARB_compute_variable_group_size"));
+
+ glewInfoFunc(fi, "glDispatchComputeGroupSizeARB", glDispatchComputeGroupSizeARB == NULL);
+}
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+#ifdef GL_ARB_conditional_render_inverted
+
+static void _glewInfo_GL_ARB_conditional_render_inverted (void)
+{
+ glewPrintExt("GL_ARB_conditional_render_inverted", GLEW_ARB_conditional_render_inverted, glewIsSupported("GL_ARB_conditional_render_inverted"), glewGetExtension("GL_ARB_conditional_render_inverted"));
+}
+
+#endif /* GL_ARB_conditional_render_inverted */
+
+#ifdef GL_ARB_conservative_depth
+
+static void _glewInfo_GL_ARB_conservative_depth (void)
+{
+ glewPrintExt("GL_ARB_conservative_depth", GLEW_ARB_conservative_depth, glewIsSupported("GL_ARB_conservative_depth"), glewGetExtension("GL_ARB_conservative_depth"));
+}
+
+#endif /* GL_ARB_conservative_depth */
+
+#ifdef GL_ARB_copy_buffer
+
+static void _glewInfo_GL_ARB_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_copy_buffer", GLEW_ARB_copy_buffer, glewIsSupported("GL_ARB_copy_buffer"), glewGetExtension("GL_ARB_copy_buffer"));
+
+ glewInfoFunc(fi, "glCopyBufferSubData", glCopyBufferSubData == NULL);
+}
+
+#endif /* GL_ARB_copy_buffer */
+
+#ifdef GL_ARB_copy_image
+
+static void _glewInfo_GL_ARB_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_copy_image", GLEW_ARB_copy_image, glewIsSupported("GL_ARB_copy_image"), glewGetExtension("GL_ARB_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubData", glCopyImageSubData == NULL);
+}
+
+#endif /* GL_ARB_copy_image */
+
+#ifdef GL_ARB_cull_distance
+
+static void _glewInfo_GL_ARB_cull_distance (void)
+{
+ glewPrintExt("GL_ARB_cull_distance", GLEW_ARB_cull_distance, glewIsSupported("GL_ARB_cull_distance"), glewGetExtension("GL_ARB_cull_distance"));
+}
+
+#endif /* GL_ARB_cull_distance */
+
+#ifdef GL_ARB_debug_output
+
+static void _glewInfo_GL_ARB_debug_output (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_debug_output", GLEW_ARB_debug_output, glewIsSupported("GL_ARB_debug_output"), glewGetExtension("GL_ARB_debug_output"));
+
+ glewInfoFunc(fi, "glDebugMessageCallbackARB", glDebugMessageCallbackARB == NULL);
+ glewInfoFunc(fi, "glDebugMessageControlARB", glDebugMessageControlARB == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsertARB", glDebugMessageInsertARB == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLogARB", glGetDebugMessageLogARB == NULL);
+}
+
+#endif /* GL_ARB_debug_output */
+
+#ifdef GL_ARB_depth_buffer_float
+
+static void _glewInfo_GL_ARB_depth_buffer_float (void)
+{
+ glewPrintExt("GL_ARB_depth_buffer_float", GLEW_ARB_depth_buffer_float, glewIsSupported("GL_ARB_depth_buffer_float"), glewGetExtension("GL_ARB_depth_buffer_float"));
+}
+
+#endif /* GL_ARB_depth_buffer_float */
+
+#ifdef GL_ARB_depth_clamp
+
+static void _glewInfo_GL_ARB_depth_clamp (void)
+{
+ glewPrintExt("GL_ARB_depth_clamp", GLEW_ARB_depth_clamp, glewIsSupported("GL_ARB_depth_clamp"), glewGetExtension("GL_ARB_depth_clamp"));
+}
+
+#endif /* GL_ARB_depth_clamp */
+
+#ifdef GL_ARB_depth_texture
+
+static void _glewInfo_GL_ARB_depth_texture (void)
+{
+ glewPrintExt("GL_ARB_depth_texture", GLEW_ARB_depth_texture, glewIsSupported("GL_ARB_depth_texture"), glewGetExtension("GL_ARB_depth_texture"));
+}
+
+#endif /* GL_ARB_depth_texture */
+
+#ifdef GL_ARB_derivative_control
+
+static void _glewInfo_GL_ARB_derivative_control (void)
+{
+ glewPrintExt("GL_ARB_derivative_control", GLEW_ARB_derivative_control, glewIsSupported("GL_ARB_derivative_control"), glewGetExtension("GL_ARB_derivative_control"));
+}
+
+#endif /* GL_ARB_derivative_control */
+
+#ifdef GL_ARB_direct_state_access
+
+static void _glewInfo_GL_ARB_direct_state_access (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_direct_state_access", GLEW_ARB_direct_state_access, glewIsSupported("GL_ARB_direct_state_access"), glewGetExtension("GL_ARB_direct_state_access"));
+
+ glewInfoFunc(fi, "glBindTextureUnit", glBindTextureUnit == NULL);
+ glewInfoFunc(fi, "glBlitNamedFramebuffer", glBlitNamedFramebuffer == NULL);
+ glewInfoFunc(fi, "glCheckNamedFramebufferStatus", glCheckNamedFramebufferStatus == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferData", glClearNamedBufferData == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferSubData", glClearNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferfi", glClearNamedFramebufferfi == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferfv", glClearNamedFramebufferfv == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferiv", glClearNamedFramebufferiv == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferuiv", glClearNamedFramebufferuiv == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage1D", glCompressedTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage2D", glCompressedTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage3D", glCompressedTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glCopyNamedBufferSubData", glCopyNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage1D", glCopyTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage2D", glCopyTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage3D", glCopyTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glCreateBuffers", glCreateBuffers == NULL);
+ glewInfoFunc(fi, "glCreateFramebuffers", glCreateFramebuffers == NULL);
+ glewInfoFunc(fi, "glCreateProgramPipelines", glCreateProgramPipelines == NULL);
+ glewInfoFunc(fi, "glCreateQueries", glCreateQueries == NULL);
+ glewInfoFunc(fi, "glCreateRenderbuffers", glCreateRenderbuffers == NULL);
+ glewInfoFunc(fi, "glCreateSamplers", glCreateSamplers == NULL);
+ glewInfoFunc(fi, "glCreateTextures", glCreateTextures == NULL);
+ glewInfoFunc(fi, "glCreateTransformFeedbacks", glCreateTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glCreateVertexArrays", glCreateVertexArrays == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayAttrib", glDisableVertexArrayAttrib == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayAttrib", glEnableVertexArrayAttrib == NULL);
+ glewInfoFunc(fi, "glFlushMappedNamedBufferRange", glFlushMappedNamedBufferRange == NULL);
+ glewInfoFunc(fi, "glGenerateTextureMipmap", glGenerateTextureMipmap == NULL);
+ glewInfoFunc(fi, "glGetCompressedTextureImage", glGetCompressedTextureImage == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameteri64v", glGetNamedBufferParameteri64v == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameteriv", glGetNamedBufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferPointerv", glGetNamedBufferPointerv == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferSubData", glGetNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferAttachmentParameteriv", glGetNamedFramebufferAttachmentParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameteriv", glGetNamedFramebufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedRenderbufferParameteriv", glGetNamedRenderbufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjecti64v", glGetQueryBufferObjecti64v == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectiv", glGetQueryBufferObjectiv == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectui64v", glGetQueryBufferObjectui64v == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectuiv", glGetQueryBufferObjectuiv == NULL);
+ glewInfoFunc(fi, "glGetTextureImage", glGetTextureImage == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterfv", glGetTextureLevelParameterfv == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameteriv", glGetTextureLevelParameteriv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIiv", glGetTextureParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIuiv", glGetTextureParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterfv", glGetTextureParameterfv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameteriv", glGetTextureParameteriv == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbacki64_v", glGetTransformFeedbacki64_v == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbacki_v", glGetTransformFeedbacki_v == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackiv", glGetTransformFeedbackiv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIndexed64iv", glGetVertexArrayIndexed64iv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIndexediv", glGetVertexArrayIndexediv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayiv", glGetVertexArrayiv == NULL);
+ glewInfoFunc(fi, "glInvalidateNamedFramebufferData", glInvalidateNamedFramebufferData == NULL);
+ glewInfoFunc(fi, "glInvalidateNamedFramebufferSubData", glInvalidateNamedFramebufferSubData == NULL);
+ glewInfoFunc(fi, "glMapNamedBuffer", glMapNamedBuffer == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferRange", glMapNamedBufferRange == NULL);
+ glewInfoFunc(fi, "glNamedBufferData", glNamedBufferData == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorage", glNamedBufferStorage == NULL);
+ glewInfoFunc(fi, "glNamedBufferSubData", glNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferDrawBuffer", glNamedFramebufferDrawBuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferDrawBuffers", glNamedFramebufferDrawBuffers == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferParameteri", glNamedFramebufferParameteri == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferReadBuffer", glNamedFramebufferReadBuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferRenderbuffer", glNamedFramebufferRenderbuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture", glNamedFramebufferTexture == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureLayer", glNamedFramebufferTextureLayer == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorage", glNamedRenderbufferStorage == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisample", glNamedRenderbufferStorageMultisample == NULL);
+ glewInfoFunc(fi, "glTextureBuffer", glTextureBuffer == NULL);
+ glewInfoFunc(fi, "glTextureBufferRange", glTextureBufferRange == NULL);
+ glewInfoFunc(fi, "glTextureParameterIiv", glTextureParameterIiv == NULL);
+ glewInfoFunc(fi, "glTextureParameterIuiv", glTextureParameterIuiv == NULL);
+ glewInfoFunc(fi, "glTextureParameterf", glTextureParameterf == NULL);
+ glewInfoFunc(fi, "glTextureParameterfv", glTextureParameterfv == NULL);
+ glewInfoFunc(fi, "glTextureParameteri", glTextureParameteri == NULL);
+ glewInfoFunc(fi, "glTextureParameteriv", glTextureParameteriv == NULL);
+ glewInfoFunc(fi, "glTextureStorage1D", glTextureStorage1D == NULL);
+ glewInfoFunc(fi, "glTextureStorage2D", glTextureStorage2D == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DMultisample", glTextureStorage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureStorage3D", glTextureStorage3D == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DMultisample", glTextureStorage3DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureSubImage1D", glTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glTextureSubImage2D", glTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glTextureSubImage3D", glTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackBufferBase", glTransformFeedbackBufferBase == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackBufferRange", glTransformFeedbackBufferRange == NULL);
+ glewInfoFunc(fi, "glUnmapNamedBuffer", glUnmapNamedBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribBinding", glVertexArrayAttribBinding == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribFormat", glVertexArrayAttribFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribIFormat", glVertexArrayAttribIFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribLFormat", glVertexArrayAttribLFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayBindingDivisor", glVertexArrayBindingDivisor == NULL);
+ glewInfoFunc(fi, "glVertexArrayElementBuffer", glVertexArrayElementBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBuffer", glVertexArrayVertexBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBuffers", glVertexArrayVertexBuffers == NULL);
+}
+
+#endif /* GL_ARB_direct_state_access */
+
+#ifdef GL_ARB_draw_buffers
+
+static void _glewInfo_GL_ARB_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_buffers", GLEW_ARB_draw_buffers, glewIsSupported("GL_ARB_draw_buffers"), glewGetExtension("GL_ARB_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersARB", glDrawBuffersARB == NULL);
+}
+
+#endif /* GL_ARB_draw_buffers */
+
+#ifdef GL_ARB_draw_buffers_blend
+
+static void _glewInfo_GL_ARB_draw_buffers_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_buffers_blend", GLEW_ARB_draw_buffers_blend, glewIsSupported("GL_ARB_draw_buffers_blend"), glewGetExtension("GL_ARB_draw_buffers_blend"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiARB", glBlendEquationSeparateiARB == NULL);
+ glewInfoFunc(fi, "glBlendEquationiARB", glBlendEquationiARB == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiARB", glBlendFuncSeparateiARB == NULL);
+ glewInfoFunc(fi, "glBlendFunciARB", glBlendFunciARB == NULL);
+}
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+#ifdef GL_ARB_draw_elements_base_vertex
+
+static void _glewInfo_GL_ARB_draw_elements_base_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_elements_base_vertex", GLEW_ARB_draw_elements_base_vertex, glewIsSupported("GL_ARB_draw_elements_base_vertex"), glewGetExtension("GL_ARB_draw_elements_base_vertex"));
+
+ glewInfoFunc(fi, "glDrawElementsBaseVertex", glDrawElementsBaseVertex == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertex", glDrawElementsInstancedBaseVertex == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementsBaseVertex", glDrawRangeElementsBaseVertex == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsBaseVertex", glMultiDrawElementsBaseVertex == NULL);
+}
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+#ifdef GL_ARB_draw_indirect
+
+static void _glewInfo_GL_ARB_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_indirect", GLEW_ARB_draw_indirect, glewIsSupported("GL_ARB_draw_indirect"), glewGetExtension("GL_ARB_draw_indirect"));
+
+ glewInfoFunc(fi, "glDrawArraysIndirect", glDrawArraysIndirect == NULL);
+ glewInfoFunc(fi, "glDrawElementsIndirect", glDrawElementsIndirect == NULL);
+}
+
+#endif /* GL_ARB_draw_indirect */
+
+#ifdef GL_ARB_draw_instanced
+
+static void _glewInfo_GL_ARB_draw_instanced (void)
+{
+ glewPrintExt("GL_ARB_draw_instanced", GLEW_ARB_draw_instanced, glewIsSupported("GL_ARB_draw_instanced"), glewGetExtension("GL_ARB_draw_instanced"));
+}
+
+#endif /* GL_ARB_draw_instanced */
+
+#ifdef GL_ARB_enhanced_layouts
+
+static void _glewInfo_GL_ARB_enhanced_layouts (void)
+{
+ glewPrintExt("GL_ARB_enhanced_layouts", GLEW_ARB_enhanced_layouts, glewIsSupported("GL_ARB_enhanced_layouts"), glewGetExtension("GL_ARB_enhanced_layouts"));
+}
+
+#endif /* GL_ARB_enhanced_layouts */
+
+#ifdef GL_ARB_explicit_attrib_location
+
+static void _glewInfo_GL_ARB_explicit_attrib_location (void)
+{
+ glewPrintExt("GL_ARB_explicit_attrib_location", GLEW_ARB_explicit_attrib_location, glewIsSupported("GL_ARB_explicit_attrib_location"), glewGetExtension("GL_ARB_explicit_attrib_location"));
+}
+
+#endif /* GL_ARB_explicit_attrib_location */
+
+#ifdef GL_ARB_explicit_uniform_location
+
+static void _glewInfo_GL_ARB_explicit_uniform_location (void)
+{
+ glewPrintExt("GL_ARB_explicit_uniform_location", GLEW_ARB_explicit_uniform_location, glewIsSupported("GL_ARB_explicit_uniform_location"), glewGetExtension("GL_ARB_explicit_uniform_location"));
+}
+
+#endif /* GL_ARB_explicit_uniform_location */
+
+#ifdef GL_ARB_fragment_coord_conventions
+
+static void _glewInfo_GL_ARB_fragment_coord_conventions (void)
+{
+ glewPrintExt("GL_ARB_fragment_coord_conventions", GLEW_ARB_fragment_coord_conventions, glewIsSupported("GL_ARB_fragment_coord_conventions"), glewGetExtension("GL_ARB_fragment_coord_conventions"));
+}
+
+#endif /* GL_ARB_fragment_coord_conventions */
+
+#ifdef GL_ARB_fragment_layer_viewport
+
+static void _glewInfo_GL_ARB_fragment_layer_viewport (void)
+{
+ glewPrintExt("GL_ARB_fragment_layer_viewport", GLEW_ARB_fragment_layer_viewport, glewIsSupported("GL_ARB_fragment_layer_viewport"), glewGetExtension("GL_ARB_fragment_layer_viewport"));
+}
+
+#endif /* GL_ARB_fragment_layer_viewport */
+
+#ifdef GL_ARB_fragment_program
+
+static void _glewInfo_GL_ARB_fragment_program (void)
+{
+ glewPrintExt("GL_ARB_fragment_program", GLEW_ARB_fragment_program, glewIsSupported("GL_ARB_fragment_program"), glewGetExtension("GL_ARB_fragment_program"));
+}
+
+#endif /* GL_ARB_fragment_program */
+
+#ifdef GL_ARB_fragment_program_shadow
+
+static void _glewInfo_GL_ARB_fragment_program_shadow (void)
+{
+ glewPrintExt("GL_ARB_fragment_program_shadow", GLEW_ARB_fragment_program_shadow, glewIsSupported("GL_ARB_fragment_program_shadow"), glewGetExtension("GL_ARB_fragment_program_shadow"));
+}
+
+#endif /* GL_ARB_fragment_program_shadow */
+
+#ifdef GL_ARB_fragment_shader
+
+static void _glewInfo_GL_ARB_fragment_shader (void)
+{
+ glewPrintExt("GL_ARB_fragment_shader", GLEW_ARB_fragment_shader, glewIsSupported("GL_ARB_fragment_shader"), glewGetExtension("GL_ARB_fragment_shader"));
+}
+
+#endif /* GL_ARB_fragment_shader */
+
+#ifdef GL_ARB_fragment_shader_interlock
+
+static void _glewInfo_GL_ARB_fragment_shader_interlock (void)
+{
+ glewPrintExt("GL_ARB_fragment_shader_interlock", GLEW_ARB_fragment_shader_interlock, glewIsSupported("GL_ARB_fragment_shader_interlock"), glewGetExtension("GL_ARB_fragment_shader_interlock"));
+}
+
+#endif /* GL_ARB_fragment_shader_interlock */
+
+#ifdef GL_ARB_framebuffer_no_attachments
+
+static void _glewInfo_GL_ARB_framebuffer_no_attachments (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_framebuffer_no_attachments", GLEW_ARB_framebuffer_no_attachments, glewIsSupported("GL_ARB_framebuffer_no_attachments"), glewGetExtension("GL_ARB_framebuffer_no_attachments"));
+
+ glewInfoFunc(fi, "glFramebufferParameteri", glFramebufferParameteri == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameteriv", glGetFramebufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameterivEXT", glGetNamedFramebufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferParameteriEXT", glNamedFramebufferParameteriEXT == NULL);
+}
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+#ifdef GL_ARB_framebuffer_object
+
+static void _glewInfo_GL_ARB_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_framebuffer_object", GLEW_ARB_framebuffer_object, glewIsSupported("GL_ARB_framebuffer_object"), glewGetExtension("GL_ARB_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebuffer", glBindFramebuffer == NULL);
+ glewInfoFunc(fi, "glBindRenderbuffer", glBindRenderbuffer == NULL);
+ glewInfoFunc(fi, "glBlitFramebuffer", glBlitFramebuffer == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatus", glCheckFramebufferStatus == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffers", glDeleteFramebuffers == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffers", glDeleteRenderbuffers == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbuffer", glFramebufferRenderbuffer == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture1D", glFramebufferTexture1D == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2D", glFramebufferTexture2D == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3D", glFramebufferTexture3D == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayer", glFramebufferTextureLayer == NULL);
+ glewInfoFunc(fi, "glGenFramebuffers", glGenFramebuffers == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffers", glGenRenderbuffers == NULL);
+ glewInfoFunc(fi, "glGenerateMipmap", glGenerateMipmap == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameteriv", glGetFramebufferAttachmentParameteriv == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameteriv", glGetRenderbufferParameteriv == NULL);
+ glewInfoFunc(fi, "glIsFramebuffer", glIsFramebuffer == NULL);
+ glewInfoFunc(fi, "glIsRenderbuffer", glIsRenderbuffer == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorage", glRenderbufferStorage == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisample", glRenderbufferStorageMultisample == NULL);
+}
+
+#endif /* GL_ARB_framebuffer_object */
+
+#ifdef GL_ARB_framebuffer_sRGB
+
+static void _glewInfo_GL_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("GL_ARB_framebuffer_sRGB", GLEW_ARB_framebuffer_sRGB, glewIsSupported("GL_ARB_framebuffer_sRGB"), glewGetExtension("GL_ARB_framebuffer_sRGB"));
+}
+
+#endif /* GL_ARB_framebuffer_sRGB */
+
+#ifdef GL_ARB_geometry_shader4
+
+static void _glewInfo_GL_ARB_geometry_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_geometry_shader4", GLEW_ARB_geometry_shader4, glewIsSupported("GL_ARB_geometry_shader4"), glewGetExtension("GL_ARB_geometry_shader4"));
+
+ glewInfoFunc(fi, "glFramebufferTextureARB", glFramebufferTextureARB == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureFaceARB", glFramebufferTextureFaceARB == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerARB", glFramebufferTextureLayerARB == NULL);
+ glewInfoFunc(fi, "glProgramParameteriARB", glProgramParameteriARB == NULL);
+}
+
+#endif /* GL_ARB_geometry_shader4 */
+
+#ifdef GL_ARB_get_program_binary
+
+static void _glewInfo_GL_ARB_get_program_binary (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_get_program_binary", GLEW_ARB_get_program_binary, glewIsSupported("GL_ARB_get_program_binary"), glewGetExtension("GL_ARB_get_program_binary"));
+
+ glewInfoFunc(fi, "glGetProgramBinary", glGetProgramBinary == NULL);
+ glewInfoFunc(fi, "glProgramBinary", glProgramBinary == NULL);
+ glewInfoFunc(fi, "glProgramParameteri", glProgramParameteri == NULL);
+}
+
+#endif /* GL_ARB_get_program_binary */
+
+#ifdef GL_ARB_get_texture_sub_image
+
+static void _glewInfo_GL_ARB_get_texture_sub_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_get_texture_sub_image", GLEW_ARB_get_texture_sub_image, glewIsSupported("GL_ARB_get_texture_sub_image"), glewGetExtension("GL_ARB_get_texture_sub_image"));
+
+ glewInfoFunc(fi, "glGetCompressedTextureSubImage", glGetCompressedTextureSubImage == NULL);
+ glewInfoFunc(fi, "glGetTextureSubImage", glGetTextureSubImage == NULL);
+}
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+#ifdef GL_ARB_gl_spirv
+
+static void _glewInfo_GL_ARB_gl_spirv (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gl_spirv", GLEW_ARB_gl_spirv, glewIsSupported("GL_ARB_gl_spirv"), glewGetExtension("GL_ARB_gl_spirv"));
+
+ glewInfoFunc(fi, "glSpecializeShaderARB", glSpecializeShaderARB == NULL);
+}
+
+#endif /* GL_ARB_gl_spirv */
+
+#ifdef GL_ARB_gpu_shader5
+
+static void _glewInfo_GL_ARB_gpu_shader5 (void)
+{
+ glewPrintExt("GL_ARB_gpu_shader5", GLEW_ARB_gpu_shader5, glewIsSupported("GL_ARB_gpu_shader5"), glewGetExtension("GL_ARB_gpu_shader5"));
+}
+
+#endif /* GL_ARB_gpu_shader5 */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+static void _glewInfo_GL_ARB_gpu_shader_fp64 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gpu_shader_fp64", GLEW_ARB_gpu_shader_fp64, glewIsSupported("GL_ARB_gpu_shader_fp64"), glewGetExtension("GL_ARB_gpu_shader_fp64"));
+
+ glewInfoFunc(fi, "glGetUniformdv", glGetUniformdv == NULL);
+ glewInfoFunc(fi, "glUniform1d", glUniform1d == NULL);
+ glewInfoFunc(fi, "glUniform1dv", glUniform1dv == NULL);
+ glewInfoFunc(fi, "glUniform2d", glUniform2d == NULL);
+ glewInfoFunc(fi, "glUniform2dv", glUniform2dv == NULL);
+ glewInfoFunc(fi, "glUniform3d", glUniform3d == NULL);
+ glewInfoFunc(fi, "glUniform3dv", glUniform3dv == NULL);
+ glewInfoFunc(fi, "glUniform4d", glUniform4d == NULL);
+ glewInfoFunc(fi, "glUniform4dv", glUniform4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2dv", glUniformMatrix2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x3dv", glUniformMatrix2x3dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4dv", glUniformMatrix2x4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3dv", glUniformMatrix3dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2dv", glUniformMatrix3x2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4dv", glUniformMatrix3x4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4dv", glUniformMatrix4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2dv", glUniformMatrix4x2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3dv", glUniformMatrix4x3dv == NULL);
+}
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+#ifdef GL_ARB_gpu_shader_int64
+
+static void _glewInfo_GL_ARB_gpu_shader_int64 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gpu_shader_int64", GLEW_ARB_gpu_shader_int64, glewIsSupported("GL_ARB_gpu_shader_int64"), glewGetExtension("GL_ARB_gpu_shader_int64"));
+
+ glewInfoFunc(fi, "glGetUniformi64vARB", glGetUniformi64vARB == NULL);
+ glewInfoFunc(fi, "glGetUniformui64vARB", glGetUniformui64vARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformi64vARB", glGetnUniformi64vARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformui64vARB", glGetnUniformui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64ARB", glProgramUniform1i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64vARB", glProgramUniform1i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64ARB", glProgramUniform1ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64vARB", glProgramUniform1ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64ARB", glProgramUniform2i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64vARB", glProgramUniform2i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64ARB", glProgramUniform2ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64vARB", glProgramUniform2ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64ARB", glProgramUniform3i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64vARB", glProgramUniform3i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64ARB", glProgramUniform3ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64vARB", glProgramUniform3ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64ARB", glProgramUniform4i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64vARB", glProgramUniform4i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64ARB", glProgramUniform4ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64vARB", glProgramUniform4ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform1i64ARB", glUniform1i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform1i64vARB", glUniform1i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform1ui64ARB", glUniform1ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform1ui64vARB", glUniform1ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform2i64ARB", glUniform2i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform2i64vARB", glUniform2i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform2ui64ARB", glUniform2ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform2ui64vARB", glUniform2ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform3i64ARB", glUniform3i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform3i64vARB", glUniform3i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform3ui64ARB", glUniform3ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform3ui64vARB", glUniform3ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform4i64ARB", glUniform4i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform4i64vARB", glUniform4i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform4ui64ARB", glUniform4ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform4ui64vARB", glUniform4ui64vARB == NULL);
+}
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+#ifdef GL_ARB_half_float_pixel
+
+static void _glewInfo_GL_ARB_half_float_pixel (void)
+{
+ glewPrintExt("GL_ARB_half_float_pixel", GLEW_ARB_half_float_pixel, glewIsSupported("GL_ARB_half_float_pixel"), glewGetExtension("GL_ARB_half_float_pixel"));
+}
+
+#endif /* GL_ARB_half_float_pixel */
+
+#ifdef GL_ARB_half_float_vertex
+
+static void _glewInfo_GL_ARB_half_float_vertex (void)
+{
+ glewPrintExt("GL_ARB_half_float_vertex", GLEW_ARB_half_float_vertex, glewIsSupported("GL_ARB_half_float_vertex"), glewGetExtension("GL_ARB_half_float_vertex"));
+}
+
+#endif /* GL_ARB_half_float_vertex */
+
+#ifdef GL_ARB_imaging
+
+static void _glewInfo_GL_ARB_imaging (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_imaging", GLEW_ARB_imaging, glewIsSupported("GL_ARB_imaging"), glewGetExtension("GL_ARB_imaging"));
+
+ glewInfoFunc(fi, "glBlendEquation", glBlendEquation == NULL);
+ glewInfoFunc(fi, "glColorSubTable", glColorSubTable == NULL);
+ glewInfoFunc(fi, "glColorTable", glColorTable == NULL);
+ glewInfoFunc(fi, "glColorTableParameterfv", glColorTableParameterfv == NULL);
+ glewInfoFunc(fi, "glColorTableParameteriv", glColorTableParameteriv == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter1D", glConvolutionFilter1D == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter2D", glConvolutionFilter2D == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterf", glConvolutionParameterf == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfv", glConvolutionParameterfv == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteri", glConvolutionParameteri == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteriv", glConvolutionParameteriv == NULL);
+ glewInfoFunc(fi, "glCopyColorSubTable", glCopyColorSubTable == NULL);
+ glewInfoFunc(fi, "glCopyColorTable", glCopyColorTable == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter1D", glCopyConvolutionFilter1D == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter2D", glCopyConvolutionFilter2D == NULL);
+ glewInfoFunc(fi, "glGetColorTable", glGetColorTable == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfv", glGetColorTableParameterfv == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameteriv", glGetColorTableParameteriv == NULL);
+ glewInfoFunc(fi, "glGetConvolutionFilter", glGetConvolutionFilter == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterfv", glGetConvolutionParameterfv == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameteriv", glGetConvolutionParameteriv == NULL);
+ glewInfoFunc(fi, "glGetHistogram", glGetHistogram == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterfv", glGetHistogramParameterfv == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameteriv", glGetHistogramParameteriv == NULL);
+ glewInfoFunc(fi, "glGetMinmax", glGetMinmax == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterfv", glGetMinmaxParameterfv == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameteriv", glGetMinmaxParameteriv == NULL);
+ glewInfoFunc(fi, "glGetSeparableFilter", glGetSeparableFilter == NULL);
+ glewInfoFunc(fi, "glHistogram", glHistogram == NULL);
+ glewInfoFunc(fi, "glMinmax", glMinmax == NULL);
+ glewInfoFunc(fi, "glResetHistogram", glResetHistogram == NULL);
+ glewInfoFunc(fi, "glResetMinmax", glResetMinmax == NULL);
+ glewInfoFunc(fi, "glSeparableFilter2D", glSeparableFilter2D == NULL);
+}
+
+#endif /* GL_ARB_imaging */
+
+#ifdef GL_ARB_indirect_parameters
+
+static void _glewInfo_GL_ARB_indirect_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_indirect_parameters", GLEW_ARB_indirect_parameters, glewIsSupported("GL_ARB_indirect_parameters"), glewGetExtension("GL_ARB_indirect_parameters"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectCountARB", glMultiDrawArraysIndirectCountARB == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectCountARB", glMultiDrawElementsIndirectCountARB == NULL);
+}
+
+#endif /* GL_ARB_indirect_parameters */
+
+#ifdef GL_ARB_instanced_arrays
+
+static void _glewInfo_GL_ARB_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_instanced_arrays", GLEW_ARB_instanced_arrays, glewIsSupported("GL_ARB_instanced_arrays"), glewGetExtension("GL_ARB_instanced_arrays"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedARB", glDrawArraysInstancedARB == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedARB", glDrawElementsInstancedARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribDivisorARB", glVertexAttribDivisorARB == NULL);
+}
+
+#endif /* GL_ARB_instanced_arrays */
+
+#ifdef GL_ARB_internalformat_query
+
+static void _glewInfo_GL_ARB_internalformat_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_internalformat_query", GLEW_ARB_internalformat_query, glewIsSupported("GL_ARB_internalformat_query"), glewGetExtension("GL_ARB_internalformat_query"));
+
+ glewInfoFunc(fi, "glGetInternalformativ", glGetInternalformativ == NULL);
+}
+
+#endif /* GL_ARB_internalformat_query */
+
+#ifdef GL_ARB_internalformat_query2
+
+static void _glewInfo_GL_ARB_internalformat_query2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_internalformat_query2", GLEW_ARB_internalformat_query2, glewIsSupported("GL_ARB_internalformat_query2"), glewGetExtension("GL_ARB_internalformat_query2"));
+
+ glewInfoFunc(fi, "glGetInternalformati64v", glGetInternalformati64v == NULL);
+}
+
+#endif /* GL_ARB_internalformat_query2 */
+
+#ifdef GL_ARB_invalidate_subdata
+
+static void _glewInfo_GL_ARB_invalidate_subdata (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_invalidate_subdata", GLEW_ARB_invalidate_subdata, glewIsSupported("GL_ARB_invalidate_subdata"), glewGetExtension("GL_ARB_invalidate_subdata"));
+
+ glewInfoFunc(fi, "glInvalidateBufferData", glInvalidateBufferData == NULL);
+ glewInfoFunc(fi, "glInvalidateBufferSubData", glInvalidateBufferSubData == NULL);
+ glewInfoFunc(fi, "glInvalidateFramebuffer", glInvalidateFramebuffer == NULL);
+ glewInfoFunc(fi, "glInvalidateSubFramebuffer", glInvalidateSubFramebuffer == NULL);
+ glewInfoFunc(fi, "glInvalidateTexImage", glInvalidateTexImage == NULL);
+ glewInfoFunc(fi, "glInvalidateTexSubImage", glInvalidateTexSubImage == NULL);
+}
+
+#endif /* GL_ARB_invalidate_subdata */
+
+#ifdef GL_ARB_map_buffer_alignment
+
+static void _glewInfo_GL_ARB_map_buffer_alignment (void)
+{
+ glewPrintExt("GL_ARB_map_buffer_alignment", GLEW_ARB_map_buffer_alignment, glewIsSupported("GL_ARB_map_buffer_alignment"), glewGetExtension("GL_ARB_map_buffer_alignment"));
+}
+
+#endif /* GL_ARB_map_buffer_alignment */
+
+#ifdef GL_ARB_map_buffer_range
+
+static void _glewInfo_GL_ARB_map_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_map_buffer_range", GLEW_ARB_map_buffer_range, glewIsSupported("GL_ARB_map_buffer_range"), glewGetExtension("GL_ARB_map_buffer_range"));
+
+ glewInfoFunc(fi, "glFlushMappedBufferRange", glFlushMappedBufferRange == NULL);
+ glewInfoFunc(fi, "glMapBufferRange", glMapBufferRange == NULL);
+}
+
+#endif /* GL_ARB_map_buffer_range */
+
+#ifdef GL_ARB_matrix_palette
+
+static void _glewInfo_GL_ARB_matrix_palette (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_matrix_palette", GLEW_ARB_matrix_palette, glewIsSupported("GL_ARB_matrix_palette"), glewGetExtension("GL_ARB_matrix_palette"));
+
+ glewInfoFunc(fi, "glCurrentPaletteMatrixARB", glCurrentPaletteMatrixARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexPointerARB", glMatrixIndexPointerARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexubvARB", glMatrixIndexubvARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexuivARB", glMatrixIndexuivARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexusvARB", glMatrixIndexusvARB == NULL);
+}
+
+#endif /* GL_ARB_matrix_palette */
+
+#ifdef GL_ARB_multi_bind
+
+static void _glewInfo_GL_ARB_multi_bind (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multi_bind", GLEW_ARB_multi_bind, glewIsSupported("GL_ARB_multi_bind"), glewGetExtension("GL_ARB_multi_bind"));
+
+ glewInfoFunc(fi, "glBindBuffersBase", glBindBuffersBase == NULL);
+ glewInfoFunc(fi, "glBindBuffersRange", glBindBuffersRange == NULL);
+ glewInfoFunc(fi, "glBindImageTextures", glBindImageTextures == NULL);
+ glewInfoFunc(fi, "glBindSamplers", glBindSamplers == NULL);
+ glewInfoFunc(fi, "glBindTextures", glBindTextures == NULL);
+ glewInfoFunc(fi, "glBindVertexBuffers", glBindVertexBuffers == NULL);
+}
+
+#endif /* GL_ARB_multi_bind */
+
+#ifdef GL_ARB_multi_draw_indirect
+
+static void _glewInfo_GL_ARB_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multi_draw_indirect", GLEW_ARB_multi_draw_indirect, glewIsSupported("GL_ARB_multi_draw_indirect"), glewGetExtension("GL_ARB_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirect", glMultiDrawArraysIndirect == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirect", glMultiDrawElementsIndirect == NULL);
+}
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+#ifdef GL_ARB_multisample
+
+static void _glewInfo_GL_ARB_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multisample", GLEW_ARB_multisample, glewIsSupported("GL_ARB_multisample"), glewGetExtension("GL_ARB_multisample"));
+
+ glewInfoFunc(fi, "glSampleCoverageARB", glSampleCoverageARB == NULL);
+}
+
+#endif /* GL_ARB_multisample */
+
+#ifdef GL_ARB_multitexture
+
+static void _glewInfo_GL_ARB_multitexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multitexture", GLEW_ARB_multitexture, glewIsSupported("GL_ARB_multitexture"), glewGetExtension("GL_ARB_multitexture"));
+
+ glewInfoFunc(fi, "glActiveTextureARB", glActiveTextureARB == NULL);
+ glewInfoFunc(fi, "glClientActiveTextureARB", glClientActiveTextureARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dARB", glMultiTexCoord1dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dvARB", glMultiTexCoord1dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fARB", glMultiTexCoord1fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fvARB", glMultiTexCoord1fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1iARB", glMultiTexCoord1iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1ivARB", glMultiTexCoord1ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1sARB", glMultiTexCoord1sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1svARB", glMultiTexCoord1svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dARB", glMultiTexCoord2dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dvARB", glMultiTexCoord2dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fARB", glMultiTexCoord2fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fvARB", glMultiTexCoord2fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2iARB", glMultiTexCoord2iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2ivARB", glMultiTexCoord2ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2sARB", glMultiTexCoord2sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2svARB", glMultiTexCoord2svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dARB", glMultiTexCoord3dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dvARB", glMultiTexCoord3dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fARB", glMultiTexCoord3fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fvARB", glMultiTexCoord3fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3iARB", glMultiTexCoord3iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3ivARB", glMultiTexCoord3ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3sARB", glMultiTexCoord3sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3svARB", glMultiTexCoord3svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dARB", glMultiTexCoord4dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dvARB", glMultiTexCoord4dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fARB", glMultiTexCoord4fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fvARB", glMultiTexCoord4fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4iARB", glMultiTexCoord4iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4ivARB", glMultiTexCoord4ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4sARB", glMultiTexCoord4sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4svARB", glMultiTexCoord4svARB == NULL);
+}
+
+#endif /* GL_ARB_multitexture */
+
+#ifdef GL_ARB_occlusion_query
+
+static void _glewInfo_GL_ARB_occlusion_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_occlusion_query", GLEW_ARB_occlusion_query, glewIsSupported("GL_ARB_occlusion_query"), glewGetExtension("GL_ARB_occlusion_query"));
+
+ glewInfoFunc(fi, "glBeginQueryARB", glBeginQueryARB == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesARB", glDeleteQueriesARB == NULL);
+ glewInfoFunc(fi, "glEndQueryARB", glEndQueryARB == NULL);
+ glewInfoFunc(fi, "glGenQueriesARB", glGenQueriesARB == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivARB", glGetQueryObjectivARB == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivARB", glGetQueryObjectuivARB == NULL);
+ glewInfoFunc(fi, "glGetQueryivARB", glGetQueryivARB == NULL);
+ glewInfoFunc(fi, "glIsQueryARB", glIsQueryARB == NULL);
+}
+
+#endif /* GL_ARB_occlusion_query */
+
+#ifdef GL_ARB_occlusion_query2
+
+static void _glewInfo_GL_ARB_occlusion_query2 (void)
+{
+ glewPrintExt("GL_ARB_occlusion_query2", GLEW_ARB_occlusion_query2, glewIsSupported("GL_ARB_occlusion_query2"), glewGetExtension("GL_ARB_occlusion_query2"));
+}
+
+#endif /* GL_ARB_occlusion_query2 */
+
+#ifdef GL_ARB_parallel_shader_compile
+
+static void _glewInfo_GL_ARB_parallel_shader_compile (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_parallel_shader_compile", GLEW_ARB_parallel_shader_compile, glewIsSupported("GL_ARB_parallel_shader_compile"), glewGetExtension("GL_ARB_parallel_shader_compile"));
+
+ glewInfoFunc(fi, "glMaxShaderCompilerThreadsARB", glMaxShaderCompilerThreadsARB == NULL);
+}
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+#ifdef GL_ARB_pipeline_statistics_query
+
+static void _glewInfo_GL_ARB_pipeline_statistics_query (void)
+{
+ glewPrintExt("GL_ARB_pipeline_statistics_query", GLEW_ARB_pipeline_statistics_query, glewIsSupported("GL_ARB_pipeline_statistics_query"), glewGetExtension("GL_ARB_pipeline_statistics_query"));
+}
+
+#endif /* GL_ARB_pipeline_statistics_query */
+
+#ifdef GL_ARB_pixel_buffer_object
+
+static void _glewInfo_GL_ARB_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_ARB_pixel_buffer_object", GLEW_ARB_pixel_buffer_object, glewIsSupported("GL_ARB_pixel_buffer_object"), glewGetExtension("GL_ARB_pixel_buffer_object"));
+}
+
+#endif /* GL_ARB_pixel_buffer_object */
+
+#ifdef GL_ARB_point_parameters
+
+static void _glewInfo_GL_ARB_point_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_point_parameters", GLEW_ARB_point_parameters, glewIsSupported("GL_ARB_point_parameters"), glewGetExtension("GL_ARB_point_parameters"));
+
+ glewInfoFunc(fi, "glPointParameterfARB", glPointParameterfARB == NULL);
+ glewInfoFunc(fi, "glPointParameterfvARB", glPointParameterfvARB == NULL);
+}
+
+#endif /* GL_ARB_point_parameters */
+
+#ifdef GL_ARB_point_sprite
+
+static void _glewInfo_GL_ARB_point_sprite (void)
+{
+ glewPrintExt("GL_ARB_point_sprite", GLEW_ARB_point_sprite, glewIsSupported("GL_ARB_point_sprite"), glewGetExtension("GL_ARB_point_sprite"));
+}
+
+#endif /* GL_ARB_point_sprite */
+
+#ifdef GL_ARB_polygon_offset_clamp
+
+static void _glewInfo_GL_ARB_polygon_offset_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_polygon_offset_clamp", GLEW_ARB_polygon_offset_clamp, glewIsSupported("GL_ARB_polygon_offset_clamp"), glewGetExtension("GL_ARB_polygon_offset_clamp"));
+
+ glewInfoFunc(fi, "glPolygonOffsetClamp", glPolygonOffsetClamp == NULL);
+}
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+#ifdef GL_ARB_post_depth_coverage
+
+static void _glewInfo_GL_ARB_post_depth_coverage (void)
+{
+ glewPrintExt("GL_ARB_post_depth_coverage", GLEW_ARB_post_depth_coverage, glewIsSupported("GL_ARB_post_depth_coverage"), glewGetExtension("GL_ARB_post_depth_coverage"));
+}
+
+#endif /* GL_ARB_post_depth_coverage */
+
+#ifdef GL_ARB_program_interface_query
+
+static void _glewInfo_GL_ARB_program_interface_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_program_interface_query", GLEW_ARB_program_interface_query, glewIsSupported("GL_ARB_program_interface_query"), glewGetExtension("GL_ARB_program_interface_query"));
+
+ glewInfoFunc(fi, "glGetProgramInterfaceiv", glGetProgramInterfaceiv == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceIndex", glGetProgramResourceIndex == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocation", glGetProgramResourceLocation == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocationIndex", glGetProgramResourceLocationIndex == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceName", glGetProgramResourceName == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceiv", glGetProgramResourceiv == NULL);
+}
+
+#endif /* GL_ARB_program_interface_query */
+
+#ifdef GL_ARB_provoking_vertex
+
+static void _glewInfo_GL_ARB_provoking_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_provoking_vertex", GLEW_ARB_provoking_vertex, glewIsSupported("GL_ARB_provoking_vertex"), glewGetExtension("GL_ARB_provoking_vertex"));
+
+ glewInfoFunc(fi, "glProvokingVertex", glProvokingVertex == NULL);
+}
+
+#endif /* GL_ARB_provoking_vertex */
+
+#ifdef GL_ARB_query_buffer_object
+
+static void _glewInfo_GL_ARB_query_buffer_object (void)
+{
+ glewPrintExt("GL_ARB_query_buffer_object", GLEW_ARB_query_buffer_object, glewIsSupported("GL_ARB_query_buffer_object"), glewGetExtension("GL_ARB_query_buffer_object"));
+}
+
+#endif /* GL_ARB_query_buffer_object */
+
+#ifdef GL_ARB_robust_buffer_access_behavior
+
+static void _glewInfo_GL_ARB_robust_buffer_access_behavior (void)
+{
+ glewPrintExt("GL_ARB_robust_buffer_access_behavior", GLEW_ARB_robust_buffer_access_behavior, glewIsSupported("GL_ARB_robust_buffer_access_behavior"), glewGetExtension("GL_ARB_robust_buffer_access_behavior"));
+}
+
+#endif /* GL_ARB_robust_buffer_access_behavior */
+
+#ifdef GL_ARB_robustness
+
+static void _glewInfo_GL_ARB_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_robustness", GLEW_ARB_robustness, glewIsSupported("GL_ARB_robustness"), glewGetExtension("GL_ARB_robustness"));
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatusARB", glGetGraphicsResetStatusARB == NULL);
+ glewInfoFunc(fi, "glGetnColorTableARB", glGetnColorTableARB == NULL);
+ glewInfoFunc(fi, "glGetnCompressedTexImageARB", glGetnCompressedTexImageARB == NULL);
+ glewInfoFunc(fi, "glGetnConvolutionFilterARB", glGetnConvolutionFilterARB == NULL);
+ glewInfoFunc(fi, "glGetnHistogramARB", glGetnHistogramARB == NULL);
+ glewInfoFunc(fi, "glGetnMapdvARB", glGetnMapdvARB == NULL);
+ glewInfoFunc(fi, "glGetnMapfvARB", glGetnMapfvARB == NULL);
+ glewInfoFunc(fi, "glGetnMapivARB", glGetnMapivARB == NULL);
+ glewInfoFunc(fi, "glGetnMinmaxARB", glGetnMinmaxARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapfvARB", glGetnPixelMapfvARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapuivARB", glGetnPixelMapuivARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapusvARB", glGetnPixelMapusvARB == NULL);
+ glewInfoFunc(fi, "glGetnPolygonStippleARB", glGetnPolygonStippleARB == NULL);
+ glewInfoFunc(fi, "glGetnSeparableFilterARB", glGetnSeparableFilterARB == NULL);
+ glewInfoFunc(fi, "glGetnTexImageARB", glGetnTexImageARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformdvARB", glGetnUniformdvARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformfvARB", glGetnUniformfvARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformivARB", glGetnUniformivARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformuivARB", glGetnUniformuivARB == NULL);
+ glewInfoFunc(fi, "glReadnPixelsARB", glReadnPixelsARB == NULL);
+}
+
+#endif /* GL_ARB_robustness */
+
+#ifdef GL_ARB_robustness_application_isolation
+
+static void _glewInfo_GL_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("GL_ARB_robustness_application_isolation", GLEW_ARB_robustness_application_isolation, glewIsSupported("GL_ARB_robustness_application_isolation"), glewGetExtension("GL_ARB_robustness_application_isolation"));
+}
+
+#endif /* GL_ARB_robustness_application_isolation */
+
+#ifdef GL_ARB_robustness_share_group_isolation
+
+static void _glewInfo_GL_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("GL_ARB_robustness_share_group_isolation", GLEW_ARB_robustness_share_group_isolation, glewIsSupported("GL_ARB_robustness_share_group_isolation"), glewGetExtension("GL_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* GL_ARB_robustness_share_group_isolation */
+
+#ifdef GL_ARB_sample_locations
+
+static void _glewInfo_GL_ARB_sample_locations (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sample_locations", GLEW_ARB_sample_locations, glewIsSupported("GL_ARB_sample_locations"), glewGetExtension("GL_ARB_sample_locations"));
+
+ glewInfoFunc(fi, "glEvaluateDepthValuesARB", glEvaluateDepthValuesARB == NULL);
+ glewInfoFunc(fi, "glFramebufferSampleLocationsfvARB", glFramebufferSampleLocationsfvARB == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSampleLocationsfvARB", glNamedFramebufferSampleLocationsfvARB == NULL);
+}
+
+#endif /* GL_ARB_sample_locations */
+
+#ifdef GL_ARB_sample_shading
+
+static void _glewInfo_GL_ARB_sample_shading (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sample_shading", GLEW_ARB_sample_shading, glewIsSupported("GL_ARB_sample_shading"), glewGetExtension("GL_ARB_sample_shading"));
+
+ glewInfoFunc(fi, "glMinSampleShadingARB", glMinSampleShadingARB == NULL);
+}
+
+#endif /* GL_ARB_sample_shading */
+
+#ifdef GL_ARB_sampler_objects
+
+static void _glewInfo_GL_ARB_sampler_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sampler_objects", GLEW_ARB_sampler_objects, glewIsSupported("GL_ARB_sampler_objects"), glewGetExtension("GL_ARB_sampler_objects"));
+
+ glewInfoFunc(fi, "glBindSampler", glBindSampler == NULL);
+ glewInfoFunc(fi, "glDeleteSamplers", glDeleteSamplers == NULL);
+ glewInfoFunc(fi, "glGenSamplers", glGenSamplers == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIiv", glGetSamplerParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuiv", glGetSamplerParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterfv", glGetSamplerParameterfv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameteriv", glGetSamplerParameteriv == NULL);
+ glewInfoFunc(fi, "glIsSampler", glIsSampler == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIiv", glSamplerParameterIiv == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuiv", glSamplerParameterIuiv == NULL);
+ glewInfoFunc(fi, "glSamplerParameterf", glSamplerParameterf == NULL);
+ glewInfoFunc(fi, "glSamplerParameterfv", glSamplerParameterfv == NULL);
+ glewInfoFunc(fi, "glSamplerParameteri", glSamplerParameteri == NULL);
+ glewInfoFunc(fi, "glSamplerParameteriv", glSamplerParameteriv == NULL);
+}
+
+#endif /* GL_ARB_sampler_objects */
+
+#ifdef GL_ARB_seamless_cube_map
+
+static void _glewInfo_GL_ARB_seamless_cube_map (void)
+{
+ glewPrintExt("GL_ARB_seamless_cube_map", GLEW_ARB_seamless_cube_map, glewIsSupported("GL_ARB_seamless_cube_map"), glewGetExtension("GL_ARB_seamless_cube_map"));
+}
+
+#endif /* GL_ARB_seamless_cube_map */
+
+#ifdef GL_ARB_seamless_cubemap_per_texture
+
+static void _glewInfo_GL_ARB_seamless_cubemap_per_texture (void)
+{
+ glewPrintExt("GL_ARB_seamless_cubemap_per_texture", GLEW_ARB_seamless_cubemap_per_texture, glewIsSupported("GL_ARB_seamless_cubemap_per_texture"), glewGetExtension("GL_ARB_seamless_cubemap_per_texture"));
+}
+
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+
+#ifdef GL_ARB_separate_shader_objects
+
+static void _glewInfo_GL_ARB_separate_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_separate_shader_objects", GLEW_ARB_separate_shader_objects, glewIsSupported("GL_ARB_separate_shader_objects"), glewGetExtension("GL_ARB_separate_shader_objects"));
+
+ glewInfoFunc(fi, "glActiveShaderProgram", glActiveShaderProgram == NULL);
+ glewInfoFunc(fi, "glBindProgramPipeline", glBindProgramPipeline == NULL);
+ glewInfoFunc(fi, "glCreateShaderProgramv", glCreateShaderProgramv == NULL);
+ glewInfoFunc(fi, "glDeleteProgramPipelines", glDeleteProgramPipelines == NULL);
+ glewInfoFunc(fi, "glGenProgramPipelines", glGenProgramPipelines == NULL);
+ glewInfoFunc(fi, "glGetProgramPipelineInfoLog", glGetProgramPipelineInfoLog == NULL);
+ glewInfoFunc(fi, "glGetProgramPipelineiv", glGetProgramPipelineiv == NULL);
+ glewInfoFunc(fi, "glIsProgramPipeline", glIsProgramPipeline == NULL);
+ glewInfoFunc(fi, "glProgramUniform1d", glProgramUniform1d == NULL);
+ glewInfoFunc(fi, "glProgramUniform1dv", glProgramUniform1dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1f", glProgramUniform1f == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fv", glProgramUniform1fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i", glProgramUniform1i == NULL);
+ glewInfoFunc(fi, "glProgramUniform1iv", glProgramUniform1iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui", glProgramUniform1ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uiv", glProgramUniform1uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2d", glProgramUniform2d == NULL);
+ glewInfoFunc(fi, "glProgramUniform2dv", glProgramUniform2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2f", glProgramUniform2f == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fv", glProgramUniform2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i", glProgramUniform2i == NULL);
+ glewInfoFunc(fi, "glProgramUniform2iv", glProgramUniform2iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui", glProgramUniform2ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uiv", glProgramUniform2uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3d", glProgramUniform3d == NULL);
+ glewInfoFunc(fi, "glProgramUniform3dv", glProgramUniform3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3f", glProgramUniform3f == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fv", glProgramUniform3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i", glProgramUniform3i == NULL);
+ glewInfoFunc(fi, "glProgramUniform3iv", glProgramUniform3iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui", glProgramUniform3ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uiv", glProgramUniform3uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4d", glProgramUniform4d == NULL);
+ glewInfoFunc(fi, "glProgramUniform4dv", glProgramUniform4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4f", glProgramUniform4f == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fv", glProgramUniform4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i", glProgramUniform4i == NULL);
+ glewInfoFunc(fi, "glProgramUniform4iv", glProgramUniform4iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui", glProgramUniform4ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uiv", glProgramUniform4uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2dv", glProgramUniformMatrix2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2fv", glProgramUniformMatrix2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3dv", glProgramUniformMatrix2x3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3fv", glProgramUniformMatrix2x3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4dv", glProgramUniformMatrix2x4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4fv", glProgramUniformMatrix2x4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3dv", glProgramUniformMatrix3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3fv", glProgramUniformMatrix3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2dv", glProgramUniformMatrix3x2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2fv", glProgramUniformMatrix3x2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4dv", glProgramUniformMatrix3x4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4fv", glProgramUniformMatrix3x4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4dv", glProgramUniformMatrix4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4fv", glProgramUniformMatrix4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2dv", glProgramUniformMatrix4x2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2fv", glProgramUniformMatrix4x2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3dv", glProgramUniformMatrix4x3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3fv", glProgramUniformMatrix4x3fv == NULL);
+ glewInfoFunc(fi, "glUseProgramStages", glUseProgramStages == NULL);
+ glewInfoFunc(fi, "glValidateProgramPipeline", glValidateProgramPipeline == NULL);
+}
+
+#endif /* GL_ARB_separate_shader_objects */
+
+#ifdef GL_ARB_shader_atomic_counter_ops
+
+static void _glewInfo_GL_ARB_shader_atomic_counter_ops (void)
+{
+ glewPrintExt("GL_ARB_shader_atomic_counter_ops", GLEW_ARB_shader_atomic_counter_ops, glewIsSupported("GL_ARB_shader_atomic_counter_ops"), glewGetExtension("GL_ARB_shader_atomic_counter_ops"));
+}
+
+#endif /* GL_ARB_shader_atomic_counter_ops */
+
+#ifdef GL_ARB_shader_atomic_counters
+
+static void _glewInfo_GL_ARB_shader_atomic_counters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_atomic_counters", GLEW_ARB_shader_atomic_counters, glewIsSupported("GL_ARB_shader_atomic_counters"), glewGetExtension("GL_ARB_shader_atomic_counters"));
+
+ glewInfoFunc(fi, "glGetActiveAtomicCounterBufferiv", glGetActiveAtomicCounterBufferiv == NULL);
+}
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+#ifdef GL_ARB_shader_ballot
+
+static void _glewInfo_GL_ARB_shader_ballot (void)
+{
+ glewPrintExt("GL_ARB_shader_ballot", GLEW_ARB_shader_ballot, glewIsSupported("GL_ARB_shader_ballot"), glewGetExtension("GL_ARB_shader_ballot"));
+}
+
+#endif /* GL_ARB_shader_ballot */
+
+#ifdef GL_ARB_shader_bit_encoding
+
+static void _glewInfo_GL_ARB_shader_bit_encoding (void)
+{
+ glewPrintExt("GL_ARB_shader_bit_encoding", GLEW_ARB_shader_bit_encoding, glewIsSupported("GL_ARB_shader_bit_encoding"), glewGetExtension("GL_ARB_shader_bit_encoding"));
+}
+
+#endif /* GL_ARB_shader_bit_encoding */
+
+#ifdef GL_ARB_shader_clock
+
+static void _glewInfo_GL_ARB_shader_clock (void)
+{
+ glewPrintExt("GL_ARB_shader_clock", GLEW_ARB_shader_clock, glewIsSupported("GL_ARB_shader_clock"), glewGetExtension("GL_ARB_shader_clock"));
+}
+
+#endif /* GL_ARB_shader_clock */
+
+#ifdef GL_ARB_shader_draw_parameters
+
+static void _glewInfo_GL_ARB_shader_draw_parameters (void)
+{
+ glewPrintExt("GL_ARB_shader_draw_parameters", GLEW_ARB_shader_draw_parameters, glewIsSupported("GL_ARB_shader_draw_parameters"), glewGetExtension("GL_ARB_shader_draw_parameters"));
+}
+
+#endif /* GL_ARB_shader_draw_parameters */
+
+#ifdef GL_ARB_shader_group_vote
+
+static void _glewInfo_GL_ARB_shader_group_vote (void)
+{
+ glewPrintExt("GL_ARB_shader_group_vote", GLEW_ARB_shader_group_vote, glewIsSupported("GL_ARB_shader_group_vote"), glewGetExtension("GL_ARB_shader_group_vote"));
+}
+
+#endif /* GL_ARB_shader_group_vote */
+
+#ifdef GL_ARB_shader_image_load_store
+
+static void _glewInfo_GL_ARB_shader_image_load_store (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_image_load_store", GLEW_ARB_shader_image_load_store, glewIsSupported("GL_ARB_shader_image_load_store"), glewGetExtension("GL_ARB_shader_image_load_store"));
+
+ glewInfoFunc(fi, "glBindImageTexture", glBindImageTexture == NULL);
+ glewInfoFunc(fi, "glMemoryBarrier", glMemoryBarrier == NULL);
+}
+
+#endif /* GL_ARB_shader_image_load_store */
+
+#ifdef GL_ARB_shader_image_size
+
+static void _glewInfo_GL_ARB_shader_image_size (void)
+{
+ glewPrintExt("GL_ARB_shader_image_size", GLEW_ARB_shader_image_size, glewIsSupported("GL_ARB_shader_image_size"), glewGetExtension("GL_ARB_shader_image_size"));
+}
+
+#endif /* GL_ARB_shader_image_size */
+
+#ifdef GL_ARB_shader_objects
+
+static void _glewInfo_GL_ARB_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_objects", GLEW_ARB_shader_objects, glewIsSupported("GL_ARB_shader_objects"), glewGetExtension("GL_ARB_shader_objects"));
+
+ glewInfoFunc(fi, "glAttachObjectARB", glAttachObjectARB == NULL);
+ glewInfoFunc(fi, "glCompileShaderARB", glCompileShaderARB == NULL);
+ glewInfoFunc(fi, "glCreateProgramObjectARB", glCreateProgramObjectARB == NULL);
+ glewInfoFunc(fi, "glCreateShaderObjectARB", glCreateShaderObjectARB == NULL);
+ glewInfoFunc(fi, "glDeleteObjectARB", glDeleteObjectARB == NULL);
+ glewInfoFunc(fi, "glDetachObjectARB", glDetachObjectARB == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformARB", glGetActiveUniformARB == NULL);
+ glewInfoFunc(fi, "glGetAttachedObjectsARB", glGetAttachedObjectsARB == NULL);
+ glewInfoFunc(fi, "glGetHandleARB", glGetHandleARB == NULL);
+ glewInfoFunc(fi, "glGetInfoLogARB", glGetInfoLogARB == NULL);
+ glewInfoFunc(fi, "glGetObjectParameterfvARB", glGetObjectParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetObjectParameterivARB", glGetObjectParameterivARB == NULL);
+ glewInfoFunc(fi, "glGetShaderSourceARB", glGetShaderSourceARB == NULL);
+ glewInfoFunc(fi, "glGetUniformLocationARB", glGetUniformLocationARB == NULL);
+ glewInfoFunc(fi, "glGetUniformfvARB", glGetUniformfvARB == NULL);
+ glewInfoFunc(fi, "glGetUniformivARB", glGetUniformivARB == NULL);
+ glewInfoFunc(fi, "glLinkProgramARB", glLinkProgramARB == NULL);
+ glewInfoFunc(fi, "glShaderSourceARB", glShaderSourceARB == NULL);
+ glewInfoFunc(fi, "glUniform1fARB", glUniform1fARB == NULL);
+ glewInfoFunc(fi, "glUniform1fvARB", glUniform1fvARB == NULL);
+ glewInfoFunc(fi, "glUniform1iARB", glUniform1iARB == NULL);
+ glewInfoFunc(fi, "glUniform1ivARB", glUniform1ivARB == NULL);
+ glewInfoFunc(fi, "glUniform2fARB", glUniform2fARB == NULL);
+ glewInfoFunc(fi, "glUniform2fvARB", glUniform2fvARB == NULL);
+ glewInfoFunc(fi, "glUniform2iARB", glUniform2iARB == NULL);
+ glewInfoFunc(fi, "glUniform2ivARB", glUniform2ivARB == NULL);
+ glewInfoFunc(fi, "glUniform3fARB", glUniform3fARB == NULL);
+ glewInfoFunc(fi, "glUniform3fvARB", glUniform3fvARB == NULL);
+ glewInfoFunc(fi, "glUniform3iARB", glUniform3iARB == NULL);
+ glewInfoFunc(fi, "glUniform3ivARB", glUniform3ivARB == NULL);
+ glewInfoFunc(fi, "glUniform4fARB", glUniform4fARB == NULL);
+ glewInfoFunc(fi, "glUniform4fvARB", glUniform4fvARB == NULL);
+ glewInfoFunc(fi, "glUniform4iARB", glUniform4iARB == NULL);
+ glewInfoFunc(fi, "glUniform4ivARB", glUniform4ivARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2fvARB", glUniformMatrix2fvARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3fvARB", glUniformMatrix3fvARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4fvARB", glUniformMatrix4fvARB == NULL);
+ glewInfoFunc(fi, "glUseProgramObjectARB", glUseProgramObjectARB == NULL);
+ glewInfoFunc(fi, "glValidateProgramARB", glValidateProgramARB == NULL);
+}
+
+#endif /* GL_ARB_shader_objects */
+
+#ifdef GL_ARB_shader_precision
+
+static void _glewInfo_GL_ARB_shader_precision (void)
+{
+ glewPrintExt("GL_ARB_shader_precision", GLEW_ARB_shader_precision, glewIsSupported("GL_ARB_shader_precision"), glewGetExtension("GL_ARB_shader_precision"));
+}
+
+#endif /* GL_ARB_shader_precision */
+
+#ifdef GL_ARB_shader_stencil_export
+
+static void _glewInfo_GL_ARB_shader_stencil_export (void)
+{
+ glewPrintExt("GL_ARB_shader_stencil_export", GLEW_ARB_shader_stencil_export, glewIsSupported("GL_ARB_shader_stencil_export"), glewGetExtension("GL_ARB_shader_stencil_export"));
+}
+
+#endif /* GL_ARB_shader_stencil_export */
+
+#ifdef GL_ARB_shader_storage_buffer_object
+
+static void _glewInfo_GL_ARB_shader_storage_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_storage_buffer_object", GLEW_ARB_shader_storage_buffer_object, glewIsSupported("GL_ARB_shader_storage_buffer_object"), glewGetExtension("GL_ARB_shader_storage_buffer_object"));
+
+ glewInfoFunc(fi, "glShaderStorageBlockBinding", glShaderStorageBlockBinding == NULL);
+}
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+#ifdef GL_ARB_shader_subroutine
+
+static void _glewInfo_GL_ARB_shader_subroutine (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_subroutine", GLEW_ARB_shader_subroutine, glewIsSupported("GL_ARB_shader_subroutine"), glewGetExtension("GL_ARB_shader_subroutine"));
+
+ glewInfoFunc(fi, "glGetActiveSubroutineName", glGetActiveSubroutineName == NULL);
+ glewInfoFunc(fi, "glGetActiveSubroutineUniformName", glGetActiveSubroutineUniformName == NULL);
+ glewInfoFunc(fi, "glGetActiveSubroutineUniformiv", glGetActiveSubroutineUniformiv == NULL);
+ glewInfoFunc(fi, "glGetProgramStageiv", glGetProgramStageiv == NULL);
+ glewInfoFunc(fi, "glGetSubroutineIndex", glGetSubroutineIndex == NULL);
+ glewInfoFunc(fi, "glGetSubroutineUniformLocation", glGetSubroutineUniformLocation == NULL);
+ glewInfoFunc(fi, "glGetUniformSubroutineuiv", glGetUniformSubroutineuiv == NULL);
+ glewInfoFunc(fi, "glUniformSubroutinesuiv", glUniformSubroutinesuiv == NULL);
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
+#ifdef GL_ARB_shader_texture_image_samples
+
+static void _glewInfo_GL_ARB_shader_texture_image_samples (void)
+{
+ glewPrintExt("GL_ARB_shader_texture_image_samples", GLEW_ARB_shader_texture_image_samples, glewIsSupported("GL_ARB_shader_texture_image_samples"), glewGetExtension("GL_ARB_shader_texture_image_samples"));
+}
+
+#endif /* GL_ARB_shader_texture_image_samples */
+
+#ifdef GL_ARB_shader_texture_lod
+
+static void _glewInfo_GL_ARB_shader_texture_lod (void)
+{
+ glewPrintExt("GL_ARB_shader_texture_lod", GLEW_ARB_shader_texture_lod, glewIsSupported("GL_ARB_shader_texture_lod"), glewGetExtension("GL_ARB_shader_texture_lod"));
+}
+
+#endif /* GL_ARB_shader_texture_lod */
+
+#ifdef GL_ARB_shader_viewport_layer_array
+
+static void _glewInfo_GL_ARB_shader_viewport_layer_array (void)
+{
+ glewPrintExt("GL_ARB_shader_viewport_layer_array", GLEW_ARB_shader_viewport_layer_array, glewIsSupported("GL_ARB_shader_viewport_layer_array"), glewGetExtension("GL_ARB_shader_viewport_layer_array"));
+}
+
+#endif /* GL_ARB_shader_viewport_layer_array */
+
+#ifdef GL_ARB_shading_language_100
+
+static void _glewInfo_GL_ARB_shading_language_100 (void)
+{
+ glewPrintExt("GL_ARB_shading_language_100", GLEW_ARB_shading_language_100, glewIsSupported("GL_ARB_shading_language_100"), glewGetExtension("GL_ARB_shading_language_100"));
+}
+
+#endif /* GL_ARB_shading_language_100 */
+
+#ifdef GL_ARB_shading_language_420pack
+
+static void _glewInfo_GL_ARB_shading_language_420pack (void)
+{
+ glewPrintExt("GL_ARB_shading_language_420pack", GLEW_ARB_shading_language_420pack, glewIsSupported("GL_ARB_shading_language_420pack"), glewGetExtension("GL_ARB_shading_language_420pack"));
+}
+
+#endif /* GL_ARB_shading_language_420pack */
+
+#ifdef GL_ARB_shading_language_include
+
+static void _glewInfo_GL_ARB_shading_language_include (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shading_language_include", GLEW_ARB_shading_language_include, glewIsSupported("GL_ARB_shading_language_include"), glewGetExtension("GL_ARB_shading_language_include"));
+
+ glewInfoFunc(fi, "glCompileShaderIncludeARB", glCompileShaderIncludeARB == NULL);
+ glewInfoFunc(fi, "glDeleteNamedStringARB", glDeleteNamedStringARB == NULL);
+ glewInfoFunc(fi, "glGetNamedStringARB", glGetNamedStringARB == NULL);
+ glewInfoFunc(fi, "glGetNamedStringivARB", glGetNamedStringivARB == NULL);
+ glewInfoFunc(fi, "glIsNamedStringARB", glIsNamedStringARB == NULL);
+ glewInfoFunc(fi, "glNamedStringARB", glNamedStringARB == NULL);
+}
+
+#endif /* GL_ARB_shading_language_include */
+
+#ifdef GL_ARB_shading_language_packing
+
+static void _glewInfo_GL_ARB_shading_language_packing (void)
+{
+ glewPrintExt("GL_ARB_shading_language_packing", GLEW_ARB_shading_language_packing, glewIsSupported("GL_ARB_shading_language_packing"), glewGetExtension("GL_ARB_shading_language_packing"));
+}
+
+#endif /* GL_ARB_shading_language_packing */
+
+#ifdef GL_ARB_shadow
+
+static void _glewInfo_GL_ARB_shadow (void)
+{
+ glewPrintExt("GL_ARB_shadow", GLEW_ARB_shadow, glewIsSupported("GL_ARB_shadow"), glewGetExtension("GL_ARB_shadow"));
+}
+
+#endif /* GL_ARB_shadow */
+
+#ifdef GL_ARB_shadow_ambient
+
+static void _glewInfo_GL_ARB_shadow_ambient (void)
+{
+ glewPrintExt("GL_ARB_shadow_ambient", GLEW_ARB_shadow_ambient, glewIsSupported("GL_ARB_shadow_ambient"), glewGetExtension("GL_ARB_shadow_ambient"));
+}
+
+#endif /* GL_ARB_shadow_ambient */
+
+#ifdef GL_ARB_sparse_buffer
+
+static void _glewInfo_GL_ARB_sparse_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sparse_buffer", GLEW_ARB_sparse_buffer, glewIsSupported("GL_ARB_sparse_buffer"), glewGetExtension("GL_ARB_sparse_buffer"));
+
+ glewInfoFunc(fi, "glBufferPageCommitmentARB", glBufferPageCommitmentARB == NULL);
+}
+
+#endif /* GL_ARB_sparse_buffer */
+
+#ifdef GL_ARB_sparse_texture
+
+static void _glewInfo_GL_ARB_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sparse_texture", GLEW_ARB_sparse_texture, glewIsSupported("GL_ARB_sparse_texture"), glewGetExtension("GL_ARB_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexPageCommitmentARB", glTexPageCommitmentARB == NULL);
+}
+
+#endif /* GL_ARB_sparse_texture */
+
+#ifdef GL_ARB_sparse_texture2
+
+static void _glewInfo_GL_ARB_sparse_texture2 (void)
+{
+ glewPrintExt("GL_ARB_sparse_texture2", GLEW_ARB_sparse_texture2, glewIsSupported("GL_ARB_sparse_texture2"), glewGetExtension("GL_ARB_sparse_texture2"));
+}
+
+#endif /* GL_ARB_sparse_texture2 */
+
+#ifdef GL_ARB_sparse_texture_clamp
+
+static void _glewInfo_GL_ARB_sparse_texture_clamp (void)
+{
+ glewPrintExt("GL_ARB_sparse_texture_clamp", GLEW_ARB_sparse_texture_clamp, glewIsSupported("GL_ARB_sparse_texture_clamp"), glewGetExtension("GL_ARB_sparse_texture_clamp"));
+}
+
+#endif /* GL_ARB_sparse_texture_clamp */
+
+#ifdef GL_ARB_spirv_extensions
+
+static void _glewInfo_GL_ARB_spirv_extensions (void)
+{
+ glewPrintExt("GL_ARB_spirv_extensions", GLEW_ARB_spirv_extensions, glewIsSupported("GL_ARB_spirv_extensions"), glewGetExtension("GL_ARB_spirv_extensions"));
+}
+
+#endif /* GL_ARB_spirv_extensions */
+
+#ifdef GL_ARB_stencil_texturing
+
+static void _glewInfo_GL_ARB_stencil_texturing (void)
+{
+ glewPrintExt("GL_ARB_stencil_texturing", GLEW_ARB_stencil_texturing, glewIsSupported("GL_ARB_stencil_texturing"), glewGetExtension("GL_ARB_stencil_texturing"));
+}
+
+#endif /* GL_ARB_stencil_texturing */
+
+#ifdef GL_ARB_sync
+
+static void _glewInfo_GL_ARB_sync (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sync", GLEW_ARB_sync, glewIsSupported("GL_ARB_sync"), glewGetExtension("GL_ARB_sync"));
+
+ glewInfoFunc(fi, "glClientWaitSync", glClientWaitSync == NULL);
+ glewInfoFunc(fi, "glDeleteSync", glDeleteSync == NULL);
+ glewInfoFunc(fi, "glFenceSync", glFenceSync == NULL);
+ glewInfoFunc(fi, "glGetInteger64v", glGetInteger64v == NULL);
+ glewInfoFunc(fi, "glGetSynciv", glGetSynciv == NULL);
+ glewInfoFunc(fi, "glIsSync", glIsSync == NULL);
+ glewInfoFunc(fi, "glWaitSync", glWaitSync == NULL);
+}
+
+#endif /* GL_ARB_sync */
+
+#ifdef GL_ARB_tessellation_shader
+
+static void _glewInfo_GL_ARB_tessellation_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_tessellation_shader", GLEW_ARB_tessellation_shader, glewIsSupported("GL_ARB_tessellation_shader"), glewGetExtension("GL_ARB_tessellation_shader"));
+
+ glewInfoFunc(fi, "glPatchParameterfv", glPatchParameterfv == NULL);
+ glewInfoFunc(fi, "glPatchParameteri", glPatchParameteri == NULL);
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
+#ifdef GL_ARB_texture_barrier
+
+static void _glewInfo_GL_ARB_texture_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_barrier", GLEW_ARB_texture_barrier, glewIsSupported("GL_ARB_texture_barrier"), glewGetExtension("GL_ARB_texture_barrier"));
+
+ glewInfoFunc(fi, "glTextureBarrier", glTextureBarrier == NULL);
+}
+
+#endif /* GL_ARB_texture_barrier */
+
+#ifdef GL_ARB_texture_border_clamp
+
+static void _glewInfo_GL_ARB_texture_border_clamp (void)
+{
+ glewPrintExt("GL_ARB_texture_border_clamp", GLEW_ARB_texture_border_clamp, glewIsSupported("GL_ARB_texture_border_clamp"), glewGetExtension("GL_ARB_texture_border_clamp"));
+}
+
+#endif /* GL_ARB_texture_border_clamp */
+
+#ifdef GL_ARB_texture_buffer_object
+
+static void _glewInfo_GL_ARB_texture_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_buffer_object", GLEW_ARB_texture_buffer_object, glewIsSupported("GL_ARB_texture_buffer_object"), glewGetExtension("GL_ARB_texture_buffer_object"));
+
+ glewInfoFunc(fi, "glTexBufferARB", glTexBufferARB == NULL);
+}
+
+#endif /* GL_ARB_texture_buffer_object */
+
+#ifdef GL_ARB_texture_buffer_object_rgb32
+
+static void _glewInfo_GL_ARB_texture_buffer_object_rgb32 (void)
+{
+ glewPrintExt("GL_ARB_texture_buffer_object_rgb32", GLEW_ARB_texture_buffer_object_rgb32, glewIsSupported("GL_ARB_texture_buffer_object_rgb32"), glewGetExtension("GL_ARB_texture_buffer_object_rgb32"));
+}
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
+#ifdef GL_ARB_texture_buffer_range
+
+static void _glewInfo_GL_ARB_texture_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_buffer_range", GLEW_ARB_texture_buffer_range, glewIsSupported("GL_ARB_texture_buffer_range"), glewGetExtension("GL_ARB_texture_buffer_range"));
+
+ glewInfoFunc(fi, "glTexBufferRange", glTexBufferRange == NULL);
+ glewInfoFunc(fi, "glTextureBufferRangeEXT", glTextureBufferRangeEXT == NULL);
+}
+
+#endif /* GL_ARB_texture_buffer_range */
+
+#ifdef GL_ARB_texture_compression
+
+static void _glewInfo_GL_ARB_texture_compression (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_compression", GLEW_ARB_texture_compression, glewIsSupported("GL_ARB_texture_compression"), glewGetExtension("GL_ARB_texture_compression"));
+
+ glewInfoFunc(fi, "glCompressedTexImage1DARB", glCompressedTexImage1DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage2DARB", glCompressedTexImage2DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage3DARB", glCompressedTexImage3DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage1DARB", glCompressedTexSubImage1DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage2DARB", glCompressedTexSubImage2DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DARB", glCompressedTexSubImage3DARB == NULL);
+ glewInfoFunc(fi, "glGetCompressedTexImageARB", glGetCompressedTexImageARB == NULL);
+}
+
+#endif /* GL_ARB_texture_compression */
+
+#ifdef GL_ARB_texture_compression_bptc
+
+static void _glewInfo_GL_ARB_texture_compression_bptc (void)
+{
+ glewPrintExt("GL_ARB_texture_compression_bptc", GLEW_ARB_texture_compression_bptc, glewIsSupported("GL_ARB_texture_compression_bptc"), glewGetExtension("GL_ARB_texture_compression_bptc"));
+}
+
+#endif /* GL_ARB_texture_compression_bptc */
+
+#ifdef GL_ARB_texture_compression_rgtc
+
+static void _glewInfo_GL_ARB_texture_compression_rgtc (void)
+{
+ glewPrintExt("GL_ARB_texture_compression_rgtc", GLEW_ARB_texture_compression_rgtc, glewIsSupported("GL_ARB_texture_compression_rgtc"), glewGetExtension("GL_ARB_texture_compression_rgtc"));
+}
+
+#endif /* GL_ARB_texture_compression_rgtc */
+
+#ifdef GL_ARB_texture_cube_map
+
+static void _glewInfo_GL_ARB_texture_cube_map (void)
+{
+ glewPrintExt("GL_ARB_texture_cube_map", GLEW_ARB_texture_cube_map, glewIsSupported("GL_ARB_texture_cube_map"), glewGetExtension("GL_ARB_texture_cube_map"));
+}
+
+#endif /* GL_ARB_texture_cube_map */
+
+#ifdef GL_ARB_texture_cube_map_array
+
+static void _glewInfo_GL_ARB_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_ARB_texture_cube_map_array", GLEW_ARB_texture_cube_map_array, glewIsSupported("GL_ARB_texture_cube_map_array"), glewGetExtension("GL_ARB_texture_cube_map_array"));
+}
+
+#endif /* GL_ARB_texture_cube_map_array */
+
+#ifdef GL_ARB_texture_env_add
+
+static void _glewInfo_GL_ARB_texture_env_add (void)
+{
+ glewPrintExt("GL_ARB_texture_env_add", GLEW_ARB_texture_env_add, glewIsSupported("GL_ARB_texture_env_add"), glewGetExtension("GL_ARB_texture_env_add"));
+}
+
+#endif /* GL_ARB_texture_env_add */
+
+#ifdef GL_ARB_texture_env_combine
+
+static void _glewInfo_GL_ARB_texture_env_combine (void)
+{
+ glewPrintExt("GL_ARB_texture_env_combine", GLEW_ARB_texture_env_combine, glewIsSupported("GL_ARB_texture_env_combine"), glewGetExtension("GL_ARB_texture_env_combine"));
+}
+
+#endif /* GL_ARB_texture_env_combine */
+
+#ifdef GL_ARB_texture_env_crossbar
+
+static void _glewInfo_GL_ARB_texture_env_crossbar (void)
+{
+ glewPrintExt("GL_ARB_texture_env_crossbar", GLEW_ARB_texture_env_crossbar, glewIsSupported("GL_ARB_texture_env_crossbar"), glewGetExtension("GL_ARB_texture_env_crossbar"));
+}
+
+#endif /* GL_ARB_texture_env_crossbar */
+
+#ifdef GL_ARB_texture_env_dot3
+
+static void _glewInfo_GL_ARB_texture_env_dot3 (void)
+{
+ glewPrintExt("GL_ARB_texture_env_dot3", GLEW_ARB_texture_env_dot3, glewIsSupported("GL_ARB_texture_env_dot3"), glewGetExtension("GL_ARB_texture_env_dot3"));
+}
+
+#endif /* GL_ARB_texture_env_dot3 */
+
+#ifdef GL_ARB_texture_filter_anisotropic
+
+static void _glewInfo_GL_ARB_texture_filter_anisotropic (void)
+{
+ glewPrintExt("GL_ARB_texture_filter_anisotropic", GLEW_ARB_texture_filter_anisotropic, glewIsSupported("GL_ARB_texture_filter_anisotropic"), glewGetExtension("GL_ARB_texture_filter_anisotropic"));
+}
+
+#endif /* GL_ARB_texture_filter_anisotropic */
+
+#ifdef GL_ARB_texture_filter_minmax
+
+static void _glewInfo_GL_ARB_texture_filter_minmax (void)
+{
+ glewPrintExt("GL_ARB_texture_filter_minmax", GLEW_ARB_texture_filter_minmax, glewIsSupported("GL_ARB_texture_filter_minmax"), glewGetExtension("GL_ARB_texture_filter_minmax"));
+}
+
+#endif /* GL_ARB_texture_filter_minmax */
+
+#ifdef GL_ARB_texture_float
+
+static void _glewInfo_GL_ARB_texture_float (void)
+{
+ glewPrintExt("GL_ARB_texture_float", GLEW_ARB_texture_float, glewIsSupported("GL_ARB_texture_float"), glewGetExtension("GL_ARB_texture_float"));
+}
+
+#endif /* GL_ARB_texture_float */
+
+#ifdef GL_ARB_texture_gather
+
+static void _glewInfo_GL_ARB_texture_gather (void)
+{
+ glewPrintExt("GL_ARB_texture_gather", GLEW_ARB_texture_gather, glewIsSupported("GL_ARB_texture_gather"), glewGetExtension("GL_ARB_texture_gather"));
+}
+
+#endif /* GL_ARB_texture_gather */
+
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+
+static void _glewInfo_GL_ARB_texture_mirror_clamp_to_edge (void)
+{
+ glewPrintExt("GL_ARB_texture_mirror_clamp_to_edge", GLEW_ARB_texture_mirror_clamp_to_edge, glewIsSupported("GL_ARB_texture_mirror_clamp_to_edge"), glewGetExtension("GL_ARB_texture_mirror_clamp_to_edge"));
+}
+
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+
+#ifdef GL_ARB_texture_mirrored_repeat
+
+static void _glewInfo_GL_ARB_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_ARB_texture_mirrored_repeat", GLEW_ARB_texture_mirrored_repeat, glewIsSupported("GL_ARB_texture_mirrored_repeat"), glewGetExtension("GL_ARB_texture_mirrored_repeat"));
+}
+
+#endif /* GL_ARB_texture_mirrored_repeat */
+
+#ifdef GL_ARB_texture_multisample
+
+static void _glewInfo_GL_ARB_texture_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_multisample", GLEW_ARB_texture_multisample, glewIsSupported("GL_ARB_texture_multisample"), glewGetExtension("GL_ARB_texture_multisample"));
+
+ glewInfoFunc(fi, "glGetMultisamplefv", glGetMultisamplefv == NULL);
+ glewInfoFunc(fi, "glSampleMaski", glSampleMaski == NULL);
+ glewInfoFunc(fi, "glTexImage2DMultisample", glTexImage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTexImage3DMultisample", glTexImage3DMultisample == NULL);
+}
+
+#endif /* GL_ARB_texture_multisample */
+
+#ifdef GL_ARB_texture_non_power_of_two
+
+static void _glewInfo_GL_ARB_texture_non_power_of_two (void)
+{
+ glewPrintExt("GL_ARB_texture_non_power_of_two", GLEW_ARB_texture_non_power_of_two, glewIsSupported("GL_ARB_texture_non_power_of_two"), glewGetExtension("GL_ARB_texture_non_power_of_two"));
+}
+
+#endif /* GL_ARB_texture_non_power_of_two */
+
+#ifdef GL_ARB_texture_query_levels
+
+static void _glewInfo_GL_ARB_texture_query_levels (void)
+{
+ glewPrintExt("GL_ARB_texture_query_levels", GLEW_ARB_texture_query_levels, glewIsSupported("GL_ARB_texture_query_levels"), glewGetExtension("GL_ARB_texture_query_levels"));
+}
+
+#endif /* GL_ARB_texture_query_levels */
+
+#ifdef GL_ARB_texture_query_lod
+
+static void _glewInfo_GL_ARB_texture_query_lod (void)
+{
+ glewPrintExt("GL_ARB_texture_query_lod", GLEW_ARB_texture_query_lod, glewIsSupported("GL_ARB_texture_query_lod"), glewGetExtension("GL_ARB_texture_query_lod"));
+}
+
+#endif /* GL_ARB_texture_query_lod */
+
+#ifdef GL_ARB_texture_rectangle
+
+static void _glewInfo_GL_ARB_texture_rectangle (void)
+{
+ glewPrintExt("GL_ARB_texture_rectangle", GLEW_ARB_texture_rectangle, glewIsSupported("GL_ARB_texture_rectangle"), glewGetExtension("GL_ARB_texture_rectangle"));
+}
+
+#endif /* GL_ARB_texture_rectangle */
+
+#ifdef GL_ARB_texture_rg
+
+static void _glewInfo_GL_ARB_texture_rg (void)
+{
+ glewPrintExt("GL_ARB_texture_rg", GLEW_ARB_texture_rg, glewIsSupported("GL_ARB_texture_rg"), glewGetExtension("GL_ARB_texture_rg"));
+}
+
+#endif /* GL_ARB_texture_rg */
+
+#ifdef GL_ARB_texture_rgb10_a2ui
+
+static void _glewInfo_GL_ARB_texture_rgb10_a2ui (void)
+{
+ glewPrintExt("GL_ARB_texture_rgb10_a2ui", GLEW_ARB_texture_rgb10_a2ui, glewIsSupported("GL_ARB_texture_rgb10_a2ui"), glewGetExtension("GL_ARB_texture_rgb10_a2ui"));
+}
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+#ifdef GL_ARB_texture_stencil8
+
+static void _glewInfo_GL_ARB_texture_stencil8 (void)
+{
+ glewPrintExt("GL_ARB_texture_stencil8", GLEW_ARB_texture_stencil8, glewIsSupported("GL_ARB_texture_stencil8"), glewGetExtension("GL_ARB_texture_stencil8"));
+}
+
+#endif /* GL_ARB_texture_stencil8 */
+
+#ifdef GL_ARB_texture_storage
+
+static void _glewInfo_GL_ARB_texture_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_storage", GLEW_ARB_texture_storage, glewIsSupported("GL_ARB_texture_storage"), glewGetExtension("GL_ARB_texture_storage"));
+
+ glewInfoFunc(fi, "glTexStorage1D", glTexStorage1D == NULL);
+ glewInfoFunc(fi, "glTexStorage2D", glTexStorage2D == NULL);
+ glewInfoFunc(fi, "glTexStorage3D", glTexStorage3D == NULL);
+}
+
+#endif /* GL_ARB_texture_storage */
+
+#ifdef GL_ARB_texture_storage_multisample
+
+static void _glewInfo_GL_ARB_texture_storage_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_storage_multisample", GLEW_ARB_texture_storage_multisample, glewIsSupported("GL_ARB_texture_storage_multisample"), glewGetExtension("GL_ARB_texture_storage_multisample"));
+
+ glewInfoFunc(fi, "glTexStorage2DMultisample", glTexStorage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTexStorage3DMultisample", glTexStorage3DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DMultisampleEXT", glTextureStorage2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DMultisampleEXT", glTextureStorage3DMultisampleEXT == NULL);
+}
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+#ifdef GL_ARB_texture_swizzle
+
+static void _glewInfo_GL_ARB_texture_swizzle (void)
+{
+ glewPrintExt("GL_ARB_texture_swizzle", GLEW_ARB_texture_swizzle, glewIsSupported("GL_ARB_texture_swizzle"), glewGetExtension("GL_ARB_texture_swizzle"));
+}
+
+#endif /* GL_ARB_texture_swizzle */
+
+#ifdef GL_ARB_texture_view
+
+static void _glewInfo_GL_ARB_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_view", GLEW_ARB_texture_view, glewIsSupported("GL_ARB_texture_view"), glewGetExtension("GL_ARB_texture_view"));
+
+ glewInfoFunc(fi, "glTextureView", glTextureView == NULL);
+}
+
+#endif /* GL_ARB_texture_view */
+
+#ifdef GL_ARB_timer_query
+
+static void _glewInfo_GL_ARB_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_timer_query", GLEW_ARB_timer_query, glewIsSupported("GL_ARB_timer_query"), glewGetExtension("GL_ARB_timer_query"));
+
+ glewInfoFunc(fi, "glGetQueryObjecti64v", glGetQueryObjecti64v == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64v", glGetQueryObjectui64v == NULL);
+ glewInfoFunc(fi, "glQueryCounter", glQueryCounter == NULL);
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static void _glewInfo_GL_ARB_transform_feedback2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback2", GLEW_ARB_transform_feedback2, glewIsSupported("GL_ARB_transform_feedback2"), glewGetExtension("GL_ARB_transform_feedback2"));
+
+ glewInfoFunc(fi, "glBindTransformFeedback", glBindTransformFeedback == NULL);
+ glewInfoFunc(fi, "glDeleteTransformFeedbacks", glDeleteTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedback", glDrawTransformFeedback == NULL);
+ glewInfoFunc(fi, "glGenTransformFeedbacks", glGenTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glIsTransformFeedback", glIsTransformFeedback == NULL);
+ glewInfoFunc(fi, "glPauseTransformFeedback", glPauseTransformFeedback == NULL);
+ glewInfoFunc(fi, "glResumeTransformFeedback", glResumeTransformFeedback == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static void _glewInfo_GL_ARB_transform_feedback3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback3", GLEW_ARB_transform_feedback3, glewIsSupported("GL_ARB_transform_feedback3"), glewGetExtension("GL_ARB_transform_feedback3"));
+
+ glewInfoFunc(fi, "glBeginQueryIndexed", glBeginQueryIndexed == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackStream", glDrawTransformFeedbackStream == NULL);
+ glewInfoFunc(fi, "glEndQueryIndexed", glEndQueryIndexed == NULL);
+ glewInfoFunc(fi, "glGetQueryIndexediv", glGetQueryIndexediv == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
+#ifdef GL_ARB_transform_feedback_instanced
+
+static void _glewInfo_GL_ARB_transform_feedback_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback_instanced", GLEW_ARB_transform_feedback_instanced, glewIsSupported("GL_ARB_transform_feedback_instanced"), glewGetExtension("GL_ARB_transform_feedback_instanced"));
+
+ glewInfoFunc(fi, "glDrawTransformFeedbackInstanced", glDrawTransformFeedbackInstanced == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackStreamInstanced", glDrawTransformFeedbackStreamInstanced == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+#ifdef GL_ARB_transform_feedback_overflow_query
+
+static void _glewInfo_GL_ARB_transform_feedback_overflow_query (void)
+{
+ glewPrintExt("GL_ARB_transform_feedback_overflow_query", GLEW_ARB_transform_feedback_overflow_query, glewIsSupported("GL_ARB_transform_feedback_overflow_query"), glewGetExtension("GL_ARB_transform_feedback_overflow_query"));
+}
+
+#endif /* GL_ARB_transform_feedback_overflow_query */
+
+#ifdef GL_ARB_transpose_matrix
+
+static void _glewInfo_GL_ARB_transpose_matrix (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transpose_matrix", GLEW_ARB_transpose_matrix, glewIsSupported("GL_ARB_transpose_matrix"), glewGetExtension("GL_ARB_transpose_matrix"));
+
+ glewInfoFunc(fi, "glLoadTransposeMatrixdARB", glLoadTransposeMatrixdARB == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixfARB", glLoadTransposeMatrixfARB == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixdARB", glMultTransposeMatrixdARB == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixfARB", glMultTransposeMatrixfARB == NULL);
+}
+
+#endif /* GL_ARB_transpose_matrix */
+
+#ifdef GL_ARB_uniform_buffer_object
+
+static void _glewInfo_GL_ARB_uniform_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_uniform_buffer_object", GLEW_ARB_uniform_buffer_object, glewIsSupported("GL_ARB_uniform_buffer_object"), glewGetExtension("GL_ARB_uniform_buffer_object"));
+
+ glewInfoFunc(fi, "glBindBufferBase", glBindBufferBase == NULL);
+ glewInfoFunc(fi, "glBindBufferRange", glBindBufferRange == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformBlockName", glGetActiveUniformBlockName == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformBlockiv", glGetActiveUniformBlockiv == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformName", glGetActiveUniformName == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformsiv", glGetActiveUniformsiv == NULL);
+ glewInfoFunc(fi, "glGetIntegeri_v", glGetIntegeri_v == NULL);
+ glewInfoFunc(fi, "glGetUniformBlockIndex", glGetUniformBlockIndex == NULL);
+ glewInfoFunc(fi, "glGetUniformIndices", glGetUniformIndices == NULL);
+ glewInfoFunc(fi, "glUniformBlockBinding", glUniformBlockBinding == NULL);
+}
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+#ifdef GL_ARB_vertex_array_bgra
+
+static void _glewInfo_GL_ARB_vertex_array_bgra (void)
+{
+ glewPrintExt("GL_ARB_vertex_array_bgra", GLEW_ARB_vertex_array_bgra, glewIsSupported("GL_ARB_vertex_array_bgra"), glewGetExtension("GL_ARB_vertex_array_bgra"));
+}
+
+#endif /* GL_ARB_vertex_array_bgra */
+
+#ifdef GL_ARB_vertex_array_object
+
+static void _glewInfo_GL_ARB_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_array_object", GLEW_ARB_vertex_array_object, glewIsSupported("GL_ARB_vertex_array_object"), glewGetExtension("GL_ARB_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArray", glBindVertexArray == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArrays", glDeleteVertexArrays == NULL);
+ glewInfoFunc(fi, "glGenVertexArrays", glGenVertexArrays == NULL);
+ glewInfoFunc(fi, "glIsVertexArray", glIsVertexArray == NULL);
+}
+
+#endif /* GL_ARB_vertex_array_object */
+
+#ifdef GL_ARB_vertex_attrib_64bit
+
+static void _glewInfo_GL_ARB_vertex_attrib_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_attrib_64bit", GLEW_ARB_vertex_attrib_64bit, glewIsSupported("GL_ARB_vertex_attrib_64bit"), glewGetExtension("GL_ARB_vertex_attrib_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLdv", glGetVertexAttribLdv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1d", glVertexAttribL1d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dv", glVertexAttribL1dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2d", glVertexAttribL2d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dv", glVertexAttribL2dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3d", glVertexAttribL3d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dv", glVertexAttribL3dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4d", glVertexAttribL4d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dv", glVertexAttribL4dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribLPointer", glVertexAttribLPointer == NULL);
+}
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+#ifdef GL_ARB_vertex_attrib_binding
+
+static void _glewInfo_GL_ARB_vertex_attrib_binding (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_attrib_binding", GLEW_ARB_vertex_attrib_binding, glewIsSupported("GL_ARB_vertex_attrib_binding"), glewGetExtension("GL_ARB_vertex_attrib_binding"));
+
+ glewInfoFunc(fi, "glBindVertexBuffer", glBindVertexBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayBindVertexBufferEXT", glVertexArrayBindVertexBufferEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribBindingEXT", glVertexArrayVertexAttribBindingEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribFormatEXT", glVertexArrayVertexAttribFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribIFormatEXT", glVertexArrayVertexAttribIFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribLFormatEXT", glVertexArrayVertexAttribLFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBindingDivisorEXT", glVertexArrayVertexBindingDivisorEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribBinding", glVertexAttribBinding == NULL);
+ glewInfoFunc(fi, "glVertexAttribFormat", glVertexAttribFormat == NULL);
+ glewInfoFunc(fi, "glVertexAttribIFormat", glVertexAttribIFormat == NULL);
+ glewInfoFunc(fi, "glVertexAttribLFormat", glVertexAttribLFormat == NULL);
+ glewInfoFunc(fi, "glVertexBindingDivisor", glVertexBindingDivisor == NULL);
+}
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+#ifdef GL_ARB_vertex_blend
+
+static void _glewInfo_GL_ARB_vertex_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_blend", GLEW_ARB_vertex_blend, glewIsSupported("GL_ARB_vertex_blend"), glewGetExtension("GL_ARB_vertex_blend"));
+
+ glewInfoFunc(fi, "glVertexBlendARB", glVertexBlendARB == NULL);
+ glewInfoFunc(fi, "glWeightPointerARB", glWeightPointerARB == NULL);
+ glewInfoFunc(fi, "glWeightbvARB", glWeightbvARB == NULL);
+ glewInfoFunc(fi, "glWeightdvARB", glWeightdvARB == NULL);
+ glewInfoFunc(fi, "glWeightfvARB", glWeightfvARB == NULL);
+ glewInfoFunc(fi, "glWeightivARB", glWeightivARB == NULL);
+ glewInfoFunc(fi, "glWeightsvARB", glWeightsvARB == NULL);
+ glewInfoFunc(fi, "glWeightubvARB", glWeightubvARB == NULL);
+ glewInfoFunc(fi, "glWeightuivARB", glWeightuivARB == NULL);
+ glewInfoFunc(fi, "glWeightusvARB", glWeightusvARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_blend */
+
+#ifdef GL_ARB_vertex_buffer_object
+
+static void _glewInfo_GL_ARB_vertex_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_buffer_object", GLEW_ARB_vertex_buffer_object, glewIsSupported("GL_ARB_vertex_buffer_object"), glewGetExtension("GL_ARB_vertex_buffer_object"));
+
+ glewInfoFunc(fi, "glBindBufferARB", glBindBufferARB == NULL);
+ glewInfoFunc(fi, "glBufferDataARB", glBufferDataARB == NULL);
+ glewInfoFunc(fi, "glBufferSubDataARB", glBufferSubDataARB == NULL);
+ glewInfoFunc(fi, "glDeleteBuffersARB", glDeleteBuffersARB == NULL);
+ glewInfoFunc(fi, "glGenBuffersARB", glGenBuffersARB == NULL);
+ glewInfoFunc(fi, "glGetBufferParameterivARB", glGetBufferParameterivARB == NULL);
+ glewInfoFunc(fi, "glGetBufferPointervARB", glGetBufferPointervARB == NULL);
+ glewInfoFunc(fi, "glGetBufferSubDataARB", glGetBufferSubDataARB == NULL);
+ glewInfoFunc(fi, "glIsBufferARB", glIsBufferARB == NULL);
+ glewInfoFunc(fi, "glMapBufferARB", glMapBufferARB == NULL);
+ glewInfoFunc(fi, "glUnmapBufferARB", glUnmapBufferARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+#ifdef GL_ARB_vertex_program
+
+static void _glewInfo_GL_ARB_vertex_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_program", GLEW_ARB_vertex_program, glewIsSupported("GL_ARB_vertex_program"), glewGetExtension("GL_ARB_vertex_program"));
+
+ glewInfoFunc(fi, "glBindProgramARB", glBindProgramARB == NULL);
+ glewInfoFunc(fi, "glDeleteProgramsARB", glDeleteProgramsARB == NULL);
+ glewInfoFunc(fi, "glDisableVertexAttribArrayARB", glDisableVertexAttribArrayARB == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribArrayARB", glEnableVertexAttribArrayARB == NULL);
+ glewInfoFunc(fi, "glGenProgramsARB", glGenProgramsARB == NULL);
+ glewInfoFunc(fi, "glGetProgramEnvParameterdvARB", glGetProgramEnvParameterdvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramEnvParameterfvARB", glGetProgramEnvParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramLocalParameterdvARB", glGetProgramLocalParameterdvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramLocalParameterfvARB", glGetProgramLocalParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramStringARB", glGetProgramStringARB == NULL);
+ glewInfoFunc(fi, "glGetProgramivARB", glGetProgramivARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointervARB", glGetVertexAttribPointervARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdvARB", glGetVertexAttribdvARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfvARB", glGetVertexAttribfvARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribivARB", glGetVertexAttribivARB == NULL);
+ glewInfoFunc(fi, "glIsProgramARB", glIsProgramARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4dARB", glProgramEnvParameter4dARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4dvARB", glProgramEnvParameter4dvARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4fARB", glProgramEnvParameter4fARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4fvARB", glProgramEnvParameter4fvARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4dARB", glProgramLocalParameter4dARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4dvARB", glProgramLocalParameter4dvARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4fARB", glProgramLocalParameter4fARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4fvARB", glProgramLocalParameter4fvARB == NULL);
+ glewInfoFunc(fi, "glProgramStringARB", glProgramStringARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dARB", glVertexAttrib1dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dvARB", glVertexAttrib1dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fARB", glVertexAttrib1fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fvARB", glVertexAttrib1fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sARB", glVertexAttrib1sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1svARB", glVertexAttrib1svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dARB", glVertexAttrib2dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dvARB", glVertexAttrib2dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fARB", glVertexAttrib2fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fvARB", glVertexAttrib2fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sARB", glVertexAttrib2sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2svARB", glVertexAttrib2svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dARB", glVertexAttrib3dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dvARB", glVertexAttrib3dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fARB", glVertexAttrib3fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fvARB", glVertexAttrib3fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sARB", glVertexAttrib3sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3svARB", glVertexAttrib3svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NbvARB", glVertexAttrib4NbvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NivARB", glVertexAttrib4NivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NsvARB", glVertexAttrib4NsvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NubARB", glVertexAttrib4NubARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NubvARB", glVertexAttrib4NubvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NuivARB", glVertexAttrib4NuivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NusvARB", glVertexAttrib4NusvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4bvARB", glVertexAttrib4bvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dARB", glVertexAttrib4dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dvARB", glVertexAttrib4dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fARB", glVertexAttrib4fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fvARB", glVertexAttrib4fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ivARB", glVertexAttrib4ivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sARB", glVertexAttrib4sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4svARB", glVertexAttrib4svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubvARB", glVertexAttrib4ubvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4uivARB", glVertexAttrib4uivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4usvARB", glVertexAttrib4usvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointerARB", glVertexAttribPointerARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_program */
+
+#ifdef GL_ARB_vertex_shader
+
+static void _glewInfo_GL_ARB_vertex_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_shader", GLEW_ARB_vertex_shader, glewIsSupported("GL_ARB_vertex_shader"), glewGetExtension("GL_ARB_vertex_shader"));
+
+ glewInfoFunc(fi, "glBindAttribLocationARB", glBindAttribLocationARB == NULL);
+ glewInfoFunc(fi, "glGetActiveAttribARB", glGetActiveAttribARB == NULL);
+ glewInfoFunc(fi, "glGetAttribLocationARB", glGetAttribLocationARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_shader */
+
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+
+static void _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev (void)
+{
+ glewPrintExt("GL_ARB_vertex_type_10f_11f_11f_rev", GLEW_ARB_vertex_type_10f_11f_11f_rev, glewIsSupported("GL_ARB_vertex_type_10f_11f_11f_rev"), glewGetExtension("GL_ARB_vertex_type_10f_11f_11f_rev"));
+}
+
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static void _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_type_2_10_10_10_rev", GLEW_ARB_vertex_type_2_10_10_10_rev, glewIsSupported("GL_ARB_vertex_type_2_10_10_10_rev"), glewGetExtension("GL_ARB_vertex_type_2_10_10_10_rev"));
+
+ glewInfoFunc(fi, "glColorP3ui", glColorP3ui == NULL);
+ glewInfoFunc(fi, "glColorP3uiv", glColorP3uiv == NULL);
+ glewInfoFunc(fi, "glColorP4ui", glColorP4ui == NULL);
+ glewInfoFunc(fi, "glColorP4uiv", glColorP4uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP1ui", glMultiTexCoordP1ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP1uiv", glMultiTexCoordP1uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP2ui", glMultiTexCoordP2ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP2uiv", glMultiTexCoordP2uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP3ui", glMultiTexCoordP3ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP3uiv", glMultiTexCoordP3uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP4ui", glMultiTexCoordP4ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP4uiv", glMultiTexCoordP4uiv == NULL);
+ glewInfoFunc(fi, "glNormalP3ui", glNormalP3ui == NULL);
+ glewInfoFunc(fi, "glNormalP3uiv", glNormalP3uiv == NULL);
+ glewInfoFunc(fi, "glSecondaryColorP3ui", glSecondaryColorP3ui == NULL);
+ glewInfoFunc(fi, "glSecondaryColorP3uiv", glSecondaryColorP3uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP1ui", glTexCoordP1ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP1uiv", glTexCoordP1uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP2ui", glTexCoordP2ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP2uiv", glTexCoordP2uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP3ui", glTexCoordP3ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP3uiv", glTexCoordP3uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP4ui", glTexCoordP4ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP4uiv", glTexCoordP4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP1ui", glVertexAttribP1ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP1uiv", glVertexAttribP1uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP2ui", glVertexAttribP2ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP2uiv", glVertexAttribP2uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP3ui", glVertexAttribP3ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP3uiv", glVertexAttribP3uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP4ui", glVertexAttribP4ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP4uiv", glVertexAttribP4uiv == NULL);
+ glewInfoFunc(fi, "glVertexP2ui", glVertexP2ui == NULL);
+ glewInfoFunc(fi, "glVertexP2uiv", glVertexP2uiv == NULL);
+ glewInfoFunc(fi, "glVertexP3ui", glVertexP3ui == NULL);
+ glewInfoFunc(fi, "glVertexP3uiv", glVertexP3uiv == NULL);
+ glewInfoFunc(fi, "glVertexP4ui", glVertexP4ui == NULL);
+ glewInfoFunc(fi, "glVertexP4uiv", glVertexP4uiv == NULL);
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+#ifdef GL_ARB_viewport_array
+
+static void _glewInfo_GL_ARB_viewport_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_viewport_array", GLEW_ARB_viewport_array, glewIsSupported("GL_ARB_viewport_array"), glewGetExtension("GL_ARB_viewport_array"));
+
+ glewInfoFunc(fi, "glDepthRangeArrayv", glDepthRangeArrayv == NULL);
+ glewInfoFunc(fi, "glDepthRangeIndexed", glDepthRangeIndexed == NULL);
+ glewInfoFunc(fi, "glGetDoublei_v", glGetDoublei_v == NULL);
+ glewInfoFunc(fi, "glGetFloati_v", glGetFloati_v == NULL);
+ glewInfoFunc(fi, "glScissorArrayv", glScissorArrayv == NULL);
+ glewInfoFunc(fi, "glScissorIndexed", glScissorIndexed == NULL);
+ glewInfoFunc(fi, "glScissorIndexedv", glScissorIndexedv == NULL);
+ glewInfoFunc(fi, "glViewportArrayv", glViewportArrayv == NULL);
+ glewInfoFunc(fi, "glViewportIndexedf", glViewportIndexedf == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfv", glViewportIndexedfv == NULL);
+}
+
+#endif /* GL_ARB_viewport_array */
+
+#ifdef GL_ARB_window_pos
+
+static void _glewInfo_GL_ARB_window_pos (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_window_pos", GLEW_ARB_window_pos, glewIsSupported("GL_ARB_window_pos"), glewGetExtension("GL_ARB_window_pos"));
+
+ glewInfoFunc(fi, "glWindowPos2dARB", glWindowPos2dARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2dvARB", glWindowPos2dvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2fARB", glWindowPos2fARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2fvARB", glWindowPos2fvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2iARB", glWindowPos2iARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2ivARB", glWindowPos2ivARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2sARB", glWindowPos2sARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2svARB", glWindowPos2svARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3dARB", glWindowPos3dARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3dvARB", glWindowPos3dvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3fARB", glWindowPos3fARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3fvARB", glWindowPos3fvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3iARB", glWindowPos3iARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3ivARB", glWindowPos3ivARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3sARB", glWindowPos3sARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3svARB", glWindowPos3svARB == NULL);
+}
+
+#endif /* GL_ARB_window_pos */
+
+#ifdef GL_ARM_mali_program_binary
+
+static void _glewInfo_GL_ARM_mali_program_binary (void)
+{
+ glewPrintExt("GL_ARM_mali_program_binary", GLEW_ARM_mali_program_binary, glewIsSupported("GL_ARM_mali_program_binary"), glewGetExtension("GL_ARM_mali_program_binary"));
+}
+
+#endif /* GL_ARM_mali_program_binary */
+
+#ifdef GL_ARM_mali_shader_binary
+
+static void _glewInfo_GL_ARM_mali_shader_binary (void)
+{
+ glewPrintExt("GL_ARM_mali_shader_binary", GLEW_ARM_mali_shader_binary, glewIsSupported("GL_ARM_mali_shader_binary"), glewGetExtension("GL_ARM_mali_shader_binary"));
+}
+
+#endif /* GL_ARM_mali_shader_binary */
+
+#ifdef GL_ARM_rgba8
+
+static void _glewInfo_GL_ARM_rgba8 (void)
+{
+ glewPrintExt("GL_ARM_rgba8", GLEW_ARM_rgba8, glewIsSupported("GL_ARM_rgba8"), glewGetExtension("GL_ARM_rgba8"));
+}
+
+#endif /* GL_ARM_rgba8 */
+
+#ifdef GL_ARM_shader_framebuffer_fetch
+
+static void _glewInfo_GL_ARM_shader_framebuffer_fetch (void)
+{
+ glewPrintExt("GL_ARM_shader_framebuffer_fetch", GLEW_ARM_shader_framebuffer_fetch, glewIsSupported("GL_ARM_shader_framebuffer_fetch"), glewGetExtension("GL_ARM_shader_framebuffer_fetch"));
+}
+
+#endif /* GL_ARM_shader_framebuffer_fetch */
+
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+
+static void _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil (void)
+{
+ glewPrintExt("GL_ARM_shader_framebuffer_fetch_depth_stencil", GLEW_ARM_shader_framebuffer_fetch_depth_stencil, glewIsSupported("GL_ARM_shader_framebuffer_fetch_depth_stencil"), glewGetExtension("GL_ARM_shader_framebuffer_fetch_depth_stencil"));
+}
+
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+
+#ifdef GL_ARM_texture_unnormalized_coordinates
+
+static void _glewInfo_GL_ARM_texture_unnormalized_coordinates (void)
+{
+ glewPrintExt("GL_ARM_texture_unnormalized_coordinates", GLEW_ARM_texture_unnormalized_coordinates, glewIsSupported("GL_ARM_texture_unnormalized_coordinates"), glewGetExtension("GL_ARM_texture_unnormalized_coordinates"));
+}
+
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+
+#ifdef GL_ATIX_point_sprites
+
+static void _glewInfo_GL_ATIX_point_sprites (void)
+{
+ glewPrintExt("GL_ATIX_point_sprites", GLEW_ATIX_point_sprites, glewIsSupported("GL_ATIX_point_sprites"), glewGetExtension("GL_ATIX_point_sprites"));
+}
+
+#endif /* GL_ATIX_point_sprites */
+
+#ifdef GL_ATIX_texture_env_combine3
+
+static void _glewInfo_GL_ATIX_texture_env_combine3 (void)
+{
+ glewPrintExt("GL_ATIX_texture_env_combine3", GLEW_ATIX_texture_env_combine3, glewIsSupported("GL_ATIX_texture_env_combine3"), glewGetExtension("GL_ATIX_texture_env_combine3"));
+}
+
+#endif /* GL_ATIX_texture_env_combine3 */
+
+#ifdef GL_ATIX_texture_env_route
+
+static void _glewInfo_GL_ATIX_texture_env_route (void)
+{
+ glewPrintExt("GL_ATIX_texture_env_route", GLEW_ATIX_texture_env_route, glewIsSupported("GL_ATIX_texture_env_route"), glewGetExtension("GL_ATIX_texture_env_route"));
+}
+
+#endif /* GL_ATIX_texture_env_route */
+
+#ifdef GL_ATIX_vertex_shader_output_point_size
+
+static void _glewInfo_GL_ATIX_vertex_shader_output_point_size (void)
+{
+ glewPrintExt("GL_ATIX_vertex_shader_output_point_size", GLEW_ATIX_vertex_shader_output_point_size, glewIsSupported("GL_ATIX_vertex_shader_output_point_size"), glewGetExtension("GL_ATIX_vertex_shader_output_point_size"));
+}
+
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+
+#ifdef GL_ATI_draw_buffers
+
+static void _glewInfo_GL_ATI_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_draw_buffers", GLEW_ATI_draw_buffers, glewIsSupported("GL_ATI_draw_buffers"), glewGetExtension("GL_ATI_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersATI", glDrawBuffersATI == NULL);
+}
+
+#endif /* GL_ATI_draw_buffers */
+
+#ifdef GL_ATI_element_array
+
+static void _glewInfo_GL_ATI_element_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_element_array", GLEW_ATI_element_array, glewIsSupported("GL_ATI_element_array"), glewGetExtension("GL_ATI_element_array"));
+
+ glewInfoFunc(fi, "glDrawElementArrayATI", glDrawElementArrayATI == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementArrayATI", glDrawRangeElementArrayATI == NULL);
+ glewInfoFunc(fi, "glElementPointerATI", glElementPointerATI == NULL);
+}
+
+#endif /* GL_ATI_element_array */
+
+#ifdef GL_ATI_envmap_bumpmap
+
+static void _glewInfo_GL_ATI_envmap_bumpmap (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_envmap_bumpmap", GLEW_ATI_envmap_bumpmap, glewIsSupported("GL_ATI_envmap_bumpmap"), glewGetExtension("GL_ATI_envmap_bumpmap"));
+
+ glewInfoFunc(fi, "glGetTexBumpParameterfvATI", glGetTexBumpParameterfvATI == NULL);
+ glewInfoFunc(fi, "glGetTexBumpParameterivATI", glGetTexBumpParameterivATI == NULL);
+ glewInfoFunc(fi, "glTexBumpParameterfvATI", glTexBumpParameterfvATI == NULL);
+ glewInfoFunc(fi, "glTexBumpParameterivATI", glTexBumpParameterivATI == NULL);
+}
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+#ifdef GL_ATI_fragment_shader
+
+static void _glewInfo_GL_ATI_fragment_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_fragment_shader", GLEW_ATI_fragment_shader, glewIsSupported("GL_ATI_fragment_shader"), glewGetExtension("GL_ATI_fragment_shader"));
+
+ glewInfoFunc(fi, "glAlphaFragmentOp1ATI", glAlphaFragmentOp1ATI == NULL);
+ glewInfoFunc(fi, "glAlphaFragmentOp2ATI", glAlphaFragmentOp2ATI == NULL);
+ glewInfoFunc(fi, "glAlphaFragmentOp3ATI", glAlphaFragmentOp3ATI == NULL);
+ glewInfoFunc(fi, "glBeginFragmentShaderATI", glBeginFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glBindFragmentShaderATI", glBindFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp1ATI", glColorFragmentOp1ATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp2ATI", glColorFragmentOp2ATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp3ATI", glColorFragmentOp3ATI == NULL);
+ glewInfoFunc(fi, "glDeleteFragmentShaderATI", glDeleteFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glEndFragmentShaderATI", glEndFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glGenFragmentShadersATI", glGenFragmentShadersATI == NULL);
+ glewInfoFunc(fi, "glPassTexCoordATI", glPassTexCoordATI == NULL);
+ glewInfoFunc(fi, "glSampleMapATI", glSampleMapATI == NULL);
+ glewInfoFunc(fi, "glSetFragmentShaderConstantATI", glSetFragmentShaderConstantATI == NULL);
+}
+
+#endif /* GL_ATI_fragment_shader */
+
+#ifdef GL_ATI_map_object_buffer
+
+static void _glewInfo_GL_ATI_map_object_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_map_object_buffer", GLEW_ATI_map_object_buffer, glewIsSupported("GL_ATI_map_object_buffer"), glewGetExtension("GL_ATI_map_object_buffer"));
+
+ glewInfoFunc(fi, "glMapObjectBufferATI", glMapObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glUnmapObjectBufferATI", glUnmapObjectBufferATI == NULL);
+}
+
+#endif /* GL_ATI_map_object_buffer */
+
+#ifdef GL_ATI_meminfo
+
+static void _glewInfo_GL_ATI_meminfo (void)
+{
+ glewPrintExt("GL_ATI_meminfo", GLEW_ATI_meminfo, glewIsSupported("GL_ATI_meminfo"), glewGetExtension("GL_ATI_meminfo"));
+}
+
+#endif /* GL_ATI_meminfo */
+
+#ifdef GL_ATI_pn_triangles
+
+static void _glewInfo_GL_ATI_pn_triangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_pn_triangles", GLEW_ATI_pn_triangles, glewIsSupported("GL_ATI_pn_triangles"), glewGetExtension("GL_ATI_pn_triangles"));
+
+ glewInfoFunc(fi, "glPNTrianglesfATI", glPNTrianglesfATI == NULL);
+ glewInfoFunc(fi, "glPNTrianglesiATI", glPNTrianglesiATI == NULL);
+}
+
+#endif /* GL_ATI_pn_triangles */
+
+#ifdef GL_ATI_separate_stencil
+
+static void _glewInfo_GL_ATI_separate_stencil (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_separate_stencil", GLEW_ATI_separate_stencil, glewIsSupported("GL_ATI_separate_stencil"), glewGetExtension("GL_ATI_separate_stencil"));
+
+ glewInfoFunc(fi, "glStencilFuncSeparateATI", glStencilFuncSeparateATI == NULL);
+ glewInfoFunc(fi, "glStencilOpSeparateATI", glStencilOpSeparateATI == NULL);
+}
+
+#endif /* GL_ATI_separate_stencil */
+
+#ifdef GL_ATI_shader_texture_lod
+
+static void _glewInfo_GL_ATI_shader_texture_lod (void)
+{
+ glewPrintExt("GL_ATI_shader_texture_lod", GLEW_ATI_shader_texture_lod, glewIsSupported("GL_ATI_shader_texture_lod"), glewGetExtension("GL_ATI_shader_texture_lod"));
+}
+
+#endif /* GL_ATI_shader_texture_lod */
+
+#ifdef GL_ATI_text_fragment_shader
+
+static void _glewInfo_GL_ATI_text_fragment_shader (void)
+{
+ glewPrintExt("GL_ATI_text_fragment_shader", GLEW_ATI_text_fragment_shader, glewIsSupported("GL_ATI_text_fragment_shader"), glewGetExtension("GL_ATI_text_fragment_shader"));
+}
+
+#endif /* GL_ATI_text_fragment_shader */
+
+#ifdef GL_ATI_texture_compression_3dc
+
+static void _glewInfo_GL_ATI_texture_compression_3dc (void)
+{
+ glewPrintExt("GL_ATI_texture_compression_3dc", GLEW_ATI_texture_compression_3dc, glewIsSupported("GL_ATI_texture_compression_3dc"), glewGetExtension("GL_ATI_texture_compression_3dc"));
+}
+
+#endif /* GL_ATI_texture_compression_3dc */
+
+#ifdef GL_ATI_texture_env_combine3
+
+static void _glewInfo_GL_ATI_texture_env_combine3 (void)
+{
+ glewPrintExt("GL_ATI_texture_env_combine3", GLEW_ATI_texture_env_combine3, glewIsSupported("GL_ATI_texture_env_combine3"), glewGetExtension("GL_ATI_texture_env_combine3"));
+}
+
+#endif /* GL_ATI_texture_env_combine3 */
+
+#ifdef GL_ATI_texture_float
+
+static void _glewInfo_GL_ATI_texture_float (void)
+{
+ glewPrintExt("GL_ATI_texture_float", GLEW_ATI_texture_float, glewIsSupported("GL_ATI_texture_float"), glewGetExtension("GL_ATI_texture_float"));
+}
+
+#endif /* GL_ATI_texture_float */
+
+#ifdef GL_ATI_texture_mirror_once
+
+static void _glewInfo_GL_ATI_texture_mirror_once (void)
+{
+ glewPrintExt("GL_ATI_texture_mirror_once", GLEW_ATI_texture_mirror_once, glewIsSupported("GL_ATI_texture_mirror_once"), glewGetExtension("GL_ATI_texture_mirror_once"));
+}
+
+#endif /* GL_ATI_texture_mirror_once */
+
+#ifdef GL_ATI_vertex_array_object
+
+static void _glewInfo_GL_ATI_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_array_object", GLEW_ATI_vertex_array_object, glewIsSupported("GL_ATI_vertex_array_object"), glewGetExtension("GL_ATI_vertex_array_object"));
+
+ glewInfoFunc(fi, "glArrayObjectATI", glArrayObjectATI == NULL);
+ glewInfoFunc(fi, "glFreeObjectBufferATI", glFreeObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glGetArrayObjectfvATI", glGetArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetArrayObjectivATI", glGetArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glGetObjectBufferfvATI", glGetObjectBufferfvATI == NULL);
+ glewInfoFunc(fi, "glGetObjectBufferivATI", glGetObjectBufferivATI == NULL);
+ glewInfoFunc(fi, "glGetVariantArrayObjectfvATI", glGetVariantArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetVariantArrayObjectivATI", glGetVariantArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glIsObjectBufferATI", glIsObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glNewObjectBufferATI", glNewObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glUpdateObjectBufferATI", glUpdateObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glVariantArrayObjectATI", glVariantArrayObjectATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_array_object */
+
+#ifdef GL_ATI_vertex_attrib_array_object
+
+static void _glewInfo_GL_ATI_vertex_attrib_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_attrib_array_object", GLEW_ATI_vertex_attrib_array_object, glewIsSupported("GL_ATI_vertex_attrib_array_object"), glewGetExtension("GL_ATI_vertex_attrib_array_object"));
+
+ glewInfoFunc(fi, "glGetVertexAttribArrayObjectfvATI", glGetVertexAttribArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribArrayObjectivATI", glGetVertexAttribArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glVertexAttribArrayObjectATI", glVertexAttribArrayObjectATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+#ifdef GL_ATI_vertex_streams
+
+static void _glewInfo_GL_ATI_vertex_streams (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_streams", GLEW_ATI_vertex_streams, glewIsSupported("GL_ATI_vertex_streams"), glewGetExtension("GL_ATI_vertex_streams"));
+
+ glewInfoFunc(fi, "glClientActiveVertexStreamATI", glClientActiveVertexStreamATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3bATI", glNormalStream3bATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3bvATI", glNormalStream3bvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3dATI", glNormalStream3dATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3dvATI", glNormalStream3dvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3fATI", glNormalStream3fATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3fvATI", glNormalStream3fvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3iATI", glNormalStream3iATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3ivATI", glNormalStream3ivATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3sATI", glNormalStream3sATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3svATI", glNormalStream3svATI == NULL);
+ glewInfoFunc(fi, "glVertexBlendEnvfATI", glVertexBlendEnvfATI == NULL);
+ glewInfoFunc(fi, "glVertexBlendEnviATI", glVertexBlendEnviATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1dATI", glVertexStream1dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1dvATI", glVertexStream1dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1fATI", glVertexStream1fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1fvATI", glVertexStream1fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1iATI", glVertexStream1iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1ivATI", glVertexStream1ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1sATI", glVertexStream1sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1svATI", glVertexStream1svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2dATI", glVertexStream2dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2dvATI", glVertexStream2dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2fATI", glVertexStream2fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2fvATI", glVertexStream2fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2iATI", glVertexStream2iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2ivATI", glVertexStream2ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2sATI", glVertexStream2sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2svATI", glVertexStream2svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3dATI", glVertexStream3dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3dvATI", glVertexStream3dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3fATI", glVertexStream3fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3fvATI", glVertexStream3fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3iATI", glVertexStream3iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3ivATI", glVertexStream3ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3sATI", glVertexStream3sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3svATI", glVertexStream3svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4dATI", glVertexStream4dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4dvATI", glVertexStream4dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4fATI", glVertexStream4fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4fvATI", glVertexStream4fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4iATI", glVertexStream4iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4ivATI", glVertexStream4ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4sATI", glVertexStream4sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4svATI", glVertexStream4svATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_streams */
+
+#ifdef GL_DMP_program_binary
+
+static void _glewInfo_GL_DMP_program_binary (void)
+{
+ glewPrintExt("GL_DMP_program_binary", GLEW_DMP_program_binary, glewIsSupported("GL_DMP_program_binary"), glewGetExtension("GL_DMP_program_binary"));
+}
+
+#endif /* GL_DMP_program_binary */
+
+#ifdef GL_DMP_shader_binary
+
+static void _glewInfo_GL_DMP_shader_binary (void)
+{
+ glewPrintExt("GL_DMP_shader_binary", GLEW_DMP_shader_binary, glewIsSupported("GL_DMP_shader_binary"), glewGetExtension("GL_DMP_shader_binary"));
+}
+
+#endif /* GL_DMP_shader_binary */
+
+#ifdef GL_EXT_422_pixels
+
+static void _glewInfo_GL_EXT_422_pixels (void)
+{
+ glewPrintExt("GL_EXT_422_pixels", GLEW_EXT_422_pixels, glewIsSupported("GL_EXT_422_pixels"), glewGetExtension("GL_EXT_422_pixels"));
+}
+
+#endif /* GL_EXT_422_pixels */
+
+#ifdef GL_EXT_Cg_shader
+
+static void _glewInfo_GL_EXT_Cg_shader (void)
+{
+ glewPrintExt("GL_EXT_Cg_shader", GLEW_EXT_Cg_shader, glewIsSupported("GL_EXT_Cg_shader"), glewGetExtension("GL_EXT_Cg_shader"));
+}
+
+#endif /* GL_EXT_Cg_shader */
+
+#ifdef GL_EXT_EGL_image_array
+
+static void _glewInfo_GL_EXT_EGL_image_array (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_array", GLEW_EXT_EGL_image_array, glewIsSupported("GL_EXT_EGL_image_array"), glewGetExtension("GL_EXT_EGL_image_array"));
+}
+
+#endif /* GL_EXT_EGL_image_array */
+
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+
+static void _glewInfo_GL_EXT_EGL_image_external_wrap_modes (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_external_wrap_modes", GLEW_EXT_EGL_image_external_wrap_modes, glewIsSupported("GL_EXT_EGL_image_external_wrap_modes"), glewGetExtension("GL_EXT_EGL_image_external_wrap_modes"));
+}
+
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+
+#ifdef GL_EXT_EGL_image_storage
+
+static void _glewInfo_GL_EXT_EGL_image_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_EGL_image_storage", GLEW_EXT_EGL_image_storage, glewIsSupported("GL_EXT_EGL_image_storage"), glewGetExtension("GL_EXT_EGL_image_storage"));
+
+ glewInfoFunc(fi, "glEGLImageTargetTexStorageEXT", glEGLImageTargetTexStorageEXT == NULL);
+ glewInfoFunc(fi, "glEGLImageTargetTextureStorageEXT", glEGLImageTargetTextureStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_EGL_image_storage */
+
+#ifdef GL_EXT_EGL_image_storage_compression
+
+static void _glewInfo_GL_EXT_EGL_image_storage_compression (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_storage_compression", GLEW_EXT_EGL_image_storage_compression, glewIsSupported("GL_EXT_EGL_image_storage_compression"), glewGetExtension("GL_EXT_EGL_image_storage_compression"));
+}
+
+#endif /* GL_EXT_EGL_image_storage_compression */
+
+#ifdef GL_EXT_EGL_sync
+
+static void _glewInfo_GL_EXT_EGL_sync (void)
+{
+ glewPrintExt("GL_EXT_EGL_sync", GLEW_EXT_EGL_sync, glewIsSupported("GL_EXT_EGL_sync"), glewGetExtension("GL_EXT_EGL_sync"));
+}
+
+#endif /* GL_EXT_EGL_sync */
+
+#ifdef GL_EXT_YUV_target
+
+static void _glewInfo_GL_EXT_YUV_target (void)
+{
+ glewPrintExt("GL_EXT_YUV_target", GLEW_EXT_YUV_target, glewIsSupported("GL_EXT_YUV_target"), glewGetExtension("GL_EXT_YUV_target"));
+}
+
+#endif /* GL_EXT_YUV_target */
+
+#ifdef GL_EXT_abgr
+
+static void _glewInfo_GL_EXT_abgr (void)
+{
+ glewPrintExt("GL_EXT_abgr", GLEW_EXT_abgr, glewIsSupported("GL_EXT_abgr"), glewGetExtension("GL_EXT_abgr"));
+}
+
+#endif /* GL_EXT_abgr */
+
+#ifdef GL_EXT_base_instance
+
+static void _glewInfo_GL_EXT_base_instance (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_base_instance", GLEW_EXT_base_instance, glewIsSupported("GL_EXT_base_instance"), glewGetExtension("GL_EXT_base_instance"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedBaseInstanceEXT", glDrawArraysInstancedBaseInstanceEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseInstanceEXT", glDrawElementsInstancedBaseInstanceEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexBaseInstanceEXT", glDrawElementsInstancedBaseVertexBaseInstanceEXT == NULL);
+}
+
+#endif /* GL_EXT_base_instance */
+
+#ifdef GL_EXT_bgra
+
+static void _glewInfo_GL_EXT_bgra (void)
+{
+ glewPrintExt("GL_EXT_bgra", GLEW_EXT_bgra, glewIsSupported("GL_EXT_bgra"), glewGetExtension("GL_EXT_bgra"));
+}
+
+#endif /* GL_EXT_bgra */
+
+#ifdef GL_EXT_bindable_uniform
+
+static void _glewInfo_GL_EXT_bindable_uniform (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_bindable_uniform", GLEW_EXT_bindable_uniform, glewIsSupported("GL_EXT_bindable_uniform"), glewGetExtension("GL_EXT_bindable_uniform"));
+
+ glewInfoFunc(fi, "glGetUniformBufferSizeEXT", glGetUniformBufferSizeEXT == NULL);
+ glewInfoFunc(fi, "glGetUniformOffsetEXT", glGetUniformOffsetEXT == NULL);
+ glewInfoFunc(fi, "glUniformBufferEXT", glUniformBufferEXT == NULL);
+}
+
+#endif /* GL_EXT_bindable_uniform */
+
+#ifdef GL_EXT_blend_color
+
+static void _glewInfo_GL_EXT_blend_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_color", GLEW_EXT_blend_color, glewIsSupported("GL_EXT_blend_color"), glewGetExtension("GL_EXT_blend_color"));
+
+ glewInfoFunc(fi, "glBlendColorEXT", glBlendColorEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_color */
+
+#ifdef GL_EXT_blend_equation_separate
+
+static void _glewInfo_GL_EXT_blend_equation_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_equation_separate", GLEW_EXT_blend_equation_separate, glewIsSupported("GL_EXT_blend_equation_separate"), glewGetExtension("GL_EXT_blend_equation_separate"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateEXT", glBlendEquationSeparateEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_equation_separate */
+
+#ifdef GL_EXT_blend_func_extended
+
+static void _glewInfo_GL_EXT_blend_func_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_func_extended", GLEW_EXT_blend_func_extended, glewIsSupported("GL_EXT_blend_func_extended"), glewGetExtension("GL_EXT_blend_func_extended"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationIndexedEXT", glBindFragDataLocationIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetFragDataIndexEXT", glGetFragDataIndexEXT == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocationIndexEXT", glGetProgramResourceLocationIndexEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_func_extended */
+
+#ifdef GL_EXT_blend_func_separate
+
+static void _glewInfo_GL_EXT_blend_func_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_func_separate", GLEW_EXT_blend_func_separate, glewIsSupported("GL_EXT_blend_func_separate"), glewGetExtension("GL_EXT_blend_func_separate"));
+
+ glewInfoFunc(fi, "glBlendFuncSeparateEXT", glBlendFuncSeparateEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_func_separate */
+
+#ifdef GL_EXT_blend_logic_op
+
+static void _glewInfo_GL_EXT_blend_logic_op (void)
+{
+ glewPrintExt("GL_EXT_blend_logic_op", GLEW_EXT_blend_logic_op, glewIsSupported("GL_EXT_blend_logic_op"), glewGetExtension("GL_EXT_blend_logic_op"));
+}
+
+#endif /* GL_EXT_blend_logic_op */
+
+#ifdef GL_EXT_blend_minmax
+
+static void _glewInfo_GL_EXT_blend_minmax (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_minmax", GLEW_EXT_blend_minmax, glewIsSupported("GL_EXT_blend_minmax"), glewGetExtension("GL_EXT_blend_minmax"));
+
+ glewInfoFunc(fi, "glBlendEquationEXT", glBlendEquationEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_minmax */
+
+#ifdef GL_EXT_blend_subtract
+
+static void _glewInfo_GL_EXT_blend_subtract (void)
+{
+ glewPrintExt("GL_EXT_blend_subtract", GLEW_EXT_blend_subtract, glewIsSupported("GL_EXT_blend_subtract"), glewGetExtension("GL_EXT_blend_subtract"));
+}
+
+#endif /* GL_EXT_blend_subtract */
+
+#ifdef GL_EXT_buffer_storage
+
+static void _glewInfo_GL_EXT_buffer_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_buffer_storage", GLEW_EXT_buffer_storage, glewIsSupported("GL_EXT_buffer_storage"), glewGetExtension("GL_EXT_buffer_storage"));
+
+ glewInfoFunc(fi, "glBufferStorageEXT", glBufferStorageEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageEXT", glNamedBufferStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_buffer_storage */
+
+#ifdef GL_EXT_clear_texture
+
+static void _glewInfo_GL_EXT_clear_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_clear_texture", GLEW_EXT_clear_texture, glewIsSupported("GL_EXT_clear_texture"), glewGetExtension("GL_EXT_clear_texture"));
+
+ glewInfoFunc(fi, "glClearTexImageEXT", glClearTexImageEXT == NULL);
+ glewInfoFunc(fi, "glClearTexSubImageEXT", glClearTexSubImageEXT == NULL);
+}
+
+#endif /* GL_EXT_clear_texture */
+
+#ifdef GL_EXT_clip_control
+
+static void _glewInfo_GL_EXT_clip_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_clip_control", GLEW_EXT_clip_control, glewIsSupported("GL_EXT_clip_control"), glewGetExtension("GL_EXT_clip_control"));
+
+ glewInfoFunc(fi, "glClipControlEXT", glClipControlEXT == NULL);
+}
+
+#endif /* GL_EXT_clip_control */
+
+#ifdef GL_EXT_clip_cull_distance
+
+static void _glewInfo_GL_EXT_clip_cull_distance (void)
+{
+ glewPrintExt("GL_EXT_clip_cull_distance", GLEW_EXT_clip_cull_distance, glewIsSupported("GL_EXT_clip_cull_distance"), glewGetExtension("GL_EXT_clip_cull_distance"));
+}
+
+#endif /* GL_EXT_clip_cull_distance */
+
+#ifdef GL_EXT_clip_volume_hint
+
+static void _glewInfo_GL_EXT_clip_volume_hint (void)
+{
+ glewPrintExt("GL_EXT_clip_volume_hint", GLEW_EXT_clip_volume_hint, glewIsSupported("GL_EXT_clip_volume_hint"), glewGetExtension("GL_EXT_clip_volume_hint"));
+}
+
+#endif /* GL_EXT_clip_volume_hint */
+
+#ifdef GL_EXT_cmyka
+
+static void _glewInfo_GL_EXT_cmyka (void)
+{
+ glewPrintExt("GL_EXT_cmyka", GLEW_EXT_cmyka, glewIsSupported("GL_EXT_cmyka"), glewGetExtension("GL_EXT_cmyka"));
+}
+
+#endif /* GL_EXT_cmyka */
+
+#ifdef GL_EXT_color_buffer_float
+
+static void _glewInfo_GL_EXT_color_buffer_float (void)
+{
+ glewPrintExt("GL_EXT_color_buffer_float", GLEW_EXT_color_buffer_float, glewIsSupported("GL_EXT_color_buffer_float"), glewGetExtension("GL_EXT_color_buffer_float"));
+}
+
+#endif /* GL_EXT_color_buffer_float */
+
+#ifdef GL_EXT_color_buffer_half_float
+
+static void _glewInfo_GL_EXT_color_buffer_half_float (void)
+{
+ glewPrintExt("GL_EXT_color_buffer_half_float", GLEW_EXT_color_buffer_half_float, glewIsSupported("GL_EXT_color_buffer_half_float"), glewGetExtension("GL_EXT_color_buffer_half_float"));
+}
+
+#endif /* GL_EXT_color_buffer_half_float */
+
+#ifdef GL_EXT_color_subtable
+
+static void _glewInfo_GL_EXT_color_subtable (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_color_subtable", GLEW_EXT_color_subtable, glewIsSupported("GL_EXT_color_subtable"), glewGetExtension("GL_EXT_color_subtable"));
+
+ glewInfoFunc(fi, "glColorSubTableEXT", glColorSubTableEXT == NULL);
+ glewInfoFunc(fi, "glCopyColorSubTableEXT", glCopyColorSubTableEXT == NULL);
+}
+
+#endif /* GL_EXT_color_subtable */
+
+#ifdef GL_EXT_compiled_vertex_array
+
+static void _glewInfo_GL_EXT_compiled_vertex_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_compiled_vertex_array", GLEW_EXT_compiled_vertex_array, glewIsSupported("GL_EXT_compiled_vertex_array"), glewGetExtension("GL_EXT_compiled_vertex_array"));
+
+ glewInfoFunc(fi, "glLockArraysEXT", glLockArraysEXT == NULL);
+ glewInfoFunc(fi, "glUnlockArraysEXT", glUnlockArraysEXT == NULL);
+}
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+
+static void _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture (void)
+{
+ glewPrintExt("GL_EXT_compressed_ETC1_RGB8_sub_texture", GLEW_EXT_compressed_ETC1_RGB8_sub_texture, glewIsSupported("GL_EXT_compressed_ETC1_RGB8_sub_texture"), glewGetExtension("GL_EXT_compressed_ETC1_RGB8_sub_texture"));
+}
+
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+
+#ifdef GL_EXT_conservative_depth
+
+static void _glewInfo_GL_EXT_conservative_depth (void)
+{
+ glewPrintExt("GL_EXT_conservative_depth", GLEW_EXT_conservative_depth, glewIsSupported("GL_EXT_conservative_depth"), glewGetExtension("GL_EXT_conservative_depth"));
+}
+
+#endif /* GL_EXT_conservative_depth */
+
+#ifdef GL_EXT_convolution
+
+static void _glewInfo_GL_EXT_convolution (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_convolution", GLEW_EXT_convolution, glewIsSupported("GL_EXT_convolution"), glewGetExtension("GL_EXT_convolution"));
+
+ glewInfoFunc(fi, "glConvolutionFilter1DEXT", glConvolutionFilter1DEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter2DEXT", glConvolutionFilter2DEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfEXT", glConvolutionParameterfEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfvEXT", glConvolutionParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteriEXT", glConvolutionParameteriEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterivEXT", glConvolutionParameterivEXT == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter1DEXT", glCopyConvolutionFilter1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter2DEXT", glCopyConvolutionFilter2DEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionFilterEXT", glGetConvolutionFilterEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterfvEXT", glGetConvolutionParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterivEXT", glGetConvolutionParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetSeparableFilterEXT", glGetSeparableFilterEXT == NULL);
+ glewInfoFunc(fi, "glSeparableFilter2DEXT", glSeparableFilter2DEXT == NULL);
+}
+
+#endif /* GL_EXT_convolution */
+
+#ifdef GL_EXT_coordinate_frame
+
+static void _glewInfo_GL_EXT_coordinate_frame (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_coordinate_frame", GLEW_EXT_coordinate_frame, glewIsSupported("GL_EXT_coordinate_frame"), glewGetExtension("GL_EXT_coordinate_frame"));
+
+ glewInfoFunc(fi, "glBinormalPointerEXT", glBinormalPointerEXT == NULL);
+ glewInfoFunc(fi, "glTangentPointerEXT", glTangentPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_coordinate_frame */
+
+#ifdef GL_EXT_copy_image
+
+static void _glewInfo_GL_EXT_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_copy_image", GLEW_EXT_copy_image, glewIsSupported("GL_EXT_copy_image"), glewGetExtension("GL_EXT_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataEXT", glCopyImageSubDataEXT == NULL);
+}
+
+#endif /* GL_EXT_copy_image */
+
+#ifdef GL_EXT_copy_texture
+
+static void _glewInfo_GL_EXT_copy_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_copy_texture", GLEW_EXT_copy_texture, glewIsSupported("GL_EXT_copy_texture"), glewGetExtension("GL_EXT_copy_texture"));
+
+ glewInfoFunc(fi, "glCopyTexImage1DEXT", glCopyTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexImage2DEXT", glCopyTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage1DEXT", glCopyTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage2DEXT", glCopyTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DEXT", glCopyTexSubImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_copy_texture */
+
+#ifdef GL_EXT_cull_vertex
+
+static void _glewInfo_GL_EXT_cull_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_cull_vertex", GLEW_EXT_cull_vertex, glewIsSupported("GL_EXT_cull_vertex"), glewGetExtension("GL_EXT_cull_vertex"));
+
+ glewInfoFunc(fi, "glCullParameterdvEXT", glCullParameterdvEXT == NULL);
+ glewInfoFunc(fi, "glCullParameterfvEXT", glCullParameterfvEXT == NULL);
+}
+
+#endif /* GL_EXT_cull_vertex */
+
+#ifdef GL_EXT_debug_label
+
+static void _glewInfo_GL_EXT_debug_label (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_debug_label", GLEW_EXT_debug_label, glewIsSupported("GL_EXT_debug_label"), glewGetExtension("GL_EXT_debug_label"));
+
+ glewInfoFunc(fi, "glGetObjectLabelEXT", glGetObjectLabelEXT == NULL);
+ glewInfoFunc(fi, "glLabelObjectEXT", glLabelObjectEXT == NULL);
+}
+
+#endif /* GL_EXT_debug_label */
+
+#ifdef GL_EXT_debug_marker
+
+static void _glewInfo_GL_EXT_debug_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_debug_marker", GLEW_EXT_debug_marker, glewIsSupported("GL_EXT_debug_marker"), glewGetExtension("GL_EXT_debug_marker"));
+
+ glewInfoFunc(fi, "glInsertEventMarkerEXT", glInsertEventMarkerEXT == NULL);
+ glewInfoFunc(fi, "glPopGroupMarkerEXT", glPopGroupMarkerEXT == NULL);
+ glewInfoFunc(fi, "glPushGroupMarkerEXT", glPushGroupMarkerEXT == NULL);
+}
+
+#endif /* GL_EXT_debug_marker */
+
+#ifdef GL_EXT_depth_bounds_test
+
+static void _glewInfo_GL_EXT_depth_bounds_test (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_depth_bounds_test", GLEW_EXT_depth_bounds_test, glewIsSupported("GL_EXT_depth_bounds_test"), glewGetExtension("GL_EXT_depth_bounds_test"));
+
+ glewInfoFunc(fi, "glDepthBoundsEXT", glDepthBoundsEXT == NULL);
+}
+
+#endif /* GL_EXT_depth_bounds_test */
+
+#ifdef GL_EXT_depth_clamp
+
+static void _glewInfo_GL_EXT_depth_clamp (void)
+{
+ glewPrintExt("GL_EXT_depth_clamp", GLEW_EXT_depth_clamp, glewIsSupported("GL_EXT_depth_clamp"), glewGetExtension("GL_EXT_depth_clamp"));
+}
+
+#endif /* GL_EXT_depth_clamp */
+
+#ifdef GL_EXT_direct_state_access
+
+static void _glewInfo_GL_EXT_direct_state_access (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_direct_state_access", GLEW_EXT_direct_state_access, glewIsSupported("GL_EXT_direct_state_access"), glewGetExtension("GL_EXT_direct_state_access"));
+
+ glewInfoFunc(fi, "glBindMultiTextureEXT", glBindMultiTextureEXT == NULL);
+ glewInfoFunc(fi, "glCheckNamedFramebufferStatusEXT", glCheckNamedFramebufferStatusEXT == NULL);
+ glewInfoFunc(fi, "glClientAttribDefaultEXT", glClientAttribDefaultEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage1DEXT", glCompressedMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage2DEXT", glCompressedMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage3DEXT", glCompressedMultiTexImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage1DEXT", glCompressedMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage2DEXT", glCompressedMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage3DEXT", glCompressedMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage1DEXT", glCompressedTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage2DEXT", glCompressedTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage3DEXT", glCompressedTextureImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage1DEXT", glCompressedTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage2DEXT", glCompressedTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage3DEXT", glCompressedTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexImage1DEXT", glCopyMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexImage2DEXT", glCopyMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage1DEXT", glCopyMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage2DEXT", glCopyMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage3DEXT", glCopyMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureImage1DEXT", glCopyTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureImage2DEXT", glCopyTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage1DEXT", glCopyTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage2DEXT", glCopyTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage3DEXT", glCopyTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glDisableClientStateIndexedEXT", glDisableClientStateIndexedEXT == NULL);
+ glewInfoFunc(fi, "glDisableClientStateiEXT", glDisableClientStateiEXT == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayAttribEXT", glDisableVertexArrayAttribEXT == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayEXT", glDisableVertexArrayEXT == NULL);
+ glewInfoFunc(fi, "glEnableClientStateIndexedEXT", glEnableClientStateIndexedEXT == NULL);
+ glewInfoFunc(fi, "glEnableClientStateiEXT", glEnableClientStateiEXT == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayAttribEXT", glEnableVertexArrayAttribEXT == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayEXT", glEnableVertexArrayEXT == NULL);
+ glewInfoFunc(fi, "glFlushMappedNamedBufferRangeEXT", glFlushMappedNamedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferDrawBufferEXT", glFramebufferDrawBufferEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferDrawBuffersEXT", glFramebufferDrawBuffersEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferReadBufferEXT", glFramebufferReadBufferEXT == NULL);
+ glewInfoFunc(fi, "glGenerateMultiTexMipmapEXT", glGenerateMultiTexMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGenerateTextureMipmapEXT", glGenerateTextureMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGetCompressedMultiTexImageEXT", glGetCompressedMultiTexImageEXT == NULL);
+ glewInfoFunc(fi, "glGetCompressedTextureImageEXT", glGetCompressedTextureImageEXT == NULL);
+ glewInfoFunc(fi, "glGetDoubleIndexedvEXT", glGetDoubleIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetDoublei_vEXT", glGetDoublei_vEXT == NULL);
+ glewInfoFunc(fi, "glGetFloatIndexedvEXT", glGetFloatIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetFloati_vEXT", glGetFloati_vEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterivEXT", glGetFramebufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexEnvfvEXT", glGetMultiTexEnvfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexEnvivEXT", glGetMultiTexEnvivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGendvEXT", glGetMultiTexGendvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGenfvEXT", glGetMultiTexGenfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGenivEXT", glGetMultiTexGenivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexImageEXT", glGetMultiTexImageEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexLevelParameterfvEXT", glGetMultiTexLevelParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexLevelParameterivEXT", glGetMultiTexLevelParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterIivEXT", glGetMultiTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterIuivEXT", glGetMultiTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterfvEXT", glGetMultiTexParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterivEXT", glGetMultiTexParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameterivEXT", glGetNamedBufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferPointervEXT", glGetNamedBufferPointervEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferSubDataEXT", glGetNamedBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferAttachmentParameterivEXT", glGetNamedFramebufferAttachmentParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterIivEXT", glGetNamedProgramLocalParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterIuivEXT", glGetNamedProgramLocalParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterdvEXT", glGetNamedProgramLocalParameterdvEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterfvEXT", glGetNamedProgramLocalParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramStringEXT", glGetNamedProgramStringEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramivEXT", glGetNamedProgramivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedRenderbufferParameterivEXT", glGetNamedRenderbufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetPointerIndexedvEXT", glGetPointerIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetPointeri_vEXT", glGetPointeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureImageEXT", glGetTextureImageEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterfvEXT", glGetTextureLevelParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterivEXT", glGetTextureLevelParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIivEXT", glGetTextureParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIuivEXT", glGetTextureParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterfvEXT", glGetTextureParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterivEXT", glGetTextureParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIntegeri_vEXT", glGetVertexArrayIntegeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIntegervEXT", glGetVertexArrayIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayPointeri_vEXT", glGetVertexArrayPointeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayPointervEXT", glGetVertexArrayPointervEXT == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferEXT", glMapNamedBufferEXT == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferRangeEXT", glMapNamedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glMatrixFrustumEXT", glMatrixFrustumEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadIdentityEXT", glMatrixLoadIdentityEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTransposedEXT", glMatrixLoadTransposedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTransposefEXT", glMatrixLoadTransposefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoaddEXT", glMatrixLoaddEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadfEXT", glMatrixLoadfEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultTransposedEXT", glMatrixMultTransposedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultTransposefEXT", glMatrixMultTransposefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultdEXT", glMatrixMultdEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultfEXT", glMatrixMultfEXT == NULL);
+ glewInfoFunc(fi, "glMatrixOrthoEXT", glMatrixOrthoEXT == NULL);
+ glewInfoFunc(fi, "glMatrixPopEXT", glMatrixPopEXT == NULL);
+ glewInfoFunc(fi, "glMatrixPushEXT", glMatrixPushEXT == NULL);
+ glewInfoFunc(fi, "glMatrixRotatedEXT", glMatrixRotatedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixRotatefEXT", glMatrixRotatefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixScaledEXT", glMatrixScaledEXT == NULL);
+ glewInfoFunc(fi, "glMatrixScalefEXT", glMatrixScalefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixTranslatedEXT", glMatrixTranslatedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixTranslatefEXT", glMatrixTranslatefEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexBufferEXT", glMultiTexBufferEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordPointerEXT", glMultiTexCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvfEXT", glMultiTexEnvfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvfvEXT", glMultiTexEnvfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnviEXT", glMultiTexEnviEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvivEXT", glMultiTexEnvivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGendEXT", glMultiTexGendEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGendvEXT", glMultiTexGendvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenfEXT", glMultiTexGenfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenfvEXT", glMultiTexGenfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGeniEXT", glMultiTexGeniEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenivEXT", glMultiTexGenivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage1DEXT", glMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage2DEXT", glMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage3DEXT", glMultiTexImage3DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterIivEXT", glMultiTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterIuivEXT", glMultiTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterfEXT", glMultiTexParameterfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterfvEXT", glMultiTexParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameteriEXT", glMultiTexParameteriEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterivEXT", glMultiTexParameterivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexRenderbufferEXT", glMultiTexRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage1DEXT", glMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage2DEXT", glMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage3DEXT", glMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferDataEXT", glNamedBufferDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferSubDataEXT", glNamedBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedCopyBufferSubDataEXT", glNamedCopyBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferRenderbufferEXT", glNamedFramebufferRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture1DEXT", glNamedFramebufferTexture1DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture2DEXT", glNamedFramebufferTexture2DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture3DEXT", glNamedFramebufferTexture3DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureEXT", glNamedFramebufferTextureEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureFaceEXT", glNamedFramebufferTextureFaceEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureLayerEXT", glNamedFramebufferTextureLayerEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4dEXT", glNamedProgramLocalParameter4dEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4dvEXT", glNamedProgramLocalParameter4dvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4fEXT", glNamedProgramLocalParameter4fEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4fvEXT", glNamedProgramLocalParameter4fvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4iEXT", glNamedProgramLocalParameterI4iEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4ivEXT", glNamedProgramLocalParameterI4ivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4uiEXT", glNamedProgramLocalParameterI4uiEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4uivEXT", glNamedProgramLocalParameterI4uivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameters4fvEXT", glNamedProgramLocalParameters4fvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParametersI4ivEXT", glNamedProgramLocalParametersI4ivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParametersI4uivEXT", glNamedProgramLocalParametersI4uivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramStringEXT", glNamedProgramStringEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageEXT", glNamedRenderbufferStorageEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleCoverageEXT", glNamedRenderbufferStorageMultisampleCoverageEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleEXT", glNamedRenderbufferStorageMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fEXT", glProgramUniform1fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fvEXT", glProgramUniform1fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1iEXT", glProgramUniform1iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ivEXT", glProgramUniform1ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uiEXT", glProgramUniform1uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uivEXT", glProgramUniform1uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fEXT", glProgramUniform2fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fvEXT", glProgramUniform2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2iEXT", glProgramUniform2iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ivEXT", glProgramUniform2ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uiEXT", glProgramUniform2uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uivEXT", glProgramUniform2uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fEXT", glProgramUniform3fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fvEXT", glProgramUniform3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3iEXT", glProgramUniform3iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ivEXT", glProgramUniform3ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uiEXT", glProgramUniform3uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uivEXT", glProgramUniform3uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fEXT", glProgramUniform4fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fvEXT", glProgramUniform4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4iEXT", glProgramUniform4iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ivEXT", glProgramUniform4ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uiEXT", glProgramUniform4uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uivEXT", glProgramUniform4uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2fvEXT", glProgramUniformMatrix2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3fvEXT", glProgramUniformMatrix2x3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4fvEXT", glProgramUniformMatrix2x4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3fvEXT", glProgramUniformMatrix3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2fvEXT", glProgramUniformMatrix3x2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4fvEXT", glProgramUniformMatrix3x4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4fvEXT", glProgramUniformMatrix4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2fvEXT", glProgramUniformMatrix4x2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3fvEXT", glProgramUniformMatrix4x3fvEXT == NULL);
+ glewInfoFunc(fi, "glPushClientAttribDefaultEXT", glPushClientAttribDefaultEXT == NULL);
+ glewInfoFunc(fi, "glTextureBufferEXT", glTextureBufferEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage1DEXT", glTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage2DEXT", glTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage3DEXT", glTextureImage3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterIivEXT", glTextureParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterIuivEXT", glTextureParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterfEXT", glTextureParameterfEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterfvEXT", glTextureParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameteriEXT", glTextureParameteriEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterivEXT", glTextureParameterivEXT == NULL);
+ glewInfoFunc(fi, "glTextureRenderbufferEXT", glTextureRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage1DEXT", glTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage2DEXT", glTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage3DEXT", glTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glUnmapNamedBufferEXT", glUnmapNamedBufferEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayColorOffsetEXT", glVertexArrayColorOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayEdgeFlagOffsetEXT", glVertexArrayEdgeFlagOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayFogCoordOffsetEXT", glVertexArrayFogCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayIndexOffsetEXT", glVertexArrayIndexOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayMultiTexCoordOffsetEXT", glVertexArrayMultiTexCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayNormalOffsetEXT", glVertexArrayNormalOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArraySecondaryColorOffsetEXT", glVertexArraySecondaryColorOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayTexCoordOffsetEXT", glVertexArrayTexCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribDivisorEXT", glVertexArrayVertexAttribDivisorEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribIOffsetEXT", glVertexArrayVertexAttribIOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribOffsetEXT", glVertexArrayVertexAttribOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexOffsetEXT", glVertexArrayVertexOffsetEXT == NULL);
+}
+
+#endif /* GL_EXT_direct_state_access */
+
+#ifdef GL_EXT_discard_framebuffer
+
+static void _glewInfo_GL_EXT_discard_framebuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_discard_framebuffer", GLEW_EXT_discard_framebuffer, glewIsSupported("GL_EXT_discard_framebuffer"), glewGetExtension("GL_EXT_discard_framebuffer"));
+
+ glewInfoFunc(fi, "glDiscardFramebufferEXT", glDiscardFramebufferEXT == NULL);
+}
+
+#endif /* GL_EXT_discard_framebuffer */
+
+#ifdef GL_EXT_disjoint_timer_query
+
+static void _glewInfo_GL_EXT_disjoint_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_disjoint_timer_query", GLEW_EXT_disjoint_timer_query, glewIsSupported("GL_EXT_disjoint_timer_query"), glewGetExtension("GL_EXT_disjoint_timer_query"));
+
+ glewInfoFunc(fi, "glBeginQueryEXT", glBeginQueryEXT == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesEXT", glDeleteQueriesEXT == NULL);
+ glewInfoFunc(fi, "glEndQueryEXT", glEndQueryEXT == NULL);
+ glewInfoFunc(fi, "glGenQueriesEXT", glGenQueriesEXT == NULL);
+ glewInfoFunc(fi, "glGetInteger64vEXT", glGetInteger64vEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivEXT", glGetQueryObjectivEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivEXT", glGetQueryObjectuivEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryivEXT", glGetQueryivEXT == NULL);
+ glewInfoFunc(fi, "glIsQueryEXT", glIsQueryEXT == NULL);
+ glewInfoFunc(fi, "glQueryCounterEXT", glQueryCounterEXT == NULL);
+}
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+#ifdef GL_EXT_draw_buffers
+
+static void _glewInfo_GL_EXT_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers", GLEW_EXT_draw_buffers, glewIsSupported("GL_EXT_draw_buffers"), glewGetExtension("GL_EXT_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersEXT", glDrawBuffersEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers */
+
+#ifdef GL_EXT_draw_buffers2
+
+static void _glewInfo_GL_EXT_draw_buffers2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers2", GLEW_EXT_draw_buffers2, glewIsSupported("GL_EXT_draw_buffers2"), glewGetExtension("GL_EXT_draw_buffers2"));
+
+ glewInfoFunc(fi, "glColorMaskIndexedEXT", glColorMaskIndexedEXT == NULL);
+ glewInfoFunc(fi, "glDisableIndexedEXT", glDisableIndexedEXT == NULL);
+ glewInfoFunc(fi, "glEnableIndexedEXT", glEnableIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetBooleanIndexedvEXT", glGetBooleanIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetIntegerIndexedvEXT", glGetIntegerIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glIsEnabledIndexedEXT", glIsEnabledIndexedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers2 */
+
+#ifdef GL_EXT_draw_buffers_indexed
+
+static void _glewInfo_GL_EXT_draw_buffers_indexed (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers_indexed", GLEW_EXT_draw_buffers_indexed, glewIsSupported("GL_EXT_draw_buffers_indexed"), glewGetExtension("GL_EXT_draw_buffers_indexed"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiEXT", glBlendEquationSeparateiEXT == NULL);
+ glewInfoFunc(fi, "glBlendEquationiEXT", glBlendEquationiEXT == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiEXT", glBlendFuncSeparateiEXT == NULL);
+ glewInfoFunc(fi, "glBlendFunciEXT", glBlendFunciEXT == NULL);
+ glewInfoFunc(fi, "glColorMaskiEXT", glColorMaskiEXT == NULL);
+ glewInfoFunc(fi, "glDisableiEXT", glDisableiEXT == NULL);
+ glewInfoFunc(fi, "glEnableiEXT", glEnableiEXT == NULL);
+ glewInfoFunc(fi, "glIsEnablediEXT", glIsEnablediEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+#ifdef GL_EXT_draw_elements_base_vertex
+
+static void _glewInfo_GL_EXT_draw_elements_base_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_elements_base_vertex", GLEW_EXT_draw_elements_base_vertex, glewIsSupported("GL_EXT_draw_elements_base_vertex"), glewGetExtension("GL_EXT_draw_elements_base_vertex"));
+
+ glewInfoFunc(fi, "glDrawElementsBaseVertexEXT", glDrawElementsBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexEXT", glDrawElementsInstancedBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementsBaseVertexEXT", glDrawRangeElementsBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsBaseVertexEXT", glMultiDrawElementsBaseVertexEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+#ifdef GL_EXT_draw_instanced
+
+static void _glewInfo_GL_EXT_draw_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_instanced", GLEW_EXT_draw_instanced, glewIsSupported("GL_EXT_draw_instanced"), glewGetExtension("GL_EXT_draw_instanced"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedEXT", glDrawArraysInstancedEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedEXT", glDrawElementsInstancedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_instanced */
+
+#ifdef GL_EXT_draw_range_elements
+
+static void _glewInfo_GL_EXT_draw_range_elements (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_range_elements", GLEW_EXT_draw_range_elements, glewIsSupported("GL_EXT_draw_range_elements"), glewGetExtension("GL_EXT_draw_range_elements"));
+
+ glewInfoFunc(fi, "glDrawRangeElementsEXT", glDrawRangeElementsEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_range_elements */
+
+#ifdef GL_EXT_draw_transform_feedback
+
+static void _glewInfo_GL_EXT_draw_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_transform_feedback", GLEW_EXT_draw_transform_feedback, glewIsSupported("GL_EXT_draw_transform_feedback"), glewGetExtension("GL_EXT_draw_transform_feedback"));
+
+ glewInfoFunc(fi, "glDrawTransformFeedbackEXT", glDrawTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackInstancedEXT", glDrawTransformFeedbackInstancedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+#ifdef GL_EXT_external_buffer
+
+static void _glewInfo_GL_EXT_external_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_external_buffer", GLEW_EXT_external_buffer, glewIsSupported("GL_EXT_external_buffer"), glewGetExtension("GL_EXT_external_buffer"));
+
+ glewInfoFunc(fi, "glBufferStorageExternalEXT", glBufferStorageExternalEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageExternalEXT", glNamedBufferStorageExternalEXT == NULL);
+}
+
+#endif /* GL_EXT_external_buffer */
+
+#ifdef GL_EXT_float_blend
+
+static void _glewInfo_GL_EXT_float_blend (void)
+{
+ glewPrintExt("GL_EXT_float_blend", GLEW_EXT_float_blend, glewIsSupported("GL_EXT_float_blend"), glewGetExtension("GL_EXT_float_blend"));
+}
+
+#endif /* GL_EXT_float_blend */
+
+#ifdef GL_EXT_fog_coord
+
+static void _glewInfo_GL_EXT_fog_coord (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_fog_coord", GLEW_EXT_fog_coord, glewIsSupported("GL_EXT_fog_coord"), glewGetExtension("GL_EXT_fog_coord"));
+
+ glewInfoFunc(fi, "glFogCoordPointerEXT", glFogCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glFogCoorddEXT", glFogCoorddEXT == NULL);
+ glewInfoFunc(fi, "glFogCoorddvEXT", glFogCoorddvEXT == NULL);
+ glewInfoFunc(fi, "glFogCoordfEXT", glFogCoordfEXT == NULL);
+ glewInfoFunc(fi, "glFogCoordfvEXT", glFogCoordfvEXT == NULL);
+}
+
+#endif /* GL_EXT_fog_coord */
+
+#ifdef GL_EXT_frag_depth
+
+static void _glewInfo_GL_EXT_frag_depth (void)
+{
+ glewPrintExt("GL_EXT_frag_depth", GLEW_EXT_frag_depth, glewIsSupported("GL_EXT_frag_depth"), glewGetExtension("GL_EXT_frag_depth"));
+}
+
+#endif /* GL_EXT_frag_depth */
+
+#ifdef GL_EXT_fragment_lighting
+
+static void _glewInfo_GL_EXT_fragment_lighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_fragment_lighting", GLEW_EXT_fragment_lighting, glewIsSupported("GL_EXT_fragment_lighting"), glewGetExtension("GL_EXT_fragment_lighting"));
+
+ glewInfoFunc(fi, "glFragmentColorMaterialEXT", glFragmentColorMaterialEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfEXT", glFragmentLightModelfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfvEXT", glFragmentLightModelfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModeliEXT", glFragmentLightModeliEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelivEXT", glFragmentLightModelivEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightfEXT", glFragmentLightfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightfvEXT", glFragmentLightfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightiEXT", glFragmentLightiEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightivEXT", glFragmentLightivEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfEXT", glFragmentMaterialfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfvEXT", glFragmentMaterialfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialiEXT", glFragmentMaterialiEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialivEXT", glFragmentMaterialivEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightfvEXT", glGetFragmentLightfvEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightivEXT", glGetFragmentLightivEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialfvEXT", glGetFragmentMaterialfvEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialivEXT", glGetFragmentMaterialivEXT == NULL);
+ glewInfoFunc(fi, "glLightEnviEXT", glLightEnviEXT == NULL);
+}
+
+#endif /* GL_EXT_fragment_lighting */
+
+#ifdef GL_EXT_framebuffer_blit
+
+static void _glewInfo_GL_EXT_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_blit", GLEW_EXT_framebuffer_blit, glewIsSupported("GL_EXT_framebuffer_blit"), glewGetExtension("GL_EXT_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferEXT", glBlitFramebufferEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_blit */
+
+#ifdef GL_EXT_framebuffer_multisample
+
+static void _glewInfo_GL_EXT_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_multisample", GLEW_EXT_framebuffer_multisample, glewIsSupported("GL_EXT_framebuffer_multisample"), glewGetExtension("GL_EXT_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleEXT", glRenderbufferStorageMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+
+static void _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled (void)
+{
+ glewPrintExt("GL_EXT_framebuffer_multisample_blit_scaled", GLEW_EXT_framebuffer_multisample_blit_scaled, glewIsSupported("GL_EXT_framebuffer_multisample_blit_scaled"), glewGetExtension("GL_EXT_framebuffer_multisample_blit_scaled"));
+}
+
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+
+#ifdef GL_EXT_framebuffer_object
+
+static void _glewInfo_GL_EXT_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_object", GLEW_EXT_framebuffer_object, glewIsSupported("GL_EXT_framebuffer_object"), glewGetExtension("GL_EXT_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebufferEXT", glBindFramebufferEXT == NULL);
+ glewInfoFunc(fi, "glBindRenderbufferEXT", glBindRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatusEXT", glCheckFramebufferStatusEXT == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffersEXT", glDeleteFramebuffersEXT == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffersEXT", glDeleteRenderbuffersEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbufferEXT", glFramebufferRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture1DEXT", glFramebufferTexture1DEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2DEXT", glFramebufferTexture2DEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3DEXT", glFramebufferTexture3DEXT == NULL);
+ glewInfoFunc(fi, "glGenFramebuffersEXT", glGenFramebuffersEXT == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffersEXT", glGenRenderbuffersEXT == NULL);
+ glewInfoFunc(fi, "glGenerateMipmapEXT", glGenerateMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameterivEXT", glGetFramebufferAttachmentParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameterivEXT", glGetRenderbufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glIsFramebufferEXT", glIsFramebufferEXT == NULL);
+ glewInfoFunc(fi, "glIsRenderbufferEXT", glIsRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageEXT", glRenderbufferStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_object */
+
+#ifdef GL_EXT_framebuffer_sRGB
+
+static void _glewInfo_GL_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("GL_EXT_framebuffer_sRGB", GLEW_EXT_framebuffer_sRGB, glewIsSupported("GL_EXT_framebuffer_sRGB"), glewGetExtension("GL_EXT_framebuffer_sRGB"));
+}
+
+#endif /* GL_EXT_framebuffer_sRGB */
+
+#ifdef GL_EXT_geometry_point_size
+
+static void _glewInfo_GL_EXT_geometry_point_size (void)
+{
+ glewPrintExt("GL_EXT_geometry_point_size", GLEW_EXT_geometry_point_size, glewIsSupported("GL_EXT_geometry_point_size"), glewGetExtension("GL_EXT_geometry_point_size"));
+}
+
+#endif /* GL_EXT_geometry_point_size */
+
+#ifdef GL_EXT_geometry_shader
+
+static void _glewInfo_GL_EXT_geometry_shader (void)
+{
+ glewPrintExt("GL_EXT_geometry_shader", GLEW_EXT_geometry_shader, glewIsSupported("GL_EXT_geometry_shader"), glewGetExtension("GL_EXT_geometry_shader"));
+}
+
+#endif /* GL_EXT_geometry_shader */
+
+#ifdef GL_EXT_geometry_shader4
+
+static void _glewInfo_GL_EXT_geometry_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_geometry_shader4", GLEW_EXT_geometry_shader4, glewIsSupported("GL_EXT_geometry_shader4"), glewGetExtension("GL_EXT_geometry_shader4"));
+
+ glewInfoFunc(fi, "glFramebufferTextureEXT", glFramebufferTextureEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureFaceEXT", glFramebufferTextureFaceEXT == NULL);
+ glewInfoFunc(fi, "glProgramParameteriEXT", glProgramParameteriEXT == NULL);
+}
+
+#endif /* GL_EXT_geometry_shader4 */
+
+#ifdef GL_EXT_gpu_program_parameters
+
+static void _glewInfo_GL_EXT_gpu_program_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_gpu_program_parameters", GLEW_EXT_gpu_program_parameters, glewIsSupported("GL_EXT_gpu_program_parameters"), glewGetExtension("GL_EXT_gpu_program_parameters"));
+
+ glewInfoFunc(fi, "glProgramEnvParameters4fvEXT", glProgramEnvParameters4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameters4fvEXT", glProgramLocalParameters4fvEXT == NULL);
+}
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+#ifdef GL_EXT_gpu_shader4
+
+static void _glewInfo_GL_EXT_gpu_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_gpu_shader4", GLEW_EXT_gpu_shader4, glewIsSupported("GL_EXT_gpu_shader4"), glewGetExtension("GL_EXT_gpu_shader4"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationEXT", glBindFragDataLocationEXT == NULL);
+ glewInfoFunc(fi, "glGetFragDataLocationEXT", glGetFragDataLocationEXT == NULL);
+ glewInfoFunc(fi, "glGetUniformuivEXT", glGetUniformuivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIivEXT", glGetVertexAttribIivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIuivEXT", glGetVertexAttribIuivEXT == NULL);
+ glewInfoFunc(fi, "glUniform1uiEXT", glUniform1uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform1uivEXT", glUniform1uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform2uiEXT", glUniform2uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform2uivEXT", glUniform2uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform3uiEXT", glUniform3uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform3uivEXT", glUniform3uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform4uiEXT", glUniform4uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform4uivEXT", glUniform4uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1iEXT", glVertexAttribI1iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1ivEXT", glVertexAttribI1ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uiEXT", glVertexAttribI1uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uivEXT", glVertexAttribI1uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2iEXT", glVertexAttribI2iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2ivEXT", glVertexAttribI2ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uiEXT", glVertexAttribI2uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uivEXT", glVertexAttribI2uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3iEXT", glVertexAttribI3iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3ivEXT", glVertexAttribI3ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uiEXT", glVertexAttribI3uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uivEXT", glVertexAttribI3uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4bvEXT", glVertexAttribI4bvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4iEXT", glVertexAttribI4iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ivEXT", glVertexAttribI4ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4svEXT", glVertexAttribI4svEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ubvEXT", glVertexAttribI4ubvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uiEXT", glVertexAttribI4uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uivEXT", glVertexAttribI4uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4usvEXT", glVertexAttribI4usvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribIPointerEXT", glVertexAttribIPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_gpu_shader4 */
+
+#ifdef GL_EXT_gpu_shader5
+
+static void _glewInfo_GL_EXT_gpu_shader5 (void)
+{
+ glewPrintExt("GL_EXT_gpu_shader5", GLEW_EXT_gpu_shader5, glewIsSupported("GL_EXT_gpu_shader5"), glewGetExtension("GL_EXT_gpu_shader5"));
+}
+
+#endif /* GL_EXT_gpu_shader5 */
+
+#ifdef GL_EXT_histogram
+
+static void _glewInfo_GL_EXT_histogram (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_histogram", GLEW_EXT_histogram, glewIsSupported("GL_EXT_histogram"), glewGetExtension("GL_EXT_histogram"));
+
+ glewInfoFunc(fi, "glGetHistogramEXT", glGetHistogramEXT == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterfvEXT", glGetHistogramParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterivEXT", glGetHistogramParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxEXT", glGetMinmaxEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterfvEXT", glGetMinmaxParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterivEXT", glGetMinmaxParameterivEXT == NULL);
+ glewInfoFunc(fi, "glHistogramEXT", glHistogramEXT == NULL);
+ glewInfoFunc(fi, "glMinmaxEXT", glMinmaxEXT == NULL);
+ glewInfoFunc(fi, "glResetHistogramEXT", glResetHistogramEXT == NULL);
+ glewInfoFunc(fi, "glResetMinmaxEXT", glResetMinmaxEXT == NULL);
+}
+
+#endif /* GL_EXT_histogram */
+
+#ifdef GL_EXT_index_array_formats
+
+static void _glewInfo_GL_EXT_index_array_formats (void)
+{
+ glewPrintExt("GL_EXT_index_array_formats", GLEW_EXT_index_array_formats, glewIsSupported("GL_EXT_index_array_formats"), glewGetExtension("GL_EXT_index_array_formats"));
+}
+
+#endif /* GL_EXT_index_array_formats */
+
+#ifdef GL_EXT_index_func
+
+static void _glewInfo_GL_EXT_index_func (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_index_func", GLEW_EXT_index_func, glewIsSupported("GL_EXT_index_func"), glewGetExtension("GL_EXT_index_func"));
+
+ glewInfoFunc(fi, "glIndexFuncEXT", glIndexFuncEXT == NULL);
+}
+
+#endif /* GL_EXT_index_func */
+
+#ifdef GL_EXT_index_material
+
+static void _glewInfo_GL_EXT_index_material (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_index_material", GLEW_EXT_index_material, glewIsSupported("GL_EXT_index_material"), glewGetExtension("GL_EXT_index_material"));
+
+ glewInfoFunc(fi, "glIndexMaterialEXT", glIndexMaterialEXT == NULL);
+}
+
+#endif /* GL_EXT_index_material */
+
+#ifdef GL_EXT_index_texture
+
+static void _glewInfo_GL_EXT_index_texture (void)
+{
+ glewPrintExt("GL_EXT_index_texture", GLEW_EXT_index_texture, glewIsSupported("GL_EXT_index_texture"), glewGetExtension("GL_EXT_index_texture"));
+}
+
+#endif /* GL_EXT_index_texture */
+
+#ifdef GL_EXT_instanced_arrays
+
+static void _glewInfo_GL_EXT_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_instanced_arrays", GLEW_EXT_instanced_arrays, glewIsSupported("GL_EXT_instanced_arrays"), glewGetExtension("GL_EXT_instanced_arrays"));
+
+ glewInfoFunc(fi, "glVertexAttribDivisorEXT", glVertexAttribDivisorEXT == NULL);
+}
+
+#endif /* GL_EXT_instanced_arrays */
+
+#ifdef GL_EXT_light_texture
+
+static void _glewInfo_GL_EXT_light_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_light_texture", GLEW_EXT_light_texture, glewIsSupported("GL_EXT_light_texture"), glewGetExtension("GL_EXT_light_texture"));
+
+ glewInfoFunc(fi, "glApplyTextureEXT", glApplyTextureEXT == NULL);
+ glewInfoFunc(fi, "glTextureLightEXT", glTextureLightEXT == NULL);
+ glewInfoFunc(fi, "glTextureMaterialEXT", glTextureMaterialEXT == NULL);
+}
+
+#endif /* GL_EXT_light_texture */
+
+#ifdef GL_EXT_map_buffer_range
+
+static void _glewInfo_GL_EXT_map_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_map_buffer_range", GLEW_EXT_map_buffer_range, glewIsSupported("GL_EXT_map_buffer_range"), glewGetExtension("GL_EXT_map_buffer_range"));
+
+ glewInfoFunc(fi, "glFlushMappedBufferRangeEXT", glFlushMappedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glMapBufferRangeEXT", glMapBufferRangeEXT == NULL);
+}
+
+#endif /* GL_EXT_map_buffer_range */
+
+#ifdef GL_EXT_memory_object
+
+static void _glewInfo_GL_EXT_memory_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object", GLEW_EXT_memory_object, glewIsSupported("GL_EXT_memory_object"), glewGetExtension("GL_EXT_memory_object"));
+
+ glewInfoFunc(fi, "glBufferStorageMemEXT", glBufferStorageMemEXT == NULL);
+ glewInfoFunc(fi, "glCreateMemoryObjectsEXT", glCreateMemoryObjectsEXT == NULL);
+ glewInfoFunc(fi, "glDeleteMemoryObjectsEXT", glDeleteMemoryObjectsEXT == NULL);
+ glewInfoFunc(fi, "glGetMemoryObjectParameterivEXT", glGetMemoryObjectParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetUnsignedBytei_vEXT", glGetUnsignedBytei_vEXT == NULL);
+ glewInfoFunc(fi, "glGetUnsignedBytevEXT", glGetUnsignedBytevEXT == NULL);
+ glewInfoFunc(fi, "glIsMemoryObjectEXT", glIsMemoryObjectEXT == NULL);
+ glewInfoFunc(fi, "glMemoryObjectParameterivEXT", glMemoryObjectParameterivEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageMemEXT", glNamedBufferStorageMemEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem1DEXT", glTexStorageMem1DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem2DEXT", glTexStorageMem2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem2DMultisampleEXT", glTexStorageMem2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem3DEXT", glTexStorageMem3DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem3DMultisampleEXT", glTexStorageMem3DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem1DEXT", glTextureStorageMem1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem2DEXT", glTextureStorageMem2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem2DMultisampleEXT", glTextureStorageMem2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem3DEXT", glTextureStorageMem3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem3DMultisampleEXT", glTextureStorageMem3DMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object */
+
+#ifdef GL_EXT_memory_object_fd
+
+static void _glewInfo_GL_EXT_memory_object_fd (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object_fd", GLEW_EXT_memory_object_fd, glewIsSupported("GL_EXT_memory_object_fd"), glewGetExtension("GL_EXT_memory_object_fd"));
+
+ glewInfoFunc(fi, "glImportMemoryFdEXT", glImportMemoryFdEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object_fd */
+
+#ifdef GL_EXT_memory_object_win32
+
+static void _glewInfo_GL_EXT_memory_object_win32 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object_win32", GLEW_EXT_memory_object_win32, glewIsSupported("GL_EXT_memory_object_win32"), glewGetExtension("GL_EXT_memory_object_win32"));
+
+ glewInfoFunc(fi, "glImportMemoryWin32HandleEXT", glImportMemoryWin32HandleEXT == NULL);
+ glewInfoFunc(fi, "glImportMemoryWin32NameEXT", glImportMemoryWin32NameEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object_win32 */
+
+#ifdef GL_EXT_misc_attribute
+
+static void _glewInfo_GL_EXT_misc_attribute (void)
+{
+ glewPrintExt("GL_EXT_misc_attribute", GLEW_EXT_misc_attribute, glewIsSupported("GL_EXT_misc_attribute"), glewGetExtension("GL_EXT_misc_attribute"));
+}
+
+#endif /* GL_EXT_misc_attribute */
+
+#ifdef GL_EXT_multi_draw_arrays
+
+static void _glewInfo_GL_EXT_multi_draw_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multi_draw_arrays", GLEW_EXT_multi_draw_arrays, glewIsSupported("GL_EXT_multi_draw_arrays"), glewGetExtension("GL_EXT_multi_draw_arrays"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysEXT", glMultiDrawArraysEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsEXT", glMultiDrawElementsEXT == NULL);
+}
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+#ifdef GL_EXT_multi_draw_indirect
+
+static void _glewInfo_GL_EXT_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multi_draw_indirect", GLEW_EXT_multi_draw_indirect, glewIsSupported("GL_EXT_multi_draw_indirect"), glewGetExtension("GL_EXT_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectEXT", glMultiDrawArraysIndirectEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectEXT", glMultiDrawElementsIndirectEXT == NULL);
+}
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+#ifdef GL_EXT_multiple_textures
+
+static void _glewInfo_GL_EXT_multiple_textures (void)
+{
+ glewPrintExt("GL_EXT_multiple_textures", GLEW_EXT_multiple_textures, glewIsSupported("GL_EXT_multiple_textures"), glewGetExtension("GL_EXT_multiple_textures"));
+}
+
+#endif /* GL_EXT_multiple_textures */
+
+#ifdef GL_EXT_multisample
+
+static void _glewInfo_GL_EXT_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multisample", GLEW_EXT_multisample, glewIsSupported("GL_EXT_multisample"), glewGetExtension("GL_EXT_multisample"));
+
+ glewInfoFunc(fi, "glSampleMaskEXT", glSampleMaskEXT == NULL);
+ glewInfoFunc(fi, "glSamplePatternEXT", glSamplePatternEXT == NULL);
+}
+
+#endif /* GL_EXT_multisample */
+
+#ifdef GL_EXT_multisample_compatibility
+
+static void _glewInfo_GL_EXT_multisample_compatibility (void)
+{
+ glewPrintExt("GL_EXT_multisample_compatibility", GLEW_EXT_multisample_compatibility, glewIsSupported("GL_EXT_multisample_compatibility"), glewGetExtension("GL_EXT_multisample_compatibility"));
+}
+
+#endif /* GL_EXT_multisample_compatibility */
+
+#ifdef GL_EXT_multisampled_render_to_texture
+
+static void _glewInfo_GL_EXT_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multisampled_render_to_texture", GLEW_EXT_multisampled_render_to_texture, glewIsSupported("GL_EXT_multisampled_render_to_texture"), glewGetExtension("GL_EXT_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DMultisampleEXT", glFramebufferTexture2DMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+#ifdef GL_EXT_multisampled_render_to_texture2
+
+static void _glewInfo_GL_EXT_multisampled_render_to_texture2 (void)
+{
+ glewPrintExt("GL_EXT_multisampled_render_to_texture2", GLEW_EXT_multisampled_render_to_texture2, glewIsSupported("GL_EXT_multisampled_render_to_texture2"), glewGetExtension("GL_EXT_multisampled_render_to_texture2"));
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+
+#ifdef GL_EXT_multiview_draw_buffers
+
+static void _glewInfo_GL_EXT_multiview_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multiview_draw_buffers", GLEW_EXT_multiview_draw_buffers, glewIsSupported("GL_EXT_multiview_draw_buffers"), glewGetExtension("GL_EXT_multiview_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersIndexedEXT", glDrawBuffersIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetIntegeri_vEXT", glGetIntegeri_vEXT == NULL);
+ glewInfoFunc(fi, "glReadBufferIndexedEXT", glReadBufferIndexedEXT == NULL);
+}
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+
+static void _glewInfo_GL_EXT_multiview_tessellation_geometry_shader (void)
+{
+ glewPrintExt("GL_EXT_multiview_tessellation_geometry_shader", GLEW_EXT_multiview_tessellation_geometry_shader, glewIsSupported("GL_EXT_multiview_tessellation_geometry_shader"), glewGetExtension("GL_EXT_multiview_tessellation_geometry_shader"));
+}
+
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+
+#ifdef GL_EXT_multiview_texture_multisample
+
+static void _glewInfo_GL_EXT_multiview_texture_multisample (void)
+{
+ glewPrintExt("GL_EXT_multiview_texture_multisample", GLEW_EXT_multiview_texture_multisample, glewIsSupported("GL_EXT_multiview_texture_multisample"), glewGetExtension("GL_EXT_multiview_texture_multisample"));
+}
+
+#endif /* GL_EXT_multiview_texture_multisample */
+
+#ifdef GL_EXT_multiview_timer_query
+
+static void _glewInfo_GL_EXT_multiview_timer_query (void)
+{
+ glewPrintExt("GL_EXT_multiview_timer_query", GLEW_EXT_multiview_timer_query, glewIsSupported("GL_EXT_multiview_timer_query"), glewGetExtension("GL_EXT_multiview_timer_query"));
+}
+
+#endif /* GL_EXT_multiview_timer_query */
+
+#ifdef GL_EXT_occlusion_query_boolean
+
+static void _glewInfo_GL_EXT_occlusion_query_boolean (void)
+{
+ glewPrintExt("GL_EXT_occlusion_query_boolean", GLEW_EXT_occlusion_query_boolean, glewIsSupported("GL_EXT_occlusion_query_boolean"), glewGetExtension("GL_EXT_occlusion_query_boolean"));
+}
+
+#endif /* GL_EXT_occlusion_query_boolean */
+
+#ifdef GL_EXT_packed_depth_stencil
+
+static void _glewInfo_GL_EXT_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_EXT_packed_depth_stencil", GLEW_EXT_packed_depth_stencil, glewIsSupported("GL_EXT_packed_depth_stencil"), glewGetExtension("GL_EXT_packed_depth_stencil"));
+}
+
+#endif /* GL_EXT_packed_depth_stencil */
+
+#ifdef GL_EXT_packed_float
+
+static void _glewInfo_GL_EXT_packed_float (void)
+{
+ glewPrintExt("GL_EXT_packed_float", GLEW_EXT_packed_float, glewIsSupported("GL_EXT_packed_float"), glewGetExtension("GL_EXT_packed_float"));
+}
+
+#endif /* GL_EXT_packed_float */
+
+#ifdef GL_EXT_packed_pixels
+
+static void _glewInfo_GL_EXT_packed_pixels (void)
+{
+ glewPrintExt("GL_EXT_packed_pixels", GLEW_EXT_packed_pixels, glewIsSupported("GL_EXT_packed_pixels"), glewGetExtension("GL_EXT_packed_pixels"));
+}
+
+#endif /* GL_EXT_packed_pixels */
+
+#ifdef GL_EXT_paletted_texture
+
+static void _glewInfo_GL_EXT_paletted_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_paletted_texture", GLEW_EXT_paletted_texture, glewIsSupported("GL_EXT_paletted_texture"), glewGetExtension("GL_EXT_paletted_texture"));
+
+ glewInfoFunc(fi, "glColorTableEXT", glColorTableEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableEXT", glGetColorTableEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfvEXT", glGetColorTableParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterivEXT", glGetColorTableParameterivEXT == NULL);
+}
+
+#endif /* GL_EXT_paletted_texture */
+
+#ifdef GL_EXT_pixel_buffer_object
+
+static void _glewInfo_GL_EXT_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_EXT_pixel_buffer_object", GLEW_EXT_pixel_buffer_object, glewIsSupported("GL_EXT_pixel_buffer_object"), glewGetExtension("GL_EXT_pixel_buffer_object"));
+}
+
+#endif /* GL_EXT_pixel_buffer_object */
+
+#ifdef GL_EXT_pixel_transform
+
+static void _glewInfo_GL_EXT_pixel_transform (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_pixel_transform", GLEW_EXT_pixel_transform, glewIsSupported("GL_EXT_pixel_transform"), glewGetExtension("GL_EXT_pixel_transform"));
+
+ glewInfoFunc(fi, "glGetPixelTransformParameterfvEXT", glGetPixelTransformParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetPixelTransformParameterivEXT", glGetPixelTransformParameterivEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfEXT", glPixelTransformParameterfEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfvEXT", glPixelTransformParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameteriEXT", glPixelTransformParameteriEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterivEXT", glPixelTransformParameterivEXT == NULL);
+}
+
+#endif /* GL_EXT_pixel_transform */
+
+#ifdef GL_EXT_pixel_transform_color_table
+
+static void _glewInfo_GL_EXT_pixel_transform_color_table (void)
+{
+ glewPrintExt("GL_EXT_pixel_transform_color_table", GLEW_EXT_pixel_transform_color_table, glewIsSupported("GL_EXT_pixel_transform_color_table"), glewGetExtension("GL_EXT_pixel_transform_color_table"));
+}
+
+#endif /* GL_EXT_pixel_transform_color_table */
+
+#ifdef GL_EXT_point_parameters
+
+static void _glewInfo_GL_EXT_point_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_point_parameters", GLEW_EXT_point_parameters, glewIsSupported("GL_EXT_point_parameters"), glewGetExtension("GL_EXT_point_parameters"));
+
+ glewInfoFunc(fi, "glPointParameterfEXT", glPointParameterfEXT == NULL);
+ glewInfoFunc(fi, "glPointParameterfvEXT", glPointParameterfvEXT == NULL);
+}
+
+#endif /* GL_EXT_point_parameters */
+
+#ifdef GL_EXT_polygon_offset
+
+static void _glewInfo_GL_EXT_polygon_offset (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_polygon_offset", GLEW_EXT_polygon_offset, glewIsSupported("GL_EXT_polygon_offset"), glewGetExtension("GL_EXT_polygon_offset"));
+
+ glewInfoFunc(fi, "glPolygonOffsetEXT", glPolygonOffsetEXT == NULL);
+}
+
+#endif /* GL_EXT_polygon_offset */
+
+#ifdef GL_EXT_polygon_offset_clamp
+
+static void _glewInfo_GL_EXT_polygon_offset_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_polygon_offset_clamp", GLEW_EXT_polygon_offset_clamp, glewIsSupported("GL_EXT_polygon_offset_clamp"), glewGetExtension("GL_EXT_polygon_offset_clamp"));
+
+ glewInfoFunc(fi, "glPolygonOffsetClampEXT", glPolygonOffsetClampEXT == NULL);
+}
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+#ifdef GL_EXT_post_depth_coverage
+
+static void _glewInfo_GL_EXT_post_depth_coverage (void)
+{
+ glewPrintExt("GL_EXT_post_depth_coverage", GLEW_EXT_post_depth_coverage, glewIsSupported("GL_EXT_post_depth_coverage"), glewGetExtension("GL_EXT_post_depth_coverage"));
+}
+
+#endif /* GL_EXT_post_depth_coverage */
+
+#ifdef GL_EXT_primitive_bounding_box
+
+static void _glewInfo_GL_EXT_primitive_bounding_box (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_primitive_bounding_box", GLEW_EXT_primitive_bounding_box, glewIsSupported("GL_EXT_primitive_bounding_box"), glewGetExtension("GL_EXT_primitive_bounding_box"));
+
+ glewInfoFunc(fi, "glPrimitiveBoundingBoxEXT", glPrimitiveBoundingBoxEXT == NULL);
+}
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+#ifdef GL_EXT_protected_textures
+
+static void _glewInfo_GL_EXT_protected_textures (void)
+{
+ glewPrintExt("GL_EXT_protected_textures", GLEW_EXT_protected_textures, glewIsSupported("GL_EXT_protected_textures"), glewGetExtension("GL_EXT_protected_textures"));
+}
+
+#endif /* GL_EXT_protected_textures */
+
+#ifdef GL_EXT_provoking_vertex
+
+static void _glewInfo_GL_EXT_provoking_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_provoking_vertex", GLEW_EXT_provoking_vertex, glewIsSupported("GL_EXT_provoking_vertex"), glewGetExtension("GL_EXT_provoking_vertex"));
+
+ glewInfoFunc(fi, "glProvokingVertexEXT", glProvokingVertexEXT == NULL);
+}
+
+#endif /* GL_EXT_provoking_vertex */
+
+#ifdef GL_EXT_pvrtc_sRGB
+
+static void _glewInfo_GL_EXT_pvrtc_sRGB (void)
+{
+ glewPrintExt("GL_EXT_pvrtc_sRGB", GLEW_EXT_pvrtc_sRGB, glewIsSupported("GL_EXT_pvrtc_sRGB"), glewGetExtension("GL_EXT_pvrtc_sRGB"));
+}
+
+#endif /* GL_EXT_pvrtc_sRGB */
+
+#ifdef GL_EXT_raster_multisample
+
+static void _glewInfo_GL_EXT_raster_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_raster_multisample", GLEW_EXT_raster_multisample, glewIsSupported("GL_EXT_raster_multisample"), glewGetExtension("GL_EXT_raster_multisample"));
+
+ glewInfoFunc(fi, "glCoverageModulationNV", glCoverageModulationNV == NULL);
+ glewInfoFunc(fi, "glCoverageModulationTableNV", glCoverageModulationTableNV == NULL);
+ glewInfoFunc(fi, "glGetCoverageModulationTableNV", glGetCoverageModulationTableNV == NULL);
+ glewInfoFunc(fi, "glRasterSamplesEXT", glRasterSamplesEXT == NULL);
+}
+
+#endif /* GL_EXT_raster_multisample */
+
+#ifdef GL_EXT_read_format_bgra
+
+static void _glewInfo_GL_EXT_read_format_bgra (void)
+{
+ glewPrintExt("GL_EXT_read_format_bgra", GLEW_EXT_read_format_bgra, glewIsSupported("GL_EXT_read_format_bgra"), glewGetExtension("GL_EXT_read_format_bgra"));
+}
+
+#endif /* GL_EXT_read_format_bgra */
+
+#ifdef GL_EXT_render_snorm
+
+static void _glewInfo_GL_EXT_render_snorm (void)
+{
+ glewPrintExt("GL_EXT_render_snorm", GLEW_EXT_render_snorm, glewIsSupported("GL_EXT_render_snorm"), glewGetExtension("GL_EXT_render_snorm"));
+}
+
+#endif /* GL_EXT_render_snorm */
+
+#ifdef GL_EXT_rescale_normal
+
+static void _glewInfo_GL_EXT_rescale_normal (void)
+{
+ glewPrintExt("GL_EXT_rescale_normal", GLEW_EXT_rescale_normal, glewIsSupported("GL_EXT_rescale_normal"), glewGetExtension("GL_EXT_rescale_normal"));
+}
+
+#endif /* GL_EXT_rescale_normal */
+
+#ifdef GL_EXT_robustness
+
+static void _glewInfo_GL_EXT_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_robustness", GLEW_EXT_robustness, glewIsSupported("GL_EXT_robustness"), glewGetExtension("GL_EXT_robustness"));
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatusEXT", glGetGraphicsResetStatusEXT == NULL);
+ glewInfoFunc(fi, "glGetnUniformfvEXT", glGetnUniformfvEXT == NULL);
+ glewInfoFunc(fi, "glGetnUniformivEXT", glGetnUniformivEXT == NULL);
+ glewInfoFunc(fi, "glReadnPixelsEXT", glReadnPixelsEXT == NULL);
+}
+
+#endif /* GL_EXT_robustness */
+
+#ifdef GL_EXT_sRGB
+
+static void _glewInfo_GL_EXT_sRGB (void)
+{
+ glewPrintExt("GL_EXT_sRGB", GLEW_EXT_sRGB, glewIsSupported("GL_EXT_sRGB"), glewGetExtension("GL_EXT_sRGB"));
+}
+
+#endif /* GL_EXT_sRGB */
+
+#ifdef GL_EXT_sRGB_write_control
+
+static void _glewInfo_GL_EXT_sRGB_write_control (void)
+{
+ glewPrintExt("GL_EXT_sRGB_write_control", GLEW_EXT_sRGB_write_control, glewIsSupported("GL_EXT_sRGB_write_control"), glewGetExtension("GL_EXT_sRGB_write_control"));
+}
+
+#endif /* GL_EXT_sRGB_write_control */
+
+#ifdef GL_EXT_scene_marker
+
+static void _glewInfo_GL_EXT_scene_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_scene_marker", GLEW_EXT_scene_marker, glewIsSupported("GL_EXT_scene_marker"), glewGetExtension("GL_EXT_scene_marker"));
+
+ glewInfoFunc(fi, "glBeginSceneEXT", glBeginSceneEXT == NULL);
+ glewInfoFunc(fi, "glEndSceneEXT", glEndSceneEXT == NULL);
+}
+
+#endif /* GL_EXT_scene_marker */
+
+#ifdef GL_EXT_secondary_color
+
+static void _glewInfo_GL_EXT_secondary_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_secondary_color", GLEW_EXT_secondary_color, glewIsSupported("GL_EXT_secondary_color"), glewGetExtension("GL_EXT_secondary_color"));
+
+ glewInfoFunc(fi, "glSecondaryColor3bEXT", glSecondaryColor3bEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3bvEXT", glSecondaryColor3bvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dEXT", glSecondaryColor3dEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dvEXT", glSecondaryColor3dvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fEXT", glSecondaryColor3fEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fvEXT", glSecondaryColor3fvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3iEXT", glSecondaryColor3iEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ivEXT", glSecondaryColor3ivEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3sEXT", glSecondaryColor3sEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3svEXT", glSecondaryColor3svEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubEXT", glSecondaryColor3ubEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubvEXT", glSecondaryColor3ubvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uiEXT", glSecondaryColor3uiEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uivEXT", glSecondaryColor3uivEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usEXT", glSecondaryColor3usEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usvEXT", glSecondaryColor3usvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointerEXT", glSecondaryColorPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_secondary_color */
+
+#ifdef GL_EXT_semaphore
+
+static void _glewInfo_GL_EXT_semaphore (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore", GLEW_EXT_semaphore, glewIsSupported("GL_EXT_semaphore"), glewGetExtension("GL_EXT_semaphore"));
+
+ glewInfoFunc(fi, "glDeleteSemaphoresEXT", glDeleteSemaphoresEXT == NULL);
+ glewInfoFunc(fi, "glGenSemaphoresEXT", glGenSemaphoresEXT == NULL);
+ glewInfoFunc(fi, "glGetSemaphoreParameterui64vEXT", glGetSemaphoreParameterui64vEXT == NULL);
+ glewInfoFunc(fi, "glIsSemaphoreEXT", glIsSemaphoreEXT == NULL);
+ glewInfoFunc(fi, "glSemaphoreParameterui64vEXT", glSemaphoreParameterui64vEXT == NULL);
+ glewInfoFunc(fi, "glSignalSemaphoreEXT", glSignalSemaphoreEXT == NULL);
+ glewInfoFunc(fi, "glWaitSemaphoreEXT", glWaitSemaphoreEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore */
+
+#ifdef GL_EXT_semaphore_fd
+
+static void _glewInfo_GL_EXT_semaphore_fd (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore_fd", GLEW_EXT_semaphore_fd, glewIsSupported("GL_EXT_semaphore_fd"), glewGetExtension("GL_EXT_semaphore_fd"));
+
+ glewInfoFunc(fi, "glImportSemaphoreFdEXT", glImportSemaphoreFdEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore_fd */
+
+#ifdef GL_EXT_semaphore_win32
+
+static void _glewInfo_GL_EXT_semaphore_win32 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore_win32", GLEW_EXT_semaphore_win32, glewIsSupported("GL_EXT_semaphore_win32"), glewGetExtension("GL_EXT_semaphore_win32"));
+
+ glewInfoFunc(fi, "glImportSemaphoreWin32HandleEXT", glImportSemaphoreWin32HandleEXT == NULL);
+ glewInfoFunc(fi, "glImportSemaphoreWin32NameEXT", glImportSemaphoreWin32NameEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore_win32 */
+
+#ifdef GL_EXT_separate_depth_stencil
+
+static void _glewInfo_GL_EXT_separate_depth_stencil (void)
+{
+ glewPrintExt("GL_EXT_separate_depth_stencil", GLEW_EXT_separate_depth_stencil, glewIsSupported("GL_EXT_separate_depth_stencil"), glewGetExtension("GL_EXT_separate_depth_stencil"));
+}
+
+#endif /* GL_EXT_separate_depth_stencil */
+
+#ifdef GL_EXT_separate_shader_objects
+
+static void _glewInfo_GL_EXT_separate_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_separate_shader_objects", GLEW_EXT_separate_shader_objects, glewIsSupported("GL_EXT_separate_shader_objects"), glewGetExtension("GL_EXT_separate_shader_objects"));
+
+ glewInfoFunc(fi, "glActiveProgramEXT", glActiveProgramEXT == NULL);
+ glewInfoFunc(fi, "glCreateShaderProgramEXT", glCreateShaderProgramEXT == NULL);
+ glewInfoFunc(fi, "glUseShaderProgramEXT", glUseShaderProgramEXT == NULL);
+}
+
+#endif /* GL_EXT_separate_shader_objects */
+
+#ifdef GL_EXT_separate_specular_color
+
+static void _glewInfo_GL_EXT_separate_specular_color (void)
+{
+ glewPrintExt("GL_EXT_separate_specular_color", GLEW_EXT_separate_specular_color, glewIsSupported("GL_EXT_separate_specular_color"), glewGetExtension("GL_EXT_separate_specular_color"));
+}
+
+#endif /* GL_EXT_separate_specular_color */
+
+#ifdef GL_EXT_shader_framebuffer_fetch
+
+static void _glewInfo_GL_EXT_shader_framebuffer_fetch (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_framebuffer_fetch", GLEW_EXT_shader_framebuffer_fetch, glewIsSupported("GL_EXT_shader_framebuffer_fetch"), glewGetExtension("GL_EXT_shader_framebuffer_fetch"));
+
+ glewInfoFunc(fi, "glFramebufferFetchBarrierEXT", glFramebufferFetchBarrierEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+
+static void _glewInfo_GL_EXT_shader_framebuffer_fetch_non_coherent (void)
+{
+ glewPrintExt("GL_EXT_shader_framebuffer_fetch_non_coherent", GLEW_EXT_shader_framebuffer_fetch_non_coherent, glewIsSupported("GL_EXT_shader_framebuffer_fetch_non_coherent"), glewGetExtension("GL_EXT_shader_framebuffer_fetch_non_coherent"));
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+
+#ifdef GL_EXT_shader_group_vote
+
+static void _glewInfo_GL_EXT_shader_group_vote (void)
+{
+ glewPrintExt("GL_EXT_shader_group_vote", GLEW_EXT_shader_group_vote, glewIsSupported("GL_EXT_shader_group_vote"), glewGetExtension("GL_EXT_shader_group_vote"));
+}
+
+#endif /* GL_EXT_shader_group_vote */
+
+#ifdef GL_EXT_shader_image_load_formatted
+
+static void _glewInfo_GL_EXT_shader_image_load_formatted (void)
+{
+ glewPrintExt("GL_EXT_shader_image_load_formatted", GLEW_EXT_shader_image_load_formatted, glewIsSupported("GL_EXT_shader_image_load_formatted"), glewGetExtension("GL_EXT_shader_image_load_formatted"));
+}
+
+#endif /* GL_EXT_shader_image_load_formatted */
+
+#ifdef GL_EXT_shader_image_load_store
+
+static void _glewInfo_GL_EXT_shader_image_load_store (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_image_load_store", GLEW_EXT_shader_image_load_store, glewIsSupported("GL_EXT_shader_image_load_store"), glewGetExtension("GL_EXT_shader_image_load_store"));
+
+ glewInfoFunc(fi, "glBindImageTextureEXT", glBindImageTextureEXT == NULL);
+ glewInfoFunc(fi, "glMemoryBarrierEXT", glMemoryBarrierEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
+#ifdef GL_EXT_shader_implicit_conversions
+
+static void _glewInfo_GL_EXT_shader_implicit_conversions (void)
+{
+ glewPrintExt("GL_EXT_shader_implicit_conversions", GLEW_EXT_shader_implicit_conversions, glewIsSupported("GL_EXT_shader_implicit_conversions"), glewGetExtension("GL_EXT_shader_implicit_conversions"));
+}
+
+#endif /* GL_EXT_shader_implicit_conversions */
+
+#ifdef GL_EXT_shader_integer_mix
+
+static void _glewInfo_GL_EXT_shader_integer_mix (void)
+{
+ glewPrintExt("GL_EXT_shader_integer_mix", GLEW_EXT_shader_integer_mix, glewIsSupported("GL_EXT_shader_integer_mix"), glewGetExtension("GL_EXT_shader_integer_mix"));
+}
+
+#endif /* GL_EXT_shader_integer_mix */
+
+#ifdef GL_EXT_shader_io_blocks
+
+static void _glewInfo_GL_EXT_shader_io_blocks (void)
+{
+ glewPrintExt("GL_EXT_shader_io_blocks", GLEW_EXT_shader_io_blocks, glewIsSupported("GL_EXT_shader_io_blocks"), glewGetExtension("GL_EXT_shader_io_blocks"));
+}
+
+#endif /* GL_EXT_shader_io_blocks */
+
+#ifdef GL_EXT_shader_non_constant_global_initializers
+
+static void _glewInfo_GL_EXT_shader_non_constant_global_initializers (void)
+{
+ glewPrintExt("GL_EXT_shader_non_constant_global_initializers", GLEW_EXT_shader_non_constant_global_initializers, glewIsSupported("GL_EXT_shader_non_constant_global_initializers"), glewGetExtension("GL_EXT_shader_non_constant_global_initializers"));
+}
+
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+
+#ifdef GL_EXT_shader_pixel_local_storage
+
+static void _glewInfo_GL_EXT_shader_pixel_local_storage (void)
+{
+ glewPrintExt("GL_EXT_shader_pixel_local_storage", GLEW_EXT_shader_pixel_local_storage, glewIsSupported("GL_EXT_shader_pixel_local_storage"), glewGetExtension("GL_EXT_shader_pixel_local_storage"));
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage */
+
+#ifdef GL_EXT_shader_pixel_local_storage2
+
+static void _glewInfo_GL_EXT_shader_pixel_local_storage2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_pixel_local_storage2", GLEW_EXT_shader_pixel_local_storage2, glewIsSupported("GL_EXT_shader_pixel_local_storage2"), glewGetExtension("GL_EXT_shader_pixel_local_storage2"));
+
+ glewInfoFunc(fi, "glClearPixelLocalStorageuiEXT", glClearPixelLocalStorageuiEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferPixelLocalStorageSizeEXT", glFramebufferPixelLocalStorageSizeEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferPixelLocalStorageSizeEXT", glGetFramebufferPixelLocalStorageSizeEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+#ifdef GL_EXT_shader_samples_identical
+
+static void _glewInfo_GL_EXT_shader_samples_identical (void)
+{
+ glewPrintExt("GL_EXT_shader_samples_identical", GLEW_EXT_shader_samples_identical, glewIsSupported("GL_EXT_shader_samples_identical"), glewGetExtension("GL_EXT_shader_samples_identical"));
+}
+
+#endif /* GL_EXT_shader_samples_identical */
+
+#ifdef GL_EXT_shader_texture_lod
+
+static void _glewInfo_GL_EXT_shader_texture_lod (void)
+{
+ glewPrintExt("GL_EXT_shader_texture_lod", GLEW_EXT_shader_texture_lod, glewIsSupported("GL_EXT_shader_texture_lod"), glewGetExtension("GL_EXT_shader_texture_lod"));
+}
+
+#endif /* GL_EXT_shader_texture_lod */
+
+#ifdef GL_EXT_shadow_funcs
+
+static void _glewInfo_GL_EXT_shadow_funcs (void)
+{
+ glewPrintExt("GL_EXT_shadow_funcs", GLEW_EXT_shadow_funcs, glewIsSupported("GL_EXT_shadow_funcs"), glewGetExtension("GL_EXT_shadow_funcs"));
+}
+
+#endif /* GL_EXT_shadow_funcs */
+
+#ifdef GL_EXT_shadow_samplers
+
+static void _glewInfo_GL_EXT_shadow_samplers (void)
+{
+ glewPrintExt("GL_EXT_shadow_samplers", GLEW_EXT_shadow_samplers, glewIsSupported("GL_EXT_shadow_samplers"), glewGetExtension("GL_EXT_shadow_samplers"));
+}
+
+#endif /* GL_EXT_shadow_samplers */
+
+#ifdef GL_EXT_shared_texture_palette
+
+static void _glewInfo_GL_EXT_shared_texture_palette (void)
+{
+ glewPrintExt("GL_EXT_shared_texture_palette", GLEW_EXT_shared_texture_palette, glewIsSupported("GL_EXT_shared_texture_palette"), glewGetExtension("GL_EXT_shared_texture_palette"));
+}
+
+#endif /* GL_EXT_shared_texture_palette */
+
+#ifdef GL_EXT_sparse_texture
+
+static void _glewInfo_GL_EXT_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_sparse_texture", GLEW_EXT_sparse_texture, glewIsSupported("GL_EXT_sparse_texture"), glewGetExtension("GL_EXT_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexPageCommitmentEXT", glTexPageCommitmentEXT == NULL);
+ glewInfoFunc(fi, "glTexturePageCommitmentEXT", glTexturePageCommitmentEXT == NULL);
+}
+
+#endif /* GL_EXT_sparse_texture */
+
+#ifdef GL_EXT_sparse_texture2
+
+static void _glewInfo_GL_EXT_sparse_texture2 (void)
+{
+ glewPrintExt("GL_EXT_sparse_texture2", GLEW_EXT_sparse_texture2, glewIsSupported("GL_EXT_sparse_texture2"), glewGetExtension("GL_EXT_sparse_texture2"));
+}
+
+#endif /* GL_EXT_sparse_texture2 */
+
+#ifdef GL_EXT_static_vertex_array
+
+static void _glewInfo_GL_EXT_static_vertex_array (void)
+{
+ glewPrintExt("GL_EXT_static_vertex_array", GLEW_EXT_static_vertex_array, glewIsSupported("GL_EXT_static_vertex_array"), glewGetExtension("GL_EXT_static_vertex_array"));
+}
+
+#endif /* GL_EXT_static_vertex_array */
+
+#ifdef GL_EXT_stencil_clear_tag
+
+static void _glewInfo_GL_EXT_stencil_clear_tag (void)
+{
+ glewPrintExt("GL_EXT_stencil_clear_tag", GLEW_EXT_stencil_clear_tag, glewIsSupported("GL_EXT_stencil_clear_tag"), glewGetExtension("GL_EXT_stencil_clear_tag"));
+}
+
+#endif /* GL_EXT_stencil_clear_tag */
+
+#ifdef GL_EXT_stencil_two_side
+
+static void _glewInfo_GL_EXT_stencil_two_side (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_stencil_two_side", GLEW_EXT_stencil_two_side, glewIsSupported("GL_EXT_stencil_two_side"), glewGetExtension("GL_EXT_stencil_two_side"));
+
+ glewInfoFunc(fi, "glActiveStencilFaceEXT", glActiveStencilFaceEXT == NULL);
+}
+
+#endif /* GL_EXT_stencil_two_side */
+
+#ifdef GL_EXT_stencil_wrap
+
+static void _glewInfo_GL_EXT_stencil_wrap (void)
+{
+ glewPrintExt("GL_EXT_stencil_wrap", GLEW_EXT_stencil_wrap, glewIsSupported("GL_EXT_stencil_wrap"), glewGetExtension("GL_EXT_stencil_wrap"));
+}
+
+#endif /* GL_EXT_stencil_wrap */
+
+#ifdef GL_EXT_subtexture
+
+static void _glewInfo_GL_EXT_subtexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_subtexture", GLEW_EXT_subtexture, glewIsSupported("GL_EXT_subtexture"), glewGetExtension("GL_EXT_subtexture"));
+
+ glewInfoFunc(fi, "glTexSubImage1DEXT", glTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTexSubImage2DEXT", glTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DEXT", glTexSubImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_subtexture */
+
+#ifdef GL_EXT_tessellation_point_size
+
+static void _glewInfo_GL_EXT_tessellation_point_size (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_tessellation_point_size", GLEW_EXT_tessellation_point_size, glewIsSupported("GL_EXT_tessellation_point_size"), glewGetExtension("GL_EXT_tessellation_point_size"));
+
+ glewInfoFunc(fi, "glPatchParameteriEXT", glPatchParameteriEXT == NULL);
+}
+
+#endif /* GL_EXT_tessellation_point_size */
+
+#ifdef GL_EXT_tessellation_shader
+
+static void _glewInfo_GL_EXT_tessellation_shader (void)
+{
+ glewPrintExt("GL_EXT_tessellation_shader", GLEW_EXT_tessellation_shader, glewIsSupported("GL_EXT_tessellation_shader"), glewGetExtension("GL_EXT_tessellation_shader"));
+}
+
+#endif /* GL_EXT_tessellation_shader */
+
+#ifdef GL_EXT_texture
+
+static void _glewInfo_GL_EXT_texture (void)
+{
+ glewPrintExt("GL_EXT_texture", GLEW_EXT_texture, glewIsSupported("GL_EXT_texture"), glewGetExtension("GL_EXT_texture"));
+}
+
+#endif /* GL_EXT_texture */
+
+#ifdef GL_EXT_texture3D
+
+static void _glewInfo_GL_EXT_texture3D (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture3D", GLEW_EXT_texture3D, glewIsSupported("GL_EXT_texture3D"), glewGetExtension("GL_EXT_texture3D"));
+
+ glewInfoFunc(fi, "glTexImage3DEXT", glTexImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture3D */
+
+#ifdef GL_EXT_texture_array
+
+static void _glewInfo_GL_EXT_texture_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_array", GLEW_EXT_texture_array, glewIsSupported("GL_EXT_texture_array"), glewGetExtension("GL_EXT_texture_array"));
+
+ glewInfoFunc(fi, "glFramebufferTextureLayerEXT", glFramebufferTextureLayerEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_array */
+
+#ifdef GL_EXT_texture_border_clamp
+
+static void _glewInfo_GL_EXT_texture_border_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_border_clamp", GLEW_EXT_texture_border_clamp, glewIsSupported("GL_EXT_texture_border_clamp"), glewGetExtension("GL_EXT_texture_border_clamp"));
+
+ glewInfoFunc(fi, "glGetSamplerParameterIivEXT", glGetSamplerParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuivEXT", glGetSamplerParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIivEXT", glSamplerParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuivEXT", glSamplerParameterIuivEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_border_clamp */
+
+#ifdef GL_EXT_texture_buffer
+
+static void _glewInfo_GL_EXT_texture_buffer (void)
+{
+ glewPrintExt("GL_EXT_texture_buffer", GLEW_EXT_texture_buffer, glewIsSupported("GL_EXT_texture_buffer"), glewGetExtension("GL_EXT_texture_buffer"));
+}
+
+#endif /* GL_EXT_texture_buffer */
+
+#ifdef GL_EXT_texture_buffer_object
+
+static void _glewInfo_GL_EXT_texture_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_buffer_object", GLEW_EXT_texture_buffer_object, glewIsSupported("GL_EXT_texture_buffer_object"), glewGetExtension("GL_EXT_texture_buffer_object"));
+
+ glewInfoFunc(fi, "glTexBufferEXT", glTexBufferEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_buffer_object */
+
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+
+static void _glewInfo_GL_EXT_texture_compression_astc_decode_mode (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_astc_decode_mode", GLEW_EXT_texture_compression_astc_decode_mode, glewIsSupported("GL_EXT_texture_compression_astc_decode_mode"), glewGetExtension("GL_EXT_texture_compression_astc_decode_mode"));
+}
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+
+static void _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5 (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_astc_decode_mode_rgb9e5", GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5, glewIsSupported("GL_EXT_texture_compression_astc_decode_mode_rgb9e5"), glewGetExtension("GL_EXT_texture_compression_astc_decode_mode_rgb9e5"));
+}
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+
+#ifdef GL_EXT_texture_compression_bptc
+
+static void _glewInfo_GL_EXT_texture_compression_bptc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_bptc", GLEW_EXT_texture_compression_bptc, glewIsSupported("GL_EXT_texture_compression_bptc"), glewGetExtension("GL_EXT_texture_compression_bptc"));
+}
+
+#endif /* GL_EXT_texture_compression_bptc */
+
+#ifdef GL_EXT_texture_compression_dxt1
+
+static void _glewInfo_GL_EXT_texture_compression_dxt1 (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_dxt1", GLEW_EXT_texture_compression_dxt1, glewIsSupported("GL_EXT_texture_compression_dxt1"), glewGetExtension("GL_EXT_texture_compression_dxt1"));
+}
+
+#endif /* GL_EXT_texture_compression_dxt1 */
+
+#ifdef GL_EXT_texture_compression_latc
+
+static void _glewInfo_GL_EXT_texture_compression_latc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_latc", GLEW_EXT_texture_compression_latc, glewIsSupported("GL_EXT_texture_compression_latc"), glewGetExtension("GL_EXT_texture_compression_latc"));
+}
+
+#endif /* GL_EXT_texture_compression_latc */
+
+#ifdef GL_EXT_texture_compression_rgtc
+
+static void _glewInfo_GL_EXT_texture_compression_rgtc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_rgtc", GLEW_EXT_texture_compression_rgtc, glewIsSupported("GL_EXT_texture_compression_rgtc"), glewGetExtension("GL_EXT_texture_compression_rgtc"));
+}
+
+#endif /* GL_EXT_texture_compression_rgtc */
+
+#ifdef GL_EXT_texture_compression_s3tc
+
+static void _glewInfo_GL_EXT_texture_compression_s3tc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_s3tc", GLEW_EXT_texture_compression_s3tc, glewIsSupported("GL_EXT_texture_compression_s3tc"), glewGetExtension("GL_EXT_texture_compression_s3tc"));
+}
+
+#endif /* GL_EXT_texture_compression_s3tc */
+
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+
+static void _glewInfo_GL_EXT_texture_compression_s3tc_srgb (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_s3tc_srgb", GLEW_EXT_texture_compression_s3tc_srgb, glewIsSupported("GL_EXT_texture_compression_s3tc_srgb"), glewGetExtension("GL_EXT_texture_compression_s3tc_srgb"));
+}
+
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+
+#ifdef GL_EXT_texture_cube_map
+
+static void _glewInfo_GL_EXT_texture_cube_map (void)
+{
+ glewPrintExt("GL_EXT_texture_cube_map", GLEW_EXT_texture_cube_map, glewIsSupported("GL_EXT_texture_cube_map"), glewGetExtension("GL_EXT_texture_cube_map"));
+}
+
+#endif /* GL_EXT_texture_cube_map */
+
+#ifdef GL_EXT_texture_cube_map_array
+
+static void _glewInfo_GL_EXT_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_EXT_texture_cube_map_array", GLEW_EXT_texture_cube_map_array, glewIsSupported("GL_EXT_texture_cube_map_array"), glewGetExtension("GL_EXT_texture_cube_map_array"));
+}
+
+#endif /* GL_EXT_texture_cube_map_array */
+
+#ifdef GL_EXT_texture_edge_clamp
+
+static void _glewInfo_GL_EXT_texture_edge_clamp (void)
+{
+ glewPrintExt("GL_EXT_texture_edge_clamp", GLEW_EXT_texture_edge_clamp, glewIsSupported("GL_EXT_texture_edge_clamp"), glewGetExtension("GL_EXT_texture_edge_clamp"));
+}
+
+#endif /* GL_EXT_texture_edge_clamp */
+
+#ifdef GL_EXT_texture_env
+
+static void _glewInfo_GL_EXT_texture_env (void)
+{
+ glewPrintExt("GL_EXT_texture_env", GLEW_EXT_texture_env, glewIsSupported("GL_EXT_texture_env"), glewGetExtension("GL_EXT_texture_env"));
+}
+
+#endif /* GL_EXT_texture_env */
+
+#ifdef GL_EXT_texture_env_add
+
+static void _glewInfo_GL_EXT_texture_env_add (void)
+{
+ glewPrintExt("GL_EXT_texture_env_add", GLEW_EXT_texture_env_add, glewIsSupported("GL_EXT_texture_env_add"), glewGetExtension("GL_EXT_texture_env_add"));
+}
+
+#endif /* GL_EXT_texture_env_add */
+
+#ifdef GL_EXT_texture_env_combine
+
+static void _glewInfo_GL_EXT_texture_env_combine (void)
+{
+ glewPrintExt("GL_EXT_texture_env_combine", GLEW_EXT_texture_env_combine, glewIsSupported("GL_EXT_texture_env_combine"), glewGetExtension("GL_EXT_texture_env_combine"));
+}
+
+#endif /* GL_EXT_texture_env_combine */
+
+#ifdef GL_EXT_texture_env_dot3
+
+static void _glewInfo_GL_EXT_texture_env_dot3 (void)
+{
+ glewPrintExt("GL_EXT_texture_env_dot3", GLEW_EXT_texture_env_dot3, glewIsSupported("GL_EXT_texture_env_dot3"), glewGetExtension("GL_EXT_texture_env_dot3"));
+}
+
+#endif /* GL_EXT_texture_env_dot3 */
+
+#ifdef GL_EXT_texture_filter_anisotropic
+
+static void _glewInfo_GL_EXT_texture_filter_anisotropic (void)
+{
+ glewPrintExt("GL_EXT_texture_filter_anisotropic", GLEW_EXT_texture_filter_anisotropic, glewIsSupported("GL_EXT_texture_filter_anisotropic"), glewGetExtension("GL_EXT_texture_filter_anisotropic"));
+}
+
+#endif /* GL_EXT_texture_filter_anisotropic */
+
+#ifdef GL_EXT_texture_filter_minmax
+
+static void _glewInfo_GL_EXT_texture_filter_minmax (void)
+{
+ glewPrintExt("GL_EXT_texture_filter_minmax", GLEW_EXT_texture_filter_minmax, glewIsSupported("GL_EXT_texture_filter_minmax"), glewGetExtension("GL_EXT_texture_filter_minmax"));
+}
+
+#endif /* GL_EXT_texture_filter_minmax */
+
+#ifdef GL_EXT_texture_format_BGRA8888
+
+static void _glewInfo_GL_EXT_texture_format_BGRA8888 (void)
+{
+ glewPrintExt("GL_EXT_texture_format_BGRA8888", GLEW_EXT_texture_format_BGRA8888, glewIsSupported("GL_EXT_texture_format_BGRA8888"), glewGetExtension("GL_EXT_texture_format_BGRA8888"));
+}
+
+#endif /* GL_EXT_texture_format_BGRA8888 */
+
+#ifdef GL_EXT_texture_format_sRGB_override
+
+static void _glewInfo_GL_EXT_texture_format_sRGB_override (void)
+{
+ glewPrintExt("GL_EXT_texture_format_sRGB_override", GLEW_EXT_texture_format_sRGB_override, glewIsSupported("GL_EXT_texture_format_sRGB_override"), glewGetExtension("GL_EXT_texture_format_sRGB_override"));
+}
+
+#endif /* GL_EXT_texture_format_sRGB_override */
+
+#ifdef GL_EXT_texture_integer
+
+static void _glewInfo_GL_EXT_texture_integer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_integer", GLEW_EXT_texture_integer, glewIsSupported("GL_EXT_texture_integer"), glewGetExtension("GL_EXT_texture_integer"));
+
+ glewInfoFunc(fi, "glClearColorIiEXT", glClearColorIiEXT == NULL);
+ glewInfoFunc(fi, "glClearColorIuiEXT", glClearColorIuiEXT == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIivEXT", glGetTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuivEXT", glGetTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glTexParameterIivEXT", glTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glTexParameterIuivEXT", glTexParameterIuivEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_integer */
+
+#ifdef GL_EXT_texture_lod_bias
+
+static void _glewInfo_GL_EXT_texture_lod_bias (void)
+{
+ glewPrintExt("GL_EXT_texture_lod_bias", GLEW_EXT_texture_lod_bias, glewIsSupported("GL_EXT_texture_lod_bias"), glewGetExtension("GL_EXT_texture_lod_bias"));
+}
+
+#endif /* GL_EXT_texture_lod_bias */
+
+#ifdef GL_EXT_texture_mirror_clamp
+
+static void _glewInfo_GL_EXT_texture_mirror_clamp (void)
+{
+ glewPrintExt("GL_EXT_texture_mirror_clamp", GLEW_EXT_texture_mirror_clamp, glewIsSupported("GL_EXT_texture_mirror_clamp"), glewGetExtension("GL_EXT_texture_mirror_clamp"));
+}
+
+#endif /* GL_EXT_texture_mirror_clamp */
+
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+
+static void _glewInfo_GL_EXT_texture_mirror_clamp_to_edge (void)
+{
+ glewPrintExt("GL_EXT_texture_mirror_clamp_to_edge", GLEW_EXT_texture_mirror_clamp_to_edge, glewIsSupported("GL_EXT_texture_mirror_clamp_to_edge"), glewGetExtension("GL_EXT_texture_mirror_clamp_to_edge"));
+}
+
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+
+#ifdef GL_EXT_texture_norm16
+
+static void _glewInfo_GL_EXT_texture_norm16 (void)
+{
+ glewPrintExt("GL_EXT_texture_norm16", GLEW_EXT_texture_norm16, glewIsSupported("GL_EXT_texture_norm16"), glewGetExtension("GL_EXT_texture_norm16"));
+}
+
+#endif /* GL_EXT_texture_norm16 */
+
+#ifdef GL_EXT_texture_object
+
+static void _glewInfo_GL_EXT_texture_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_object", GLEW_EXT_texture_object, glewIsSupported("GL_EXT_texture_object"), glewGetExtension("GL_EXT_texture_object"));
+
+ glewInfoFunc(fi, "glAreTexturesResidentEXT", glAreTexturesResidentEXT == NULL);
+ glewInfoFunc(fi, "glBindTextureEXT", glBindTextureEXT == NULL);
+ glewInfoFunc(fi, "glDeleteTexturesEXT", glDeleteTexturesEXT == NULL);
+ glewInfoFunc(fi, "glGenTexturesEXT", glGenTexturesEXT == NULL);
+ glewInfoFunc(fi, "glIsTextureEXT", glIsTextureEXT == NULL);
+ glewInfoFunc(fi, "glPrioritizeTexturesEXT", glPrioritizeTexturesEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_object */
+
+#ifdef GL_EXT_texture_perturb_normal
+
+static void _glewInfo_GL_EXT_texture_perturb_normal (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_perturb_normal", GLEW_EXT_texture_perturb_normal, glewIsSupported("GL_EXT_texture_perturb_normal"), glewGetExtension("GL_EXT_texture_perturb_normal"));
+
+ glewInfoFunc(fi, "glTextureNormalEXT", glTextureNormalEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+#ifdef GL_EXT_texture_query_lod
+
+static void _glewInfo_GL_EXT_texture_query_lod (void)
+{
+ glewPrintExt("GL_EXT_texture_query_lod", GLEW_EXT_texture_query_lod, glewIsSupported("GL_EXT_texture_query_lod"), glewGetExtension("GL_EXT_texture_query_lod"));
+}
+
+#endif /* GL_EXT_texture_query_lod */
+
+#ifdef GL_EXT_texture_rectangle
+
+static void _glewInfo_GL_EXT_texture_rectangle (void)
+{
+ glewPrintExt("GL_EXT_texture_rectangle", GLEW_EXT_texture_rectangle, glewIsSupported("GL_EXT_texture_rectangle"), glewGetExtension("GL_EXT_texture_rectangle"));
+}
+
+#endif /* GL_EXT_texture_rectangle */
+
+#ifdef GL_EXT_texture_rg
+
+static void _glewInfo_GL_EXT_texture_rg (void)
+{
+ glewPrintExt("GL_EXT_texture_rg", GLEW_EXT_texture_rg, glewIsSupported("GL_EXT_texture_rg"), glewGetExtension("GL_EXT_texture_rg"));
+}
+
+#endif /* GL_EXT_texture_rg */
+
+#ifdef GL_EXT_texture_sRGB
+
+static void _glewInfo_GL_EXT_texture_sRGB (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB", GLEW_EXT_texture_sRGB, glewIsSupported("GL_EXT_texture_sRGB"), glewGetExtension("GL_EXT_texture_sRGB"));
+}
+
+#endif /* GL_EXT_texture_sRGB */
+
+#ifdef GL_EXT_texture_sRGB_R8
+
+static void _glewInfo_GL_EXT_texture_sRGB_R8 (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_R8", GLEW_EXT_texture_sRGB_R8, glewIsSupported("GL_EXT_texture_sRGB_R8"), glewGetExtension("GL_EXT_texture_sRGB_R8"));
+}
+
+#endif /* GL_EXT_texture_sRGB_R8 */
+
+#ifdef GL_EXT_texture_sRGB_RG8
+
+static void _glewInfo_GL_EXT_texture_sRGB_RG8 (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_RG8", GLEW_EXT_texture_sRGB_RG8, glewIsSupported("GL_EXT_texture_sRGB_RG8"), glewGetExtension("GL_EXT_texture_sRGB_RG8"));
+}
+
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
+#ifdef GL_EXT_texture_sRGB_decode
+
+static void _glewInfo_GL_EXT_texture_sRGB_decode (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_decode", GLEW_EXT_texture_sRGB_decode, glewIsSupported("GL_EXT_texture_sRGB_decode"), glewGetExtension("GL_EXT_texture_sRGB_decode"));
+}
+
+#endif /* GL_EXT_texture_sRGB_decode */
+
+#ifdef GL_EXT_texture_shadow_lod
+
+static void _glewInfo_GL_EXT_texture_shadow_lod (void)
+{
+ glewPrintExt("GL_EXT_texture_shadow_lod", GLEW_EXT_texture_shadow_lod, glewIsSupported("GL_EXT_texture_shadow_lod"), glewGetExtension("GL_EXT_texture_shadow_lod"));
+}
+
+#endif /* GL_EXT_texture_shadow_lod */
+
+#ifdef GL_EXT_texture_shared_exponent
+
+static void _glewInfo_GL_EXT_texture_shared_exponent (void)
+{
+ glewPrintExt("GL_EXT_texture_shared_exponent", GLEW_EXT_texture_shared_exponent, glewIsSupported("GL_EXT_texture_shared_exponent"), glewGetExtension("GL_EXT_texture_shared_exponent"));
+}
+
+#endif /* GL_EXT_texture_shared_exponent */
+
+#ifdef GL_EXT_texture_snorm
+
+static void _glewInfo_GL_EXT_texture_snorm (void)
+{
+ glewPrintExt("GL_EXT_texture_snorm", GLEW_EXT_texture_snorm, glewIsSupported("GL_EXT_texture_snorm"), glewGetExtension("GL_EXT_texture_snorm"));
+}
+
+#endif /* GL_EXT_texture_snorm */
+
+#ifdef GL_EXT_texture_storage
+
+static void _glewInfo_GL_EXT_texture_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_storage", GLEW_EXT_texture_storage, glewIsSupported("GL_EXT_texture_storage"), glewGetExtension("GL_EXT_texture_storage"));
+
+ glewInfoFunc(fi, "glTexStorage1DEXT", glTexStorage1DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorage2DEXT", glTexStorage2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorage3DEXT", glTexStorage3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage1DEXT", glTextureStorage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DEXT", glTextureStorage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DEXT", glTextureStorage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_storage */
+
+#ifdef GL_EXT_texture_storage_compression
+
+static void _glewInfo_GL_EXT_texture_storage_compression (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_storage_compression", GLEW_EXT_texture_storage_compression, glewIsSupported("GL_EXT_texture_storage_compression"), glewGetExtension("GL_EXT_texture_storage_compression"));
+
+ glewInfoFunc(fi, "glTexStorageAttribs2DEXT", glTexStorageAttribs2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageAttribs3DEXT", glTexStorageAttribs3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_storage_compression */
+
+#ifdef GL_EXT_texture_swizzle
+
+static void _glewInfo_GL_EXT_texture_swizzle (void)
+{
+ glewPrintExt("GL_EXT_texture_swizzle", GLEW_EXT_texture_swizzle, glewIsSupported("GL_EXT_texture_swizzle"), glewGetExtension("GL_EXT_texture_swizzle"));
+}
+
+#endif /* GL_EXT_texture_swizzle */
+
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+
+static void _glewInfo_GL_EXT_texture_type_2_10_10_10_REV (void)
+{
+ glewPrintExt("GL_EXT_texture_type_2_10_10_10_REV", GLEW_EXT_texture_type_2_10_10_10_REV, glewIsSupported("GL_EXT_texture_type_2_10_10_10_REV"), glewGetExtension("GL_EXT_texture_type_2_10_10_10_REV"));
+}
+
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+
+#ifdef GL_EXT_texture_view
+
+static void _glewInfo_GL_EXT_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_view", GLEW_EXT_texture_view, glewIsSupported("GL_EXT_texture_view"), glewGetExtension("GL_EXT_texture_view"));
+
+ glewInfoFunc(fi, "glTextureViewEXT", glTextureViewEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_view */
+
+#ifdef GL_EXT_timer_query
+
+static void _glewInfo_GL_EXT_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_timer_query", GLEW_EXT_timer_query, glewIsSupported("GL_EXT_timer_query"), glewGetExtension("GL_EXT_timer_query"));
+
+ glewInfoFunc(fi, "glGetQueryObjecti64vEXT", glGetQueryObjecti64vEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64vEXT", glGetQueryObjectui64vEXT == NULL);
+}
+
+#endif /* GL_EXT_timer_query */
+
+#ifdef GL_EXT_transform_feedback
+
+static void _glewInfo_GL_EXT_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_transform_feedback", GLEW_EXT_transform_feedback, glewIsSupported("GL_EXT_transform_feedback"), glewGetExtension("GL_EXT_transform_feedback"));
+
+ glewInfoFunc(fi, "glBeginTransformFeedbackEXT", glBeginTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferBaseEXT", glBindBufferBaseEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferOffsetEXT", glBindBufferOffsetEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferRangeEXT", glBindBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedbackEXT", glEndTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVaryingEXT", glGetTransformFeedbackVaryingEXT == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryingsEXT", glTransformFeedbackVaryingsEXT == NULL);
+}
+
+#endif /* GL_EXT_transform_feedback */
+
+#ifdef GL_EXT_unpack_subimage
+
+static void _glewInfo_GL_EXT_unpack_subimage (void)
+{
+ glewPrintExt("GL_EXT_unpack_subimage", GLEW_EXT_unpack_subimage, glewIsSupported("GL_EXT_unpack_subimage"), glewGetExtension("GL_EXT_unpack_subimage"));
+}
+
+#endif /* GL_EXT_unpack_subimage */
+
+#ifdef GL_EXT_vertex_array
+
+static void _glewInfo_GL_EXT_vertex_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_array", GLEW_EXT_vertex_array, glewIsSupported("GL_EXT_vertex_array"), glewGetExtension("GL_EXT_vertex_array"));
+
+ glewInfoFunc(fi, "glArrayElementEXT", glArrayElementEXT == NULL);
+ glewInfoFunc(fi, "glColorPointerEXT", glColorPointerEXT == NULL);
+ glewInfoFunc(fi, "glDrawArraysEXT", glDrawArraysEXT == NULL);
+ glewInfoFunc(fi, "glEdgeFlagPointerEXT", glEdgeFlagPointerEXT == NULL);
+ glewInfoFunc(fi, "glIndexPointerEXT", glIndexPointerEXT == NULL);
+ glewInfoFunc(fi, "glNormalPointerEXT", glNormalPointerEXT == NULL);
+ glewInfoFunc(fi, "glTexCoordPointerEXT", glTexCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glVertexPointerEXT", glVertexPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_array */
+
+#ifdef GL_EXT_vertex_array_bgra
+
+static void _glewInfo_GL_EXT_vertex_array_bgra (void)
+{
+ glewPrintExt("GL_EXT_vertex_array_bgra", GLEW_EXT_vertex_array_bgra, glewIsSupported("GL_EXT_vertex_array_bgra"), glewGetExtension("GL_EXT_vertex_array_bgra"));
+}
+
+#endif /* GL_EXT_vertex_array_bgra */
+
+#ifdef GL_EXT_vertex_array_setXXX
+
+static void _glewInfo_GL_EXT_vertex_array_setXXX (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_array_setXXX", GLEW_EXT_vertex_array_setXXX, glewIsSupported("GL_EXT_vertex_array_setXXX"), glewGetExtension("GL_EXT_vertex_array_setXXX"));
+
+ glewInfoFunc(fi, "glBindArraySetEXT", glBindArraySetEXT == NULL);
+ glewInfoFunc(fi, "glCreateArraySetExt", glCreateArraySetExt == NULL);
+ glewInfoFunc(fi, "glDeleteArraySetsEXT", glDeleteArraySetsEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static void _glewInfo_GL_EXT_vertex_attrib_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_attrib_64bit", GLEW_EXT_vertex_attrib_64bit, glewIsSupported("GL_EXT_vertex_attrib_64bit"), glewGetExtension("GL_EXT_vertex_attrib_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLdvEXT", glGetVertexAttribLdvEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribLOffsetEXT", glVertexArrayVertexAttribLOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dEXT", glVertexAttribL1dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dvEXT", glVertexAttribL1dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dEXT", glVertexAttribL2dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dvEXT", glVertexAttribL2dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dEXT", glVertexAttribL3dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dvEXT", glVertexAttribL3dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dEXT", glVertexAttribL4dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dvEXT", glVertexAttribL4dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribLPointerEXT", glVertexAttribLPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+#ifdef GL_EXT_vertex_shader
+
+static void _glewInfo_GL_EXT_vertex_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_shader", GLEW_EXT_vertex_shader, glewIsSupported("GL_EXT_vertex_shader"), glewGetExtension("GL_EXT_vertex_shader"));
+
+ glewInfoFunc(fi, "glBeginVertexShaderEXT", glBeginVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glBindLightParameterEXT", glBindLightParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindMaterialParameterEXT", glBindMaterialParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindParameterEXT", glBindParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindTexGenParameterEXT", glBindTexGenParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindTextureUnitParameterEXT", glBindTextureUnitParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindVertexShaderEXT", glBindVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glDeleteVertexShaderEXT", glDeleteVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glDisableVariantClientStateEXT", glDisableVariantClientStateEXT == NULL);
+ glewInfoFunc(fi, "glEnableVariantClientStateEXT", glEnableVariantClientStateEXT == NULL);
+ glewInfoFunc(fi, "glEndVertexShaderEXT", glEndVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glExtractComponentEXT", glExtractComponentEXT == NULL);
+ glewInfoFunc(fi, "glGenSymbolsEXT", glGenSymbolsEXT == NULL);
+ glewInfoFunc(fi, "glGenVertexShadersEXT", glGenVertexShadersEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantBooleanvEXT", glGetInvariantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantFloatvEXT", glGetInvariantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantIntegervEXT", glGetInvariantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantBooleanvEXT", glGetLocalConstantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantFloatvEXT", glGetLocalConstantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantIntegervEXT", glGetLocalConstantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantBooleanvEXT", glGetVariantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantFloatvEXT", glGetVariantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantIntegervEXT", glGetVariantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantPointervEXT", glGetVariantPointervEXT == NULL);
+ glewInfoFunc(fi, "glInsertComponentEXT", glInsertComponentEXT == NULL);
+ glewInfoFunc(fi, "glIsVariantEnabledEXT", glIsVariantEnabledEXT == NULL);
+ glewInfoFunc(fi, "glSetInvariantEXT", glSetInvariantEXT == NULL);
+ glewInfoFunc(fi, "glSetLocalConstantEXT", glSetLocalConstantEXT == NULL);
+ glewInfoFunc(fi, "glShaderOp1EXT", glShaderOp1EXT == NULL);
+ glewInfoFunc(fi, "glShaderOp2EXT", glShaderOp2EXT == NULL);
+ glewInfoFunc(fi, "glShaderOp3EXT", glShaderOp3EXT == NULL);
+ glewInfoFunc(fi, "glSwizzleEXT", glSwizzleEXT == NULL);
+ glewInfoFunc(fi, "glVariantPointerEXT", glVariantPointerEXT == NULL);
+ glewInfoFunc(fi, "glVariantbvEXT", glVariantbvEXT == NULL);
+ glewInfoFunc(fi, "glVariantdvEXT", glVariantdvEXT == NULL);
+ glewInfoFunc(fi, "glVariantfvEXT", glVariantfvEXT == NULL);
+ glewInfoFunc(fi, "glVariantivEXT", glVariantivEXT == NULL);
+ glewInfoFunc(fi, "glVariantsvEXT", glVariantsvEXT == NULL);
+ glewInfoFunc(fi, "glVariantubvEXT", glVariantubvEXT == NULL);
+ glewInfoFunc(fi, "glVariantuivEXT", glVariantuivEXT == NULL);
+ glewInfoFunc(fi, "glVariantusvEXT", glVariantusvEXT == NULL);
+ glewInfoFunc(fi, "glWriteMaskEXT", glWriteMaskEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_shader */
+
+#ifdef GL_EXT_vertex_weighting
+
+static void _glewInfo_GL_EXT_vertex_weighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_weighting", GLEW_EXT_vertex_weighting, glewIsSupported("GL_EXT_vertex_weighting"), glewGetExtension("GL_EXT_vertex_weighting"));
+
+ glewInfoFunc(fi, "glVertexWeightPointerEXT", glVertexWeightPointerEXT == NULL);
+ glewInfoFunc(fi, "glVertexWeightfEXT", glVertexWeightfEXT == NULL);
+ glewInfoFunc(fi, "glVertexWeightfvEXT", glVertexWeightfvEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_weighting */
+
+#ifdef GL_EXT_win32_keyed_mutex
+
+static void _glewInfo_GL_EXT_win32_keyed_mutex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_win32_keyed_mutex", GLEW_EXT_win32_keyed_mutex, glewIsSupported("GL_EXT_win32_keyed_mutex"), glewGetExtension("GL_EXT_win32_keyed_mutex"));
+
+ glewInfoFunc(fi, "glAcquireKeyedMutexWin32EXT", glAcquireKeyedMutexWin32EXT == NULL);
+ glewInfoFunc(fi, "glReleaseKeyedMutexWin32EXT", glReleaseKeyedMutexWin32EXT == NULL);
+}
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+#ifdef GL_EXT_window_rectangles
+
+static void _glewInfo_GL_EXT_window_rectangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_window_rectangles", GLEW_EXT_window_rectangles, glewIsSupported("GL_EXT_window_rectangles"), glewGetExtension("GL_EXT_window_rectangles"));
+
+ glewInfoFunc(fi, "glWindowRectanglesEXT", glWindowRectanglesEXT == NULL);
+}
+
+#endif /* GL_EXT_window_rectangles */
+
+#ifdef GL_EXT_x11_sync_object
+
+static void _glewInfo_GL_EXT_x11_sync_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_x11_sync_object", GLEW_EXT_x11_sync_object, glewIsSupported("GL_EXT_x11_sync_object"), glewGetExtension("GL_EXT_x11_sync_object"));
+
+ glewInfoFunc(fi, "glImportSyncEXT", glImportSyncEXT == NULL);
+}
+
+#endif /* GL_EXT_x11_sync_object */
+
+#ifdef GL_FJ_shader_binary_GCCSO
+
+static void _glewInfo_GL_FJ_shader_binary_GCCSO (void)
+{
+ glewPrintExt("GL_FJ_shader_binary_GCCSO", GLEW_FJ_shader_binary_GCCSO, glewIsSupported("GL_FJ_shader_binary_GCCSO"), glewGetExtension("GL_FJ_shader_binary_GCCSO"));
+}
+
+#endif /* GL_FJ_shader_binary_GCCSO */
+
+#ifdef GL_GREMEDY_frame_terminator
+
+static void _glewInfo_GL_GREMEDY_frame_terminator (void)
+{
+ GLboolean fi = glewPrintExt("GL_GREMEDY_frame_terminator", GLEW_GREMEDY_frame_terminator, glewIsSupported("GL_GREMEDY_frame_terminator"), glewGetExtension("GL_GREMEDY_frame_terminator"));
+
+ glewInfoFunc(fi, "glFrameTerminatorGREMEDY", glFrameTerminatorGREMEDY == NULL);
+}
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+#ifdef GL_GREMEDY_string_marker
+
+static void _glewInfo_GL_GREMEDY_string_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_GREMEDY_string_marker", GLEW_GREMEDY_string_marker, glewIsSupported("GL_GREMEDY_string_marker"), glewGetExtension("GL_GREMEDY_string_marker"));
+
+ glewInfoFunc(fi, "glStringMarkerGREMEDY", glStringMarkerGREMEDY == NULL);
+}
+
+#endif /* GL_GREMEDY_string_marker */
+
+#ifdef GL_HP_convolution_border_modes
+
+static void _glewInfo_GL_HP_convolution_border_modes (void)
+{
+ glewPrintExt("GL_HP_convolution_border_modes", GLEW_HP_convolution_border_modes, glewIsSupported("GL_HP_convolution_border_modes"), glewGetExtension("GL_HP_convolution_border_modes"));
+}
+
+#endif /* GL_HP_convolution_border_modes */
+
+#ifdef GL_HP_image_transform
+
+static void _glewInfo_GL_HP_image_transform (void)
+{
+ GLboolean fi = glewPrintExt("GL_HP_image_transform", GLEW_HP_image_transform, glewIsSupported("GL_HP_image_transform"), glewGetExtension("GL_HP_image_transform"));
+
+ glewInfoFunc(fi, "glGetImageTransformParameterfvHP", glGetImageTransformParameterfvHP == NULL);
+ glewInfoFunc(fi, "glGetImageTransformParameterivHP", glGetImageTransformParameterivHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterfHP", glImageTransformParameterfHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterfvHP", glImageTransformParameterfvHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameteriHP", glImageTransformParameteriHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterivHP", glImageTransformParameterivHP == NULL);
+}
+
+#endif /* GL_HP_image_transform */
+
+#ifdef GL_HP_occlusion_test
+
+static void _glewInfo_GL_HP_occlusion_test (void)
+{
+ glewPrintExt("GL_HP_occlusion_test", GLEW_HP_occlusion_test, glewIsSupported("GL_HP_occlusion_test"), glewGetExtension("GL_HP_occlusion_test"));
+}
+
+#endif /* GL_HP_occlusion_test */
+
+#ifdef GL_HP_texture_lighting
+
+static void _glewInfo_GL_HP_texture_lighting (void)
+{
+ glewPrintExt("GL_HP_texture_lighting", GLEW_HP_texture_lighting, glewIsSupported("GL_HP_texture_lighting"), glewGetExtension("GL_HP_texture_lighting"));
+}
+
+#endif /* GL_HP_texture_lighting */
+
+#ifdef GL_IBM_cull_vertex
+
+static void _glewInfo_GL_IBM_cull_vertex (void)
+{
+ glewPrintExt("GL_IBM_cull_vertex", GLEW_IBM_cull_vertex, glewIsSupported("GL_IBM_cull_vertex"), glewGetExtension("GL_IBM_cull_vertex"));
+}
+
+#endif /* GL_IBM_cull_vertex */
+
+#ifdef GL_IBM_multimode_draw_arrays
+
+static void _glewInfo_GL_IBM_multimode_draw_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_IBM_multimode_draw_arrays", GLEW_IBM_multimode_draw_arrays, glewIsSupported("GL_IBM_multimode_draw_arrays"), glewGetExtension("GL_IBM_multimode_draw_arrays"));
+
+ glewInfoFunc(fi, "glMultiModeDrawArraysIBM", glMultiModeDrawArraysIBM == NULL);
+ glewInfoFunc(fi, "glMultiModeDrawElementsIBM", glMultiModeDrawElementsIBM == NULL);
+}
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+#ifdef GL_IBM_rasterpos_clip
+
+static void _glewInfo_GL_IBM_rasterpos_clip (void)
+{
+ glewPrintExt("GL_IBM_rasterpos_clip", GLEW_IBM_rasterpos_clip, glewIsSupported("GL_IBM_rasterpos_clip"), glewGetExtension("GL_IBM_rasterpos_clip"));
+}
+
+#endif /* GL_IBM_rasterpos_clip */
+
+#ifdef GL_IBM_static_data
+
+static void _glewInfo_GL_IBM_static_data (void)
+{
+ glewPrintExt("GL_IBM_static_data", GLEW_IBM_static_data, glewIsSupported("GL_IBM_static_data"), glewGetExtension("GL_IBM_static_data"));
+}
+
+#endif /* GL_IBM_static_data */
+
+#ifdef GL_IBM_texture_mirrored_repeat
+
+static void _glewInfo_GL_IBM_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_IBM_texture_mirrored_repeat", GLEW_IBM_texture_mirrored_repeat, glewIsSupported("GL_IBM_texture_mirrored_repeat"), glewGetExtension("GL_IBM_texture_mirrored_repeat"));
+}
+
+#endif /* GL_IBM_texture_mirrored_repeat */
+
+#ifdef GL_IBM_vertex_array_lists
+
+static void _glewInfo_GL_IBM_vertex_array_lists (void)
+{
+ GLboolean fi = glewPrintExt("GL_IBM_vertex_array_lists", GLEW_IBM_vertex_array_lists, glewIsSupported("GL_IBM_vertex_array_lists"), glewGetExtension("GL_IBM_vertex_array_lists"));
+
+ glewInfoFunc(fi, "glColorPointerListIBM", glColorPointerListIBM == NULL);
+ glewInfoFunc(fi, "glEdgeFlagPointerListIBM", glEdgeFlagPointerListIBM == NULL);
+ glewInfoFunc(fi, "glFogCoordPointerListIBM", glFogCoordPointerListIBM == NULL);
+ glewInfoFunc(fi, "glIndexPointerListIBM", glIndexPointerListIBM == NULL);
+ glewInfoFunc(fi, "glNormalPointerListIBM", glNormalPointerListIBM == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointerListIBM", glSecondaryColorPointerListIBM == NULL);
+ glewInfoFunc(fi, "glTexCoordPointerListIBM", glTexCoordPointerListIBM == NULL);
+ glewInfoFunc(fi, "glVertexPointerListIBM", glVertexPointerListIBM == NULL);
+}
+
+#endif /* GL_IBM_vertex_array_lists */
+
+#ifdef GL_IMG_bindless_texture
+
+static void _glewInfo_GL_IMG_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_bindless_texture", GLEW_IMG_bindless_texture, glewIsSupported("GL_IMG_bindless_texture"), glewGetExtension("GL_IMG_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetTextureHandleIMG", glGetTextureHandleIMG == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleIMG", glGetTextureSamplerHandleIMG == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64IMG", glProgramUniformHandleui64IMG == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vIMG", glProgramUniformHandleui64vIMG == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64IMG", glUniformHandleui64IMG == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vIMG", glUniformHandleui64vIMG == NULL);
+}
+
+#endif /* GL_IMG_bindless_texture */
+
+#ifdef GL_IMG_framebuffer_downsample
+
+static void _glewInfo_GL_IMG_framebuffer_downsample (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_framebuffer_downsample", GLEW_IMG_framebuffer_downsample, glewIsSupported("GL_IMG_framebuffer_downsample"), glewGetExtension("GL_IMG_framebuffer_downsample"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DDownsampleIMG", glFramebufferTexture2DDownsampleIMG == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerDownsampleIMG", glFramebufferTextureLayerDownsampleIMG == NULL);
+}
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+#ifdef GL_IMG_multisampled_render_to_texture
+
+static void _glewInfo_GL_IMG_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_multisampled_render_to_texture", GLEW_IMG_multisampled_render_to_texture, glewIsSupported("GL_IMG_multisampled_render_to_texture"), glewGetExtension("GL_IMG_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DMultisampleIMG", glFramebufferTexture2DMultisampleIMG == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleIMG", glRenderbufferStorageMultisampleIMG == NULL);
+}
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+#ifdef GL_IMG_program_binary
+
+static void _glewInfo_GL_IMG_program_binary (void)
+{
+ glewPrintExt("GL_IMG_program_binary", GLEW_IMG_program_binary, glewIsSupported("GL_IMG_program_binary"), glewGetExtension("GL_IMG_program_binary"));
+}
+
+#endif /* GL_IMG_program_binary */
+
+#ifdef GL_IMG_read_format
+
+static void _glewInfo_GL_IMG_read_format (void)
+{
+ glewPrintExt("GL_IMG_read_format", GLEW_IMG_read_format, glewIsSupported("GL_IMG_read_format"), glewGetExtension("GL_IMG_read_format"));
+}
+
+#endif /* GL_IMG_read_format */
+
+#ifdef GL_IMG_shader_binary
+
+static void _glewInfo_GL_IMG_shader_binary (void)
+{
+ glewPrintExt("GL_IMG_shader_binary", GLEW_IMG_shader_binary, glewIsSupported("GL_IMG_shader_binary"), glewGetExtension("GL_IMG_shader_binary"));
+}
+
+#endif /* GL_IMG_shader_binary */
+
+#ifdef GL_IMG_texture_compression_pvrtc
+
+static void _glewInfo_GL_IMG_texture_compression_pvrtc (void)
+{
+ glewPrintExt("GL_IMG_texture_compression_pvrtc", GLEW_IMG_texture_compression_pvrtc, glewIsSupported("GL_IMG_texture_compression_pvrtc"), glewGetExtension("GL_IMG_texture_compression_pvrtc"));
+}
+
+#endif /* GL_IMG_texture_compression_pvrtc */
+
+#ifdef GL_IMG_texture_compression_pvrtc2
+
+static void _glewInfo_GL_IMG_texture_compression_pvrtc2 (void)
+{
+ glewPrintExt("GL_IMG_texture_compression_pvrtc2", GLEW_IMG_texture_compression_pvrtc2, glewIsSupported("GL_IMG_texture_compression_pvrtc2"), glewGetExtension("GL_IMG_texture_compression_pvrtc2"));
+}
+
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+
+static void _glewInfo_GL_IMG_texture_env_enhanced_fixed_function (void)
+{
+ glewPrintExt("GL_IMG_texture_env_enhanced_fixed_function", GLEW_IMG_texture_env_enhanced_fixed_function, glewIsSupported("GL_IMG_texture_env_enhanced_fixed_function"), glewGetExtension("GL_IMG_texture_env_enhanced_fixed_function"));
+}
+
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+
+#ifdef GL_IMG_texture_filter_cubic
+
+static void _glewInfo_GL_IMG_texture_filter_cubic (void)
+{
+ glewPrintExt("GL_IMG_texture_filter_cubic", GLEW_IMG_texture_filter_cubic, glewIsSupported("GL_IMG_texture_filter_cubic"), glewGetExtension("GL_IMG_texture_filter_cubic"));
+}
+
+#endif /* GL_IMG_texture_filter_cubic */
+
+#ifdef GL_IMG_tile_region_protection
+
+static void _glewInfo_GL_IMG_tile_region_protection (void)
+{
+ glewPrintExt("GL_IMG_tile_region_protection", GLEW_IMG_tile_region_protection, glewIsSupported("GL_IMG_tile_region_protection"), glewGetExtension("GL_IMG_tile_region_protection"));
+}
+
+#endif /* GL_IMG_tile_region_protection */
+
+#ifdef GL_INGR_color_clamp
+
+static void _glewInfo_GL_INGR_color_clamp (void)
+{
+ glewPrintExt("GL_INGR_color_clamp", GLEW_INGR_color_clamp, glewIsSupported("GL_INGR_color_clamp"), glewGetExtension("GL_INGR_color_clamp"));
+}
+
+#endif /* GL_INGR_color_clamp */
+
+#ifdef GL_INGR_interlace_read
+
+static void _glewInfo_GL_INGR_interlace_read (void)
+{
+ glewPrintExt("GL_INGR_interlace_read", GLEW_INGR_interlace_read, glewIsSupported("GL_INGR_interlace_read"), glewGetExtension("GL_INGR_interlace_read"));
+}
+
+#endif /* GL_INGR_interlace_read */
+
+#ifdef GL_INTEL_blackhole_render
+
+static void _glewInfo_GL_INTEL_blackhole_render (void)
+{
+ glewPrintExt("GL_INTEL_blackhole_render", GLEW_INTEL_blackhole_render, glewIsSupported("GL_INTEL_blackhole_render"), glewGetExtension("GL_INTEL_blackhole_render"));
+}
+
+#endif /* GL_INTEL_blackhole_render */
+
+#ifdef GL_INTEL_conservative_rasterization
+
+static void _glewInfo_GL_INTEL_conservative_rasterization (void)
+{
+ glewPrintExt("GL_INTEL_conservative_rasterization", GLEW_INTEL_conservative_rasterization, glewIsSupported("GL_INTEL_conservative_rasterization"), glewGetExtension("GL_INTEL_conservative_rasterization"));
+}
+
+#endif /* GL_INTEL_conservative_rasterization */
+
+#ifdef GL_INTEL_fragment_shader_ordering
+
+static void _glewInfo_GL_INTEL_fragment_shader_ordering (void)
+{
+ glewPrintExt("GL_INTEL_fragment_shader_ordering", GLEW_INTEL_fragment_shader_ordering, glewIsSupported("GL_INTEL_fragment_shader_ordering"), glewGetExtension("GL_INTEL_fragment_shader_ordering"));
+}
+
+#endif /* GL_INTEL_fragment_shader_ordering */
+
+#ifdef GL_INTEL_framebuffer_CMAA
+
+static void _glewInfo_GL_INTEL_framebuffer_CMAA (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_framebuffer_CMAA", GLEW_INTEL_framebuffer_CMAA, glewIsSupported("GL_INTEL_framebuffer_CMAA"), glewGetExtension("GL_INTEL_framebuffer_CMAA"));
+
+ glewInfoFunc(fi, "glApplyFramebufferAttachmentCMAAINTEL", glApplyFramebufferAttachmentCMAAINTEL == NULL);
+}
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+#ifdef GL_INTEL_map_texture
+
+static void _glewInfo_GL_INTEL_map_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_map_texture", GLEW_INTEL_map_texture, glewIsSupported("GL_INTEL_map_texture"), glewGetExtension("GL_INTEL_map_texture"));
+
+ glewInfoFunc(fi, "glMapTexture2DINTEL", glMapTexture2DINTEL == NULL);
+ glewInfoFunc(fi, "glSyncTextureINTEL", glSyncTextureINTEL == NULL);
+ glewInfoFunc(fi, "glUnmapTexture2DINTEL", glUnmapTexture2DINTEL == NULL);
+}
+
+#endif /* GL_INTEL_map_texture */
+
+#ifdef GL_INTEL_parallel_arrays
+
+static void _glewInfo_GL_INTEL_parallel_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_parallel_arrays", GLEW_INTEL_parallel_arrays, glewIsSupported("GL_INTEL_parallel_arrays"), glewGetExtension("GL_INTEL_parallel_arrays"));
+
+ glewInfoFunc(fi, "glColorPointervINTEL", glColorPointervINTEL == NULL);
+ glewInfoFunc(fi, "glNormalPointervINTEL", glNormalPointervINTEL == NULL);
+ glewInfoFunc(fi, "glTexCoordPointervINTEL", glTexCoordPointervINTEL == NULL);
+ glewInfoFunc(fi, "glVertexPointervINTEL", glVertexPointervINTEL == NULL);
+}
+
+#endif /* GL_INTEL_parallel_arrays */
+
+#ifdef GL_INTEL_performance_query
+
+static void _glewInfo_GL_INTEL_performance_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_performance_query", GLEW_INTEL_performance_query, glewIsSupported("GL_INTEL_performance_query"), glewGetExtension("GL_INTEL_performance_query"));
+
+ glewInfoFunc(fi, "glBeginPerfQueryINTEL", glBeginPerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glCreatePerfQueryINTEL", glCreatePerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glDeletePerfQueryINTEL", glDeletePerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glEndPerfQueryINTEL", glEndPerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glGetFirstPerfQueryIdINTEL", glGetFirstPerfQueryIdINTEL == NULL);
+ glewInfoFunc(fi, "glGetNextPerfQueryIdINTEL", glGetNextPerfQueryIdINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfCounterInfoINTEL", glGetPerfCounterInfoINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryDataINTEL", glGetPerfQueryDataINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryIdByNameINTEL", glGetPerfQueryIdByNameINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryInfoINTEL", glGetPerfQueryInfoINTEL == NULL);
+}
+
+#endif /* GL_INTEL_performance_query */
+
+#ifdef GL_INTEL_shader_integer_functions2
+
+static void _glewInfo_GL_INTEL_shader_integer_functions2 (void)
+{
+ glewPrintExt("GL_INTEL_shader_integer_functions2", GLEW_INTEL_shader_integer_functions2, glewIsSupported("GL_INTEL_shader_integer_functions2"), glewGetExtension("GL_INTEL_shader_integer_functions2"));
+}
+
+#endif /* GL_INTEL_shader_integer_functions2 */
+
+#ifdef GL_INTEL_texture_scissor
+
+static void _glewInfo_GL_INTEL_texture_scissor (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_texture_scissor", GLEW_INTEL_texture_scissor, glewIsSupported("GL_INTEL_texture_scissor"), glewGetExtension("GL_INTEL_texture_scissor"));
+
+ glewInfoFunc(fi, "glTexScissorFuncINTEL", glTexScissorFuncINTEL == NULL);
+ glewInfoFunc(fi, "glTexScissorINTEL", glTexScissorINTEL == NULL);
+}
+
+#endif /* GL_INTEL_texture_scissor */
+
+#ifdef GL_KHR_blend_equation_advanced
+
+static void _glewInfo_GL_KHR_blend_equation_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_blend_equation_advanced", GLEW_KHR_blend_equation_advanced, glewIsSupported("GL_KHR_blend_equation_advanced"), glewGetExtension("GL_KHR_blend_equation_advanced"));
+
+ glewInfoFunc(fi, "glBlendBarrierKHR", glBlendBarrierKHR == NULL);
+}
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+#ifdef GL_KHR_blend_equation_advanced_coherent
+
+static void _glewInfo_GL_KHR_blend_equation_advanced_coherent (void)
+{
+ glewPrintExt("GL_KHR_blend_equation_advanced_coherent", GLEW_KHR_blend_equation_advanced_coherent, glewIsSupported("GL_KHR_blend_equation_advanced_coherent"), glewGetExtension("GL_KHR_blend_equation_advanced_coherent"));
+}
+
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+
+#ifdef GL_KHR_context_flush_control
+
+static void _glewInfo_GL_KHR_context_flush_control (void)
+{
+ glewPrintExt("GL_KHR_context_flush_control", GLEW_KHR_context_flush_control, glewIsSupported("GL_KHR_context_flush_control"), glewGetExtension("GL_KHR_context_flush_control"));
+}
+
+#endif /* GL_KHR_context_flush_control */
+
+#ifdef GL_KHR_debug
+
+static void _glewInfo_GL_KHR_debug (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_debug", GLEW_KHR_debug, glewIsSupported("GL_KHR_debug"), glewGetExtension("GL_KHR_debug"));
+
+ glewInfoFunc(fi, "glDebugMessageCallback", glDebugMessageCallback == NULL);
+ glewInfoFunc(fi, "glDebugMessageControl", glDebugMessageControl == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsert", glDebugMessageInsert == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLog", glGetDebugMessageLog == NULL);
+ glewInfoFunc(fi, "glGetObjectLabel", glGetObjectLabel == NULL);
+ glewInfoFunc(fi, "glGetObjectPtrLabel", glGetObjectPtrLabel == NULL);
+ glewInfoFunc(fi, "glObjectLabel", glObjectLabel == NULL);
+ glewInfoFunc(fi, "glObjectPtrLabel", glObjectPtrLabel == NULL);
+ glewInfoFunc(fi, "glPopDebugGroup", glPopDebugGroup == NULL);
+ glewInfoFunc(fi, "glPushDebugGroup", glPushDebugGroup == NULL);
+}
+
+#endif /* GL_KHR_debug */
+
+#ifdef GL_KHR_no_error
+
+static void _glewInfo_GL_KHR_no_error (void)
+{
+ glewPrintExt("GL_KHR_no_error", GLEW_KHR_no_error, glewIsSupported("GL_KHR_no_error"), glewGetExtension("GL_KHR_no_error"));
+}
+
+#endif /* GL_KHR_no_error */
+
+#ifdef GL_KHR_parallel_shader_compile
+
+static void _glewInfo_GL_KHR_parallel_shader_compile (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_parallel_shader_compile", GLEW_KHR_parallel_shader_compile, glewIsSupported("GL_KHR_parallel_shader_compile"), glewGetExtension("GL_KHR_parallel_shader_compile"));
+
+ glewInfoFunc(fi, "glMaxShaderCompilerThreadsKHR", glMaxShaderCompilerThreadsKHR == NULL);
+}
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+#ifdef GL_KHR_robust_buffer_access_behavior
+
+static void _glewInfo_GL_KHR_robust_buffer_access_behavior (void)
+{
+ glewPrintExt("GL_KHR_robust_buffer_access_behavior", GLEW_KHR_robust_buffer_access_behavior, glewIsSupported("GL_KHR_robust_buffer_access_behavior"), glewGetExtension("GL_KHR_robust_buffer_access_behavior"));
+}
+
+#endif /* GL_KHR_robust_buffer_access_behavior */
+
+#ifdef GL_KHR_robustness
+
+static void _glewInfo_GL_KHR_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_robustness", GLEW_KHR_robustness, glewIsSupported("GL_KHR_robustness"), glewGetExtension("GL_KHR_robustness"));
+
+ glewInfoFunc(fi, "glGetnUniformfv", glGetnUniformfv == NULL);
+ glewInfoFunc(fi, "glGetnUniformiv", glGetnUniformiv == NULL);
+ glewInfoFunc(fi, "glGetnUniformuiv", glGetnUniformuiv == NULL);
+ glewInfoFunc(fi, "glReadnPixels", glReadnPixels == NULL);
+}
+
+#endif /* GL_KHR_robustness */
+
+#ifdef GL_KHR_shader_subgroup
+
+static void _glewInfo_GL_KHR_shader_subgroup (void)
+{
+ glewPrintExt("GL_KHR_shader_subgroup", GLEW_KHR_shader_subgroup, glewIsSupported("GL_KHR_shader_subgroup"), glewGetExtension("GL_KHR_shader_subgroup"));
+}
+
+#endif /* GL_KHR_shader_subgroup */
+
+#ifdef GL_KHR_texture_compression_astc_hdr
+
+static void _glewInfo_GL_KHR_texture_compression_astc_hdr (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_hdr", GLEW_KHR_texture_compression_astc_hdr, glewIsSupported("GL_KHR_texture_compression_astc_hdr"), glewGetExtension("GL_KHR_texture_compression_astc_hdr"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_hdr */
+
+#ifdef GL_KHR_texture_compression_astc_ldr
+
+static void _glewInfo_GL_KHR_texture_compression_astc_ldr (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_ldr", GLEW_KHR_texture_compression_astc_ldr, glewIsSupported("GL_KHR_texture_compression_astc_ldr"), glewGetExtension("GL_KHR_texture_compression_astc_ldr"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_ldr */
+
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+
+static void _glewInfo_GL_KHR_texture_compression_astc_sliced_3d (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_sliced_3d", GLEW_KHR_texture_compression_astc_sliced_3d, glewIsSupported("GL_KHR_texture_compression_astc_sliced_3d"), glewGetExtension("GL_KHR_texture_compression_astc_sliced_3d"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+
+#ifdef GL_KTX_buffer_region
+
+static void _glewInfo_GL_KTX_buffer_region (void)
+{
+ GLboolean fi = glewPrintExt("GL_KTX_buffer_region", GLEW_KTX_buffer_region, glewIsSupported("GL_KTX_buffer_region"), glewGetExtension("GL_KTX_buffer_region"));
+
+ glewInfoFunc(fi, "glBufferRegionEnabled", glBufferRegionEnabled == NULL);
+ glewInfoFunc(fi, "glDeleteBufferRegion", glDeleteBufferRegion == NULL);
+ glewInfoFunc(fi, "glDrawBufferRegion", glDrawBufferRegion == NULL);
+ glewInfoFunc(fi, "glNewBufferRegion", glNewBufferRegion == NULL);
+ glewInfoFunc(fi, "glReadBufferRegion", glReadBufferRegion == NULL);
+}
+
+#endif /* GL_KTX_buffer_region */
+
+#ifdef GL_MESAX_texture_stack
+
+static void _glewInfo_GL_MESAX_texture_stack (void)
+{
+ glewPrintExt("GL_MESAX_texture_stack", GLEW_MESAX_texture_stack, glewIsSupported("GL_MESAX_texture_stack"), glewGetExtension("GL_MESAX_texture_stack"));
+}
+
+#endif /* GL_MESAX_texture_stack */
+
+#ifdef GL_MESA_bgra
+
+static void _glewInfo_GL_MESA_bgra (void)
+{
+ glewPrintExt("GL_MESA_bgra", GLEW_MESA_bgra, glewIsSupported("GL_MESA_bgra"), glewGetExtension("GL_MESA_bgra"));
+}
+
+#endif /* GL_MESA_bgra */
+
+#ifdef GL_MESA_framebuffer_flip_x
+
+static void _glewInfo_GL_MESA_framebuffer_flip_x (void)
+{
+ glewPrintExt("GL_MESA_framebuffer_flip_x", GLEW_MESA_framebuffer_flip_x, glewIsSupported("GL_MESA_framebuffer_flip_x"), glewGetExtension("GL_MESA_framebuffer_flip_x"));
+}
+
+#endif /* GL_MESA_framebuffer_flip_x */
+
+#ifdef GL_MESA_framebuffer_flip_y
+
+static void _glewInfo_GL_MESA_framebuffer_flip_y (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_framebuffer_flip_y", GLEW_MESA_framebuffer_flip_y, glewIsSupported("GL_MESA_framebuffer_flip_y"), glewGetExtension("GL_MESA_framebuffer_flip_y"));
+
+ glewInfoFunc(fi, "glFramebufferParameteriMESA", glFramebufferParameteriMESA == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterivMESA", glGetFramebufferParameterivMESA == NULL);
+}
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+#ifdef GL_MESA_framebuffer_swap_xy
+
+static void _glewInfo_GL_MESA_framebuffer_swap_xy (void)
+{
+ glewPrintExt("GL_MESA_framebuffer_swap_xy", GLEW_MESA_framebuffer_swap_xy, glewIsSupported("GL_MESA_framebuffer_swap_xy"), glewGetExtension("GL_MESA_framebuffer_swap_xy"));
+}
+
+#endif /* GL_MESA_framebuffer_swap_xy */
+
+#ifdef GL_MESA_pack_invert
+
+static void _glewInfo_GL_MESA_pack_invert (void)
+{
+ glewPrintExt("GL_MESA_pack_invert", GLEW_MESA_pack_invert, glewIsSupported("GL_MESA_pack_invert"), glewGetExtension("GL_MESA_pack_invert"));
+}
+
+#endif /* GL_MESA_pack_invert */
+
+#ifdef GL_MESA_program_binary_formats
+
+static void _glewInfo_GL_MESA_program_binary_formats (void)
+{
+ glewPrintExt("GL_MESA_program_binary_formats", GLEW_MESA_program_binary_formats, glewIsSupported("GL_MESA_program_binary_formats"), glewGetExtension("GL_MESA_program_binary_formats"));
+}
+
+#endif /* GL_MESA_program_binary_formats */
+
+#ifdef GL_MESA_resize_buffers
+
+static void _glewInfo_GL_MESA_resize_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_resize_buffers", GLEW_MESA_resize_buffers, glewIsSupported("GL_MESA_resize_buffers"), glewGetExtension("GL_MESA_resize_buffers"));
+
+ glewInfoFunc(fi, "glResizeBuffersMESA", glResizeBuffersMESA == NULL);
+}
+
+#endif /* GL_MESA_resize_buffers */
+
+#ifdef GL_MESA_shader_integer_functions
+
+static void _glewInfo_GL_MESA_shader_integer_functions (void)
+{
+ glewPrintExt("GL_MESA_shader_integer_functions", GLEW_MESA_shader_integer_functions, glewIsSupported("GL_MESA_shader_integer_functions"), glewGetExtension("GL_MESA_shader_integer_functions"));
+}
+
+#endif /* GL_MESA_shader_integer_functions */
+
+#ifdef GL_MESA_tile_raster_order
+
+static void _glewInfo_GL_MESA_tile_raster_order (void)
+{
+ glewPrintExt("GL_MESA_tile_raster_order", GLEW_MESA_tile_raster_order, glewIsSupported("GL_MESA_tile_raster_order"), glewGetExtension("GL_MESA_tile_raster_order"));
+}
+
+#endif /* GL_MESA_tile_raster_order */
+
+#ifdef GL_MESA_window_pos
+
+static void _glewInfo_GL_MESA_window_pos (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_window_pos", GLEW_MESA_window_pos, glewIsSupported("GL_MESA_window_pos"), glewGetExtension("GL_MESA_window_pos"));
+
+ glewInfoFunc(fi, "glWindowPos2dMESA", glWindowPos2dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2dvMESA", glWindowPos2dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2fMESA", glWindowPos2fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2fvMESA", glWindowPos2fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2iMESA", glWindowPos2iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2ivMESA", glWindowPos2ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2sMESA", glWindowPos2sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2svMESA", glWindowPos2svMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3dMESA", glWindowPos3dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3dvMESA", glWindowPos3dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3fMESA", glWindowPos3fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3fvMESA", glWindowPos3fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3iMESA", glWindowPos3iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3ivMESA", glWindowPos3ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3sMESA", glWindowPos3sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3svMESA", glWindowPos3svMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4dMESA", glWindowPos4dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4dvMESA", glWindowPos4dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4fMESA", glWindowPos4fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4fvMESA", glWindowPos4fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4iMESA", glWindowPos4iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4ivMESA", glWindowPos4ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4sMESA", glWindowPos4sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4svMESA", glWindowPos4svMESA == NULL);
+}
+
+#endif /* GL_MESA_window_pos */
+
+#ifdef GL_MESA_ycbcr_texture
+
+static void _glewInfo_GL_MESA_ycbcr_texture (void)
+{
+ glewPrintExt("GL_MESA_ycbcr_texture", GLEW_MESA_ycbcr_texture, glewIsSupported("GL_MESA_ycbcr_texture"), glewGetExtension("GL_MESA_ycbcr_texture"));
+}
+
+#endif /* GL_MESA_ycbcr_texture */
+
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+
+static void _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers (void)
+{
+ glewPrintExt("GL_NVX_blend_equation_advanced_multi_draw_buffers", GLEW_NVX_blend_equation_advanced_multi_draw_buffers, glewIsSupported("GL_NVX_blend_equation_advanced_multi_draw_buffers"), glewGetExtension("GL_NVX_blend_equation_advanced_multi_draw_buffers"));
+}
+
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+
+#ifdef GL_NVX_conditional_render
+
+static void _glewInfo_GL_NVX_conditional_render (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_conditional_render", GLEW_NVX_conditional_render, glewIsSupported("GL_NVX_conditional_render"), glewGetExtension("GL_NVX_conditional_render"));
+
+ glewInfoFunc(fi, "glBeginConditionalRenderNVX", glBeginConditionalRenderNVX == NULL);
+ glewInfoFunc(fi, "glEndConditionalRenderNVX", glEndConditionalRenderNVX == NULL);
+}
+
+#endif /* GL_NVX_conditional_render */
+
+#ifdef GL_NVX_gpu_memory_info
+
+static void _glewInfo_GL_NVX_gpu_memory_info (void)
+{
+ glewPrintExt("GL_NVX_gpu_memory_info", GLEW_NVX_gpu_memory_info, glewIsSupported("GL_NVX_gpu_memory_info"), glewGetExtension("GL_NVX_gpu_memory_info"));
+}
+
+#endif /* GL_NVX_gpu_memory_info */
+
+#ifdef GL_NVX_gpu_multicast2
+
+static void _glewInfo_GL_NVX_gpu_multicast2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_gpu_multicast2", GLEW_NVX_gpu_multicast2, glewIsSupported("GL_NVX_gpu_multicast2"), glewGetExtension("GL_NVX_gpu_multicast2"));
+
+ glewInfoFunc(fi, "glAsyncCopyBufferSubDataNVX", glAsyncCopyBufferSubDataNVX == NULL);
+ glewInfoFunc(fi, "glAsyncCopyImageSubDataNVX", glAsyncCopyImageSubDataNVX == NULL);
+ glewInfoFunc(fi, "glMulticastScissorArrayvNVX", glMulticastScissorArrayvNVX == NULL);
+ glewInfoFunc(fi, "glMulticastViewportArrayvNVX", glMulticastViewportArrayvNVX == NULL);
+ glewInfoFunc(fi, "glMulticastViewportPositionWScaleNVX", glMulticastViewportPositionWScaleNVX == NULL);
+ glewInfoFunc(fi, "glUploadGpuMaskNVX", glUploadGpuMaskNVX == NULL);
+}
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+#ifdef GL_NVX_linked_gpu_multicast
+
+static void _glewInfo_GL_NVX_linked_gpu_multicast (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_linked_gpu_multicast", GLEW_NVX_linked_gpu_multicast, glewIsSupported("GL_NVX_linked_gpu_multicast"), glewGetExtension("GL_NVX_linked_gpu_multicast"));
+
+ glewInfoFunc(fi, "glLGPUCopyImageSubDataNVX", glLGPUCopyImageSubDataNVX == NULL);
+ glewInfoFunc(fi, "glLGPUInterlockNVX", glLGPUInterlockNVX == NULL);
+ glewInfoFunc(fi, "glLGPUNamedBufferSubDataNVX", glLGPUNamedBufferSubDataNVX == NULL);
+}
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+#ifdef GL_NVX_progress_fence
+
+static void _glewInfo_GL_NVX_progress_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_progress_fence", GLEW_NVX_progress_fence, glewIsSupported("GL_NVX_progress_fence"), glewGetExtension("GL_NVX_progress_fence"));
+
+ glewInfoFunc(fi, "glClientWaitSemaphoreui64NVX", glClientWaitSemaphoreui64NVX == NULL);
+ glewInfoFunc(fi, "glCreateProgressFenceNVX", glCreateProgressFenceNVX == NULL);
+ glewInfoFunc(fi, "glSignalSemaphoreui64NVX", glSignalSemaphoreui64NVX == NULL);
+ glewInfoFunc(fi, "glWaitSemaphoreui64NVX", glWaitSemaphoreui64NVX == NULL);
+}
+
+#endif /* GL_NVX_progress_fence */
+
+#ifdef GL_NV_3dvision_settings
+
+static void _glewInfo_GL_NV_3dvision_settings (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_3dvision_settings", GLEW_NV_3dvision_settings, glewIsSupported("GL_NV_3dvision_settings"), glewGetExtension("GL_NV_3dvision_settings"));
+
+ glewInfoFunc(fi, "glStereoParameterfNV", glStereoParameterfNV == NULL);
+ glewInfoFunc(fi, "glStereoParameteriNV", glStereoParameteriNV == NULL);
+}
+
+#endif /* GL_NV_3dvision_settings */
+
+#ifdef GL_NV_EGL_stream_consumer_external
+
+static void _glewInfo_GL_NV_EGL_stream_consumer_external (void)
+{
+ glewPrintExt("GL_NV_EGL_stream_consumer_external", GLEW_NV_EGL_stream_consumer_external, glewIsSupported("GL_NV_EGL_stream_consumer_external"), glewGetExtension("GL_NV_EGL_stream_consumer_external"));
+}
+
+#endif /* GL_NV_EGL_stream_consumer_external */
+
+#ifdef GL_NV_alpha_to_coverage_dither_control
+
+static void _glewInfo_GL_NV_alpha_to_coverage_dither_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_alpha_to_coverage_dither_control", GLEW_NV_alpha_to_coverage_dither_control, glewIsSupported("GL_NV_alpha_to_coverage_dither_control"), glewGetExtension("GL_NV_alpha_to_coverage_dither_control"));
+
+ glewInfoFunc(fi, "glAlphaToCoverageDitherControlNV", glAlphaToCoverageDitherControlNV == NULL);
+}
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+#ifdef GL_NV_bgr
+
+static void _glewInfo_GL_NV_bgr (void)
+{
+ glewPrintExt("GL_NV_bgr", GLEW_NV_bgr, glewIsSupported("GL_NV_bgr"), glewGetExtension("GL_NV_bgr"));
+}
+
+#endif /* GL_NV_bgr */
+
+#ifdef GL_NV_bindless_multi_draw_indirect
+
+static void _glewInfo_GL_NV_bindless_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_multi_draw_indirect", GLEW_NV_bindless_multi_draw_indirect, glewIsSupported("GL_NV_bindless_multi_draw_indirect"), glewGetExtension("GL_NV_bindless_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectBindlessNV", glMultiDrawArraysIndirectBindlessNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectBindlessNV", glMultiDrawElementsIndirectBindlessNV == NULL);
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+
+static void _glewInfo_GL_NV_bindless_multi_draw_indirect_count (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_multi_draw_indirect_count", GLEW_NV_bindless_multi_draw_indirect_count, glewIsSupported("GL_NV_bindless_multi_draw_indirect_count"), glewGetExtension("GL_NV_bindless_multi_draw_indirect_count"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectBindlessCountNV", glMultiDrawArraysIndirectBindlessCountNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectBindlessCountNV", glMultiDrawElementsIndirectBindlessCountNV == NULL);
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+#ifdef GL_NV_bindless_texture
+
+static void _glewInfo_GL_NV_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_texture", GLEW_NV_bindless_texture, glewIsSupported("GL_NV_bindless_texture"), glewGetExtension("GL_NV_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetImageHandleNV", glGetImageHandleNV == NULL);
+ glewInfoFunc(fi, "glGetTextureHandleNV", glGetTextureHandleNV == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleNV", glGetTextureSamplerHandleNV == NULL);
+ glewInfoFunc(fi, "glIsImageHandleResidentNV", glIsImageHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glIsTextureHandleResidentNV", glIsTextureHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleNonResidentNV", glMakeImageHandleNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleResidentNV", glMakeImageHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleNonResidentNV", glMakeTextureHandleNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleResidentNV", glMakeTextureHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64NV", glProgramUniformHandleui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vNV", glProgramUniformHandleui64vNV == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64NV", glUniformHandleui64NV == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vNV", glUniformHandleui64vNV == NULL);
+}
+
+#endif /* GL_NV_bindless_texture */
+
+#ifdef GL_NV_blend_equation_advanced
+
+static void _glewInfo_GL_NV_blend_equation_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_blend_equation_advanced", GLEW_NV_blend_equation_advanced, glewIsSupported("GL_NV_blend_equation_advanced"), glewGetExtension("GL_NV_blend_equation_advanced"));
+
+ glewInfoFunc(fi, "glBlendBarrierNV", glBlendBarrierNV == NULL);
+ glewInfoFunc(fi, "glBlendParameteriNV", glBlendParameteriNV == NULL);
+}
+
+#endif /* GL_NV_blend_equation_advanced */
+
+#ifdef GL_NV_blend_equation_advanced_coherent
+
+static void _glewInfo_GL_NV_blend_equation_advanced_coherent (void)
+{
+ glewPrintExt("GL_NV_blend_equation_advanced_coherent", GLEW_NV_blend_equation_advanced_coherent, glewIsSupported("GL_NV_blend_equation_advanced_coherent"), glewGetExtension("GL_NV_blend_equation_advanced_coherent"));
+}
+
+#endif /* GL_NV_blend_equation_advanced_coherent */
+
+#ifdef GL_NV_blend_minmax_factor
+
+static void _glewInfo_GL_NV_blend_minmax_factor (void)
+{
+ glewPrintExt("GL_NV_blend_minmax_factor", GLEW_NV_blend_minmax_factor, glewIsSupported("GL_NV_blend_minmax_factor"), glewGetExtension("GL_NV_blend_minmax_factor"));
+}
+
+#endif /* GL_NV_blend_minmax_factor */
+
+#ifdef GL_NV_blend_square
+
+static void _glewInfo_GL_NV_blend_square (void)
+{
+ glewPrintExt("GL_NV_blend_square", GLEW_NV_blend_square, glewIsSupported("GL_NV_blend_square"), glewGetExtension("GL_NV_blend_square"));
+}
+
+#endif /* GL_NV_blend_square */
+
+#ifdef GL_NV_clip_space_w_scaling
+
+static void _glewInfo_GL_NV_clip_space_w_scaling (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_clip_space_w_scaling", GLEW_NV_clip_space_w_scaling, glewIsSupported("GL_NV_clip_space_w_scaling"), glewGetExtension("GL_NV_clip_space_w_scaling"));
+
+ glewInfoFunc(fi, "glViewportPositionWScaleNV", glViewportPositionWScaleNV == NULL);
+}
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+#ifdef GL_NV_command_list
+
+static void _glewInfo_GL_NV_command_list (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_command_list", GLEW_NV_command_list, glewIsSupported("GL_NV_command_list"), glewGetExtension("GL_NV_command_list"));
+
+ glewInfoFunc(fi, "glCallCommandListNV", glCallCommandListNV == NULL);
+ glewInfoFunc(fi, "glCommandListSegmentsNV", glCommandListSegmentsNV == NULL);
+ glewInfoFunc(fi, "glCompileCommandListNV", glCompileCommandListNV == NULL);
+ glewInfoFunc(fi, "glCreateCommandListsNV", glCreateCommandListsNV == NULL);
+ glewInfoFunc(fi, "glCreateStatesNV", glCreateStatesNV == NULL);
+ glewInfoFunc(fi, "glDeleteCommandListsNV", glDeleteCommandListsNV == NULL);
+ glewInfoFunc(fi, "glDeleteStatesNV", glDeleteStatesNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsAddressNV", glDrawCommandsAddressNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsNV", glDrawCommandsNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsStatesAddressNV", glDrawCommandsStatesAddressNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsStatesNV", glDrawCommandsStatesNV == NULL);
+ glewInfoFunc(fi, "glGetCommandHeaderNV", glGetCommandHeaderNV == NULL);
+ glewInfoFunc(fi, "glGetStageIndexNV", glGetStageIndexNV == NULL);
+ glewInfoFunc(fi, "glIsCommandListNV", glIsCommandListNV == NULL);
+ glewInfoFunc(fi, "glIsStateNV", glIsStateNV == NULL);
+ glewInfoFunc(fi, "glListDrawCommandsStatesClientNV", glListDrawCommandsStatesClientNV == NULL);
+ glewInfoFunc(fi, "glStateCaptureNV", glStateCaptureNV == NULL);
+}
+
+#endif /* GL_NV_command_list */
+
+#ifdef GL_NV_compute_program5
+
+static void _glewInfo_GL_NV_compute_program5 (void)
+{
+ glewPrintExt("GL_NV_compute_program5", GLEW_NV_compute_program5, glewIsSupported("GL_NV_compute_program5"), glewGetExtension("GL_NV_compute_program5"));
+}
+
+#endif /* GL_NV_compute_program5 */
+
+#ifdef GL_NV_compute_shader_derivatives
+
+static void _glewInfo_GL_NV_compute_shader_derivatives (void)
+{
+ glewPrintExt("GL_NV_compute_shader_derivatives", GLEW_NV_compute_shader_derivatives, glewIsSupported("GL_NV_compute_shader_derivatives"), glewGetExtension("GL_NV_compute_shader_derivatives"));
+}
+
+#endif /* GL_NV_compute_shader_derivatives */
+
+#ifdef GL_NV_conditional_render
+
+static void _glewInfo_GL_NV_conditional_render (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conditional_render", GLEW_NV_conditional_render, glewIsSupported("GL_NV_conditional_render"), glewGetExtension("GL_NV_conditional_render"));
+
+ glewInfoFunc(fi, "glBeginConditionalRenderNV", glBeginConditionalRenderNV == NULL);
+ glewInfoFunc(fi, "glEndConditionalRenderNV", glEndConditionalRenderNV == NULL);
+}
+
+#endif /* GL_NV_conditional_render */
+
+#ifdef GL_NV_conservative_raster
+
+static void _glewInfo_GL_NV_conservative_raster (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster", GLEW_NV_conservative_raster, glewIsSupported("GL_NV_conservative_raster"), glewGetExtension("GL_NV_conservative_raster"));
+
+ glewInfoFunc(fi, "glSubpixelPrecisionBiasNV", glSubpixelPrecisionBiasNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster */
+
+#ifdef GL_NV_conservative_raster_dilate
+
+static void _glewInfo_GL_NV_conservative_raster_dilate (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster_dilate", GLEW_NV_conservative_raster_dilate, glewIsSupported("GL_NV_conservative_raster_dilate"), glewGetExtension("GL_NV_conservative_raster_dilate"));
+
+ glewInfoFunc(fi, "glConservativeRasterParameterfNV", glConservativeRasterParameterfNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+#ifdef GL_NV_conservative_raster_pre_snap
+
+static void _glewInfo_GL_NV_conservative_raster_pre_snap (void)
+{
+ glewPrintExt("GL_NV_conservative_raster_pre_snap", GLEW_NV_conservative_raster_pre_snap, glewIsSupported("GL_NV_conservative_raster_pre_snap"), glewGetExtension("GL_NV_conservative_raster_pre_snap"));
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap */
+
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+
+static void _glewInfo_GL_NV_conservative_raster_pre_snap_triangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster_pre_snap_triangles", GLEW_NV_conservative_raster_pre_snap_triangles, glewIsSupported("GL_NV_conservative_raster_pre_snap_triangles"), glewGetExtension("GL_NV_conservative_raster_pre_snap_triangles"));
+
+ glewInfoFunc(fi, "glConservativeRasterParameteriNV", glConservativeRasterParameteriNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+#ifdef GL_NV_conservative_raster_underestimation
+
+static void _glewInfo_GL_NV_conservative_raster_underestimation (void)
+{
+ glewPrintExt("GL_NV_conservative_raster_underestimation", GLEW_NV_conservative_raster_underestimation, glewIsSupported("GL_NV_conservative_raster_underestimation"), glewGetExtension("GL_NV_conservative_raster_underestimation"));
+}
+
+#endif /* GL_NV_conservative_raster_underestimation */
+
+#ifdef GL_NV_copy_buffer
+
+static void _glewInfo_GL_NV_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_copy_buffer", GLEW_NV_copy_buffer, glewIsSupported("GL_NV_copy_buffer"), glewGetExtension("GL_NV_copy_buffer"));
+
+ glewInfoFunc(fi, "glCopyBufferSubDataNV", glCopyBufferSubDataNV == NULL);
+}
+
+#endif /* GL_NV_copy_buffer */
+
+#ifdef GL_NV_copy_depth_to_color
+
+static void _glewInfo_GL_NV_copy_depth_to_color (void)
+{
+ glewPrintExt("GL_NV_copy_depth_to_color", GLEW_NV_copy_depth_to_color, glewIsSupported("GL_NV_copy_depth_to_color"), glewGetExtension("GL_NV_copy_depth_to_color"));
+}
+
+#endif /* GL_NV_copy_depth_to_color */
+
+#ifdef GL_NV_copy_image
+
+static void _glewInfo_GL_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_copy_image", GLEW_NV_copy_image, glewIsSupported("GL_NV_copy_image"), glewGetExtension("GL_NV_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataNV", glCopyImageSubDataNV == NULL);
+}
+
+#endif /* GL_NV_copy_image */
+
+#ifdef GL_NV_deep_texture3D
+
+static void _glewInfo_GL_NV_deep_texture3D (void)
+{
+ glewPrintExt("GL_NV_deep_texture3D", GLEW_NV_deep_texture3D, glewIsSupported("GL_NV_deep_texture3D"), glewGetExtension("GL_NV_deep_texture3D"));
+}
+
+#endif /* GL_NV_deep_texture3D */
+
+#ifdef GL_NV_depth_buffer_float
+
+static void _glewInfo_GL_NV_depth_buffer_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_depth_buffer_float", GLEW_NV_depth_buffer_float, glewIsSupported("GL_NV_depth_buffer_float"), glewGetExtension("GL_NV_depth_buffer_float"));
+
+ glewInfoFunc(fi, "glClearDepthdNV", glClearDepthdNV == NULL);
+ glewInfoFunc(fi, "glDepthBoundsdNV", glDepthBoundsdNV == NULL);
+ glewInfoFunc(fi, "glDepthRangedNV", glDepthRangedNV == NULL);
+}
+
+#endif /* GL_NV_depth_buffer_float */
+
+#ifdef GL_NV_depth_clamp
+
+static void _glewInfo_GL_NV_depth_clamp (void)
+{
+ glewPrintExt("GL_NV_depth_clamp", GLEW_NV_depth_clamp, glewIsSupported("GL_NV_depth_clamp"), glewGetExtension("GL_NV_depth_clamp"));
+}
+
+#endif /* GL_NV_depth_clamp */
+
+#ifdef GL_NV_depth_nonlinear
+
+static void _glewInfo_GL_NV_depth_nonlinear (void)
+{
+ glewPrintExt("GL_NV_depth_nonlinear", GLEW_NV_depth_nonlinear, glewIsSupported("GL_NV_depth_nonlinear"), glewGetExtension("GL_NV_depth_nonlinear"));
+}
+
+#endif /* GL_NV_depth_nonlinear */
+
+#ifdef GL_NV_depth_range_unclamped
+
+static void _glewInfo_GL_NV_depth_range_unclamped (void)
+{
+ glewPrintExt("GL_NV_depth_range_unclamped", GLEW_NV_depth_range_unclamped, glewIsSupported("GL_NV_depth_range_unclamped"), glewGetExtension("GL_NV_depth_range_unclamped"));
+}
+
+#endif /* GL_NV_depth_range_unclamped */
+
+#ifdef GL_NV_draw_buffers
+
+static void _glewInfo_GL_NV_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_buffers", GLEW_NV_draw_buffers, glewIsSupported("GL_NV_draw_buffers"), glewGetExtension("GL_NV_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersNV", glDrawBuffersNV == NULL);
+}
+
+#endif /* GL_NV_draw_buffers */
+
+#ifdef GL_NV_draw_instanced
+
+static void _glewInfo_GL_NV_draw_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_instanced", GLEW_NV_draw_instanced, glewIsSupported("GL_NV_draw_instanced"), glewGetExtension("GL_NV_draw_instanced"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedNV", glDrawArraysInstancedNV == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedNV", glDrawElementsInstancedNV == NULL);
+}
+
+#endif /* GL_NV_draw_instanced */
+
+#ifdef GL_NV_draw_texture
+
+static void _glewInfo_GL_NV_draw_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_texture", GLEW_NV_draw_texture, glewIsSupported("GL_NV_draw_texture"), glewGetExtension("GL_NV_draw_texture"));
+
+ glewInfoFunc(fi, "glDrawTextureNV", glDrawTextureNV == NULL);
+}
+
+#endif /* GL_NV_draw_texture */
+
+#ifdef GL_NV_draw_vulkan_image
+
+static void _glewInfo_GL_NV_draw_vulkan_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_vulkan_image", GLEW_NV_draw_vulkan_image, glewIsSupported("GL_NV_draw_vulkan_image"), glewGetExtension("GL_NV_draw_vulkan_image"));
+
+ glewInfoFunc(fi, "glDrawVkImageNV", glDrawVkImageNV == NULL);
+ glewInfoFunc(fi, "glGetVkProcAddrNV", glGetVkProcAddrNV == NULL);
+ glewInfoFunc(fi, "glSignalVkFenceNV", glSignalVkFenceNV == NULL);
+ glewInfoFunc(fi, "glSignalVkSemaphoreNV", glSignalVkSemaphoreNV == NULL);
+ glewInfoFunc(fi, "glWaitVkSemaphoreNV", glWaitVkSemaphoreNV == NULL);
+}
+
+#endif /* GL_NV_draw_vulkan_image */
+
+#ifdef GL_NV_evaluators
+
+static void _glewInfo_GL_NV_evaluators (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_evaluators", GLEW_NV_evaluators, glewIsSupported("GL_NV_evaluators"), glewGetExtension("GL_NV_evaluators"));
+
+ glewInfoFunc(fi, "glEvalMapsNV", glEvalMapsNV == NULL);
+ glewInfoFunc(fi, "glGetMapAttribParameterfvNV", glGetMapAttribParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetMapAttribParameterivNV", glGetMapAttribParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetMapControlPointsNV", glGetMapControlPointsNV == NULL);
+ glewInfoFunc(fi, "glGetMapParameterfvNV", glGetMapParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetMapParameterivNV", glGetMapParameterivNV == NULL);
+ glewInfoFunc(fi, "glMapControlPointsNV", glMapControlPointsNV == NULL);
+ glewInfoFunc(fi, "glMapParameterfvNV", glMapParameterfvNV == NULL);
+ glewInfoFunc(fi, "glMapParameterivNV", glMapParameterivNV == NULL);
+}
+
+#endif /* GL_NV_evaluators */
+
+#ifdef GL_NV_explicit_attrib_location
+
+static void _glewInfo_GL_NV_explicit_attrib_location (void)
+{
+ glewPrintExt("GL_NV_explicit_attrib_location", GLEW_NV_explicit_attrib_location, glewIsSupported("GL_NV_explicit_attrib_location"), glewGetExtension("GL_NV_explicit_attrib_location"));
+}
+
+#endif /* GL_NV_explicit_attrib_location */
+
+#ifdef GL_NV_explicit_multisample
+
+static void _glewInfo_GL_NV_explicit_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_explicit_multisample", GLEW_NV_explicit_multisample, glewIsSupported("GL_NV_explicit_multisample"), glewGetExtension("GL_NV_explicit_multisample"));
+
+ glewInfoFunc(fi, "glGetMultisamplefvNV", glGetMultisamplefvNV == NULL);
+ glewInfoFunc(fi, "glSampleMaskIndexedNV", glSampleMaskIndexedNV == NULL);
+ glewInfoFunc(fi, "glTexRenderbufferNV", glTexRenderbufferNV == NULL);
+}
+
+#endif /* GL_NV_explicit_multisample */
+
+#ifdef GL_NV_fbo_color_attachments
+
+static void _glewInfo_GL_NV_fbo_color_attachments (void)
+{
+ glewPrintExt("GL_NV_fbo_color_attachments", GLEW_NV_fbo_color_attachments, glewIsSupported("GL_NV_fbo_color_attachments"), glewGetExtension("GL_NV_fbo_color_attachments"));
+}
+
+#endif /* GL_NV_fbo_color_attachments */
+
+#ifdef GL_NV_fence
+
+static void _glewInfo_GL_NV_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fence", GLEW_NV_fence, glewIsSupported("GL_NV_fence"), glewGetExtension("GL_NV_fence"));
+
+ glewInfoFunc(fi, "glDeleteFencesNV", glDeleteFencesNV == NULL);
+ glewInfoFunc(fi, "glFinishFenceNV", glFinishFenceNV == NULL);
+ glewInfoFunc(fi, "glGenFencesNV", glGenFencesNV == NULL);
+ glewInfoFunc(fi, "glGetFenceivNV", glGetFenceivNV == NULL);
+ glewInfoFunc(fi, "glIsFenceNV", glIsFenceNV == NULL);
+ glewInfoFunc(fi, "glSetFenceNV", glSetFenceNV == NULL);
+ glewInfoFunc(fi, "glTestFenceNV", glTestFenceNV == NULL);
+}
+
+#endif /* GL_NV_fence */
+
+#ifdef GL_NV_fill_rectangle
+
+static void _glewInfo_GL_NV_fill_rectangle (void)
+{
+ glewPrintExt("GL_NV_fill_rectangle", GLEW_NV_fill_rectangle, glewIsSupported("GL_NV_fill_rectangle"), glewGetExtension("GL_NV_fill_rectangle"));
+}
+
+#endif /* GL_NV_fill_rectangle */
+
+#ifdef GL_NV_float_buffer
+
+static void _glewInfo_GL_NV_float_buffer (void)
+{
+ glewPrintExt("GL_NV_float_buffer", GLEW_NV_float_buffer, glewIsSupported("GL_NV_float_buffer"), glewGetExtension("GL_NV_float_buffer"));
+}
+
+#endif /* GL_NV_float_buffer */
+
+#ifdef GL_NV_fog_distance
+
+static void _glewInfo_GL_NV_fog_distance (void)
+{
+ glewPrintExt("GL_NV_fog_distance", GLEW_NV_fog_distance, glewIsSupported("GL_NV_fog_distance"), glewGetExtension("GL_NV_fog_distance"));
+}
+
+#endif /* GL_NV_fog_distance */
+
+#ifdef GL_NV_fragment_coverage_to_color
+
+static void _glewInfo_GL_NV_fragment_coverage_to_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fragment_coverage_to_color", GLEW_NV_fragment_coverage_to_color, glewIsSupported("GL_NV_fragment_coverage_to_color"), glewGetExtension("GL_NV_fragment_coverage_to_color"));
+
+ glewInfoFunc(fi, "glFragmentCoverageColorNV", glFragmentCoverageColorNV == NULL);
+}
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+#ifdef GL_NV_fragment_program
+
+static void _glewInfo_GL_NV_fragment_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fragment_program", GLEW_NV_fragment_program, glewIsSupported("GL_NV_fragment_program"), glewGetExtension("GL_NV_fragment_program"));
+
+ glewInfoFunc(fi, "glGetProgramNamedParameterdvNV", glGetProgramNamedParameterdvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramNamedParameterfvNV", glGetProgramNamedParameterfvNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4dNV", glProgramNamedParameter4dNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4dvNV", glProgramNamedParameter4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4fNV", glProgramNamedParameter4fNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4fvNV", glProgramNamedParameter4fvNV == NULL);
+}
+
+#endif /* GL_NV_fragment_program */
+
+#ifdef GL_NV_fragment_program2
+
+static void _glewInfo_GL_NV_fragment_program2 (void)
+{
+ glewPrintExt("GL_NV_fragment_program2", GLEW_NV_fragment_program2, glewIsSupported("GL_NV_fragment_program2"), glewGetExtension("GL_NV_fragment_program2"));
+}
+
+#endif /* GL_NV_fragment_program2 */
+
+#ifdef GL_NV_fragment_program4
+
+static void _glewInfo_GL_NV_fragment_program4 (void)
+{
+ glewPrintExt("GL_NV_fragment_program4", GLEW_NV_fragment_program4, glewIsSupported("GL_NV_fragment_program4"), glewGetExtension("GL_NV_gpu_program4"));
+}
+
+#endif /* GL_NV_fragment_program4 */
+
+#ifdef GL_NV_fragment_program_option
+
+static void _glewInfo_GL_NV_fragment_program_option (void)
+{
+ glewPrintExt("GL_NV_fragment_program_option", GLEW_NV_fragment_program_option, glewIsSupported("GL_NV_fragment_program_option"), glewGetExtension("GL_NV_fragment_program_option"));
+}
+
+#endif /* GL_NV_fragment_program_option */
+
+#ifdef GL_NV_fragment_shader_barycentric
+
+static void _glewInfo_GL_NV_fragment_shader_barycentric (void)
+{
+ glewPrintExt("GL_NV_fragment_shader_barycentric", GLEW_NV_fragment_shader_barycentric, glewIsSupported("GL_NV_fragment_shader_barycentric"), glewGetExtension("GL_NV_fragment_shader_barycentric"));
+}
+
+#endif /* GL_NV_fragment_shader_barycentric */
+
+#ifdef GL_NV_fragment_shader_interlock
+
+static void _glewInfo_GL_NV_fragment_shader_interlock (void)
+{
+ glewPrintExt("GL_NV_fragment_shader_interlock", GLEW_NV_fragment_shader_interlock, glewIsSupported("GL_NV_fragment_shader_interlock"), glewGetExtension("GL_NV_fragment_shader_interlock"));
+}
+
+#endif /* GL_NV_fragment_shader_interlock */
+
+#ifdef GL_NV_framebuffer_blit
+
+static void _glewInfo_GL_NV_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_blit", GLEW_NV_framebuffer_blit, glewIsSupported("GL_NV_framebuffer_blit"), glewGetExtension("GL_NV_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferNV", glBlitFramebufferNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_blit */
+
+#ifdef GL_NV_framebuffer_mixed_samples
+
+static void _glewInfo_GL_NV_framebuffer_mixed_samples (void)
+{
+ glewPrintExt("GL_NV_framebuffer_mixed_samples", GLEW_NV_framebuffer_mixed_samples, glewIsSupported("GL_NV_framebuffer_mixed_samples"), glewGetExtension("GL_NV_framebuffer_mixed_samples"));
+}
+
+#endif /* GL_NV_framebuffer_mixed_samples */
+
+#ifdef GL_NV_framebuffer_multisample
+
+static void _glewInfo_GL_NV_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_multisample", GLEW_NV_framebuffer_multisample, glewIsSupported("GL_NV_framebuffer_multisample"), glewGetExtension("GL_NV_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleNV", glRenderbufferStorageMultisampleNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_multisample */
+
+#ifdef GL_NV_framebuffer_multisample_coverage
+
+static void _glewInfo_GL_NV_framebuffer_multisample_coverage (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_multisample_coverage", GLEW_NV_framebuffer_multisample_coverage, glewIsSupported("GL_NV_framebuffer_multisample_coverage"), glewGetExtension("GL_NV_framebuffer_multisample_coverage"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleCoverageNV", glRenderbufferStorageMultisampleCoverageNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef GL_NV_generate_mipmap_sRGB
+
+static void _glewInfo_GL_NV_generate_mipmap_sRGB (void)
+{
+ glewPrintExt("GL_NV_generate_mipmap_sRGB", GLEW_NV_generate_mipmap_sRGB, glewIsSupported("GL_NV_generate_mipmap_sRGB"), glewGetExtension("GL_NV_generate_mipmap_sRGB"));
+}
+
+#endif /* GL_NV_generate_mipmap_sRGB */
+
+#ifdef GL_NV_geometry_program4
+
+static void _glewInfo_GL_NV_geometry_program4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_geometry_program4", GLEW_NV_geometry_program4, glewIsSupported("GL_NV_geometry_program4"), glewGetExtension("GL_NV_gpu_program4"));
+
+ glewInfoFunc(fi, "glProgramVertexLimitNV", glProgramVertexLimitNV == NULL);
+}
+
+#endif /* GL_NV_geometry_program4 */
+
+#ifdef GL_NV_geometry_shader4
+
+static void _glewInfo_GL_NV_geometry_shader4 (void)
+{
+ glewPrintExt("GL_NV_geometry_shader4", GLEW_NV_geometry_shader4, glewIsSupported("GL_NV_geometry_shader4"), glewGetExtension("GL_NV_geometry_shader4"));
+}
+
+#endif /* GL_NV_geometry_shader4 */
+
+#ifdef GL_NV_geometry_shader_passthrough
+
+static void _glewInfo_GL_NV_geometry_shader_passthrough (void)
+{
+ glewPrintExt("GL_NV_geometry_shader_passthrough", GLEW_NV_geometry_shader_passthrough, glewIsSupported("GL_NV_geometry_shader_passthrough"), glewGetExtension("GL_NV_geometry_shader_passthrough"));
+}
+
+#endif /* GL_NV_geometry_shader_passthrough */
+
+#ifdef GL_NV_gpu_multicast
+
+static void _glewInfo_GL_NV_gpu_multicast (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_multicast", GLEW_NV_gpu_multicast, glewIsSupported("GL_NV_gpu_multicast"), glewGetExtension("GL_NV_gpu_multicast"));
+
+ glewInfoFunc(fi, "glMulticastBarrierNV", glMulticastBarrierNV == NULL);
+ glewInfoFunc(fi, "glMulticastBlitFramebufferNV", glMulticastBlitFramebufferNV == NULL);
+ glewInfoFunc(fi, "glMulticastBufferSubDataNV", glMulticastBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastCopyBufferSubDataNV", glMulticastCopyBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastCopyImageSubDataNV", glMulticastCopyImageSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastFramebufferSampleLocationsfvNV", glMulticastFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjecti64vNV", glMulticastGetQueryObjecti64vNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectivNV", glMulticastGetQueryObjectivNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectui64vNV", glMulticastGetQueryObjectui64vNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectuivNV", glMulticastGetQueryObjectuivNV == NULL);
+ glewInfoFunc(fi, "glMulticastWaitSyncNV", glMulticastWaitSyncNV == NULL);
+ glewInfoFunc(fi, "glRenderGpuMaskNV", glRenderGpuMaskNV == NULL);
+}
+
+#endif /* GL_NV_gpu_multicast */
+
+#ifdef GL_NV_gpu_program4
+
+static void _glewInfo_GL_NV_gpu_program4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_program4", GLEW_NV_gpu_program4, glewIsSupported("GL_NV_gpu_program4"), glewGetExtension("GL_NV_gpu_program4"));
+
+ glewInfoFunc(fi, "glProgramEnvParameterI4iNV", glProgramEnvParameterI4iNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4ivNV", glProgramEnvParameterI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4uiNV", glProgramEnvParameterI4uiNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4uivNV", glProgramEnvParameterI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParametersI4ivNV", glProgramEnvParametersI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParametersI4uivNV", glProgramEnvParametersI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4iNV", glProgramLocalParameterI4iNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4ivNV", glProgramLocalParameterI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4uiNV", glProgramLocalParameterI4uiNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4uivNV", glProgramLocalParameterI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParametersI4ivNV", glProgramLocalParametersI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParametersI4uivNV", glProgramLocalParametersI4uivNV == NULL);
+}
+
+#endif /* GL_NV_gpu_program4 */
+
+#ifdef GL_NV_gpu_program5
+
+static void _glewInfo_GL_NV_gpu_program5 (void)
+{
+ glewPrintExt("GL_NV_gpu_program5", GLEW_NV_gpu_program5, glewIsSupported("GL_NV_gpu_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_gpu_program5 */
+
+#ifdef GL_NV_gpu_program5_mem_extended
+
+static void _glewInfo_GL_NV_gpu_program5_mem_extended (void)
+{
+ glewPrintExt("GL_NV_gpu_program5_mem_extended", GLEW_NV_gpu_program5_mem_extended, glewIsSupported("GL_NV_gpu_program5_mem_extended"), glewGetExtension("GL_NV_gpu_program5_mem_extended"));
+}
+
+#endif /* GL_NV_gpu_program5_mem_extended */
+
+#ifdef GL_NV_gpu_program_fp64
+
+static void _glewInfo_GL_NV_gpu_program_fp64 (void)
+{
+ glewPrintExt("GL_NV_gpu_program_fp64", GLEW_NV_gpu_program_fp64, glewIsSupported("GL_NV_gpu_program_fp64"), glewGetExtension("GL_NV_gpu_program_fp64"));
+}
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+#ifdef GL_NV_gpu_shader5
+
+static void _glewInfo_GL_NV_gpu_shader5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_shader5", GLEW_NV_gpu_shader5, glewIsSupported("GL_NV_gpu_shader5"), glewGetExtension("GL_NV_gpu_shader5"));
+
+ glewInfoFunc(fi, "glGetUniformi64vNV", glGetUniformi64vNV == NULL);
+ glewInfoFunc(fi, "glGetUniformui64vNV", glGetUniformui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64NV", glProgramUniform1i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64vNV", glProgramUniform1i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64NV", glProgramUniform1ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64vNV", glProgramUniform1ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64NV", glProgramUniform2i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64vNV", glProgramUniform2i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64NV", glProgramUniform2ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64vNV", glProgramUniform2ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64NV", glProgramUniform3i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64vNV", glProgramUniform3i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64NV", glProgramUniform3ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64vNV", glProgramUniform3ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64NV", glProgramUniform4i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64vNV", glProgramUniform4i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64NV", glProgramUniform4ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64vNV", glProgramUniform4ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform1i64NV", glUniform1i64NV == NULL);
+ glewInfoFunc(fi, "glUniform1i64vNV", glUniform1i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform1ui64NV", glUniform1ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform1ui64vNV", glUniform1ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform2i64NV", glUniform2i64NV == NULL);
+ glewInfoFunc(fi, "glUniform2i64vNV", glUniform2i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform2ui64NV", glUniform2ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform2ui64vNV", glUniform2ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform3i64NV", glUniform3i64NV == NULL);
+ glewInfoFunc(fi, "glUniform3i64vNV", glUniform3i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform3ui64NV", glUniform3ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform3ui64vNV", glUniform3ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform4i64NV", glUniform4i64NV == NULL);
+ glewInfoFunc(fi, "glUniform4i64vNV", glUniform4i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform4ui64NV", glUniform4ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform4ui64vNV", glUniform4ui64vNV == NULL);
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
+#ifdef GL_NV_half_float
+
+static void _glewInfo_GL_NV_half_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_half_float", GLEW_NV_half_float, glewIsSupported("GL_NV_half_float"), glewGetExtension("GL_NV_half_float"));
+
+ glewInfoFunc(fi, "glColor3hNV", glColor3hNV == NULL);
+ glewInfoFunc(fi, "glColor3hvNV", glColor3hvNV == NULL);
+ glewInfoFunc(fi, "glColor4hNV", glColor4hNV == NULL);
+ glewInfoFunc(fi, "glColor4hvNV", glColor4hvNV == NULL);
+ glewInfoFunc(fi, "glFogCoordhNV", glFogCoordhNV == NULL);
+ glewInfoFunc(fi, "glFogCoordhvNV", glFogCoordhvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1hNV", glMultiTexCoord1hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1hvNV", glMultiTexCoord1hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2hNV", glMultiTexCoord2hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2hvNV", glMultiTexCoord2hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3hNV", glMultiTexCoord3hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3hvNV", glMultiTexCoord3hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4hNV", glMultiTexCoord4hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4hvNV", glMultiTexCoord4hvNV == NULL);
+ glewInfoFunc(fi, "glNormal3hNV", glNormal3hNV == NULL);
+ glewInfoFunc(fi, "glNormal3hvNV", glNormal3hvNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3hNV", glSecondaryColor3hNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3hvNV", glSecondaryColor3hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord1hNV", glTexCoord1hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord1hvNV", glTexCoord1hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord2hNV", glTexCoord2hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord2hvNV", glTexCoord2hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord3hNV", glTexCoord3hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord3hvNV", glTexCoord3hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord4hNV", glTexCoord4hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord4hvNV", glTexCoord4hvNV == NULL);
+ glewInfoFunc(fi, "glVertex2hNV", glVertex2hNV == NULL);
+ glewInfoFunc(fi, "glVertex2hvNV", glVertex2hvNV == NULL);
+ glewInfoFunc(fi, "glVertex3hNV", glVertex3hNV == NULL);
+ glewInfoFunc(fi, "glVertex3hvNV", glVertex3hvNV == NULL);
+ glewInfoFunc(fi, "glVertex4hNV", glVertex4hNV == NULL);
+ glewInfoFunc(fi, "glVertex4hvNV", glVertex4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1hNV", glVertexAttrib1hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1hvNV", glVertexAttrib1hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2hNV", glVertexAttrib2hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2hvNV", glVertexAttrib2hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3hNV", glVertexAttrib3hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3hvNV", glVertexAttrib3hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4hNV", glVertexAttrib4hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4hvNV", glVertexAttrib4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1hvNV", glVertexAttribs1hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2hvNV", glVertexAttribs2hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3hvNV", glVertexAttribs3hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4hvNV", glVertexAttribs4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexWeighthNV", glVertexWeighthNV == NULL);
+ glewInfoFunc(fi, "glVertexWeighthvNV", glVertexWeighthvNV == NULL);
+}
+
+#endif /* GL_NV_half_float */
+
+#ifdef GL_NV_image_formats
+
+static void _glewInfo_GL_NV_image_formats (void)
+{
+ glewPrintExt("GL_NV_image_formats", GLEW_NV_image_formats, glewIsSupported("GL_NV_image_formats"), glewGetExtension("GL_NV_image_formats"));
+}
+
+#endif /* GL_NV_image_formats */
+
+#ifdef GL_NV_instanced_arrays
+
+static void _glewInfo_GL_NV_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_instanced_arrays", GLEW_NV_instanced_arrays, glewIsSupported("GL_NV_instanced_arrays"), glewGetExtension("GL_NV_instanced_arrays"));
+
+ glewInfoFunc(fi, "glVertexAttribDivisorNV", glVertexAttribDivisorNV == NULL);
+}
+
+#endif /* GL_NV_instanced_arrays */
+
+#ifdef GL_NV_internalformat_sample_query
+
+static void _glewInfo_GL_NV_internalformat_sample_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_internalformat_sample_query", GLEW_NV_internalformat_sample_query, glewIsSupported("GL_NV_internalformat_sample_query"), glewGetExtension("GL_NV_internalformat_sample_query"));
+
+ glewInfoFunc(fi, "glGetInternalformatSampleivNV", glGetInternalformatSampleivNV == NULL);
+}
+
+#endif /* GL_NV_internalformat_sample_query */
+
+#ifdef GL_NV_light_max_exponent
+
+static void _glewInfo_GL_NV_light_max_exponent (void)
+{
+ glewPrintExt("GL_NV_light_max_exponent", GLEW_NV_light_max_exponent, glewIsSupported("GL_NV_light_max_exponent"), glewGetExtension("GL_NV_light_max_exponent"));
+}
+
+#endif /* GL_NV_light_max_exponent */
+
+#ifdef GL_NV_memory_attachment
+
+static void _glewInfo_GL_NV_memory_attachment (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_memory_attachment", GLEW_NV_memory_attachment, glewIsSupported("GL_NV_memory_attachment"), glewGetExtension("GL_NV_memory_attachment"));
+
+ glewInfoFunc(fi, "glBufferAttachMemoryNV", glBufferAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glGetMemoryObjectDetachedResourcesuivNV", glGetMemoryObjectDetachedResourcesuivNV == NULL);
+ glewInfoFunc(fi, "glNamedBufferAttachMemoryNV", glNamedBufferAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glResetMemoryObjectParameterNV", glResetMemoryObjectParameterNV == NULL);
+ glewInfoFunc(fi, "glTexAttachMemoryNV", glTexAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glTextureAttachMemoryNV", glTextureAttachMemoryNV == NULL);
+}
+
+#endif /* GL_NV_memory_attachment */
+
+#ifdef GL_NV_memory_object_sparse
+
+static void _glewInfo_GL_NV_memory_object_sparse (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_memory_object_sparse", GLEW_NV_memory_object_sparse, glewIsSupported("GL_NV_memory_object_sparse"), glewGetExtension("GL_NV_memory_object_sparse"));
+
+ glewInfoFunc(fi, "glBufferPageCommitmentMemNV", glBufferPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glNamedBufferPageCommitmentMemNV", glNamedBufferPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glTexPageCommitmentMemNV", glTexPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glTexturePageCommitmentMemNV", glTexturePageCommitmentMemNV == NULL);
+}
+
+#endif /* GL_NV_memory_object_sparse */
+
+#ifdef GL_NV_mesh_shader
+
+static void _glewInfo_GL_NV_mesh_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_mesh_shader", GLEW_NV_mesh_shader, glewIsSupported("GL_NV_mesh_shader"), glewGetExtension("GL_NV_mesh_shader"));
+
+ glewInfoFunc(fi, "glDrawMeshTasksIndirectNV", glDrawMeshTasksIndirectNV == NULL);
+ glewInfoFunc(fi, "glDrawMeshTasksNV", glDrawMeshTasksNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawMeshTasksIndirectCountNV", glMultiDrawMeshTasksIndirectCountNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawMeshTasksIndirectNV", glMultiDrawMeshTasksIndirectNV == NULL);
+}
+
+#endif /* GL_NV_mesh_shader */
+
+#ifdef GL_NV_multisample_coverage
+
+static void _glewInfo_GL_NV_multisample_coverage (void)
+{
+ glewPrintExt("GL_NV_multisample_coverage", GLEW_NV_multisample_coverage, glewIsSupported("GL_NV_multisample_coverage"), glewGetExtension("GL_NV_multisample_coverage"));
+}
+
+#endif /* GL_NV_multisample_coverage */
+
+#ifdef GL_NV_multisample_filter_hint
+
+static void _glewInfo_GL_NV_multisample_filter_hint (void)
+{
+ glewPrintExt("GL_NV_multisample_filter_hint", GLEW_NV_multisample_filter_hint, glewIsSupported("GL_NV_multisample_filter_hint"), glewGetExtension("GL_NV_multisample_filter_hint"));
+}
+
+#endif /* GL_NV_multisample_filter_hint */
+
+#ifdef GL_NV_non_square_matrices
+
+static void _glewInfo_GL_NV_non_square_matrices (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_non_square_matrices", GLEW_NV_non_square_matrices, glewIsSupported("GL_NV_non_square_matrices"), glewGetExtension("GL_NV_non_square_matrices"));
+
+ glewInfoFunc(fi, "glUniformMatrix2x3fvNV", glUniformMatrix2x3fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4fvNV", glUniformMatrix2x4fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2fvNV", glUniformMatrix3x2fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4fvNV", glUniformMatrix3x4fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2fvNV", glUniformMatrix4x2fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3fvNV", glUniformMatrix4x3fvNV == NULL);
+}
+
+#endif /* GL_NV_non_square_matrices */
+
+#ifdef GL_NV_occlusion_query
+
+static void _glewInfo_GL_NV_occlusion_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_occlusion_query", GLEW_NV_occlusion_query, glewIsSupported("GL_NV_occlusion_query"), glewGetExtension("GL_NV_occlusion_query"));
+
+ glewInfoFunc(fi, "glBeginOcclusionQueryNV", glBeginOcclusionQueryNV == NULL);
+ glewInfoFunc(fi, "glDeleteOcclusionQueriesNV", glDeleteOcclusionQueriesNV == NULL);
+ glewInfoFunc(fi, "glEndOcclusionQueryNV", glEndOcclusionQueryNV == NULL);
+ glewInfoFunc(fi, "glGenOcclusionQueriesNV", glGenOcclusionQueriesNV == NULL);
+ glewInfoFunc(fi, "glGetOcclusionQueryivNV", glGetOcclusionQueryivNV == NULL);
+ glewInfoFunc(fi, "glGetOcclusionQueryuivNV", glGetOcclusionQueryuivNV == NULL);
+ glewInfoFunc(fi, "glIsOcclusionQueryNV", glIsOcclusionQueryNV == NULL);
+}
+
+#endif /* GL_NV_occlusion_query */
+
+#ifdef GL_NV_pack_subimage
+
+static void _glewInfo_GL_NV_pack_subimage (void)
+{
+ glewPrintExt("GL_NV_pack_subimage", GLEW_NV_pack_subimage, glewIsSupported("GL_NV_pack_subimage"), glewGetExtension("GL_NV_pack_subimage"));
+}
+
+#endif /* GL_NV_pack_subimage */
+
+#ifdef GL_NV_packed_depth_stencil
+
+static void _glewInfo_GL_NV_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_NV_packed_depth_stencil", GLEW_NV_packed_depth_stencil, glewIsSupported("GL_NV_packed_depth_stencil"), glewGetExtension("GL_NV_packed_depth_stencil"));
+}
+
+#endif /* GL_NV_packed_depth_stencil */
+
+#ifdef GL_NV_packed_float
+
+static void _glewInfo_GL_NV_packed_float (void)
+{
+ glewPrintExt("GL_NV_packed_float", GLEW_NV_packed_float, glewIsSupported("GL_NV_packed_float"), glewGetExtension("GL_NV_packed_float"));
+}
+
+#endif /* GL_NV_packed_float */
+
+#ifdef GL_NV_packed_float_linear
+
+static void _glewInfo_GL_NV_packed_float_linear (void)
+{
+ glewPrintExt("GL_NV_packed_float_linear", GLEW_NV_packed_float_linear, glewIsSupported("GL_NV_packed_float_linear"), glewGetExtension("GL_NV_packed_float_linear"));
+}
+
+#endif /* GL_NV_packed_float_linear */
+
+#ifdef GL_NV_parameter_buffer_object
+
+static void _glewInfo_GL_NV_parameter_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_parameter_buffer_object", GLEW_NV_parameter_buffer_object, glewIsSupported("GL_NV_parameter_buffer_object"), glewGetExtension("GL_NV_parameter_buffer_object"));
+
+ glewInfoFunc(fi, "glProgramBufferParametersIivNV", glProgramBufferParametersIivNV == NULL);
+ glewInfoFunc(fi, "glProgramBufferParametersIuivNV", glProgramBufferParametersIuivNV == NULL);
+ glewInfoFunc(fi, "glProgramBufferParametersfvNV", glProgramBufferParametersfvNV == NULL);
+}
+
+#endif /* GL_NV_parameter_buffer_object */
+
+#ifdef GL_NV_parameter_buffer_object2
+
+static void _glewInfo_GL_NV_parameter_buffer_object2 (void)
+{
+ glewPrintExt("GL_NV_parameter_buffer_object2", GLEW_NV_parameter_buffer_object2, glewIsSupported("GL_NV_parameter_buffer_object2"), glewGetExtension("GL_NV_parameter_buffer_object2"));
+}
+
+#endif /* GL_NV_parameter_buffer_object2 */
+
+#ifdef GL_NV_path_rendering
+
+static void _glewInfo_GL_NV_path_rendering (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_path_rendering", GLEW_NV_path_rendering, glewIsSupported("GL_NV_path_rendering"), glewGetExtension("GL_NV_path_rendering"));
+
+ glewInfoFunc(fi, "glCopyPathNV", glCopyPathNV == NULL);
+ glewInfoFunc(fi, "glCoverFillPathInstancedNV", glCoverFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glCoverFillPathNV", glCoverFillPathNV == NULL);
+ glewInfoFunc(fi, "glCoverStrokePathInstancedNV", glCoverStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glCoverStrokePathNV", glCoverStrokePathNV == NULL);
+ glewInfoFunc(fi, "glDeletePathsNV", glDeletePathsNV == NULL);
+ glewInfoFunc(fi, "glGenPathsNV", glGenPathsNV == NULL);
+ glewInfoFunc(fi, "glGetPathColorGenfvNV", glGetPathColorGenfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathColorGenivNV", glGetPathColorGenivNV == NULL);
+ glewInfoFunc(fi, "glGetPathCommandsNV", glGetPathCommandsNV == NULL);
+ glewInfoFunc(fi, "glGetPathCoordsNV", glGetPathCoordsNV == NULL);
+ glewInfoFunc(fi, "glGetPathDashArrayNV", glGetPathDashArrayNV == NULL);
+ glewInfoFunc(fi, "glGetPathLengthNV", glGetPathLengthNV == NULL);
+ glewInfoFunc(fi, "glGetPathMetricRangeNV", glGetPathMetricRangeNV == NULL);
+ glewInfoFunc(fi, "glGetPathMetricsNV", glGetPathMetricsNV == NULL);
+ glewInfoFunc(fi, "glGetPathParameterfvNV", glGetPathParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathParameterivNV", glGetPathParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetPathSpacingNV", glGetPathSpacingNV == NULL);
+ glewInfoFunc(fi, "glGetPathTexGenfvNV", glGetPathTexGenfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathTexGenivNV", glGetPathTexGenivNV == NULL);
+ glewInfoFunc(fi, "glGetProgramResourcefvNV", glGetProgramResourcefvNV == NULL);
+ glewInfoFunc(fi, "glInterpolatePathsNV", glInterpolatePathsNV == NULL);
+ glewInfoFunc(fi, "glIsPathNV", glIsPathNV == NULL);
+ glewInfoFunc(fi, "glIsPointInFillPathNV", glIsPointInFillPathNV == NULL);
+ glewInfoFunc(fi, "glIsPointInStrokePathNV", glIsPointInStrokePathNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoad3x2fNV", glMatrixLoad3x2fNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoad3x3fNV", glMatrixLoad3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTranspose3x3fNV", glMatrixLoadTranspose3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMult3x2fNV", glMatrixMult3x2fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMult3x3fNV", glMatrixMult3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMultTranspose3x3fNV", glMatrixMultTranspose3x3fNV == NULL);
+ glewInfoFunc(fi, "glPathColorGenNV", glPathColorGenNV == NULL);
+ glewInfoFunc(fi, "glPathCommandsNV", glPathCommandsNV == NULL);
+ glewInfoFunc(fi, "glPathCoordsNV", glPathCoordsNV == NULL);
+ glewInfoFunc(fi, "glPathCoverDepthFuncNV", glPathCoverDepthFuncNV == NULL);
+ glewInfoFunc(fi, "glPathDashArrayNV", glPathDashArrayNV == NULL);
+ glewInfoFunc(fi, "glPathFogGenNV", glPathFogGenNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphIndexArrayNV", glPathGlyphIndexArrayNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphIndexRangeNV", glPathGlyphIndexRangeNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphRangeNV", glPathGlyphRangeNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphsNV", glPathGlyphsNV == NULL);
+ glewInfoFunc(fi, "glPathMemoryGlyphIndexArrayNV", glPathMemoryGlyphIndexArrayNV == NULL);
+ glewInfoFunc(fi, "glPathParameterfNV", glPathParameterfNV == NULL);
+ glewInfoFunc(fi, "glPathParameterfvNV", glPathParameterfvNV == NULL);
+ glewInfoFunc(fi, "glPathParameteriNV", glPathParameteriNV == NULL);
+ glewInfoFunc(fi, "glPathParameterivNV", glPathParameterivNV == NULL);
+ glewInfoFunc(fi, "glPathStencilDepthOffsetNV", glPathStencilDepthOffsetNV == NULL);
+ glewInfoFunc(fi, "glPathStencilFuncNV", glPathStencilFuncNV == NULL);
+ glewInfoFunc(fi, "glPathStringNV", glPathStringNV == NULL);
+ glewInfoFunc(fi, "glPathSubCommandsNV", glPathSubCommandsNV == NULL);
+ glewInfoFunc(fi, "glPathSubCoordsNV", glPathSubCoordsNV == NULL);
+ glewInfoFunc(fi, "glPathTexGenNV", glPathTexGenNV == NULL);
+ glewInfoFunc(fi, "glPointAlongPathNV", glPointAlongPathNV == NULL);
+ glewInfoFunc(fi, "glProgramPathFragmentInputGenNV", glProgramPathFragmentInputGenNV == NULL);
+ glewInfoFunc(fi, "glStencilFillPathInstancedNV", glStencilFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilFillPathNV", glStencilFillPathNV == NULL);
+ glewInfoFunc(fi, "glStencilStrokePathInstancedNV", glStencilStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilStrokePathNV", glStencilStrokePathNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverFillPathInstancedNV", glStencilThenCoverFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverFillPathNV", glStencilThenCoverFillPathNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverStrokePathInstancedNV", glStencilThenCoverStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverStrokePathNV", glStencilThenCoverStrokePathNV == NULL);
+ glewInfoFunc(fi, "glTransformPathNV", glTransformPathNV == NULL);
+ glewInfoFunc(fi, "glWeightPathsNV", glWeightPathsNV == NULL);
+}
+
+#endif /* GL_NV_path_rendering */
+
+#ifdef GL_NV_path_rendering_shared_edge
+
+static void _glewInfo_GL_NV_path_rendering_shared_edge (void)
+{
+ glewPrintExt("GL_NV_path_rendering_shared_edge", GLEW_NV_path_rendering_shared_edge, glewIsSupported("GL_NV_path_rendering_shared_edge"), glewGetExtension("GL_NV_path_rendering_shared_edge"));
+}
+
+#endif /* GL_NV_path_rendering_shared_edge */
+
+#ifdef GL_NV_pixel_buffer_object
+
+static void _glewInfo_GL_NV_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_NV_pixel_buffer_object", GLEW_NV_pixel_buffer_object, glewIsSupported("GL_NV_pixel_buffer_object"), glewGetExtension("GL_NV_pixel_buffer_object"));
+}
+
+#endif /* GL_NV_pixel_buffer_object */
+
+#ifdef GL_NV_pixel_data_range
+
+static void _glewInfo_GL_NV_pixel_data_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_pixel_data_range", GLEW_NV_pixel_data_range, glewIsSupported("GL_NV_pixel_data_range"), glewGetExtension("GL_NV_pixel_data_range"));
+
+ glewInfoFunc(fi, "glFlushPixelDataRangeNV", glFlushPixelDataRangeNV == NULL);
+ glewInfoFunc(fi, "glPixelDataRangeNV", glPixelDataRangeNV == NULL);
+}
+
+#endif /* GL_NV_pixel_data_range */
+
+#ifdef GL_NV_platform_binary
+
+static void _glewInfo_GL_NV_platform_binary (void)
+{
+ glewPrintExt("GL_NV_platform_binary", GLEW_NV_platform_binary, glewIsSupported("GL_NV_platform_binary"), glewGetExtension("GL_NV_platform_binary"));
+}
+
+#endif /* GL_NV_platform_binary */
+
+#ifdef GL_NV_point_sprite
+
+static void _glewInfo_GL_NV_point_sprite (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_point_sprite", GLEW_NV_point_sprite, glewIsSupported("GL_NV_point_sprite"), glewGetExtension("GL_NV_point_sprite"));
+
+ glewInfoFunc(fi, "glPointParameteriNV", glPointParameteriNV == NULL);
+ glewInfoFunc(fi, "glPointParameterivNV", glPointParameterivNV == NULL);
+}
+
+#endif /* GL_NV_point_sprite */
+
+#ifdef GL_NV_polygon_mode
+
+static void _glewInfo_GL_NV_polygon_mode (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_polygon_mode", GLEW_NV_polygon_mode, glewIsSupported("GL_NV_polygon_mode"), glewGetExtension("GL_NV_polygon_mode"));
+
+ glewInfoFunc(fi, "glPolygonModeNV", glPolygonModeNV == NULL);
+}
+
+#endif /* GL_NV_polygon_mode */
+
+#ifdef GL_NV_present_video
+
+static void _glewInfo_GL_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_present_video", GLEW_NV_present_video, glewIsSupported("GL_NV_present_video"), glewGetExtension("GL_NV_present_video"));
+
+ glewInfoFunc(fi, "glGetVideoi64vNV", glGetVideoi64vNV == NULL);
+ glewInfoFunc(fi, "glGetVideoivNV", glGetVideoivNV == NULL);
+ glewInfoFunc(fi, "glGetVideoui64vNV", glGetVideoui64vNV == NULL);
+ glewInfoFunc(fi, "glGetVideouivNV", glGetVideouivNV == NULL);
+ glewInfoFunc(fi, "glPresentFrameDualFillNV", glPresentFrameDualFillNV == NULL);
+ glewInfoFunc(fi, "glPresentFrameKeyedNV", glPresentFrameKeyedNV == NULL);
+}
+
+#endif /* GL_NV_present_video */
+
+#ifdef GL_NV_primitive_restart
+
+static void _glewInfo_GL_NV_primitive_restart (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_primitive_restart", GLEW_NV_primitive_restart, glewIsSupported("GL_NV_primitive_restart"), glewGetExtension("GL_NV_primitive_restart"));
+
+ glewInfoFunc(fi, "glPrimitiveRestartIndexNV", glPrimitiveRestartIndexNV == NULL);
+ glewInfoFunc(fi, "glPrimitiveRestartNV", glPrimitiveRestartNV == NULL);
+}
+
+#endif /* GL_NV_primitive_restart */
+
+#ifdef GL_NV_primitive_shading_rate
+
+static void _glewInfo_GL_NV_primitive_shading_rate (void)
+{
+ glewPrintExt("GL_NV_primitive_shading_rate", GLEW_NV_primitive_shading_rate, glewIsSupported("GL_NV_primitive_shading_rate"), glewGetExtension("GL_NV_primitive_shading_rate"));
+}
+
+#endif /* GL_NV_primitive_shading_rate */
+
+#ifdef GL_NV_query_resource_tag
+
+static void _glewInfo_GL_NV_query_resource_tag (void)
+{
+ glewPrintExt("GL_NV_query_resource_tag", GLEW_NV_query_resource_tag, glewIsSupported("GL_NV_query_resource_tag"), glewGetExtension("GL_NV_query_resource_tag"));
+}
+
+#endif /* GL_NV_query_resource_tag */
+
+#ifdef GL_NV_read_buffer
+
+static void _glewInfo_GL_NV_read_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_read_buffer", GLEW_NV_read_buffer, glewIsSupported("GL_NV_read_buffer"), glewGetExtension("GL_NV_read_buffer"));
+
+ glewInfoFunc(fi, "glReadBufferNV", glReadBufferNV == NULL);
+}
+
+#endif /* GL_NV_read_buffer */
+
+#ifdef GL_NV_read_buffer_front
+
+static void _glewInfo_GL_NV_read_buffer_front (void)
+{
+ glewPrintExt("GL_NV_read_buffer_front", GLEW_NV_read_buffer_front, glewIsSupported("GL_NV_read_buffer_front"), glewGetExtension("GL_NV_read_buffer_front"));
+}
+
+#endif /* GL_NV_read_buffer_front */
+
+#ifdef GL_NV_read_depth
+
+static void _glewInfo_GL_NV_read_depth (void)
+{
+ glewPrintExt("GL_NV_read_depth", GLEW_NV_read_depth, glewIsSupported("GL_NV_read_depth"), glewGetExtension("GL_NV_read_depth"));
+}
+
+#endif /* GL_NV_read_depth */
+
+#ifdef GL_NV_read_depth_stencil
+
+static void _glewInfo_GL_NV_read_depth_stencil (void)
+{
+ glewPrintExt("GL_NV_read_depth_stencil", GLEW_NV_read_depth_stencil, glewIsSupported("GL_NV_read_depth_stencil"), glewGetExtension("GL_NV_read_depth_stencil"));
+}
+
+#endif /* GL_NV_read_depth_stencil */
+
+#ifdef GL_NV_read_stencil
+
+static void _glewInfo_GL_NV_read_stencil (void)
+{
+ glewPrintExt("GL_NV_read_stencil", GLEW_NV_read_stencil, glewIsSupported("GL_NV_read_stencil"), glewGetExtension("GL_NV_read_stencil"));
+}
+
+#endif /* GL_NV_read_stencil */
+
+#ifdef GL_NV_register_combiners
+
+static void _glewInfo_GL_NV_register_combiners (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_register_combiners", GLEW_NV_register_combiners, glewIsSupported("GL_NV_register_combiners"), glewGetExtension("GL_NV_register_combiners"));
+
+ glewInfoFunc(fi, "glCombinerInputNV", glCombinerInputNV == NULL);
+ glewInfoFunc(fi, "glCombinerOutputNV", glCombinerOutputNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterfNV", glCombinerParameterfNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterfvNV", glCombinerParameterfvNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameteriNV", glCombinerParameteriNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterivNV", glCombinerParameterivNV == NULL);
+ glewInfoFunc(fi, "glFinalCombinerInputNV", glFinalCombinerInputNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerInputParameterfvNV", glGetCombinerInputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerInputParameterivNV", glGetCombinerInputParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerOutputParameterfvNV", glGetCombinerOutputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerOutputParameterivNV", glGetCombinerOutputParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetFinalCombinerInputParameterfvNV", glGetFinalCombinerInputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetFinalCombinerInputParameterivNV", glGetFinalCombinerInputParameterivNV == NULL);
+}
+
+#endif /* GL_NV_register_combiners */
+
+#ifdef GL_NV_register_combiners2
+
+static void _glewInfo_GL_NV_register_combiners2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_register_combiners2", GLEW_NV_register_combiners2, glewIsSupported("GL_NV_register_combiners2"), glewGetExtension("GL_NV_register_combiners2"));
+
+ glewInfoFunc(fi, "glCombinerStageParameterfvNV", glCombinerStageParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerStageParameterfvNV", glGetCombinerStageParameterfvNV == NULL);
+}
+
+#endif /* GL_NV_register_combiners2 */
+
+#ifdef GL_NV_representative_fragment_test
+
+static void _glewInfo_GL_NV_representative_fragment_test (void)
+{
+ glewPrintExt("GL_NV_representative_fragment_test", GLEW_NV_representative_fragment_test, glewIsSupported("GL_NV_representative_fragment_test"), glewGetExtension("GL_NV_representative_fragment_test"));
+}
+
+#endif /* GL_NV_representative_fragment_test */
+
+#ifdef GL_NV_robustness_video_memory_purge
+
+static void _glewInfo_GL_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("GL_NV_robustness_video_memory_purge", GLEW_NV_robustness_video_memory_purge, glewIsSupported("GL_NV_robustness_video_memory_purge"), glewGetExtension("GL_NV_robustness_video_memory_purge"));
+}
+
+#endif /* GL_NV_robustness_video_memory_purge */
+
+#ifdef GL_NV_sRGB_formats
+
+static void _glewInfo_GL_NV_sRGB_formats (void)
+{
+ glewPrintExt("GL_NV_sRGB_formats", GLEW_NV_sRGB_formats, glewIsSupported("GL_NV_sRGB_formats"), glewGetExtension("GL_NV_sRGB_formats"));
+}
+
+#endif /* GL_NV_sRGB_formats */
+
+#ifdef GL_NV_sample_locations
+
+static void _glewInfo_GL_NV_sample_locations (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_sample_locations", GLEW_NV_sample_locations, glewIsSupported("GL_NV_sample_locations"), glewGetExtension("GL_NV_sample_locations"));
+
+ glewInfoFunc(fi, "glFramebufferSampleLocationsfvNV", glFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSampleLocationsfvNV", glNamedFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glResolveDepthValuesNV", glResolveDepthValuesNV == NULL);
+}
+
+#endif /* GL_NV_sample_locations */
+
+#ifdef GL_NV_sample_mask_override_coverage
+
+static void _glewInfo_GL_NV_sample_mask_override_coverage (void)
+{
+ glewPrintExt("GL_NV_sample_mask_override_coverage", GLEW_NV_sample_mask_override_coverage, glewIsSupported("GL_NV_sample_mask_override_coverage"), glewGetExtension("GL_NV_sample_mask_override_coverage"));
+}
+
+#endif /* GL_NV_sample_mask_override_coverage */
+
+#ifdef GL_NV_scissor_exclusive
+
+static void _glewInfo_GL_NV_scissor_exclusive (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_scissor_exclusive", GLEW_NV_scissor_exclusive, glewIsSupported("GL_NV_scissor_exclusive"), glewGetExtension("GL_NV_scissor_exclusive"));
+
+ glewInfoFunc(fi, "glScissorExclusiveArrayvNV", glScissorExclusiveArrayvNV == NULL);
+ glewInfoFunc(fi, "glScissorExclusiveNV", glScissorExclusiveNV == NULL);
+}
+
+#endif /* GL_NV_scissor_exclusive */
+
+#ifdef GL_NV_shader_atomic_counters
+
+static void _glewInfo_GL_NV_shader_atomic_counters (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_counters", GLEW_NV_shader_atomic_counters, glewIsSupported("GL_NV_shader_atomic_counters"), glewGetExtension("GL_NV_shader_atomic_counters"));
+}
+
+#endif /* GL_NV_shader_atomic_counters */
+
+#ifdef GL_NV_shader_atomic_float
+
+static void _glewInfo_GL_NV_shader_atomic_float (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_float", GLEW_NV_shader_atomic_float, glewIsSupported("GL_NV_shader_atomic_float"), glewGetExtension("GL_NV_shader_atomic_float"));
+}
+
+#endif /* GL_NV_shader_atomic_float */
+
+#ifdef GL_NV_shader_atomic_float64
+
+static void _glewInfo_GL_NV_shader_atomic_float64 (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_float64", GLEW_NV_shader_atomic_float64, glewIsSupported("GL_NV_shader_atomic_float64"), glewGetExtension("GL_NV_shader_atomic_float64"));
+}
+
+#endif /* GL_NV_shader_atomic_float64 */
+
+#ifdef GL_NV_shader_atomic_fp16_vector
+
+static void _glewInfo_GL_NV_shader_atomic_fp16_vector (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_fp16_vector", GLEW_NV_shader_atomic_fp16_vector, glewIsSupported("GL_NV_shader_atomic_fp16_vector"), glewGetExtension("GL_NV_shader_atomic_fp16_vector"));
+}
+
+#endif /* GL_NV_shader_atomic_fp16_vector */
+
+#ifdef GL_NV_shader_atomic_int64
+
+static void _glewInfo_GL_NV_shader_atomic_int64 (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_int64", GLEW_NV_shader_atomic_int64, glewIsSupported("GL_NV_shader_atomic_int64"), glewGetExtension("GL_NV_shader_atomic_int64"));
+}
+
+#endif /* GL_NV_shader_atomic_int64 */
+
+#ifdef GL_NV_shader_buffer_load
+
+static void _glewInfo_GL_NV_shader_buffer_load (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_shader_buffer_load", GLEW_NV_shader_buffer_load, glewIsSupported("GL_NV_shader_buffer_load"), glewGetExtension("GL_NV_shader_buffer_load"));
+
+ glewInfoFunc(fi, "glGetBufferParameterui64vNV", glGetBufferParameterui64vNV == NULL);
+ glewInfoFunc(fi, "glGetIntegerui64vNV", glGetIntegerui64vNV == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameterui64vNV", glGetNamedBufferParameterui64vNV == NULL);
+ glewInfoFunc(fi, "glIsBufferResidentNV", glIsBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glIsNamedBufferResidentNV", glIsNamedBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeBufferNonResidentNV", glMakeBufferNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeBufferResidentNV", glMakeBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeNamedBufferNonResidentNV", glMakeNamedBufferNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeNamedBufferResidentNV", glMakeNamedBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glProgramUniformui64NV", glProgramUniformui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniformui64vNV", glProgramUniformui64vNV == NULL);
+ glewInfoFunc(fi, "glUniformui64NV", glUniformui64NV == NULL);
+ glewInfoFunc(fi, "glUniformui64vNV", glUniformui64vNV == NULL);
+}
+
+#endif /* GL_NV_shader_buffer_load */
+
+#ifdef GL_NV_shader_noperspective_interpolation
+
+static void _glewInfo_GL_NV_shader_noperspective_interpolation (void)
+{
+ glewPrintExt("GL_NV_shader_noperspective_interpolation", GLEW_NV_shader_noperspective_interpolation, glewIsSupported("GL_NV_shader_noperspective_interpolation"), glewGetExtension("GL_NV_shader_noperspective_interpolation"));
+}
+
+#endif /* GL_NV_shader_noperspective_interpolation */
+
+#ifdef GL_NV_shader_storage_buffer_object
+
+static void _glewInfo_GL_NV_shader_storage_buffer_object (void)
+{
+ glewPrintExt("GL_NV_shader_storage_buffer_object", GLEW_NV_shader_storage_buffer_object, glewIsSupported("GL_NV_shader_storage_buffer_object"), glewGetExtension("GL_NV_shader_storage_buffer_object"));
+}
+
+#endif /* GL_NV_shader_storage_buffer_object */
+
+#ifdef GL_NV_shader_subgroup_partitioned
+
+static void _glewInfo_GL_NV_shader_subgroup_partitioned (void)
+{
+ glewPrintExt("GL_NV_shader_subgroup_partitioned", GLEW_NV_shader_subgroup_partitioned, glewIsSupported("GL_NV_shader_subgroup_partitioned"), glewGetExtension("GL_NV_shader_subgroup_partitioned"));
+}
+
+#endif /* GL_NV_shader_subgroup_partitioned */
+
+#ifdef GL_NV_shader_texture_footprint
+
+static void _glewInfo_GL_NV_shader_texture_footprint (void)
+{
+ glewPrintExt("GL_NV_shader_texture_footprint", GLEW_NV_shader_texture_footprint, glewIsSupported("GL_NV_shader_texture_footprint"), glewGetExtension("GL_NV_shader_texture_footprint"));
+}
+
+#endif /* GL_NV_shader_texture_footprint */
+
+#ifdef GL_NV_shader_thread_group
+
+static void _glewInfo_GL_NV_shader_thread_group (void)
+{
+ glewPrintExt("GL_NV_shader_thread_group", GLEW_NV_shader_thread_group, glewIsSupported("GL_NV_shader_thread_group"), glewGetExtension("GL_NV_shader_thread_group"));
+}
+
+#endif /* GL_NV_shader_thread_group */
+
+#ifdef GL_NV_shader_thread_shuffle
+
+static void _glewInfo_GL_NV_shader_thread_shuffle (void)
+{
+ glewPrintExt("GL_NV_shader_thread_shuffle", GLEW_NV_shader_thread_shuffle, glewIsSupported("GL_NV_shader_thread_shuffle"), glewGetExtension("GL_NV_shader_thread_shuffle"));
+}
+
+#endif /* GL_NV_shader_thread_shuffle */
+
+#ifdef GL_NV_shading_rate_image
+
+static void _glewInfo_GL_NV_shading_rate_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_shading_rate_image", GLEW_NV_shading_rate_image, glewIsSupported("GL_NV_shading_rate_image"), glewGetExtension("GL_NV_shading_rate_image"));
+
+ glewInfoFunc(fi, "glBindShadingRateImageNV", glBindShadingRateImageNV == NULL);
+ glewInfoFunc(fi, "glGetShadingRateImagePaletteNV", glGetShadingRateImagePaletteNV == NULL);
+ glewInfoFunc(fi, "glGetShadingRateSampleLocationivNV", glGetShadingRateSampleLocationivNV == NULL);
+ glewInfoFunc(fi, "glShadingRateImageBarrierNV", glShadingRateImageBarrierNV == NULL);
+ glewInfoFunc(fi, "glShadingRateImagePaletteNV", glShadingRateImagePaletteNV == NULL);
+ glewInfoFunc(fi, "glShadingRateSampleOrderCustomNV", glShadingRateSampleOrderCustomNV == NULL);
+ glewInfoFunc(fi, "glShadingRateSampleOrderNV", glShadingRateSampleOrderNV == NULL);
+}
+
+#endif /* GL_NV_shading_rate_image */
+
+#ifdef GL_NV_shadow_samplers_array
+
+static void _glewInfo_GL_NV_shadow_samplers_array (void)
+{
+ glewPrintExt("GL_NV_shadow_samplers_array", GLEW_NV_shadow_samplers_array, glewIsSupported("GL_NV_shadow_samplers_array"), glewGetExtension("GL_NV_shadow_samplers_array"));
+}
+
+#endif /* GL_NV_shadow_samplers_array */
+
+#ifdef GL_NV_shadow_samplers_cube
+
+static void _glewInfo_GL_NV_shadow_samplers_cube (void)
+{
+ glewPrintExt("GL_NV_shadow_samplers_cube", GLEW_NV_shadow_samplers_cube, glewIsSupported("GL_NV_shadow_samplers_cube"), glewGetExtension("GL_NV_shadow_samplers_cube"));
+}
+
+#endif /* GL_NV_shadow_samplers_cube */
+
+#ifdef GL_NV_stereo_view_rendering
+
+static void _glewInfo_GL_NV_stereo_view_rendering (void)
+{
+ glewPrintExt("GL_NV_stereo_view_rendering", GLEW_NV_stereo_view_rendering, glewIsSupported("GL_NV_stereo_view_rendering"), glewGetExtension("GL_NV_stereo_view_rendering"));
+}
+
+#endif /* GL_NV_stereo_view_rendering */
+
+#ifdef GL_NV_tessellation_program5
+
+static void _glewInfo_GL_NV_tessellation_program5 (void)
+{
+ glewPrintExt("GL_NV_tessellation_program5", GLEW_NV_tessellation_program5, glewIsSupported("GL_NV_tessellation_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_tessellation_program5 */
+
+#ifdef GL_NV_texgen_emboss
+
+static void _glewInfo_GL_NV_texgen_emboss (void)
+{
+ glewPrintExt("GL_NV_texgen_emboss", GLEW_NV_texgen_emboss, glewIsSupported("GL_NV_texgen_emboss"), glewGetExtension("GL_NV_texgen_emboss"));
+}
+
+#endif /* GL_NV_texgen_emboss */
+
+#ifdef GL_NV_texgen_reflection
+
+static void _glewInfo_GL_NV_texgen_reflection (void)
+{
+ glewPrintExt("GL_NV_texgen_reflection", GLEW_NV_texgen_reflection, glewIsSupported("GL_NV_texgen_reflection"), glewGetExtension("GL_NV_texgen_reflection"));
+}
+
+#endif /* GL_NV_texgen_reflection */
+
+#ifdef GL_NV_texture_array
+
+static void _glewInfo_GL_NV_texture_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_array", GLEW_NV_texture_array, glewIsSupported("GL_NV_texture_array"), glewGetExtension("GL_NV_texture_array"));
+
+ glewInfoFunc(fi, "glCompressedTexImage3DNV", glCompressedTexImage3DNV == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DNV", glCompressedTexSubImage3DNV == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DNV", glCopyTexSubImage3DNV == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerNV", glFramebufferTextureLayerNV == NULL);
+ glewInfoFunc(fi, "glTexImage3DNV", glTexImage3DNV == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DNV", glTexSubImage3DNV == NULL);
+}
+
+#endif /* GL_NV_texture_array */
+
+#ifdef GL_NV_texture_barrier
+
+static void _glewInfo_GL_NV_texture_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_barrier", GLEW_NV_texture_barrier, glewIsSupported("GL_NV_texture_barrier"), glewGetExtension("GL_NV_texture_barrier"));
+
+ glewInfoFunc(fi, "glTextureBarrierNV", glTextureBarrierNV == NULL);
+}
+
+#endif /* GL_NV_texture_barrier */
+
+#ifdef GL_NV_texture_border_clamp
+
+static void _glewInfo_GL_NV_texture_border_clamp (void)
+{
+ glewPrintExt("GL_NV_texture_border_clamp", GLEW_NV_texture_border_clamp, glewIsSupported("GL_NV_texture_border_clamp"), glewGetExtension("GL_NV_texture_border_clamp"));
+}
+
+#endif /* GL_NV_texture_border_clamp */
+
+#ifdef GL_NV_texture_compression_latc
+
+static void _glewInfo_GL_NV_texture_compression_latc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_latc", GLEW_NV_texture_compression_latc, glewIsSupported("GL_NV_texture_compression_latc"), glewGetExtension("GL_NV_texture_compression_latc"));
+}
+
+#endif /* GL_NV_texture_compression_latc */
+
+#ifdef GL_NV_texture_compression_s3tc
+
+static void _glewInfo_GL_NV_texture_compression_s3tc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_s3tc", GLEW_NV_texture_compression_s3tc, glewIsSupported("GL_NV_texture_compression_s3tc"), glewGetExtension("GL_NV_texture_compression_s3tc"));
+}
+
+#endif /* GL_NV_texture_compression_s3tc */
+
+#ifdef GL_NV_texture_compression_s3tc_update
+
+static void _glewInfo_GL_NV_texture_compression_s3tc_update (void)
+{
+ glewPrintExt("GL_NV_texture_compression_s3tc_update", GLEW_NV_texture_compression_s3tc_update, glewIsSupported("GL_NV_texture_compression_s3tc_update"), glewGetExtension("GL_NV_texture_compression_s3tc_update"));
+}
+
+#endif /* GL_NV_texture_compression_s3tc_update */
+
+#ifdef GL_NV_texture_compression_vtc
+
+static void _glewInfo_GL_NV_texture_compression_vtc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_vtc", GLEW_NV_texture_compression_vtc, glewIsSupported("GL_NV_texture_compression_vtc"), glewGetExtension("GL_NV_texture_compression_vtc"));
+}
+
+#endif /* GL_NV_texture_compression_vtc */
+
+#ifdef GL_NV_texture_env_combine4
+
+static void _glewInfo_GL_NV_texture_env_combine4 (void)
+{
+ glewPrintExt("GL_NV_texture_env_combine4", GLEW_NV_texture_env_combine4, glewIsSupported("GL_NV_texture_env_combine4"), glewGetExtension("GL_NV_texture_env_combine4"));
+}
+
+#endif /* GL_NV_texture_env_combine4 */
+
+#ifdef GL_NV_texture_expand_normal
+
+static void _glewInfo_GL_NV_texture_expand_normal (void)
+{
+ glewPrintExt("GL_NV_texture_expand_normal", GLEW_NV_texture_expand_normal, glewIsSupported("GL_NV_texture_expand_normal"), glewGetExtension("GL_NV_texture_expand_normal"));
+}
+
+#endif /* GL_NV_texture_expand_normal */
+
+#ifdef GL_NV_texture_multisample
+
+static void _glewInfo_GL_NV_texture_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_multisample", GLEW_NV_texture_multisample, glewIsSupported("GL_NV_texture_multisample"), glewGetExtension("GL_NV_texture_multisample"));
+
+ glewInfoFunc(fi, "glTexImage2DMultisampleCoverageNV", glTexImage2DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTexImage3DMultisampleCoverageNV", glTexImage3DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage2DMultisampleCoverageNV", glTextureImage2DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage2DMultisampleNV", glTextureImage2DMultisampleNV == NULL);
+ glewInfoFunc(fi, "glTextureImage3DMultisampleCoverageNV", glTextureImage3DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage3DMultisampleNV", glTextureImage3DMultisampleNV == NULL);
+}
+
+#endif /* GL_NV_texture_multisample */
+
+#ifdef GL_NV_texture_npot_2D_mipmap
+
+static void _glewInfo_GL_NV_texture_npot_2D_mipmap (void)
+{
+ glewPrintExt("GL_NV_texture_npot_2D_mipmap", GLEW_NV_texture_npot_2D_mipmap, glewIsSupported("GL_NV_texture_npot_2D_mipmap"), glewGetExtension("GL_NV_texture_npot_2D_mipmap"));
+}
+
+#endif /* GL_NV_texture_npot_2D_mipmap */
+
+#ifdef GL_NV_texture_rectangle
+
+static void _glewInfo_GL_NV_texture_rectangle (void)
+{
+ glewPrintExt("GL_NV_texture_rectangle", GLEW_NV_texture_rectangle, glewIsSupported("GL_NV_texture_rectangle"), glewGetExtension("GL_NV_texture_rectangle"));
+}
+
+#endif /* GL_NV_texture_rectangle */
+
+#ifdef GL_NV_texture_rectangle_compressed
+
+static void _glewInfo_GL_NV_texture_rectangle_compressed (void)
+{
+ glewPrintExt("GL_NV_texture_rectangle_compressed", GLEW_NV_texture_rectangle_compressed, glewIsSupported("GL_NV_texture_rectangle_compressed"), glewGetExtension("GL_NV_texture_rectangle_compressed"));
+}
+
+#endif /* GL_NV_texture_rectangle_compressed */
+
+#ifdef GL_NV_texture_shader
+
+static void _glewInfo_GL_NV_texture_shader (void)
+{
+ glewPrintExt("GL_NV_texture_shader", GLEW_NV_texture_shader, glewIsSupported("GL_NV_texture_shader"), glewGetExtension("GL_NV_texture_shader"));
+}
+
+#endif /* GL_NV_texture_shader */
+
+#ifdef GL_NV_texture_shader2
+
+static void _glewInfo_GL_NV_texture_shader2 (void)
+{
+ glewPrintExt("GL_NV_texture_shader2", GLEW_NV_texture_shader2, glewIsSupported("GL_NV_texture_shader2"), glewGetExtension("GL_NV_texture_shader2"));
+}
+
+#endif /* GL_NV_texture_shader2 */
+
+#ifdef GL_NV_texture_shader3
+
+static void _glewInfo_GL_NV_texture_shader3 (void)
+{
+ glewPrintExt("GL_NV_texture_shader3", GLEW_NV_texture_shader3, glewIsSupported("GL_NV_texture_shader3"), glewGetExtension("GL_NV_texture_shader3"));
+}
+
+#endif /* GL_NV_texture_shader3 */
+
+#ifdef GL_NV_timeline_semaphore
+
+static void _glewInfo_GL_NV_timeline_semaphore (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_timeline_semaphore", GLEW_NV_timeline_semaphore, glewIsSupported("GL_NV_timeline_semaphore"), glewGetExtension("GL_NV_timeline_semaphore"));
+
+ glewInfoFunc(fi, "glCreateSemaphoresNV", glCreateSemaphoresNV == NULL);
+ glewInfoFunc(fi, "glGetSemaphoreParameterivNV", glGetSemaphoreParameterivNV == NULL);
+ glewInfoFunc(fi, "glSemaphoreParameterivNV", glSemaphoreParameterivNV == NULL);
+}
+
+#endif /* GL_NV_timeline_semaphore */
+
+#ifdef GL_NV_transform_feedback
+
+static void _glewInfo_GL_NV_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_transform_feedback", GLEW_NV_transform_feedback, glewIsSupported("GL_NV_transform_feedback"), glewGetExtension("GL_NV_transform_feedback"));
+
+ glewInfoFunc(fi, "glActiveVaryingNV", glActiveVaryingNV == NULL);
+ glewInfoFunc(fi, "glBeginTransformFeedbackNV", glBeginTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glBindBufferBaseNV", glBindBufferBaseNV == NULL);
+ glewInfoFunc(fi, "glBindBufferOffsetNV", glBindBufferOffsetNV == NULL);
+ glewInfoFunc(fi, "glBindBufferRangeNV", glBindBufferRangeNV == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedbackNV", glEndTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glGetActiveVaryingNV", glGetActiveVaryingNV == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVaryingNV", glGetTransformFeedbackVaryingNV == NULL);
+ glewInfoFunc(fi, "glGetVaryingLocationNV", glGetVaryingLocationNV == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackAttribsNV", glTransformFeedbackAttribsNV == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryingsNV", glTransformFeedbackVaryingsNV == NULL);
+}
+
+#endif /* GL_NV_transform_feedback */
+
+#ifdef GL_NV_transform_feedback2
+
+static void _glewInfo_GL_NV_transform_feedback2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_transform_feedback2", GLEW_NV_transform_feedback2, glewIsSupported("GL_NV_transform_feedback2"), glewGetExtension("GL_NV_transform_feedback2"));
+
+ glewInfoFunc(fi, "glBindTransformFeedbackNV", glBindTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glDeleteTransformFeedbacksNV", glDeleteTransformFeedbacksNV == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackNV", glDrawTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glGenTransformFeedbacksNV", glGenTransformFeedbacksNV == NULL);
+ glewInfoFunc(fi, "glIsTransformFeedbackNV", glIsTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glPauseTransformFeedbackNV", glPauseTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glResumeTransformFeedbackNV", glResumeTransformFeedbackNV == NULL);
+}
+
+#endif /* GL_NV_transform_feedback2 */
+
+#ifdef GL_NV_uniform_buffer_unified_memory
+
+static void _glewInfo_GL_NV_uniform_buffer_unified_memory (void)
+{
+ glewPrintExt("GL_NV_uniform_buffer_unified_memory", GLEW_NV_uniform_buffer_unified_memory, glewIsSupported("GL_NV_uniform_buffer_unified_memory"), glewGetExtension("GL_NV_uniform_buffer_unified_memory"));
+}
+
+#endif /* GL_NV_uniform_buffer_unified_memory */
+
+#ifdef GL_NV_vdpau_interop
+
+static void _glewInfo_GL_NV_vdpau_interop (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vdpau_interop", GLEW_NV_vdpau_interop, glewIsSupported("GL_NV_vdpau_interop"), glewGetExtension("GL_NV_vdpau_interop"));
+
+ glewInfoFunc(fi, "glVDPAUFiniNV", glVDPAUFiniNV == NULL);
+ glewInfoFunc(fi, "glVDPAUGetSurfaceivNV", glVDPAUGetSurfaceivNV == NULL);
+ glewInfoFunc(fi, "glVDPAUInitNV", glVDPAUInitNV == NULL);
+ glewInfoFunc(fi, "glVDPAUIsSurfaceNV", glVDPAUIsSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAUMapSurfacesNV", glVDPAUMapSurfacesNV == NULL);
+ glewInfoFunc(fi, "glVDPAURegisterOutputSurfaceNV", glVDPAURegisterOutputSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAURegisterVideoSurfaceNV", glVDPAURegisterVideoSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAUSurfaceAccessNV", glVDPAUSurfaceAccessNV == NULL);
+ glewInfoFunc(fi, "glVDPAUUnmapSurfacesNV", glVDPAUUnmapSurfacesNV == NULL);
+ glewInfoFunc(fi, "glVDPAUUnregisterSurfaceNV", glVDPAUUnregisterSurfaceNV == NULL);
+}
+
+#endif /* GL_NV_vdpau_interop */
+
+#ifdef GL_NV_vdpau_interop2
+
+static void _glewInfo_GL_NV_vdpau_interop2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vdpau_interop2", GLEW_NV_vdpau_interop2, glewIsSupported("GL_NV_vdpau_interop2"), glewGetExtension("GL_NV_vdpau_interop2"));
+
+ glewInfoFunc(fi, "glVDPAURegisterVideoSurfaceWithPictureStructureNV", glVDPAURegisterVideoSurfaceWithPictureStructureNV == NULL);
+}
+
+#endif /* GL_NV_vdpau_interop2 */
+
+#ifdef GL_NV_vertex_array_range
+
+static void _glewInfo_GL_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_array_range", GLEW_NV_vertex_array_range, glewIsSupported("GL_NV_vertex_array_range"), glewGetExtension("GL_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "glFlushVertexArrayRangeNV", glFlushVertexArrayRangeNV == NULL);
+ glewInfoFunc(fi, "glVertexArrayRangeNV", glVertexArrayRangeNV == NULL);
+}
+
+#endif /* GL_NV_vertex_array_range */
+
+#ifdef GL_NV_vertex_array_range2
+
+static void _glewInfo_GL_NV_vertex_array_range2 (void)
+{
+ glewPrintExt("GL_NV_vertex_array_range2", GLEW_NV_vertex_array_range2, glewIsSupported("GL_NV_vertex_array_range2"), glewGetExtension("GL_NV_vertex_array_range2"));
+}
+
+#endif /* GL_NV_vertex_array_range2 */
+
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static void _glewInfo_GL_NV_vertex_attrib_integer_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_attrib_integer_64bit", GLEW_NV_vertex_attrib_integer_64bit, glewIsSupported("GL_NV_vertex_attrib_integer_64bit"), glewGetExtension("GL_NV_vertex_attrib_integer_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLi64vNV", glGetVertexAttribLi64vNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribLui64vNV", glGetVertexAttribLui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1i64NV", glVertexAttribL1i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1i64vNV", glVertexAttribL1i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64NV", glVertexAttribL1ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64vNV", glVertexAttribL1ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2i64NV", glVertexAttribL2i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2i64vNV", glVertexAttribL2i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2ui64NV", glVertexAttribL2ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2ui64vNV", glVertexAttribL2ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3i64NV", glVertexAttribL3i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3i64vNV", glVertexAttribL3i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3ui64NV", glVertexAttribL3ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3ui64vNV", glVertexAttribL3ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4i64NV", glVertexAttribL4i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4i64vNV", glVertexAttribL4i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4ui64NV", glVertexAttribL4ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4ui64vNV", glVertexAttribL4ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribLFormatNV", glVertexAttribLFormatNV == NULL);
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+#ifdef GL_NV_vertex_buffer_unified_memory
+
+static void _glewInfo_GL_NV_vertex_buffer_unified_memory (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_buffer_unified_memory", GLEW_NV_vertex_buffer_unified_memory, glewIsSupported("GL_NV_vertex_buffer_unified_memory"), glewGetExtension("GL_NV_vertex_buffer_unified_memory"));
+
+ glewInfoFunc(fi, "glBufferAddressRangeNV", glBufferAddressRangeNV == NULL);
+ glewInfoFunc(fi, "glColorFormatNV", glColorFormatNV == NULL);
+ glewInfoFunc(fi, "glEdgeFlagFormatNV", glEdgeFlagFormatNV == NULL);
+ glewInfoFunc(fi, "glFogCoordFormatNV", glFogCoordFormatNV == NULL);
+ glewInfoFunc(fi, "glGetIntegerui64i_vNV", glGetIntegerui64i_vNV == NULL);
+ glewInfoFunc(fi, "glIndexFormatNV", glIndexFormatNV == NULL);
+ glewInfoFunc(fi, "glNormalFormatNV", glNormalFormatNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColorFormatNV", glSecondaryColorFormatNV == NULL);
+ glewInfoFunc(fi, "glTexCoordFormatNV", glTexCoordFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribFormatNV", glVertexAttribFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribIFormatNV", glVertexAttribIFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexFormatNV", glVertexFormatNV == NULL);
+}
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+#ifdef GL_NV_vertex_program
+
+static void _glewInfo_GL_NV_vertex_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_program", GLEW_NV_vertex_program, glewIsSupported("GL_NV_vertex_program"), glewGetExtension("GL_NV_vertex_program"));
+
+ glewInfoFunc(fi, "glAreProgramsResidentNV", glAreProgramsResidentNV == NULL);
+ glewInfoFunc(fi, "glBindProgramNV", glBindProgramNV == NULL);
+ glewInfoFunc(fi, "glDeleteProgramsNV", glDeleteProgramsNV == NULL);
+ glewInfoFunc(fi, "glExecuteProgramNV", glExecuteProgramNV == NULL);
+ glewInfoFunc(fi, "glGenProgramsNV", glGenProgramsNV == NULL);
+ glewInfoFunc(fi, "glGetProgramParameterdvNV", glGetProgramParameterdvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramParameterfvNV", glGetProgramParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramStringNV", glGetProgramStringNV == NULL);
+ glewInfoFunc(fi, "glGetProgramivNV", glGetProgramivNV == NULL);
+ glewInfoFunc(fi, "glGetTrackMatrixivNV", glGetTrackMatrixivNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointervNV", glGetVertexAttribPointervNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdvNV", glGetVertexAttribdvNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfvNV", glGetVertexAttribfvNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribivNV", glGetVertexAttribivNV == NULL);
+ glewInfoFunc(fi, "glIsProgramNV", glIsProgramNV == NULL);
+ glewInfoFunc(fi, "glLoadProgramNV", glLoadProgramNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4dNV", glProgramParameter4dNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4dvNV", glProgramParameter4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4fNV", glProgramParameter4fNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4fvNV", glProgramParameter4fvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameters4dvNV", glProgramParameters4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameters4fvNV", glProgramParameters4fvNV == NULL);
+ glewInfoFunc(fi, "glRequestResidentProgramsNV", glRequestResidentProgramsNV == NULL);
+ glewInfoFunc(fi, "glTrackMatrixNV", glTrackMatrixNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dNV", glVertexAttrib1dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dvNV", glVertexAttrib1dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fNV", glVertexAttrib1fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fvNV", glVertexAttrib1fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sNV", glVertexAttrib1sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1svNV", glVertexAttrib1svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dNV", glVertexAttrib2dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dvNV", glVertexAttrib2dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fNV", glVertexAttrib2fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fvNV", glVertexAttrib2fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sNV", glVertexAttrib2sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2svNV", glVertexAttrib2svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dNV", glVertexAttrib3dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dvNV", glVertexAttrib3dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fNV", glVertexAttrib3fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fvNV", glVertexAttrib3fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sNV", glVertexAttrib3sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3svNV", glVertexAttrib3svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dNV", glVertexAttrib4dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dvNV", glVertexAttrib4dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fNV", glVertexAttrib4fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fvNV", glVertexAttrib4fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sNV", glVertexAttrib4sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4svNV", glVertexAttrib4svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubNV", glVertexAttrib4ubNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubvNV", glVertexAttrib4ubvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointerNV", glVertexAttribPointerNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1dvNV", glVertexAttribs1dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1fvNV", glVertexAttribs1fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1svNV", glVertexAttribs1svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2dvNV", glVertexAttribs2dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2fvNV", glVertexAttribs2fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2svNV", glVertexAttribs2svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3dvNV", glVertexAttribs3dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3fvNV", glVertexAttribs3fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3svNV", glVertexAttribs3svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4dvNV", glVertexAttribs4dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4fvNV", glVertexAttribs4fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4svNV", glVertexAttribs4svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4ubvNV", glVertexAttribs4ubvNV == NULL);
+}
+
+#endif /* GL_NV_vertex_program */
+
+#ifdef GL_NV_vertex_program1_1
+
+static void _glewInfo_GL_NV_vertex_program1_1 (void)
+{
+ glewPrintExt("GL_NV_vertex_program1_1", GLEW_NV_vertex_program1_1, glewIsSupported("GL_NV_vertex_program1_1"), glewGetExtension("GL_NV_vertex_program1_1"));
+}
+
+#endif /* GL_NV_vertex_program1_1 */
+
+#ifdef GL_NV_vertex_program2
+
+static void _glewInfo_GL_NV_vertex_program2 (void)
+{
+ glewPrintExt("GL_NV_vertex_program2", GLEW_NV_vertex_program2, glewIsSupported("GL_NV_vertex_program2"), glewGetExtension("GL_NV_vertex_program2"));
+}
+
+#endif /* GL_NV_vertex_program2 */
+
+#ifdef GL_NV_vertex_program2_option
+
+static void _glewInfo_GL_NV_vertex_program2_option (void)
+{
+ glewPrintExt("GL_NV_vertex_program2_option", GLEW_NV_vertex_program2_option, glewIsSupported("GL_NV_vertex_program2_option"), glewGetExtension("GL_NV_vertex_program2_option"));
+}
+
+#endif /* GL_NV_vertex_program2_option */
+
+#ifdef GL_NV_vertex_program3
+
+static void _glewInfo_GL_NV_vertex_program3 (void)
+{
+ glewPrintExt("GL_NV_vertex_program3", GLEW_NV_vertex_program3, glewIsSupported("GL_NV_vertex_program3"), glewGetExtension("GL_NV_vertex_program3"));
+}
+
+#endif /* GL_NV_vertex_program3 */
+
+#ifdef GL_NV_vertex_program4
+
+static void _glewInfo_GL_NV_vertex_program4 (void)
+{
+ glewPrintExt("GL_NV_vertex_program4", GLEW_NV_vertex_program4, glewIsSupported("GL_NV_vertex_program4"), glewGetExtension("GL_NV_gpu_program4"));
+}
+
+#endif /* GL_NV_vertex_program4 */
+
+#ifdef GL_NV_video_capture
+
+static void _glewInfo_GL_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_video_capture", GLEW_NV_video_capture, glewIsSupported("GL_NV_video_capture"), glewGetExtension("GL_NV_video_capture"));
+
+ glewInfoFunc(fi, "glBeginVideoCaptureNV", glBeginVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glBindVideoCaptureStreamBufferNV", glBindVideoCaptureStreamBufferNV == NULL);
+ glewInfoFunc(fi, "glBindVideoCaptureStreamTextureNV", glBindVideoCaptureStreamTextureNV == NULL);
+ glewInfoFunc(fi, "glEndVideoCaptureNV", glEndVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamdvNV", glGetVideoCaptureStreamdvNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamfvNV", glGetVideoCaptureStreamfvNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamivNV", glGetVideoCaptureStreamivNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureivNV", glGetVideoCaptureivNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureNV", glVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterdvNV", glVideoCaptureStreamParameterdvNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterfvNV", glVideoCaptureStreamParameterfvNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterivNV", glVideoCaptureStreamParameterivNV == NULL);
+}
+
+#endif /* GL_NV_video_capture */
+
+#ifdef GL_NV_viewport_array
+
+static void _glewInfo_GL_NV_viewport_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_viewport_array", GLEW_NV_viewport_array, glewIsSupported("GL_NV_viewport_array"), glewGetExtension("GL_NV_viewport_array"));
+
+ glewInfoFunc(fi, "glDepthRangeArrayfvNV", glDepthRangeArrayfvNV == NULL);
+ glewInfoFunc(fi, "glDepthRangeIndexedfNV", glDepthRangeIndexedfNV == NULL);
+ glewInfoFunc(fi, "glDisableiNV", glDisableiNV == NULL);
+ glewInfoFunc(fi, "glEnableiNV", glEnableiNV == NULL);
+ glewInfoFunc(fi, "glGetFloati_vNV", glGetFloati_vNV == NULL);
+ glewInfoFunc(fi, "glIsEnablediNV", glIsEnablediNV == NULL);
+ glewInfoFunc(fi, "glScissorArrayvNV", glScissorArrayvNV == NULL);
+ glewInfoFunc(fi, "glScissorIndexedNV", glScissorIndexedNV == NULL);
+ glewInfoFunc(fi, "glScissorIndexedvNV", glScissorIndexedvNV == NULL);
+ glewInfoFunc(fi, "glViewportArrayvNV", glViewportArrayvNV == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfNV", glViewportIndexedfNV == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfvNV", glViewportIndexedfvNV == NULL);
+}
+
+#endif /* GL_NV_viewport_array */
+
+#ifdef GL_NV_viewport_array2
+
+static void _glewInfo_GL_NV_viewport_array2 (void)
+{
+ glewPrintExt("GL_NV_viewport_array2", GLEW_NV_viewport_array2, glewIsSupported("GL_NV_viewport_array2"), glewGetExtension("GL_NV_viewport_array2"));
+}
+
+#endif /* GL_NV_viewport_array2 */
+
+#ifdef GL_NV_viewport_swizzle
+
+static void _glewInfo_GL_NV_viewport_swizzle (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_viewport_swizzle", GLEW_NV_viewport_swizzle, glewIsSupported("GL_NV_viewport_swizzle"), glewGetExtension("GL_NV_viewport_swizzle"));
+
+ glewInfoFunc(fi, "glViewportSwizzleNV", glViewportSwizzleNV == NULL);
+}
+
+#endif /* GL_NV_viewport_swizzle */
+
+#ifdef GL_OES_EGL_image
+
+static void _glewInfo_GL_OES_EGL_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_EGL_image", GLEW_OES_EGL_image, glewIsSupported("GL_OES_EGL_image"), glewGetExtension("GL_OES_EGL_image"));
+
+ glewInfoFunc(fi, "glEGLImageTargetRenderbufferStorageOES", glEGLImageTargetRenderbufferStorageOES == NULL);
+ glewInfoFunc(fi, "glEGLImageTargetTexture2DOES", glEGLImageTargetTexture2DOES == NULL);
+}
+
+#endif /* GL_OES_EGL_image */
+
+#ifdef GL_OES_EGL_image_external
+
+static void _glewInfo_GL_OES_EGL_image_external (void)
+{
+ glewPrintExt("GL_OES_EGL_image_external", GLEW_OES_EGL_image_external, glewIsSupported("GL_OES_EGL_image_external"), glewGetExtension("GL_OES_EGL_image_external"));
+}
+
+#endif /* GL_OES_EGL_image_external */
+
+#ifdef GL_OES_EGL_image_external_essl3
+
+static void _glewInfo_GL_OES_EGL_image_external_essl3 (void)
+{
+ glewPrintExt("GL_OES_EGL_image_external_essl3", GLEW_OES_EGL_image_external_essl3, glewIsSupported("GL_OES_EGL_image_external_essl3"), glewGetExtension("GL_OES_EGL_image_external_essl3"));
+}
+
+#endif /* GL_OES_EGL_image_external_essl3 */
+
+#ifdef GL_OES_blend_equation_separate
+
+static void _glewInfo_GL_OES_blend_equation_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_equation_separate", GLEW_OES_blend_equation_separate, glewIsSupported("GL_OES_blend_equation_separate"), glewGetExtension("GL_OES_blend_equation_separate"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateOES", glBlendEquationSeparateOES == NULL);
+}
+
+#endif /* GL_OES_blend_equation_separate */
+
+#ifdef GL_OES_blend_func_separate
+
+static void _glewInfo_GL_OES_blend_func_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_func_separate", GLEW_OES_blend_func_separate, glewIsSupported("GL_OES_blend_func_separate"), glewGetExtension("GL_OES_blend_func_separate"));
+
+ glewInfoFunc(fi, "glBlendFuncSeparateOES", glBlendFuncSeparateOES == NULL);
+}
+
+#endif /* GL_OES_blend_func_separate */
+
+#ifdef GL_OES_blend_subtract
+
+static void _glewInfo_GL_OES_blend_subtract (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_subtract", GLEW_OES_blend_subtract, glewIsSupported("GL_OES_blend_subtract"), glewGetExtension("GL_OES_blend_subtract"));
+
+ glewInfoFunc(fi, "glBlendEquationOES", glBlendEquationOES == NULL);
+}
+
+#endif /* GL_OES_blend_subtract */
+
+#ifdef GL_OES_byte_coordinates
+
+static void _glewInfo_GL_OES_byte_coordinates (void)
+{
+ glewPrintExt("GL_OES_byte_coordinates", GLEW_OES_byte_coordinates, glewIsSupported("GL_OES_byte_coordinates"), glewGetExtension("GL_OES_byte_coordinates"));
+}
+
+#endif /* GL_OES_byte_coordinates */
+
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+
+static void _glewInfo_GL_OES_compressed_ETC1_RGB8_texture (void)
+{
+ glewPrintExt("GL_OES_compressed_ETC1_RGB8_texture", GLEW_OES_compressed_ETC1_RGB8_texture, glewIsSupported("GL_OES_compressed_ETC1_RGB8_texture"), glewGetExtension("GL_OES_compressed_ETC1_RGB8_texture"));
+}
+
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+
+#ifdef GL_OES_compressed_paletted_texture
+
+static void _glewInfo_GL_OES_compressed_paletted_texture (void)
+{
+ glewPrintExt("GL_OES_compressed_paletted_texture", GLEW_OES_compressed_paletted_texture, glewIsSupported("GL_OES_compressed_paletted_texture"), glewGetExtension("GL_OES_compressed_paletted_texture"));
+}
+
+#endif /* GL_OES_compressed_paletted_texture */
+
+#ifdef GL_OES_copy_image
+
+static void _glewInfo_GL_OES_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_copy_image", GLEW_OES_copy_image, glewIsSupported("GL_OES_copy_image"), glewGetExtension("GL_OES_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataOES", glCopyImageSubDataOES == NULL);
+}
+
+#endif /* GL_OES_copy_image */
+
+#ifdef GL_OES_depth24
+
+static void _glewInfo_GL_OES_depth24 (void)
+{
+ glewPrintExt("GL_OES_depth24", GLEW_OES_depth24, glewIsSupported("GL_OES_depth24"), glewGetExtension("GL_OES_depth24"));
+}
+
+#endif /* GL_OES_depth24 */
+
+#ifdef GL_OES_depth32
+
+static void _glewInfo_GL_OES_depth32 (void)
+{
+ glewPrintExt("GL_OES_depth32", GLEW_OES_depth32, glewIsSupported("GL_OES_depth32"), glewGetExtension("GL_OES_depth32"));
+}
+
+#endif /* GL_OES_depth32 */
+
+#ifdef GL_OES_depth_texture
+
+static void _glewInfo_GL_OES_depth_texture (void)
+{
+ glewPrintExt("GL_OES_depth_texture", GLEW_OES_depth_texture, glewIsSupported("GL_OES_depth_texture"), glewGetExtension("GL_OES_depth_texture"));
+}
+
+#endif /* GL_OES_depth_texture */
+
+#ifdef GL_OES_depth_texture_cube_map
+
+static void _glewInfo_GL_OES_depth_texture_cube_map (void)
+{
+ glewPrintExt("GL_OES_depth_texture_cube_map", GLEW_OES_depth_texture_cube_map, glewIsSupported("GL_OES_depth_texture_cube_map"), glewGetExtension("GL_OES_depth_texture_cube_map"));
+}
+
+#endif /* GL_OES_depth_texture_cube_map */
+
+#ifdef GL_OES_draw_buffers_indexed
+
+static void _glewInfo_GL_OES_draw_buffers_indexed (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_draw_buffers_indexed", GLEW_OES_draw_buffers_indexed, glewIsSupported("GL_OES_draw_buffers_indexed"), glewGetExtension("GL_OES_draw_buffers_indexed"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiOES", glBlendEquationSeparateiOES == NULL);
+ glewInfoFunc(fi, "glBlendEquationiOES", glBlendEquationiOES == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiOES", glBlendFuncSeparateiOES == NULL);
+ glewInfoFunc(fi, "glBlendFunciOES", glBlendFunciOES == NULL);
+ glewInfoFunc(fi, "glColorMaskiOES", glColorMaskiOES == NULL);
+ glewInfoFunc(fi, "glDisableiOES", glDisableiOES == NULL);
+ glewInfoFunc(fi, "glEnableiOES", glEnableiOES == NULL);
+ glewInfoFunc(fi, "glIsEnablediOES", glIsEnablediOES == NULL);
+}
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+#ifdef GL_OES_draw_texture
+
+static void _glewInfo_GL_OES_draw_texture (void)
+{
+ glewPrintExt("GL_OES_draw_texture", GLEW_OES_draw_texture, glewIsSupported("GL_OES_draw_texture"), glewGetExtension("GL_OES_draw_texture"));
+}
+
+#endif /* GL_OES_draw_texture */
+
+#ifdef GL_OES_element_index_uint
+
+static void _glewInfo_GL_OES_element_index_uint (void)
+{
+ glewPrintExt("GL_OES_element_index_uint", GLEW_OES_element_index_uint, glewIsSupported("GL_OES_element_index_uint"), glewGetExtension("GL_OES_element_index_uint"));
+}
+
+#endif /* GL_OES_element_index_uint */
+
+#ifdef GL_OES_extended_matrix_palette
+
+static void _glewInfo_GL_OES_extended_matrix_palette (void)
+{
+ glewPrintExt("GL_OES_extended_matrix_palette", GLEW_OES_extended_matrix_palette, glewIsSupported("GL_OES_extended_matrix_palette"), glewGetExtension("GL_OES_extended_matrix_palette"));
+}
+
+#endif /* GL_OES_extended_matrix_palette */
+
+#ifdef GL_OES_fbo_render_mipmap
+
+static void _glewInfo_GL_OES_fbo_render_mipmap (void)
+{
+ glewPrintExt("GL_OES_fbo_render_mipmap", GLEW_OES_fbo_render_mipmap, glewIsSupported("GL_OES_fbo_render_mipmap"), glewGetExtension("GL_OES_fbo_render_mipmap"));
+}
+
+#endif /* GL_OES_fbo_render_mipmap */
+
+#ifdef GL_OES_fragment_precision_high
+
+static void _glewInfo_GL_OES_fragment_precision_high (void)
+{
+ glewPrintExt("GL_OES_fragment_precision_high", GLEW_OES_fragment_precision_high, glewIsSupported("GL_OES_fragment_precision_high"), glewGetExtension("GL_OES_fragment_precision_high"));
+}
+
+#endif /* GL_OES_fragment_precision_high */
+
+#ifdef GL_OES_framebuffer_object
+
+static void _glewInfo_GL_OES_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_framebuffer_object", GLEW_OES_framebuffer_object, glewIsSupported("GL_OES_framebuffer_object"), glewGetExtension("GL_OES_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebufferOES", glBindFramebufferOES == NULL);
+ glewInfoFunc(fi, "glBindRenderbufferOES", glBindRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatusOES", glCheckFramebufferStatusOES == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffersOES", glDeleteFramebuffersOES == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffersOES", glDeleteRenderbuffersOES == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbufferOES", glFramebufferRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2DOES", glFramebufferTexture2DOES == NULL);
+ glewInfoFunc(fi, "glGenFramebuffersOES", glGenFramebuffersOES == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffersOES", glGenRenderbuffersOES == NULL);
+ glewInfoFunc(fi, "glGenerateMipmapOES", glGenerateMipmapOES == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameterivOES", glGetFramebufferAttachmentParameterivOES == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameterivOES", glGetRenderbufferParameterivOES == NULL);
+ glewInfoFunc(fi, "glIsFramebufferOES", glIsFramebufferOES == NULL);
+ glewInfoFunc(fi, "glIsRenderbufferOES", glIsRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageOES", glRenderbufferStorageOES == NULL);
+}
+
+#endif /* GL_OES_framebuffer_object */
+
+#ifdef GL_OES_geometry_point_size
+
+static void _glewInfo_GL_OES_geometry_point_size (void)
+{
+ glewPrintExt("GL_OES_geometry_point_size", GLEW_OES_geometry_point_size, glewIsSupported("GL_OES_geometry_point_size"), glewGetExtension("GL_OES_geometry_point_size"));
+}
+
+#endif /* GL_OES_geometry_point_size */
+
+#ifdef GL_OES_geometry_shader
+
+static void _glewInfo_GL_OES_geometry_shader (void)
+{
+ glewPrintExt("GL_OES_geometry_shader", GLEW_OES_geometry_shader, glewIsSupported("GL_OES_geometry_shader"), glewGetExtension("GL_OES_geometry_shader"));
+}
+
+#endif /* GL_OES_geometry_shader */
+
+#ifdef GL_OES_get_program_binary
+
+static void _glewInfo_GL_OES_get_program_binary (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_get_program_binary", GLEW_OES_get_program_binary, glewIsSupported("GL_OES_get_program_binary"), glewGetExtension("GL_OES_get_program_binary"));
+
+ glewInfoFunc(fi, "glGetProgramBinaryOES", glGetProgramBinaryOES == NULL);
+ glewInfoFunc(fi, "glProgramBinaryOES", glProgramBinaryOES == NULL);
+}
+
+#endif /* GL_OES_get_program_binary */
+
+#ifdef GL_OES_gpu_shader5
+
+static void _glewInfo_GL_OES_gpu_shader5 (void)
+{
+ glewPrintExt("GL_OES_gpu_shader5", GLEW_OES_gpu_shader5, glewIsSupported("GL_OES_gpu_shader5"), glewGetExtension("GL_OES_gpu_shader5"));
+}
+
+#endif /* GL_OES_gpu_shader5 */
+
+#ifdef GL_OES_mapbuffer
+
+static void _glewInfo_GL_OES_mapbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_mapbuffer", GLEW_OES_mapbuffer, glewIsSupported("GL_OES_mapbuffer"), glewGetExtension("GL_OES_mapbuffer"));
+
+ glewInfoFunc(fi, "glGetBufferPointervOES", glGetBufferPointervOES == NULL);
+ glewInfoFunc(fi, "glMapBufferOES", glMapBufferOES == NULL);
+ glewInfoFunc(fi, "glUnmapBufferOES", glUnmapBufferOES == NULL);
+}
+
+#endif /* GL_OES_mapbuffer */
+
+#ifdef GL_OES_matrix_get
+
+static void _glewInfo_GL_OES_matrix_get (void)
+{
+ glewPrintExt("GL_OES_matrix_get", GLEW_OES_matrix_get, glewIsSupported("GL_OES_matrix_get"), glewGetExtension("GL_OES_matrix_get"));
+}
+
+#endif /* GL_OES_matrix_get */
+
+#ifdef GL_OES_matrix_palette
+
+static void _glewInfo_GL_OES_matrix_palette (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_matrix_palette", GLEW_OES_matrix_palette, glewIsSupported("GL_OES_matrix_palette"), glewGetExtension("GL_OES_matrix_palette"));
+
+ glewInfoFunc(fi, "glCurrentPaletteMatrixOES", glCurrentPaletteMatrixOES == NULL);
+ glewInfoFunc(fi, "glLoadPaletteFromModelViewMatrixOES", glLoadPaletteFromModelViewMatrixOES == NULL);
+ glewInfoFunc(fi, "glMatrixIndexPointerOES", glMatrixIndexPointerOES == NULL);
+ glewInfoFunc(fi, "glWeightPointerOES", glWeightPointerOES == NULL);
+}
+
+#endif /* GL_OES_matrix_palette */
+
+#ifdef GL_OES_packed_depth_stencil
+
+static void _glewInfo_GL_OES_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_OES_packed_depth_stencil", GLEW_OES_packed_depth_stencil, glewIsSupported("GL_OES_packed_depth_stencil"), glewGetExtension("GL_OES_packed_depth_stencil"));
+}
+
+#endif /* GL_OES_packed_depth_stencil */
+
+#ifdef GL_OES_point_size_array
+
+static void _glewInfo_GL_OES_point_size_array (void)
+{
+ glewPrintExt("GL_OES_point_size_array", GLEW_OES_point_size_array, glewIsSupported("GL_OES_point_size_array"), glewGetExtension("GL_OES_point_size_array"));
+}
+
+#endif /* GL_OES_point_size_array */
+
+#ifdef GL_OES_point_sprite
+
+static void _glewInfo_GL_OES_point_sprite (void)
+{
+ glewPrintExt("GL_OES_point_sprite", GLEW_OES_point_sprite, glewIsSupported("GL_OES_point_sprite"), glewGetExtension("GL_OES_point_sprite"));
+}
+
+#endif /* GL_OES_point_sprite */
+
+#ifdef GL_OES_read_format
+
+static void _glewInfo_GL_OES_read_format (void)
+{
+ glewPrintExt("GL_OES_read_format", GLEW_OES_read_format, glewIsSupported("GL_OES_read_format"), glewGetExtension("GL_OES_read_format"));
+}
+
+#endif /* GL_OES_read_format */
+
+#ifdef GL_OES_required_internalformat
+
+static void _glewInfo_GL_OES_required_internalformat (void)
+{
+ glewPrintExt("GL_OES_required_internalformat", GLEW_OES_required_internalformat, glewIsSupported("GL_OES_required_internalformat"), glewGetExtension("GL_OES_required_internalformat"));
+}
+
+#endif /* GL_OES_required_internalformat */
+
+#ifdef GL_OES_rgb8_rgba8
+
+static void _glewInfo_GL_OES_rgb8_rgba8 (void)
+{
+ glewPrintExt("GL_OES_rgb8_rgba8", GLEW_OES_rgb8_rgba8, glewIsSupported("GL_OES_rgb8_rgba8"), glewGetExtension("GL_OES_rgb8_rgba8"));
+}
+
+#endif /* GL_OES_rgb8_rgba8 */
+
+#ifdef GL_OES_sample_shading
+
+static void _glewInfo_GL_OES_sample_shading (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_sample_shading", GLEW_OES_sample_shading, glewIsSupported("GL_OES_sample_shading"), glewGetExtension("GL_OES_sample_shading"));
+
+ glewInfoFunc(fi, "glMinSampleShadingOES", glMinSampleShadingOES == NULL);
+}
+
+#endif /* GL_OES_sample_shading */
+
+#ifdef GL_OES_sample_variables
+
+static void _glewInfo_GL_OES_sample_variables (void)
+{
+ glewPrintExt("GL_OES_sample_variables", GLEW_OES_sample_variables, glewIsSupported("GL_OES_sample_variables"), glewGetExtension("GL_OES_sample_variables"));
+}
+
+#endif /* GL_OES_sample_variables */
+
+#ifdef GL_OES_shader_image_atomic
+
+static void _glewInfo_GL_OES_shader_image_atomic (void)
+{
+ glewPrintExt("GL_OES_shader_image_atomic", GLEW_OES_shader_image_atomic, glewIsSupported("GL_OES_shader_image_atomic"), glewGetExtension("GL_OES_shader_image_atomic"));
+}
+
+#endif /* GL_OES_shader_image_atomic */
+
+#ifdef GL_OES_shader_io_blocks
+
+static void _glewInfo_GL_OES_shader_io_blocks (void)
+{
+ glewPrintExt("GL_OES_shader_io_blocks", GLEW_OES_shader_io_blocks, glewIsSupported("GL_OES_shader_io_blocks"), glewGetExtension("GL_OES_shader_io_blocks"));
+}
+
+#endif /* GL_OES_shader_io_blocks */
+
+#ifdef GL_OES_shader_multisample_interpolation
+
+static void _glewInfo_GL_OES_shader_multisample_interpolation (void)
+{
+ glewPrintExt("GL_OES_shader_multisample_interpolation", GLEW_OES_shader_multisample_interpolation, glewIsSupported("GL_OES_shader_multisample_interpolation"), glewGetExtension("GL_OES_shader_multisample_interpolation"));
+}
+
+#endif /* GL_OES_shader_multisample_interpolation */
+
+#ifdef GL_OES_single_precision
+
+static void _glewInfo_GL_OES_single_precision (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_single_precision", GLEW_OES_single_precision, glewIsSupported("GL_OES_single_precision"), glewGetExtension("GL_OES_single_precision"));
+
+ glewInfoFunc(fi, "glClearDepthfOES", glClearDepthfOES == NULL);
+ glewInfoFunc(fi, "glClipPlanefOES", glClipPlanefOES == NULL);
+ glewInfoFunc(fi, "glDepthRangefOES", glDepthRangefOES == NULL);
+ glewInfoFunc(fi, "glFrustumfOES", glFrustumfOES == NULL);
+ glewInfoFunc(fi, "glGetClipPlanefOES", glGetClipPlanefOES == NULL);
+ glewInfoFunc(fi, "glOrthofOES", glOrthofOES == NULL);
+}
+
+#endif /* GL_OES_single_precision */
+
+#ifdef GL_OES_standard_derivatives
+
+static void _glewInfo_GL_OES_standard_derivatives (void)
+{
+ glewPrintExt("GL_OES_standard_derivatives", GLEW_OES_standard_derivatives, glewIsSupported("GL_OES_standard_derivatives"), glewGetExtension("GL_OES_standard_derivatives"));
+}
+
+#endif /* GL_OES_standard_derivatives */
+
+#ifdef GL_OES_stencil1
+
+static void _glewInfo_GL_OES_stencil1 (void)
+{
+ glewPrintExt("GL_OES_stencil1", GLEW_OES_stencil1, glewIsSupported("GL_OES_stencil1"), glewGetExtension("GL_OES_stencil1"));
+}
+
+#endif /* GL_OES_stencil1 */
+
+#ifdef GL_OES_stencil4
+
+static void _glewInfo_GL_OES_stencil4 (void)
+{
+ glewPrintExt("GL_OES_stencil4", GLEW_OES_stencil4, glewIsSupported("GL_OES_stencil4"), glewGetExtension("GL_OES_stencil4"));
+}
+
+#endif /* GL_OES_stencil4 */
+
+#ifdef GL_OES_stencil8
+
+static void _glewInfo_GL_OES_stencil8 (void)
+{
+ glewPrintExt("GL_OES_stencil8", GLEW_OES_stencil8, glewIsSupported("GL_OES_stencil8"), glewGetExtension("GL_OES_stencil8"));
+}
+
+#endif /* GL_OES_stencil8 */
+
+#ifdef GL_OES_surfaceless_context
+
+static void _glewInfo_GL_OES_surfaceless_context (void)
+{
+ glewPrintExt("GL_OES_surfaceless_context", GLEW_OES_surfaceless_context, glewIsSupported("GL_OES_surfaceless_context"), glewGetExtension("GL_OES_surfaceless_context"));
+}
+
+#endif /* GL_OES_surfaceless_context */
+
+#ifdef GL_OES_tessellation_point_size
+
+static void _glewInfo_GL_OES_tessellation_point_size (void)
+{
+ glewPrintExt("GL_OES_tessellation_point_size", GLEW_OES_tessellation_point_size, glewIsSupported("GL_OES_tessellation_point_size"), glewGetExtension("GL_OES_tessellation_point_size"));
+}
+
+#endif /* GL_OES_tessellation_point_size */
+
+#ifdef GL_OES_tessellation_shader
+
+static void _glewInfo_GL_OES_tessellation_shader (void)
+{
+ glewPrintExt("GL_OES_tessellation_shader", GLEW_OES_tessellation_shader, glewIsSupported("GL_OES_tessellation_shader"), glewGetExtension("GL_OES_tessellation_shader"));
+}
+
+#endif /* GL_OES_tessellation_shader */
+
+#ifdef GL_OES_texture_3D
+
+static void _glewInfo_GL_OES_texture_3D (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_3D", GLEW_OES_texture_3D, glewIsSupported("GL_OES_texture_3D"), glewGetExtension("GL_OES_texture_3D"));
+
+ glewInfoFunc(fi, "glCompressedTexImage3DOES", glCompressedTexImage3DOES == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DOES", glCompressedTexSubImage3DOES == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DOES", glCopyTexSubImage3DOES == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3DOES", glFramebufferTexture3DOES == NULL);
+ glewInfoFunc(fi, "glTexImage3DOES", glTexImage3DOES == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DOES", glTexSubImage3DOES == NULL);
+}
+
+#endif /* GL_OES_texture_3D */
+
+#ifdef GL_OES_texture_border_clamp
+
+static void _glewInfo_GL_OES_texture_border_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_border_clamp", GLEW_OES_texture_border_clamp, glewIsSupported("GL_OES_texture_border_clamp"), glewGetExtension("GL_OES_texture_border_clamp"));
+
+ glewInfoFunc(fi, "glGetSamplerParameterIivOES", glGetSamplerParameterIivOES == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuivOES", glGetSamplerParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIivOES", glGetTexParameterIivOES == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuivOES", glGetTexParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIivOES", glSamplerParameterIivOES == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuivOES", glSamplerParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glTexParameterIivOES", glTexParameterIivOES == NULL);
+ glewInfoFunc(fi, "glTexParameterIuivOES", glTexParameterIuivOES == NULL);
+}
+
+#endif /* GL_OES_texture_border_clamp */
+
+#ifdef GL_OES_texture_buffer
+
+static void _glewInfo_GL_OES_texture_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_buffer", GLEW_OES_texture_buffer, glewIsSupported("GL_OES_texture_buffer"), glewGetExtension("GL_OES_texture_buffer"));
+
+ glewInfoFunc(fi, "glTexBufferOES", glTexBufferOES == NULL);
+ glewInfoFunc(fi, "glTexBufferRangeOES", glTexBufferRangeOES == NULL);
+}
+
+#endif /* GL_OES_texture_buffer */
+
+#ifdef GL_OES_texture_compression_astc
+
+static void _glewInfo_GL_OES_texture_compression_astc (void)
+{
+ glewPrintExt("GL_OES_texture_compression_astc", GLEW_OES_texture_compression_astc, glewIsSupported("GL_OES_texture_compression_astc"), glewGetExtension("GL_OES_texture_compression_astc"));
+}
+
+#endif /* GL_OES_texture_compression_astc */
+
+#ifdef GL_OES_texture_cube_map
+
+static void _glewInfo_GL_OES_texture_cube_map (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_cube_map", GLEW_OES_texture_cube_map, glewIsSupported("GL_OES_texture_cube_map"), glewGetExtension("GL_OES_texture_cube_map"));
+
+ glewInfoFunc(fi, "glGetTexGenfvOES", glGetTexGenfvOES == NULL);
+ glewInfoFunc(fi, "glGetTexGenivOES", glGetTexGenivOES == NULL);
+ glewInfoFunc(fi, "glGetTexGenxvOES", glGetTexGenxvOES == NULL);
+ glewInfoFunc(fi, "glTexGenfOES", glTexGenfOES == NULL);
+ glewInfoFunc(fi, "glTexGenfvOES", glTexGenfvOES == NULL);
+ glewInfoFunc(fi, "glTexGeniOES", glTexGeniOES == NULL);
+ glewInfoFunc(fi, "glTexGenivOES", glTexGenivOES == NULL);
+ glewInfoFunc(fi, "glTexGenxOES", glTexGenxOES == NULL);
+ glewInfoFunc(fi, "glTexGenxvOES", glTexGenxvOES == NULL);
+}
+
+#endif /* GL_OES_texture_cube_map */
+
+#ifdef GL_OES_texture_cube_map_array
+
+static void _glewInfo_GL_OES_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_OES_texture_cube_map_array", GLEW_OES_texture_cube_map_array, glewIsSupported("GL_OES_texture_cube_map_array"), glewGetExtension("GL_OES_texture_cube_map_array"));
+}
+
+#endif /* GL_OES_texture_cube_map_array */
+
+#ifdef GL_OES_texture_env_crossbar
+
+static void _glewInfo_GL_OES_texture_env_crossbar (void)
+{
+ glewPrintExt("GL_OES_texture_env_crossbar", GLEW_OES_texture_env_crossbar, glewIsSupported("GL_OES_texture_env_crossbar"), glewGetExtension("GL_OES_texture_env_crossbar"));
+}
+
+#endif /* GL_OES_texture_env_crossbar */
+
+#ifdef GL_OES_texture_mirrored_repeat
+
+static void _glewInfo_GL_OES_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_OES_texture_mirrored_repeat", GLEW_OES_texture_mirrored_repeat, glewIsSupported("GL_OES_texture_mirrored_repeat"), glewGetExtension("GL_OES_texture_mirrored_repeat"));
+}
+
+#endif /* GL_OES_texture_mirrored_repeat */
+
+#ifdef GL_OES_texture_npot
+
+static void _glewInfo_GL_OES_texture_npot (void)
+{
+ glewPrintExt("GL_OES_texture_npot", GLEW_OES_texture_npot, glewIsSupported("GL_OES_texture_npot"), glewGetExtension("GL_OES_texture_npot"));
+}
+
+#endif /* GL_OES_texture_npot */
+
+#ifdef GL_OES_texture_stencil8
+
+static void _glewInfo_GL_OES_texture_stencil8 (void)
+{
+ glewPrintExt("GL_OES_texture_stencil8", GLEW_OES_texture_stencil8, glewIsSupported("GL_OES_texture_stencil8"), glewGetExtension("GL_OES_texture_stencil8"));
+}
+
+#endif /* GL_OES_texture_stencil8 */
+
+#ifdef GL_OES_texture_storage_multisample_2d_array
+
+static void _glewInfo_GL_OES_texture_storage_multisample_2d_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_storage_multisample_2d_array", GLEW_OES_texture_storage_multisample_2d_array, glewIsSupported("GL_OES_texture_storage_multisample_2d_array"), glewGetExtension("GL_OES_texture_storage_multisample_2d_array"));
+
+ glewInfoFunc(fi, "glTexStorage3DMultisampleOES", glTexStorage3DMultisampleOES == NULL);
+}
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+#ifdef GL_OES_texture_view
+
+static void _glewInfo_GL_OES_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_view", GLEW_OES_texture_view, glewIsSupported("GL_OES_texture_view"), glewGetExtension("GL_OES_texture_view"));
+
+ glewInfoFunc(fi, "glTextureViewOES", glTextureViewOES == NULL);
+}
+
+#endif /* GL_OES_texture_view */
+
+#ifdef GL_OES_vertex_array_object
+
+static void _glewInfo_GL_OES_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_vertex_array_object", GLEW_OES_vertex_array_object, glewIsSupported("GL_OES_vertex_array_object"), glewGetExtension("GL_OES_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArrayOES", glBindVertexArrayOES == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysOES", glDeleteVertexArraysOES == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysOES", glGenVertexArraysOES == NULL);
+ glewInfoFunc(fi, "glIsVertexArrayOES", glIsVertexArrayOES == NULL);
+}
+
+#endif /* GL_OES_vertex_array_object */
+
+#ifdef GL_OES_vertex_half_float
+
+static void _glewInfo_GL_OES_vertex_half_float (void)
+{
+ glewPrintExt("GL_OES_vertex_half_float", GLEW_OES_vertex_half_float, glewIsSupported("GL_OES_vertex_half_float"), glewGetExtension("GL_OES_vertex_half_float"));
+}
+
+#endif /* GL_OES_vertex_half_float */
+
+#ifdef GL_OES_vertex_type_10_10_10_2
+
+static void _glewInfo_GL_OES_vertex_type_10_10_10_2 (void)
+{
+ glewPrintExt("GL_OES_vertex_type_10_10_10_2", GLEW_OES_vertex_type_10_10_10_2, glewIsSupported("GL_OES_vertex_type_10_10_10_2"), glewGetExtension("GL_OES_vertex_type_10_10_10_2"));
+}
+
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+
+#ifdef GL_OML_interlace
+
+static void _glewInfo_GL_OML_interlace (void)
+{
+ glewPrintExt("GL_OML_interlace", GLEW_OML_interlace, glewIsSupported("GL_OML_interlace"), glewGetExtension("GL_OML_interlace"));
+}
+
+#endif /* GL_OML_interlace */
+
+#ifdef GL_OML_resample
+
+static void _glewInfo_GL_OML_resample (void)
+{
+ glewPrintExt("GL_OML_resample", GLEW_OML_resample, glewIsSupported("GL_OML_resample"), glewGetExtension("GL_OML_resample"));
+}
+
+#endif /* GL_OML_resample */
+
+#ifdef GL_OML_subsample
+
+static void _glewInfo_GL_OML_subsample (void)
+{
+ glewPrintExt("GL_OML_subsample", GLEW_OML_subsample, glewIsSupported("GL_OML_subsample"), glewGetExtension("GL_OML_subsample"));
+}
+
+#endif /* GL_OML_subsample */
+
+#ifdef GL_OVR_multiview
+
+static void _glewInfo_GL_OVR_multiview (void)
+{
+ GLboolean fi = glewPrintExt("GL_OVR_multiview", GLEW_OVR_multiview, glewIsSupported("GL_OVR_multiview"), glewGetExtension("GL_OVR_multiview"));
+
+ glewInfoFunc(fi, "glFramebufferTextureMultiviewOVR", glFramebufferTextureMultiviewOVR == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureMultiviewOVR", glNamedFramebufferTextureMultiviewOVR == NULL);
+}
+
+#endif /* GL_OVR_multiview */
+
+#ifdef GL_OVR_multiview2
+
+static void _glewInfo_GL_OVR_multiview2 (void)
+{
+ glewPrintExt("GL_OVR_multiview2", GLEW_OVR_multiview2, glewIsSupported("GL_OVR_multiview2"), glewGetExtension("GL_OVR_multiview2"));
+}
+
+#endif /* GL_OVR_multiview2 */
+
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+
+static void _glewInfo_GL_OVR_multiview_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_OVR_multiview_multisampled_render_to_texture", GLEW_OVR_multiview_multisampled_render_to_texture, glewIsSupported("GL_OVR_multiview_multisampled_render_to_texture"), glewGetExtension("GL_OVR_multiview_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTextureMultisampleMultiviewOVR", glFramebufferTextureMultisampleMultiviewOVR == NULL);
+}
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+#ifdef GL_PGI_misc_hints
+
+static void _glewInfo_GL_PGI_misc_hints (void)
+{
+ glewPrintExt("GL_PGI_misc_hints", GLEW_PGI_misc_hints, glewIsSupported("GL_PGI_misc_hints"), glewGetExtension("GL_PGI_misc_hints"));
+}
+
+#endif /* GL_PGI_misc_hints */
+
+#ifdef GL_PGI_vertex_hints
+
+static void _glewInfo_GL_PGI_vertex_hints (void)
+{
+ glewPrintExt("GL_PGI_vertex_hints", GLEW_PGI_vertex_hints, glewIsSupported("GL_PGI_vertex_hints"), glewGetExtension("GL_PGI_vertex_hints"));
+}
+
+#endif /* GL_PGI_vertex_hints */
+
+#ifdef GL_QCOM_YUV_texture_gather
+
+static void _glewInfo_GL_QCOM_YUV_texture_gather (void)
+{
+ glewPrintExt("GL_QCOM_YUV_texture_gather", GLEW_QCOM_YUV_texture_gather, glewIsSupported("GL_QCOM_YUV_texture_gather"), glewGetExtension("GL_QCOM_YUV_texture_gather"));
+}
+
+#endif /* GL_QCOM_YUV_texture_gather */
+
+#ifdef GL_QCOM_alpha_test
+
+static void _glewInfo_GL_QCOM_alpha_test (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_alpha_test", GLEW_QCOM_alpha_test, glewIsSupported("GL_QCOM_alpha_test"), glewGetExtension("GL_QCOM_alpha_test"));
+
+ glewInfoFunc(fi, "glAlphaFuncQCOM", glAlphaFuncQCOM == NULL);
+}
+
+#endif /* GL_QCOM_alpha_test */
+
+#ifdef GL_QCOM_binning_control
+
+static void _glewInfo_GL_QCOM_binning_control (void)
+{
+ glewPrintExt("GL_QCOM_binning_control", GLEW_QCOM_binning_control, glewIsSupported("GL_QCOM_binning_control"), glewGetExtension("GL_QCOM_binning_control"));
+}
+
+#endif /* GL_QCOM_binning_control */
+
+#ifdef GL_QCOM_driver_control
+
+static void _glewInfo_GL_QCOM_driver_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_driver_control", GLEW_QCOM_driver_control, glewIsSupported("GL_QCOM_driver_control"), glewGetExtension("GL_QCOM_driver_control"));
+
+ glewInfoFunc(fi, "glDisableDriverControlQCOM", glDisableDriverControlQCOM == NULL);
+ glewInfoFunc(fi, "glEnableDriverControlQCOM", glEnableDriverControlQCOM == NULL);
+ glewInfoFunc(fi, "glGetDriverControlStringQCOM", glGetDriverControlStringQCOM == NULL);
+ glewInfoFunc(fi, "glGetDriverControlsQCOM", glGetDriverControlsQCOM == NULL);
+}
+
+#endif /* GL_QCOM_driver_control */
+
+#ifdef GL_QCOM_extended_get
+
+static void _glewInfo_GL_QCOM_extended_get (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_extended_get", GLEW_QCOM_extended_get, glewIsSupported("GL_QCOM_extended_get"), glewGetExtension("GL_QCOM_extended_get"));
+
+ glewInfoFunc(fi, "glExtGetBufferPointervQCOM", glExtGetBufferPointervQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetBuffersQCOM", glExtGetBuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetFramebuffersQCOM", glExtGetFramebuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetRenderbuffersQCOM", glExtGetRenderbuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexLevelParameterivQCOM", glExtGetTexLevelParameterivQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexSubImageQCOM", glExtGetTexSubImageQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexturesQCOM", glExtGetTexturesQCOM == NULL);
+ glewInfoFunc(fi, "glExtTexObjectStateOverrideiQCOM", glExtTexObjectStateOverrideiQCOM == NULL);
+}
+
+#endif /* GL_QCOM_extended_get */
+
+#ifdef GL_QCOM_extended_get2
+
+static void _glewInfo_GL_QCOM_extended_get2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_extended_get2", GLEW_QCOM_extended_get2, glewIsSupported("GL_QCOM_extended_get2"), glewGetExtension("GL_QCOM_extended_get2"));
+
+ glewInfoFunc(fi, "glExtGetProgramBinarySourceQCOM", glExtGetProgramBinarySourceQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetProgramsQCOM", glExtGetProgramsQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetShadersQCOM", glExtGetShadersQCOM == NULL);
+ glewInfoFunc(fi, "glExtIsProgramBinaryQCOM", glExtIsProgramBinaryQCOM == NULL);
+}
+
+#endif /* GL_QCOM_extended_get2 */
+
+#ifdef GL_QCOM_frame_extrapolation
+
+static void _glewInfo_GL_QCOM_frame_extrapolation (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_frame_extrapolation", GLEW_QCOM_frame_extrapolation, glewIsSupported("GL_QCOM_frame_extrapolation"), glewGetExtension("GL_QCOM_frame_extrapolation"));
+
+ glewInfoFunc(fi, "glExtrapolateTex2DQCOM", glExtrapolateTex2DQCOM == NULL);
+}
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+#ifdef GL_QCOM_framebuffer_foveated
+
+static void _glewInfo_GL_QCOM_framebuffer_foveated (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_framebuffer_foveated", GLEW_QCOM_framebuffer_foveated, glewIsSupported("GL_QCOM_framebuffer_foveated"), glewGetExtension("GL_QCOM_framebuffer_foveated"));
+
+ glewInfoFunc(fi, "glFramebufferFoveationConfigQCOM", glFramebufferFoveationConfigQCOM == NULL);
+ glewInfoFunc(fi, "glFramebufferFoveationParametersQCOM", glFramebufferFoveationParametersQCOM == NULL);
+}
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+#ifdef GL_QCOM_motion_estimation
+
+static void _glewInfo_GL_QCOM_motion_estimation (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_motion_estimation", GLEW_QCOM_motion_estimation, glewIsSupported("GL_QCOM_motion_estimation"), glewGetExtension("GL_QCOM_motion_estimation"));
+
+ glewInfoFunc(fi, "glTexEstimateMotionQCOM", glTexEstimateMotionQCOM == NULL);
+ glewInfoFunc(fi, "glTexEstimateMotionRegionsQCOM", glTexEstimateMotionRegionsQCOM == NULL);
+}
+
+#endif /* GL_QCOM_motion_estimation */
+
+#ifdef GL_QCOM_perfmon_global_mode
+
+static void _glewInfo_GL_QCOM_perfmon_global_mode (void)
+{
+ glewPrintExt("GL_QCOM_perfmon_global_mode", GLEW_QCOM_perfmon_global_mode, glewIsSupported("GL_QCOM_perfmon_global_mode"), glewGetExtension("GL_QCOM_perfmon_global_mode"));
+}
+
+#endif /* GL_QCOM_perfmon_global_mode */
+
+#ifdef GL_QCOM_render_shared_exponent
+
+static void _glewInfo_GL_QCOM_render_shared_exponent (void)
+{
+ glewPrintExt("GL_QCOM_render_shared_exponent", GLEW_QCOM_render_shared_exponent, glewIsSupported("GL_QCOM_render_shared_exponent"), glewGetExtension("GL_QCOM_render_shared_exponent"));
+}
+
+#endif /* GL_QCOM_render_shared_exponent */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+static void _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_shader_framebuffer_fetch_noncoherent", GLEW_QCOM_shader_framebuffer_fetch_noncoherent, glewIsSupported("GL_QCOM_shader_framebuffer_fetch_noncoherent"), glewGetExtension("GL_QCOM_shader_framebuffer_fetch_noncoherent"));
+
+ glewInfoFunc(fi, "glFramebufferFetchBarrierQCOM", glFramebufferFetchBarrierQCOM == NULL);
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+
+static void _glewInfo_GL_QCOM_shader_framebuffer_fetch_rate (void)
+{
+ glewPrintExt("GL_QCOM_shader_framebuffer_fetch_rate", GLEW_QCOM_shader_framebuffer_fetch_rate, glewIsSupported("GL_QCOM_shader_framebuffer_fetch_rate"), glewGetExtension("GL_QCOM_shader_framebuffer_fetch_rate"));
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+
+#ifdef GL_QCOM_shading_rate
+
+static void _glewInfo_GL_QCOM_shading_rate (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_shading_rate", GLEW_QCOM_shading_rate, glewIsSupported("GL_QCOM_shading_rate"), glewGetExtension("GL_QCOM_shading_rate"));
+
+ glewInfoFunc(fi, "glShadingRateQCOM", glShadingRateQCOM == NULL);
+}
+
+#endif /* GL_QCOM_shading_rate */
+
+#ifdef GL_QCOM_texture_foveated
+
+static void _glewInfo_GL_QCOM_texture_foveated (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_texture_foveated", GLEW_QCOM_texture_foveated, glewIsSupported("GL_QCOM_texture_foveated"), glewGetExtension("GL_QCOM_texture_foveated"));
+
+ glewInfoFunc(fi, "glTextureFoveationParametersQCOM", glTextureFoveationParametersQCOM == NULL);
+}
+
+#endif /* GL_QCOM_texture_foveated */
+
+#ifdef GL_QCOM_texture_foveated2
+
+static void _glewInfo_GL_QCOM_texture_foveated2 (void)
+{
+ glewPrintExt("GL_QCOM_texture_foveated2", GLEW_QCOM_texture_foveated2, glewIsSupported("GL_QCOM_texture_foveated2"), glewGetExtension("GL_QCOM_texture_foveated2"));
+}
+
+#endif /* GL_QCOM_texture_foveated2 */
+
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+
+static void _glewInfo_GL_QCOM_texture_foveated_subsampled_layout (void)
+{
+ glewPrintExt("GL_QCOM_texture_foveated_subsampled_layout", GLEW_QCOM_texture_foveated_subsampled_layout, glewIsSupported("GL_QCOM_texture_foveated_subsampled_layout"), glewGetExtension("GL_QCOM_texture_foveated_subsampled_layout"));
+}
+
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+
+#ifdef GL_QCOM_tiled_rendering
+
+static void _glewInfo_GL_QCOM_tiled_rendering (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_tiled_rendering", GLEW_QCOM_tiled_rendering, glewIsSupported("GL_QCOM_tiled_rendering"), glewGetExtension("GL_QCOM_tiled_rendering"));
+
+ glewInfoFunc(fi, "glEndTilingQCOM", glEndTilingQCOM == NULL);
+ glewInfoFunc(fi, "glStartTilingQCOM", glStartTilingQCOM == NULL);
+}
+
+#endif /* GL_QCOM_tiled_rendering */
+
+#ifdef GL_QCOM_writeonly_rendering
+
+static void _glewInfo_GL_QCOM_writeonly_rendering (void)
+{
+ glewPrintExt("GL_QCOM_writeonly_rendering", GLEW_QCOM_writeonly_rendering, glewIsSupported("GL_QCOM_writeonly_rendering"), glewGetExtension("GL_QCOM_writeonly_rendering"));
+}
+
+#endif /* GL_QCOM_writeonly_rendering */
+
+#ifdef GL_REGAL_ES1_0_compatibility
+
+static void _glewInfo_GL_REGAL_ES1_0_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_ES1_0_compatibility", GLEW_REGAL_ES1_0_compatibility, glewIsSupported("GL_REGAL_ES1_0_compatibility"), glewGetExtension("GL_REGAL_ES1_0_compatibility"));
+
+ glewInfoFunc(fi, "glAlphaFuncx", glAlphaFuncx == NULL);
+ glewInfoFunc(fi, "glClearColorx", glClearColorx == NULL);
+ glewInfoFunc(fi, "glClearDepthx", glClearDepthx == NULL);
+ glewInfoFunc(fi, "glColor4x", glColor4x == NULL);
+ glewInfoFunc(fi, "glDepthRangex", glDepthRangex == NULL);
+ glewInfoFunc(fi, "glFogx", glFogx == NULL);
+ glewInfoFunc(fi, "glFogxv", glFogxv == NULL);
+ glewInfoFunc(fi, "glFrustumf", glFrustumf == NULL);
+ glewInfoFunc(fi, "glFrustumx", glFrustumx == NULL);
+ glewInfoFunc(fi, "glLightModelx", glLightModelx == NULL);
+ glewInfoFunc(fi, "glLightModelxv", glLightModelxv == NULL);
+ glewInfoFunc(fi, "glLightx", glLightx == NULL);
+ glewInfoFunc(fi, "glLightxv", glLightxv == NULL);
+ glewInfoFunc(fi, "glLineWidthx", glLineWidthx == NULL);
+ glewInfoFunc(fi, "glLoadMatrixx", glLoadMatrixx == NULL);
+ glewInfoFunc(fi, "glMaterialx", glMaterialx == NULL);
+ glewInfoFunc(fi, "glMaterialxv", glMaterialxv == NULL);
+ glewInfoFunc(fi, "glMultMatrixx", glMultMatrixx == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4x", glMultiTexCoord4x == NULL);
+ glewInfoFunc(fi, "glNormal3x", glNormal3x == NULL);
+ glewInfoFunc(fi, "glOrthof", glOrthof == NULL);
+ glewInfoFunc(fi, "glOrthox", glOrthox == NULL);
+ glewInfoFunc(fi, "glPointSizex", glPointSizex == NULL);
+ glewInfoFunc(fi, "glPolygonOffsetx", glPolygonOffsetx == NULL);
+ glewInfoFunc(fi, "glRotatex", glRotatex == NULL);
+ glewInfoFunc(fi, "glSampleCoveragex", glSampleCoveragex == NULL);
+ glewInfoFunc(fi, "glScalex", glScalex == NULL);
+ glewInfoFunc(fi, "glTexEnvx", glTexEnvx == NULL);
+ glewInfoFunc(fi, "glTexEnvxv", glTexEnvxv == NULL);
+ glewInfoFunc(fi, "glTexParameterx", glTexParameterx == NULL);
+ glewInfoFunc(fi, "glTranslatex", glTranslatex == NULL);
+}
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+#ifdef GL_REGAL_ES1_1_compatibility
+
+static void _glewInfo_GL_REGAL_ES1_1_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_ES1_1_compatibility", GLEW_REGAL_ES1_1_compatibility, glewIsSupported("GL_REGAL_ES1_1_compatibility"), glewGetExtension("GL_REGAL_ES1_1_compatibility"));
+
+ glewInfoFunc(fi, "glClipPlanef", glClipPlanef == NULL);
+ glewInfoFunc(fi, "glClipPlanex", glClipPlanex == NULL);
+ glewInfoFunc(fi, "glGetClipPlanef", glGetClipPlanef == NULL);
+ glewInfoFunc(fi, "glGetClipPlanex", glGetClipPlanex == NULL);
+ glewInfoFunc(fi, "glGetFixedv", glGetFixedv == NULL);
+ glewInfoFunc(fi, "glGetLightxv", glGetLightxv == NULL);
+ glewInfoFunc(fi, "glGetMaterialxv", glGetMaterialxv == NULL);
+ glewInfoFunc(fi, "glGetTexEnvxv", glGetTexEnvxv == NULL);
+ glewInfoFunc(fi, "glGetTexParameterxv", glGetTexParameterxv == NULL);
+ glewInfoFunc(fi, "glPointParameterx", glPointParameterx == NULL);
+ glewInfoFunc(fi, "glPointParameterxv", glPointParameterxv == NULL);
+ glewInfoFunc(fi, "glPointSizePointerOES", glPointSizePointerOES == NULL);
+ glewInfoFunc(fi, "glTexParameterxv", glTexParameterxv == NULL);
+}
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+#ifdef GL_REGAL_enable
+
+static void _glewInfo_GL_REGAL_enable (void)
+{
+ glewPrintExt("GL_REGAL_enable", GLEW_REGAL_enable, glewIsSupported("GL_REGAL_enable"), glewGetExtension("GL_REGAL_enable"));
+}
+
+#endif /* GL_REGAL_enable */
+
+#ifdef GL_REGAL_error_string
+
+static void _glewInfo_GL_REGAL_error_string (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_error_string", GLEW_REGAL_error_string, glewIsSupported("GL_REGAL_error_string"), glewGetExtension("GL_REGAL_error_string"));
+
+ glewInfoFunc(fi, "glErrorStringREGAL", glErrorStringREGAL == NULL);
+}
+
+#endif /* GL_REGAL_error_string */
+
+#ifdef GL_REGAL_extension_query
+
+static void _glewInfo_GL_REGAL_extension_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_extension_query", GLEW_REGAL_extension_query, glewIsSupported("GL_REGAL_extension_query"), glewGetExtension("GL_REGAL_extension_query"));
+
+ glewInfoFunc(fi, "glGetExtensionREGAL", glGetExtensionREGAL == NULL);
+ glewInfoFunc(fi, "glIsSupportedREGAL", glIsSupportedREGAL == NULL);
+}
+
+#endif /* GL_REGAL_extension_query */
+
+#ifdef GL_REGAL_log
+
+static void _glewInfo_GL_REGAL_log (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_log", GLEW_REGAL_log, glewIsSupported("GL_REGAL_log"), glewGetExtension("GL_REGAL_log"));
+
+ glewInfoFunc(fi, "glLogMessageCallbackREGAL", glLogMessageCallbackREGAL == NULL);
+}
+
+#endif /* GL_REGAL_log */
+
+#ifdef GL_REGAL_proc_address
+
+static void _glewInfo_GL_REGAL_proc_address (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_proc_address", GLEW_REGAL_proc_address, glewIsSupported("GL_REGAL_proc_address"), glewGetExtension("GL_REGAL_proc_address"));
+
+ glewInfoFunc(fi, "glGetProcAddressREGAL", glGetProcAddressREGAL == NULL);
+}
+
+#endif /* GL_REGAL_proc_address */
+
+#ifdef GL_REND_screen_coordinates
+
+static void _glewInfo_GL_REND_screen_coordinates (void)
+{
+ glewPrintExt("GL_REND_screen_coordinates", GLEW_REND_screen_coordinates, glewIsSupported("GL_REND_screen_coordinates"), glewGetExtension("GL_REND_screen_coordinates"));
+}
+
+#endif /* GL_REND_screen_coordinates */
+
+#ifdef GL_S3_s3tc
+
+static void _glewInfo_GL_S3_s3tc (void)
+{
+ glewPrintExt("GL_S3_s3tc", GLEW_S3_s3tc, glewIsSupported("GL_S3_s3tc"), glewGetExtension("GL_S3_s3tc"));
+}
+
+#endif /* GL_S3_s3tc */
+
+#ifdef GL_SGIS_clip_band_hint
+
+static void _glewInfo_GL_SGIS_clip_band_hint (void)
+{
+ glewPrintExt("GL_SGIS_clip_band_hint", GLEW_SGIS_clip_band_hint, glewIsSupported("GL_SGIS_clip_band_hint"), glewGetExtension("GL_SGIS_clip_band_hint"));
+}
+
+#endif /* GL_SGIS_clip_band_hint */
+
+#ifdef GL_SGIS_color_range
+
+static void _glewInfo_GL_SGIS_color_range (void)
+{
+ glewPrintExt("GL_SGIS_color_range", GLEW_SGIS_color_range, glewIsSupported("GL_SGIS_color_range"), glewGetExtension("GL_SGIS_color_range"));
+}
+
+#endif /* GL_SGIS_color_range */
+
+#ifdef GL_SGIS_detail_texture
+
+static void _glewInfo_GL_SGIS_detail_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_detail_texture", GLEW_SGIS_detail_texture, glewIsSupported("GL_SGIS_detail_texture"), glewGetExtension("GL_SGIS_detail_texture"));
+
+ glewInfoFunc(fi, "glDetailTexFuncSGIS", glDetailTexFuncSGIS == NULL);
+ glewInfoFunc(fi, "glGetDetailTexFuncSGIS", glGetDetailTexFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_detail_texture */
+
+#ifdef GL_SGIS_fog_function
+
+static void _glewInfo_GL_SGIS_fog_function (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_fog_function", GLEW_SGIS_fog_function, glewIsSupported("GL_SGIS_fog_function"), glewGetExtension("GL_SGIS_fog_function"));
+
+ glewInfoFunc(fi, "glFogFuncSGIS", glFogFuncSGIS == NULL);
+ glewInfoFunc(fi, "glGetFogFuncSGIS", glGetFogFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_fog_function */
+
+#ifdef GL_SGIS_generate_mipmap
+
+static void _glewInfo_GL_SGIS_generate_mipmap (void)
+{
+ glewPrintExt("GL_SGIS_generate_mipmap", GLEW_SGIS_generate_mipmap, glewIsSupported("GL_SGIS_generate_mipmap"), glewGetExtension("GL_SGIS_generate_mipmap"));
+}
+
+#endif /* GL_SGIS_generate_mipmap */
+
+#ifdef GL_SGIS_line_texgen
+
+static void _glewInfo_GL_SGIS_line_texgen (void)
+{
+ glewPrintExt("GL_SGIS_line_texgen", GLEW_SGIS_line_texgen, glewIsSupported("GL_SGIS_line_texgen"), glewGetExtension("GL_SGIS_line_texgen"));
+}
+
+#endif /* GL_SGIS_line_texgen */
+
+#ifdef GL_SGIS_multisample
+
+static void _glewInfo_GL_SGIS_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_multisample", GLEW_SGIS_multisample, glewIsSupported("GL_SGIS_multisample"), glewGetExtension("GL_SGIS_multisample"));
+
+ glewInfoFunc(fi, "glSampleMaskSGIS", glSampleMaskSGIS == NULL);
+ glewInfoFunc(fi, "glSamplePatternSGIS", glSamplePatternSGIS == NULL);
+}
+
+#endif /* GL_SGIS_multisample */
+
+#ifdef GL_SGIS_multitexture
+
+static void _glewInfo_GL_SGIS_multitexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_multitexture", GLEW_SGIS_multitexture, glewIsSupported("GL_SGIS_multitexture"), glewGetExtension("GL_SGIS_multitexture"));
+
+ glewInfoFunc(fi, "glInterleavedTextureCoordSetsSGIS", glInterleavedTextureCoordSetsSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureCoordSetSGIS", glSelectTextureCoordSetSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureSGIS", glSelectTextureSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureTransformSGIS", glSelectTextureTransformSGIS == NULL);
+}
+
+#endif /* GL_SGIS_multitexture */
+
+#ifdef GL_SGIS_pixel_texture
+
+static void _glewInfo_GL_SGIS_pixel_texture (void)
+{
+ glewPrintExt("GL_SGIS_pixel_texture", GLEW_SGIS_pixel_texture, glewIsSupported("GL_SGIS_pixel_texture"), glewGetExtension("GL_SGIS_pixel_texture"));
+}
+
+#endif /* GL_SGIS_pixel_texture */
+
+#ifdef GL_SGIS_point_line_texgen
+
+static void _glewInfo_GL_SGIS_point_line_texgen (void)
+{
+ glewPrintExt("GL_SGIS_point_line_texgen", GLEW_SGIS_point_line_texgen, glewIsSupported("GL_SGIS_point_line_texgen"), glewGetExtension("GL_SGIS_point_line_texgen"));
+}
+
+#endif /* GL_SGIS_point_line_texgen */
+
+#ifdef GL_SGIS_shared_multisample
+
+static void _glewInfo_GL_SGIS_shared_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_shared_multisample", GLEW_SGIS_shared_multisample, glewIsSupported("GL_SGIS_shared_multisample"), glewGetExtension("GL_SGIS_shared_multisample"));
+
+ glewInfoFunc(fi, "glMultisampleSubRectPosSGIS", glMultisampleSubRectPosSGIS == NULL);
+}
+
+#endif /* GL_SGIS_shared_multisample */
+
+#ifdef GL_SGIS_sharpen_texture
+
+static void _glewInfo_GL_SGIS_sharpen_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_sharpen_texture", GLEW_SGIS_sharpen_texture, glewIsSupported("GL_SGIS_sharpen_texture"), glewGetExtension("GL_SGIS_sharpen_texture"));
+
+ glewInfoFunc(fi, "glGetSharpenTexFuncSGIS", glGetSharpenTexFuncSGIS == NULL);
+ glewInfoFunc(fi, "glSharpenTexFuncSGIS", glSharpenTexFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_sharpen_texture */
+
+#ifdef GL_SGIS_texture4D
+
+static void _glewInfo_GL_SGIS_texture4D (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_texture4D", GLEW_SGIS_texture4D, glewIsSupported("GL_SGIS_texture4D"), glewGetExtension("GL_SGIS_texture4D"));
+
+ glewInfoFunc(fi, "glTexImage4DSGIS", glTexImage4DSGIS == NULL);
+ glewInfoFunc(fi, "glTexSubImage4DSGIS", glTexSubImage4DSGIS == NULL);
+}
+
+#endif /* GL_SGIS_texture4D */
+
+#ifdef GL_SGIS_texture_border_clamp
+
+static void _glewInfo_GL_SGIS_texture_border_clamp (void)
+{
+ glewPrintExt("GL_SGIS_texture_border_clamp", GLEW_SGIS_texture_border_clamp, glewIsSupported("GL_SGIS_texture_border_clamp"), glewGetExtension("GL_SGIS_texture_border_clamp"));
+}
+
+#endif /* GL_SGIS_texture_border_clamp */
+
+#ifdef GL_SGIS_texture_edge_clamp
+
+static void _glewInfo_GL_SGIS_texture_edge_clamp (void)
+{
+ glewPrintExt("GL_SGIS_texture_edge_clamp", GLEW_SGIS_texture_edge_clamp, glewIsSupported("GL_SGIS_texture_edge_clamp"), glewGetExtension("GL_SGIS_texture_edge_clamp"));
+}
+
+#endif /* GL_SGIS_texture_edge_clamp */
+
+#ifdef GL_SGIS_texture_filter4
+
+static void _glewInfo_GL_SGIS_texture_filter4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_texture_filter4", GLEW_SGIS_texture_filter4, glewIsSupported("GL_SGIS_texture_filter4"), glewGetExtension("GL_SGIS_texture_filter4"));
+
+ glewInfoFunc(fi, "glGetTexFilterFuncSGIS", glGetTexFilterFuncSGIS == NULL);
+ glewInfoFunc(fi, "glTexFilterFuncSGIS", glTexFilterFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_texture_filter4 */
+
+#ifdef GL_SGIS_texture_lod
+
+static void _glewInfo_GL_SGIS_texture_lod (void)
+{
+ glewPrintExt("GL_SGIS_texture_lod", GLEW_SGIS_texture_lod, glewIsSupported("GL_SGIS_texture_lod"), glewGetExtension("GL_SGIS_texture_lod"));
+}
+
+#endif /* GL_SGIS_texture_lod */
+
+#ifdef GL_SGIS_texture_select
+
+static void _glewInfo_GL_SGIS_texture_select (void)
+{
+ glewPrintExt("GL_SGIS_texture_select", GLEW_SGIS_texture_select, glewIsSupported("GL_SGIS_texture_select"), glewGetExtension("GL_SGIS_texture_select"));
+}
+
+#endif /* GL_SGIS_texture_select */
+
+#ifdef GL_SGIX_async
+
+static void _glewInfo_GL_SGIX_async (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_async", GLEW_SGIX_async, glewIsSupported("GL_SGIX_async"), glewGetExtension("GL_SGIX_async"));
+
+ glewInfoFunc(fi, "glAsyncMarkerSGIX", glAsyncMarkerSGIX == NULL);
+ glewInfoFunc(fi, "glDeleteAsyncMarkersSGIX", glDeleteAsyncMarkersSGIX == NULL);
+ glewInfoFunc(fi, "glFinishAsyncSGIX", glFinishAsyncSGIX == NULL);
+ glewInfoFunc(fi, "glGenAsyncMarkersSGIX", glGenAsyncMarkersSGIX == NULL);
+ glewInfoFunc(fi, "glIsAsyncMarkerSGIX", glIsAsyncMarkerSGIX == NULL);
+ glewInfoFunc(fi, "glPollAsyncSGIX", glPollAsyncSGIX == NULL);
+}
+
+#endif /* GL_SGIX_async */
+
+#ifdef GL_SGIX_async_histogram
+
+static void _glewInfo_GL_SGIX_async_histogram (void)
+{
+ glewPrintExt("GL_SGIX_async_histogram", GLEW_SGIX_async_histogram, glewIsSupported("GL_SGIX_async_histogram"), glewGetExtension("GL_SGIX_async_histogram"));
+}
+
+#endif /* GL_SGIX_async_histogram */
+
+#ifdef GL_SGIX_async_pixel
+
+static void _glewInfo_GL_SGIX_async_pixel (void)
+{
+ glewPrintExt("GL_SGIX_async_pixel", GLEW_SGIX_async_pixel, glewIsSupported("GL_SGIX_async_pixel"), glewGetExtension("GL_SGIX_async_pixel"));
+}
+
+#endif /* GL_SGIX_async_pixel */
+
+#ifdef GL_SGIX_bali_g_instruments
+
+static void _glewInfo_GL_SGIX_bali_g_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_g_instruments", GLEW_SGIX_bali_g_instruments, glewIsSupported("GL_SGIX_bali_g_instruments"), glewGetExtension("GL_SGIX_bali_g_instruments"));
+}
+
+#endif /* GL_SGIX_bali_g_instruments */
+
+#ifdef GL_SGIX_bali_r_instruments
+
+static void _glewInfo_GL_SGIX_bali_r_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_r_instruments", GLEW_SGIX_bali_r_instruments, glewIsSupported("GL_SGIX_bali_r_instruments"), glewGetExtension("GL_SGIX_bali_r_instruments"));
+}
+
+#endif /* GL_SGIX_bali_r_instruments */
+
+#ifdef GL_SGIX_bali_timer_instruments
+
+static void _glewInfo_GL_SGIX_bali_timer_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_timer_instruments", GLEW_SGIX_bali_timer_instruments, glewIsSupported("GL_SGIX_bali_timer_instruments"), glewGetExtension("GL_SGIX_bali_timer_instruments"));
+}
+
+#endif /* GL_SGIX_bali_timer_instruments */
+
+#ifdef GL_SGIX_blend_alpha_minmax
+
+static void _glewInfo_GL_SGIX_blend_alpha_minmax (void)
+{
+ glewPrintExt("GL_SGIX_blend_alpha_minmax", GLEW_SGIX_blend_alpha_minmax, glewIsSupported("GL_SGIX_blend_alpha_minmax"), glewGetExtension("GL_SGIX_blend_alpha_minmax"));
+}
+
+#endif /* GL_SGIX_blend_alpha_minmax */
+
+#ifdef GL_SGIX_blend_cadd
+
+static void _glewInfo_GL_SGIX_blend_cadd (void)
+{
+ glewPrintExt("GL_SGIX_blend_cadd", GLEW_SGIX_blend_cadd, glewIsSupported("GL_SGIX_blend_cadd"), glewGetExtension("GL_SGIX_blend_cadd"));
+}
+
+#endif /* GL_SGIX_blend_cadd */
+
+#ifdef GL_SGIX_blend_cmultiply
+
+static void _glewInfo_GL_SGIX_blend_cmultiply (void)
+{
+ glewPrintExt("GL_SGIX_blend_cmultiply", GLEW_SGIX_blend_cmultiply, glewIsSupported("GL_SGIX_blend_cmultiply"), glewGetExtension("GL_SGIX_blend_cmultiply"));
+}
+
+#endif /* GL_SGIX_blend_cmultiply */
+
+#ifdef GL_SGIX_calligraphic_fragment
+
+static void _glewInfo_GL_SGIX_calligraphic_fragment (void)
+{
+ glewPrintExt("GL_SGIX_calligraphic_fragment", GLEW_SGIX_calligraphic_fragment, glewIsSupported("GL_SGIX_calligraphic_fragment"), glewGetExtension("GL_SGIX_calligraphic_fragment"));
+}
+
+#endif /* GL_SGIX_calligraphic_fragment */
+
+#ifdef GL_SGIX_clipmap
+
+static void _glewInfo_GL_SGIX_clipmap (void)
+{
+ glewPrintExt("GL_SGIX_clipmap", GLEW_SGIX_clipmap, glewIsSupported("GL_SGIX_clipmap"), glewGetExtension("GL_SGIX_clipmap"));
+}
+
+#endif /* GL_SGIX_clipmap */
+
+#ifdef GL_SGIX_color_matrix_accuracy
+
+static void _glewInfo_GL_SGIX_color_matrix_accuracy (void)
+{
+ glewPrintExt("GL_SGIX_color_matrix_accuracy", GLEW_SGIX_color_matrix_accuracy, glewIsSupported("GL_SGIX_color_matrix_accuracy"), glewGetExtension("GL_SGIX_color_matrix_accuracy"));
+}
+
+#endif /* GL_SGIX_color_matrix_accuracy */
+
+#ifdef GL_SGIX_color_table_index_mode
+
+static void _glewInfo_GL_SGIX_color_table_index_mode (void)
+{
+ glewPrintExt("GL_SGIX_color_table_index_mode", GLEW_SGIX_color_table_index_mode, glewIsSupported("GL_SGIX_color_table_index_mode"), glewGetExtension("GL_SGIX_color_table_index_mode"));
+}
+
+#endif /* GL_SGIX_color_table_index_mode */
+
+#ifdef GL_SGIX_complex_polar
+
+static void _glewInfo_GL_SGIX_complex_polar (void)
+{
+ glewPrintExt("GL_SGIX_complex_polar", GLEW_SGIX_complex_polar, glewIsSupported("GL_SGIX_complex_polar"), glewGetExtension("GL_SGIX_complex_polar"));
+}
+
+#endif /* GL_SGIX_complex_polar */
+
+#ifdef GL_SGIX_convolution_accuracy
+
+static void _glewInfo_GL_SGIX_convolution_accuracy (void)
+{
+ glewPrintExt("GL_SGIX_convolution_accuracy", GLEW_SGIX_convolution_accuracy, glewIsSupported("GL_SGIX_convolution_accuracy"), glewGetExtension("GL_SGIX_convolution_accuracy"));
+}
+
+#endif /* GL_SGIX_convolution_accuracy */
+
+#ifdef GL_SGIX_cube_map
+
+static void _glewInfo_GL_SGIX_cube_map (void)
+{
+ glewPrintExt("GL_SGIX_cube_map", GLEW_SGIX_cube_map, glewIsSupported("GL_SGIX_cube_map"), glewGetExtension("GL_SGIX_cube_map"));
+}
+
+#endif /* GL_SGIX_cube_map */
+
+#ifdef GL_SGIX_cylinder_texgen
+
+static void _glewInfo_GL_SGIX_cylinder_texgen (void)
+{
+ glewPrintExt("GL_SGIX_cylinder_texgen", GLEW_SGIX_cylinder_texgen, glewIsSupported("GL_SGIX_cylinder_texgen"), glewGetExtension("GL_SGIX_cylinder_texgen"));
+}
+
+#endif /* GL_SGIX_cylinder_texgen */
+
+#ifdef GL_SGIX_datapipe
+
+static void _glewInfo_GL_SGIX_datapipe (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_datapipe", GLEW_SGIX_datapipe, glewIsSupported("GL_SGIX_datapipe"), glewGetExtension("GL_SGIX_datapipe"));
+
+ glewInfoFunc(fi, "glAddressSpace", glAddressSpace == NULL);
+ glewInfoFunc(fi, "glDataPipe", glDataPipe == NULL);
+}
+
+#endif /* GL_SGIX_datapipe */
+
+#ifdef GL_SGIX_decimation
+
+static void _glewInfo_GL_SGIX_decimation (void)
+{
+ glewPrintExt("GL_SGIX_decimation", GLEW_SGIX_decimation, glewIsSupported("GL_SGIX_decimation"), glewGetExtension("GL_SGIX_decimation"));
+}
+
+#endif /* GL_SGIX_decimation */
+
+#ifdef GL_SGIX_depth_pass_instrument
+
+static void _glewInfo_GL_SGIX_depth_pass_instrument (void)
+{
+ glewPrintExt("GL_SGIX_depth_pass_instrument", GLEW_SGIX_depth_pass_instrument, glewIsSupported("GL_SGIX_depth_pass_instrument"), glewGetExtension("GL_SGIX_depth_pass_instrument"));
+}
+
+#endif /* GL_SGIX_depth_pass_instrument */
+
+#ifdef GL_SGIX_depth_texture
+
+static void _glewInfo_GL_SGIX_depth_texture (void)
+{
+ glewPrintExt("GL_SGIX_depth_texture", GLEW_SGIX_depth_texture, glewIsSupported("GL_SGIX_depth_texture"), glewGetExtension("GL_SGIX_depth_texture"));
+}
+
+#endif /* GL_SGIX_depth_texture */
+
+#ifdef GL_SGIX_dvc
+
+static void _glewInfo_GL_SGIX_dvc (void)
+{
+ glewPrintExt("GL_SGIX_dvc", GLEW_SGIX_dvc, glewIsSupported("GL_SGIX_dvc"), glewGetExtension("GL_SGIX_dvc"));
+}
+
+#endif /* GL_SGIX_dvc */
+
+#ifdef GL_SGIX_flush_raster
+
+static void _glewInfo_GL_SGIX_flush_raster (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_flush_raster", GLEW_SGIX_flush_raster, glewIsSupported("GL_SGIX_flush_raster"), glewGetExtension("GL_SGIX_flush_raster"));
+
+ glewInfoFunc(fi, "glFlushRasterSGIX", glFlushRasterSGIX == NULL);
+}
+
+#endif /* GL_SGIX_flush_raster */
+
+#ifdef GL_SGIX_fog_blend
+
+static void _glewInfo_GL_SGIX_fog_blend (void)
+{
+ glewPrintExt("GL_SGIX_fog_blend", GLEW_SGIX_fog_blend, glewIsSupported("GL_SGIX_fog_blend"), glewGetExtension("GL_SGIX_fog_blend"));
+}
+
+#endif /* GL_SGIX_fog_blend */
+
+#ifdef GL_SGIX_fog_factor_to_alpha
+
+static void _glewInfo_GL_SGIX_fog_factor_to_alpha (void)
+{
+ glewPrintExt("GL_SGIX_fog_factor_to_alpha", GLEW_SGIX_fog_factor_to_alpha, glewIsSupported("GL_SGIX_fog_factor_to_alpha"), glewGetExtension("GL_SGIX_fog_factor_to_alpha"));
+}
+
+#endif /* GL_SGIX_fog_factor_to_alpha */
+
+#ifdef GL_SGIX_fog_layers
+
+static void _glewInfo_GL_SGIX_fog_layers (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fog_layers", GLEW_SGIX_fog_layers, glewIsSupported("GL_SGIX_fog_layers"), glewGetExtension("GL_SGIX_fog_layers"));
+
+ glewInfoFunc(fi, "glFogLayersSGIX", glFogLayersSGIX == NULL);
+ glewInfoFunc(fi, "glGetFogLayersSGIX", glGetFogLayersSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fog_layers */
+
+#ifdef GL_SGIX_fog_offset
+
+static void _glewInfo_GL_SGIX_fog_offset (void)
+{
+ glewPrintExt("GL_SGIX_fog_offset", GLEW_SGIX_fog_offset, glewIsSupported("GL_SGIX_fog_offset"), glewGetExtension("GL_SGIX_fog_offset"));
+}
+
+#endif /* GL_SGIX_fog_offset */
+
+#ifdef GL_SGIX_fog_patchy
+
+static void _glewInfo_GL_SGIX_fog_patchy (void)
+{
+ glewPrintExt("GL_SGIX_fog_patchy", GLEW_SGIX_fog_patchy, glewIsSupported("GL_SGIX_fog_patchy"), glewGetExtension("GL_SGIX_fog_patchy"));
+}
+
+#endif /* GL_SGIX_fog_patchy */
+
+#ifdef GL_SGIX_fog_scale
+
+static void _glewInfo_GL_SGIX_fog_scale (void)
+{
+ glewPrintExt("GL_SGIX_fog_scale", GLEW_SGIX_fog_scale, glewIsSupported("GL_SGIX_fog_scale"), glewGetExtension("GL_SGIX_fog_scale"));
+}
+
+#endif /* GL_SGIX_fog_scale */
+
+#ifdef GL_SGIX_fog_texture
+
+static void _glewInfo_GL_SGIX_fog_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fog_texture", GLEW_SGIX_fog_texture, glewIsSupported("GL_SGIX_fog_texture"), glewGetExtension("GL_SGIX_fog_texture"));
+
+ glewInfoFunc(fi, "glTextureFogSGIX", glTextureFogSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fog_texture */
+
+#ifdef GL_SGIX_fragment_lighting_space
+
+static void _glewInfo_GL_SGIX_fragment_lighting_space (void)
+{
+ glewPrintExt("GL_SGIX_fragment_lighting_space", GLEW_SGIX_fragment_lighting_space, glewIsSupported("GL_SGIX_fragment_lighting_space"), glewGetExtension("GL_SGIX_fragment_lighting_space"));
+}
+
+#endif /* GL_SGIX_fragment_lighting_space */
+
+#ifdef GL_SGIX_fragment_specular_lighting
+
+static void _glewInfo_GL_SGIX_fragment_specular_lighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fragment_specular_lighting", GLEW_SGIX_fragment_specular_lighting, glewIsSupported("GL_SGIX_fragment_specular_lighting"), glewGetExtension("GL_SGIX_fragment_specular_lighting"));
+
+ glewInfoFunc(fi, "glFragmentColorMaterialSGIX", glFragmentColorMaterialSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfSGIX", glFragmentLightModelfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfvSGIX", glFragmentLightModelfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModeliSGIX", glFragmentLightModeliSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelivSGIX", glFragmentLightModelivSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightfSGIX", glFragmentLightfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightfvSGIX", glFragmentLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightiSGIX", glFragmentLightiSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightivSGIX", glFragmentLightivSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfSGIX", glFragmentMaterialfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfvSGIX", glFragmentMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialiSGIX", glFragmentMaterialiSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialivSGIX", glFragmentMaterialivSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightfvSGIX", glGetFragmentLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightivSGIX", glGetFragmentLightivSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialfvSGIX", glGetFragmentMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialivSGIX", glGetFragmentMaterialivSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+#ifdef GL_SGIX_fragments_instrument
+
+static void _glewInfo_GL_SGIX_fragments_instrument (void)
+{
+ glewPrintExt("GL_SGIX_fragments_instrument", GLEW_SGIX_fragments_instrument, glewIsSupported("GL_SGIX_fragments_instrument"), glewGetExtension("GL_SGIX_fragments_instrument"));
+}
+
+#endif /* GL_SGIX_fragments_instrument */
+
+#ifdef GL_SGIX_framezoom
+
+static void _glewInfo_GL_SGIX_framezoom (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_framezoom", GLEW_SGIX_framezoom, glewIsSupported("GL_SGIX_framezoom"), glewGetExtension("GL_SGIX_framezoom"));
+
+ glewInfoFunc(fi, "glFrameZoomSGIX", glFrameZoomSGIX == NULL);
+}
+
+#endif /* GL_SGIX_framezoom */
+
+#ifdef GL_SGIX_icc_texture
+
+static void _glewInfo_GL_SGIX_icc_texture (void)
+{
+ glewPrintExt("GL_SGIX_icc_texture", GLEW_SGIX_icc_texture, glewIsSupported("GL_SGIX_icc_texture"), glewGetExtension("GL_SGIX_icc_texture"));
+}
+
+#endif /* GL_SGIX_icc_texture */
+
+#ifdef GL_SGIX_igloo_interface
+
+static void _glewInfo_GL_SGIX_igloo_interface (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_igloo_interface", GLEW_SGIX_igloo_interface, glewIsSupported("GL_SGIX_igloo_interface"), glewGetExtension("GL_SGIX_igloo_interface"));
+
+ glewInfoFunc(fi, "glIglooInterfaceSGIX", glIglooInterfaceSGIX == NULL);
+}
+
+#endif /* GL_SGIX_igloo_interface */
+
+#ifdef GL_SGIX_image_compression
+
+static void _glewInfo_GL_SGIX_image_compression (void)
+{
+ glewPrintExt("GL_SGIX_image_compression", GLEW_SGIX_image_compression, glewIsSupported("GL_SGIX_image_compression"), glewGetExtension("GL_SGIX_image_compression"));
+}
+
+#endif /* GL_SGIX_image_compression */
+
+#ifdef GL_SGIX_impact_pixel_texture
+
+static void _glewInfo_GL_SGIX_impact_pixel_texture (void)
+{
+ glewPrintExt("GL_SGIX_impact_pixel_texture", GLEW_SGIX_impact_pixel_texture, glewIsSupported("GL_SGIX_impact_pixel_texture"), glewGetExtension("GL_SGIX_impact_pixel_texture"));
+}
+
+#endif /* GL_SGIX_impact_pixel_texture */
+
+#ifdef GL_SGIX_instrument_error
+
+static void _glewInfo_GL_SGIX_instrument_error (void)
+{
+ glewPrintExt("GL_SGIX_instrument_error", GLEW_SGIX_instrument_error, glewIsSupported("GL_SGIX_instrument_error"), glewGetExtension("GL_SGIX_instrument_error"));
+}
+
+#endif /* GL_SGIX_instrument_error */
+
+#ifdef GL_SGIX_interlace
+
+static void _glewInfo_GL_SGIX_interlace (void)
+{
+ glewPrintExt("GL_SGIX_interlace", GLEW_SGIX_interlace, glewIsSupported("GL_SGIX_interlace"), glewGetExtension("GL_SGIX_interlace"));
+}
+
+#endif /* GL_SGIX_interlace */
+
+#ifdef GL_SGIX_ir_instrument1
+
+static void _glewInfo_GL_SGIX_ir_instrument1 (void)
+{
+ glewPrintExt("GL_SGIX_ir_instrument1", GLEW_SGIX_ir_instrument1, glewIsSupported("GL_SGIX_ir_instrument1"), glewGetExtension("GL_SGIX_ir_instrument1"));
+}
+
+#endif /* GL_SGIX_ir_instrument1 */
+
+#ifdef GL_SGIX_line_quality_hint
+
+static void _glewInfo_GL_SGIX_line_quality_hint (void)
+{
+ glewPrintExt("GL_SGIX_line_quality_hint", GLEW_SGIX_line_quality_hint, glewIsSupported("GL_SGIX_line_quality_hint"), glewGetExtension("GL_SGIX_line_quality_hint"));
+}
+
+#endif /* GL_SGIX_line_quality_hint */
+
+#ifdef GL_SGIX_list_priority
+
+static void _glewInfo_GL_SGIX_list_priority (void)
+{
+ glewPrintExt("GL_SGIX_list_priority", GLEW_SGIX_list_priority, glewIsSupported("GL_SGIX_list_priority"), glewGetExtension("GL_SGIX_list_priority"));
+}
+
+#endif /* GL_SGIX_list_priority */
+
+#ifdef GL_SGIX_mpeg1
+
+static void _glewInfo_GL_SGIX_mpeg1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_mpeg1", GLEW_SGIX_mpeg1, glewIsSupported("GL_SGIX_mpeg1"), glewGetExtension("GL_SGIX_mpeg1"));
+
+ glewInfoFunc(fi, "glAllocMPEGPredictorsSGIX", glAllocMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glDeleteMPEGPredictorsSGIX", glDeleteMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glGenMPEGPredictorsSGIX", glGenMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGParameterfvSGIX", glGetMPEGParameterfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGParameterivSGIX", glGetMPEGParameterivSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGPredictorSGIX", glGetMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGQuantTableubv", glGetMPEGQuantTableubv == NULL);
+ glewInfoFunc(fi, "glIsMPEGPredictorSGIX", glIsMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glMPEGPredictorSGIX", glMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glMPEGQuantTableubv", glMPEGQuantTableubv == NULL);
+ glewInfoFunc(fi, "glSwapMPEGPredictorsSGIX", glSwapMPEGPredictorsSGIX == NULL);
+}
+
+#endif /* GL_SGIX_mpeg1 */
+
+#ifdef GL_SGIX_mpeg2
+
+static void _glewInfo_GL_SGIX_mpeg2 (void)
+{
+ glewPrintExt("GL_SGIX_mpeg2", GLEW_SGIX_mpeg2, glewIsSupported("GL_SGIX_mpeg2"), glewGetExtension("GL_SGIX_mpeg2"));
+}
+
+#endif /* GL_SGIX_mpeg2 */
+
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+
+static void _glewInfo_GL_SGIX_nonlinear_lighting_pervertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_nonlinear_lighting_pervertex", GLEW_SGIX_nonlinear_lighting_pervertex, glewIsSupported("GL_SGIX_nonlinear_lighting_pervertex"), glewGetExtension("GL_SGIX_nonlinear_lighting_pervertex"));
+
+ glewInfoFunc(fi, "glGetNonlinLightfvSGIX", glGetNonlinLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetNonlinMaterialfvSGIX", glGetNonlinMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glNonlinLightfvSGIX", glNonlinLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glNonlinMaterialfvSGIX", glNonlinMaterialfvSGIX == NULL);
+}
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+#ifdef GL_SGIX_nurbs_eval
+
+static void _glewInfo_GL_SGIX_nurbs_eval (void)
+{
+ glewPrintExt("GL_SGIX_nurbs_eval", GLEW_SGIX_nurbs_eval, glewIsSupported("GL_SGIX_nurbs_eval"), glewGetExtension("GL_SGIX_nurbs_eval"));
+}
+
+#endif /* GL_SGIX_nurbs_eval */
+
+#ifdef GL_SGIX_occlusion_instrument
+
+static void _glewInfo_GL_SGIX_occlusion_instrument (void)
+{
+ glewPrintExt("GL_SGIX_occlusion_instrument", GLEW_SGIX_occlusion_instrument, glewIsSupported("GL_SGIX_occlusion_instrument"), glewGetExtension("GL_SGIX_occlusion_instrument"));
+}
+
+#endif /* GL_SGIX_occlusion_instrument */
+
+#ifdef GL_SGIX_packed_6bytes
+
+static void _glewInfo_GL_SGIX_packed_6bytes (void)
+{
+ glewPrintExt("GL_SGIX_packed_6bytes", GLEW_SGIX_packed_6bytes, glewIsSupported("GL_SGIX_packed_6bytes"), glewGetExtension("GL_SGIX_packed_6bytes"));
+}
+
+#endif /* GL_SGIX_packed_6bytes */
+
+#ifdef GL_SGIX_pixel_texture
+
+static void _glewInfo_GL_SGIX_pixel_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_pixel_texture", GLEW_SGIX_pixel_texture, glewIsSupported("GL_SGIX_pixel_texture"), glewGetExtension("GL_SGIX_pixel_texture"));
+
+ glewInfoFunc(fi, "glPixelTexGenSGIX", glPixelTexGenSGIX == NULL);
+}
+
+#endif /* GL_SGIX_pixel_texture */
+
+#ifdef GL_SGIX_pixel_texture_bits
+
+static void _glewInfo_GL_SGIX_pixel_texture_bits (void)
+{
+ glewPrintExt("GL_SGIX_pixel_texture_bits", GLEW_SGIX_pixel_texture_bits, glewIsSupported("GL_SGIX_pixel_texture_bits"), glewGetExtension("GL_SGIX_pixel_texture_bits"));
+}
+
+#endif /* GL_SGIX_pixel_texture_bits */
+
+#ifdef GL_SGIX_pixel_texture_lod
+
+static void _glewInfo_GL_SGIX_pixel_texture_lod (void)
+{
+ glewPrintExt("GL_SGIX_pixel_texture_lod", GLEW_SGIX_pixel_texture_lod, glewIsSupported("GL_SGIX_pixel_texture_lod"), glewGetExtension("GL_SGIX_pixel_texture_lod"));
+}
+
+#endif /* GL_SGIX_pixel_texture_lod */
+
+#ifdef GL_SGIX_pixel_tiles
+
+static void _glewInfo_GL_SGIX_pixel_tiles (void)
+{
+ glewPrintExt("GL_SGIX_pixel_tiles", GLEW_SGIX_pixel_tiles, glewIsSupported("GL_SGIX_pixel_tiles"), glewGetExtension("GL_SGIX_pixel_tiles"));
+}
+
+#endif /* GL_SGIX_pixel_tiles */
+
+#ifdef GL_SGIX_polynomial_ffd
+
+static void _glewInfo_GL_SGIX_polynomial_ffd (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_polynomial_ffd", GLEW_SGIX_polynomial_ffd, glewIsSupported("GL_SGIX_polynomial_ffd"), glewGetExtension("GL_SGIX_polynomial_ffd"));
+
+ glewInfoFunc(fi, "glDeformSGIX", glDeformSGIX == NULL);
+ glewInfoFunc(fi, "glLoadIdentityDeformationMapSGIX", glLoadIdentityDeformationMapSGIX == NULL);
+}
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+#ifdef GL_SGIX_quad_mesh
+
+static void _glewInfo_GL_SGIX_quad_mesh (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_quad_mesh", GLEW_SGIX_quad_mesh, glewIsSupported("GL_SGIX_quad_mesh"), glewGetExtension("GL_SGIX_quad_mesh"));
+
+ glewInfoFunc(fi, "glMeshBreadthSGIX", glMeshBreadthSGIX == NULL);
+ glewInfoFunc(fi, "glMeshStrideSGIX", glMeshStrideSGIX == NULL);
+}
+
+#endif /* GL_SGIX_quad_mesh */
+
+#ifdef GL_SGIX_reference_plane
+
+static void _glewInfo_GL_SGIX_reference_plane (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_reference_plane", GLEW_SGIX_reference_plane, glewIsSupported("GL_SGIX_reference_plane"), glewGetExtension("GL_SGIX_reference_plane"));
+
+ glewInfoFunc(fi, "glReferencePlaneSGIX", glReferencePlaneSGIX == NULL);
+}
+
+#endif /* GL_SGIX_reference_plane */
+
+#ifdef GL_SGIX_resample
+
+static void _glewInfo_GL_SGIX_resample (void)
+{
+ glewPrintExt("GL_SGIX_resample", GLEW_SGIX_resample, glewIsSupported("GL_SGIX_resample"), glewGetExtension("GL_SGIX_resample"));
+}
+
+#endif /* GL_SGIX_resample */
+
+#ifdef GL_SGIX_scalebias_hint
+
+static void _glewInfo_GL_SGIX_scalebias_hint (void)
+{
+ glewPrintExt("GL_SGIX_scalebias_hint", GLEW_SGIX_scalebias_hint, glewIsSupported("GL_SGIX_scalebias_hint"), glewGetExtension("GL_SGIX_scalebias_hint"));
+}
+
+#endif /* GL_SGIX_scalebias_hint */
+
+#ifdef GL_SGIX_shadow
+
+static void _glewInfo_GL_SGIX_shadow (void)
+{
+ glewPrintExt("GL_SGIX_shadow", GLEW_SGIX_shadow, glewIsSupported("GL_SGIX_shadow"), glewGetExtension("GL_SGIX_shadow"));
+}
+
+#endif /* GL_SGIX_shadow */
+
+#ifdef GL_SGIX_shadow_ambient
+
+static void _glewInfo_GL_SGIX_shadow_ambient (void)
+{
+ glewPrintExt("GL_SGIX_shadow_ambient", GLEW_SGIX_shadow_ambient, glewIsSupported("GL_SGIX_shadow_ambient"), glewGetExtension("GL_SGIX_shadow_ambient"));
+}
+
+#endif /* GL_SGIX_shadow_ambient */
+
+#ifdef GL_SGIX_slim
+
+static void _glewInfo_GL_SGIX_slim (void)
+{
+ glewPrintExt("GL_SGIX_slim", GLEW_SGIX_slim, glewIsSupported("GL_SGIX_slim"), glewGetExtension("GL_SGIX_slim"));
+}
+
+#endif /* GL_SGIX_slim */
+
+#ifdef GL_SGIX_spotlight_cutoff
+
+static void _glewInfo_GL_SGIX_spotlight_cutoff (void)
+{
+ glewPrintExt("GL_SGIX_spotlight_cutoff", GLEW_SGIX_spotlight_cutoff, glewIsSupported("GL_SGIX_spotlight_cutoff"), glewGetExtension("GL_SGIX_spotlight_cutoff"));
+}
+
+#endif /* GL_SGIX_spotlight_cutoff */
+
+#ifdef GL_SGIX_sprite
+
+static void _glewInfo_GL_SGIX_sprite (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_sprite", GLEW_SGIX_sprite, glewIsSupported("GL_SGIX_sprite"), glewGetExtension("GL_SGIX_sprite"));
+
+ glewInfoFunc(fi, "glSpriteParameterfSGIX", glSpriteParameterfSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameterfvSGIX", glSpriteParameterfvSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameteriSGIX", glSpriteParameteriSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameterivSGIX", glSpriteParameterivSGIX == NULL);
+}
+
+#endif /* GL_SGIX_sprite */
+
+#ifdef GL_SGIX_subdiv_patch
+
+static void _glewInfo_GL_SGIX_subdiv_patch (void)
+{
+ glewPrintExt("GL_SGIX_subdiv_patch", GLEW_SGIX_subdiv_patch, glewIsSupported("GL_SGIX_subdiv_patch"), glewGetExtension("GL_SGIX_subdiv_patch"));
+}
+
+#endif /* GL_SGIX_subdiv_patch */
+
+#ifdef GL_SGIX_subsample
+
+static void _glewInfo_GL_SGIX_subsample (void)
+{
+ glewPrintExt("GL_SGIX_subsample", GLEW_SGIX_subsample, glewIsSupported("GL_SGIX_subsample"), glewGetExtension("GL_SGIX_subsample"));
+}
+
+#endif /* GL_SGIX_subsample */
+
+#ifdef GL_SGIX_tag_sample_buffer
+
+static void _glewInfo_GL_SGIX_tag_sample_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_tag_sample_buffer", GLEW_SGIX_tag_sample_buffer, glewIsSupported("GL_SGIX_tag_sample_buffer"), glewGetExtension("GL_SGIX_tag_sample_buffer"));
+
+ glewInfoFunc(fi, "glTagSampleBufferSGIX", glTagSampleBufferSGIX == NULL);
+}
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+#ifdef GL_SGIX_texture_add_env
+
+static void _glewInfo_GL_SGIX_texture_add_env (void)
+{
+ glewPrintExt("GL_SGIX_texture_add_env", GLEW_SGIX_texture_add_env, glewIsSupported("GL_SGIX_texture_add_env"), glewGetExtension("GL_SGIX_texture_add_env"));
+}
+
+#endif /* GL_SGIX_texture_add_env */
+
+#ifdef GL_SGIX_texture_coordinate_clamp
+
+static void _glewInfo_GL_SGIX_texture_coordinate_clamp (void)
+{
+ glewPrintExt("GL_SGIX_texture_coordinate_clamp", GLEW_SGIX_texture_coordinate_clamp, glewIsSupported("GL_SGIX_texture_coordinate_clamp"), glewGetExtension("GL_SGIX_texture_coordinate_clamp"));
+}
+
+#endif /* GL_SGIX_texture_coordinate_clamp */
+
+#ifdef GL_SGIX_texture_lod_bias
+
+static void _glewInfo_GL_SGIX_texture_lod_bias (void)
+{
+ glewPrintExt("GL_SGIX_texture_lod_bias", GLEW_SGIX_texture_lod_bias, glewIsSupported("GL_SGIX_texture_lod_bias"), glewGetExtension("GL_SGIX_texture_lod_bias"));
+}
+
+#endif /* GL_SGIX_texture_lod_bias */
+
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+
+static void _glewInfo_GL_SGIX_texture_mipmap_anisotropic (void)
+{
+ glewPrintExt("GL_SGIX_texture_mipmap_anisotropic", GLEW_SGIX_texture_mipmap_anisotropic, glewIsSupported("GL_SGIX_texture_mipmap_anisotropic"), glewGetExtension("GL_SGIX_texture_mipmap_anisotropic"));
+}
+
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+
+#ifdef GL_SGIX_texture_multi_buffer
+
+static void _glewInfo_GL_SGIX_texture_multi_buffer (void)
+{
+ glewPrintExt("GL_SGIX_texture_multi_buffer", GLEW_SGIX_texture_multi_buffer, glewIsSupported("GL_SGIX_texture_multi_buffer"), glewGetExtension("GL_SGIX_texture_multi_buffer"));
+}
+
+#endif /* GL_SGIX_texture_multi_buffer */
+
+#ifdef GL_SGIX_texture_phase
+
+static void _glewInfo_GL_SGIX_texture_phase (void)
+{
+ glewPrintExt("GL_SGIX_texture_phase", GLEW_SGIX_texture_phase, glewIsSupported("GL_SGIX_texture_phase"), glewGetExtension("GL_SGIX_texture_phase"));
+}
+
+#endif /* GL_SGIX_texture_phase */
+
+#ifdef GL_SGIX_texture_range
+
+static void _glewInfo_GL_SGIX_texture_range (void)
+{
+ glewPrintExt("GL_SGIX_texture_range", GLEW_SGIX_texture_range, glewIsSupported("GL_SGIX_texture_range"), glewGetExtension("GL_SGIX_texture_range"));
+}
+
+#endif /* GL_SGIX_texture_range */
+
+#ifdef GL_SGIX_texture_scale_bias
+
+static void _glewInfo_GL_SGIX_texture_scale_bias (void)
+{
+ glewPrintExt("GL_SGIX_texture_scale_bias", GLEW_SGIX_texture_scale_bias, glewIsSupported("GL_SGIX_texture_scale_bias"), glewGetExtension("GL_SGIX_texture_scale_bias"));
+}
+
+#endif /* GL_SGIX_texture_scale_bias */
+
+#ifdef GL_SGIX_texture_supersample
+
+static void _glewInfo_GL_SGIX_texture_supersample (void)
+{
+ glewPrintExt("GL_SGIX_texture_supersample", GLEW_SGIX_texture_supersample, glewIsSupported("GL_SGIX_texture_supersample"), glewGetExtension("GL_SGIX_texture_supersample"));
+}
+
+#endif /* GL_SGIX_texture_supersample */
+
+#ifdef GL_SGIX_vector_ops
+
+static void _glewInfo_GL_SGIX_vector_ops (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_vector_ops", GLEW_SGIX_vector_ops, glewIsSupported("GL_SGIX_vector_ops"), glewGetExtension("GL_SGIX_vector_ops"));
+
+ glewInfoFunc(fi, "glGetVectorOperationSGIX", glGetVectorOperationSGIX == NULL);
+ glewInfoFunc(fi, "glVectorOperationSGIX", glVectorOperationSGIX == NULL);
+}
+
+#endif /* GL_SGIX_vector_ops */
+
+#ifdef GL_SGIX_vertex_array_object
+
+static void _glewInfo_GL_SGIX_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_vertex_array_object", GLEW_SGIX_vertex_array_object, glewIsSupported("GL_SGIX_vertex_array_object"), glewGetExtension("GL_SGIX_vertex_array_object"));
+
+ glewInfoFunc(fi, "glAreVertexArraysResidentSGIX", glAreVertexArraysResidentSGIX == NULL);
+ glewInfoFunc(fi, "glBindVertexArraySGIX", glBindVertexArraySGIX == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysSGIX", glDeleteVertexArraysSGIX == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysSGIX", glGenVertexArraysSGIX == NULL);
+ glewInfoFunc(fi, "glIsVertexArraySGIX", glIsVertexArraySGIX == NULL);
+ glewInfoFunc(fi, "glPrioritizeVertexArraysSGIX", glPrioritizeVertexArraysSGIX == NULL);
+}
+
+#endif /* GL_SGIX_vertex_array_object */
+
+#ifdef GL_SGIX_vertex_preclip
+
+static void _glewInfo_GL_SGIX_vertex_preclip (void)
+{
+ glewPrintExt("GL_SGIX_vertex_preclip", GLEW_SGIX_vertex_preclip, glewIsSupported("GL_SGIX_vertex_preclip"), glewGetExtension("GL_SGIX_vertex_preclip"));
+}
+
+#endif /* GL_SGIX_vertex_preclip */
+
+#ifdef GL_SGIX_vertex_preclip_hint
+
+static void _glewInfo_GL_SGIX_vertex_preclip_hint (void)
+{
+ glewPrintExt("GL_SGIX_vertex_preclip_hint", GLEW_SGIX_vertex_preclip_hint, glewIsSupported("GL_SGIX_vertex_preclip_hint"), glewGetExtension("GL_SGIX_vertex_preclip_hint"));
+}
+
+#endif /* GL_SGIX_vertex_preclip_hint */
+
+#ifdef GL_SGIX_ycrcb
+
+static void _glewInfo_GL_SGIX_ycrcb (void)
+{
+ glewPrintExt("GL_SGIX_ycrcb", GLEW_SGIX_ycrcb, glewIsSupported("GL_SGIX_ycrcb"), glewGetExtension("GL_SGIX_ycrcb"));
+}
+
+#endif /* GL_SGIX_ycrcb */
+
+#ifdef GL_SGIX_ycrcb_subsample
+
+static void _glewInfo_GL_SGIX_ycrcb_subsample (void)
+{
+ glewPrintExt("GL_SGIX_ycrcb_subsample", GLEW_SGIX_ycrcb_subsample, glewIsSupported("GL_SGIX_ycrcb_subsample"), glewGetExtension("GL_SGIX_ycrcb_subsample"));
+}
+
+#endif /* GL_SGIX_ycrcb_subsample */
+
+#ifdef GL_SGIX_ycrcba
+
+static void _glewInfo_GL_SGIX_ycrcba (void)
+{
+ glewPrintExt("GL_SGIX_ycrcba", GLEW_SGIX_ycrcba, glewIsSupported("GL_SGIX_ycrcba"), glewGetExtension("GL_SGIX_ycrcba"));
+}
+
+#endif /* GL_SGIX_ycrcba */
+
+#ifdef GL_SGI_color_matrix
+
+static void _glewInfo_GL_SGI_color_matrix (void)
+{
+ glewPrintExt("GL_SGI_color_matrix", GLEW_SGI_color_matrix, glewIsSupported("GL_SGI_color_matrix"), glewGetExtension("GL_SGI_color_matrix"));
+}
+
+#endif /* GL_SGI_color_matrix */
+
+#ifdef GL_SGI_color_table
+
+static void _glewInfo_GL_SGI_color_table (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGI_color_table", GLEW_SGI_color_table, glewIsSupported("GL_SGI_color_table"), glewGetExtension("GL_SGI_color_table"));
+
+ glewInfoFunc(fi, "glColorTableParameterfvSGI", glColorTableParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glColorTableParameterivSGI", glColorTableParameterivSGI == NULL);
+ glewInfoFunc(fi, "glColorTableSGI", glColorTableSGI == NULL);
+ glewInfoFunc(fi, "glCopyColorTableSGI", glCopyColorTableSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfvSGI", glGetColorTableParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterivSGI", glGetColorTableParameterivSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableSGI", glGetColorTableSGI == NULL);
+}
+
+#endif /* GL_SGI_color_table */
+
+#ifdef GL_SGI_complex
+
+static void _glewInfo_GL_SGI_complex (void)
+{
+ glewPrintExt("GL_SGI_complex", GLEW_SGI_complex, glewIsSupported("GL_SGI_complex"), glewGetExtension("GL_SGI_complex"));
+}
+
+#endif /* GL_SGI_complex */
+
+#ifdef GL_SGI_complex_type
+
+static void _glewInfo_GL_SGI_complex_type (void)
+{
+ glewPrintExt("GL_SGI_complex_type", GLEW_SGI_complex_type, glewIsSupported("GL_SGI_complex_type"), glewGetExtension("GL_SGI_complex_type"));
+}
+
+#endif /* GL_SGI_complex_type */
+
+#ifdef GL_SGI_fft
+
+static void _glewInfo_GL_SGI_fft (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGI_fft", GLEW_SGI_fft, glewIsSupported("GL_SGI_fft"), glewGetExtension("GL_SGI_fft"));
+
+ glewInfoFunc(fi, "glGetPixelTransformParameterfvSGI", glGetPixelTransformParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glGetPixelTransformParameterivSGI", glGetPixelTransformParameterivSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfSGI", glPixelTransformParameterfSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfvSGI", glPixelTransformParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameteriSGI", glPixelTransformParameteriSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterivSGI", glPixelTransformParameterivSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformSGI", glPixelTransformSGI == NULL);
+}
+
+#endif /* GL_SGI_fft */
+
+#ifdef GL_SGI_texture_color_table
+
+static void _glewInfo_GL_SGI_texture_color_table (void)
+{
+ glewPrintExt("GL_SGI_texture_color_table", GLEW_SGI_texture_color_table, glewIsSupported("GL_SGI_texture_color_table"), glewGetExtension("GL_SGI_texture_color_table"));
+}
+
+#endif /* GL_SGI_texture_color_table */
+
+#ifdef GL_SUNX_constant_data
+
+static void _glewInfo_GL_SUNX_constant_data (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUNX_constant_data", GLEW_SUNX_constant_data, glewIsSupported("GL_SUNX_constant_data"), glewGetExtension("GL_SUNX_constant_data"));
+
+ glewInfoFunc(fi, "glFinishTextureSUNX", glFinishTextureSUNX == NULL);
+}
+
+#endif /* GL_SUNX_constant_data */
+
+#ifdef GL_SUN_convolution_border_modes
+
+static void _glewInfo_GL_SUN_convolution_border_modes (void)
+{
+ glewPrintExt("GL_SUN_convolution_border_modes", GLEW_SUN_convolution_border_modes, glewIsSupported("GL_SUN_convolution_border_modes"), glewGetExtension("GL_SUN_convolution_border_modes"));
+}
+
+#endif /* GL_SUN_convolution_border_modes */
+
+#ifdef GL_SUN_global_alpha
+
+static void _glewInfo_GL_SUN_global_alpha (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_global_alpha", GLEW_SUN_global_alpha, glewIsSupported("GL_SUN_global_alpha"), glewGetExtension("GL_SUN_global_alpha"));
+
+ glewInfoFunc(fi, "glGlobalAlphaFactorbSUN", glGlobalAlphaFactorbSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactordSUN", glGlobalAlphaFactordSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorfSUN", glGlobalAlphaFactorfSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactoriSUN", glGlobalAlphaFactoriSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorsSUN", glGlobalAlphaFactorsSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorubSUN", glGlobalAlphaFactorubSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactoruiSUN", glGlobalAlphaFactoruiSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorusSUN", glGlobalAlphaFactorusSUN == NULL);
+}
+
+#endif /* GL_SUN_global_alpha */
+
+#ifdef GL_SUN_mesh_array
+
+static void _glewInfo_GL_SUN_mesh_array (void)
+{
+ glewPrintExt("GL_SUN_mesh_array", GLEW_SUN_mesh_array, glewIsSupported("GL_SUN_mesh_array"), glewGetExtension("GL_SUN_mesh_array"));
+}
+
+#endif /* GL_SUN_mesh_array */
+
+#ifdef GL_SUN_read_video_pixels
+
+static void _glewInfo_GL_SUN_read_video_pixels (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_read_video_pixels", GLEW_SUN_read_video_pixels, glewIsSupported("GL_SUN_read_video_pixels"), glewGetExtension("GL_SUN_read_video_pixels"));
+
+ glewInfoFunc(fi, "glReadVideoPixelsSUN", glReadVideoPixelsSUN == NULL);
+}
+
+#endif /* GL_SUN_read_video_pixels */
+
+#ifdef GL_SUN_slice_accum
+
+static void _glewInfo_GL_SUN_slice_accum (void)
+{
+ glewPrintExt("GL_SUN_slice_accum", GLEW_SUN_slice_accum, glewIsSupported("GL_SUN_slice_accum"), glewGetExtension("GL_SUN_slice_accum"));
+}
+
+#endif /* GL_SUN_slice_accum */
+
+#ifdef GL_SUN_triangle_list
+
+static void _glewInfo_GL_SUN_triangle_list (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_triangle_list", GLEW_SUN_triangle_list, glewIsSupported("GL_SUN_triangle_list"), glewGetExtension("GL_SUN_triangle_list"));
+
+ glewInfoFunc(fi, "glReplacementCodePointerSUN", glReplacementCodePointerSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeubSUN", glReplacementCodeubSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeubvSUN", glReplacementCodeubvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiSUN", glReplacementCodeuiSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuivSUN", glReplacementCodeuivSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeusSUN", glReplacementCodeusSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeusvSUN", glReplacementCodeusvSUN == NULL);
+}
+
+#endif /* GL_SUN_triangle_list */
+
+#ifdef GL_SUN_vertex
+
+static void _glewInfo_GL_SUN_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_vertex", GLEW_SUN_vertex, glewIsSupported("GL_SUN_vertex"), glewGetExtension("GL_SUN_vertex"));
+
+ glewInfoFunc(fi, "glColor3fVertex3fSUN", glColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor3fVertex3fvSUN", glColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4fNormal3fVertex3fSUN", glColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor4fNormal3fVertex3fvSUN", glColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex2fSUN", glColor4ubVertex2fSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex2fvSUN", glColor4ubVertex2fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex3fSUN", glColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex3fvSUN", glColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glNormal3fVertex3fSUN", glNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glNormal3fVertex3fvSUN", glNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor3fVertex3fSUN", glReplacementCodeuiColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor3fVertex3fvSUN", glReplacementCodeuiColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4fNormal3fVertex3fSUN", glReplacementCodeuiColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", glReplacementCodeuiColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4ubVertex3fSUN", glReplacementCodeuiColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4ubVertex3fvSUN", glReplacementCodeuiColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiNormal3fVertex3fSUN", glReplacementCodeuiNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiNormal3fVertex3fvSUN", glReplacementCodeuiNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fVertex3fSUN", glReplacementCodeuiTexCoord2fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fVertex3fvSUN", glReplacementCodeuiTexCoord2fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiVertex3fSUN", glReplacementCodeuiVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiVertex3fvSUN", glReplacementCodeuiVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor3fVertex3fSUN", glTexCoord2fColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor3fVertex3fvSUN", glTexCoord2fColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4fNormal3fVertex3fSUN", glTexCoord2fColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4fNormal3fVertex3fvSUN", glTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4ubVertex3fSUN", glTexCoord2fColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4ubVertex3fvSUN", glTexCoord2fColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fNormal3fVertex3fSUN", glTexCoord2fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fNormal3fVertex3fvSUN", glTexCoord2fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fVertex3fSUN", glTexCoord2fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fVertex3fvSUN", glTexCoord2fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fColor4fNormal3fVertex4fSUN", glTexCoord4fColor4fNormal3fVertex4fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fColor4fNormal3fVertex4fvSUN", glTexCoord4fColor4fNormal3fVertex4fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fVertex4fSUN", glTexCoord4fVertex4fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fVertex4fvSUN", glTexCoord4fVertex4fvSUN == NULL);
+}
+
+#endif /* GL_SUN_vertex */
+
+#ifdef GL_VIV_shader_binary
+
+static void _glewInfo_GL_VIV_shader_binary (void)
+{
+ glewPrintExt("GL_VIV_shader_binary", GLEW_VIV_shader_binary, glewIsSupported("GL_VIV_shader_binary"), glewGetExtension("GL_VIV_shader_binary"));
+}
+
+#endif /* GL_VIV_shader_binary */
+
+#ifdef GL_WIN_phong_shading
+
+static void _glewInfo_GL_WIN_phong_shading (void)
+{
+ glewPrintExt("GL_WIN_phong_shading", GLEW_WIN_phong_shading, glewIsSupported("GL_WIN_phong_shading"), glewGetExtension("GL_WIN_phong_shading"));
+}
+
+#endif /* GL_WIN_phong_shading */
+
+#ifdef GL_WIN_scene_markerXXX
+
+static void _glewInfo_GL_WIN_scene_markerXXX (void)
+{
+ glewPrintExt("GL_WIN_scene_markerXXX", GLEW_WIN_scene_markerXXX, glewIsSupported("GL_WIN_scene_markerXXX"), glewGetExtension("GL_WIN_scene_markerXXX"));
+}
+
+#endif /* GL_WIN_scene_markerXXX */
+
+#ifdef GL_WIN_specular_fog
+
+static void _glewInfo_GL_WIN_specular_fog (void)
+{
+ glewPrintExt("GL_WIN_specular_fog", GLEW_WIN_specular_fog, glewIsSupported("GL_WIN_specular_fog"), glewGetExtension("GL_WIN_specular_fog"));
+}
+
+#endif /* GL_WIN_specular_fog */
+
+#ifdef GL_WIN_swap_hint
+
+static void _glewInfo_GL_WIN_swap_hint (void)
+{
+ GLboolean fi = glewPrintExt("GL_WIN_swap_hint", GLEW_WIN_swap_hint, glewIsSupported("GL_WIN_swap_hint"), glewGetExtension("GL_WIN_swap_hint"));
+
+ glewInfoFunc(fi, "glAddSwapHintRectWIN", glAddSwapHintRectWIN == NULL);
+}
+
+#endif /* GL_WIN_swap_hint */
+
+#if defined(GLEW_EGL)
+
+#ifdef EGL_VERSION_1_0
+
+static void _glewInfo_EGL_VERSION_1_0 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_0", EGLEW_VERSION_1_0, EGLEW_VERSION_1_0, EGLEW_VERSION_1_0);
+
+ glewInfoFunc(fi, "eglChooseConfig", eglChooseConfig == NULL);
+ glewInfoFunc(fi, "eglCopyBuffers", eglCopyBuffers == NULL);
+ glewInfoFunc(fi, "eglCreateContext", eglCreateContext == NULL);
+ glewInfoFunc(fi, "eglCreatePbufferSurface", eglCreatePbufferSurface == NULL);
+ glewInfoFunc(fi, "eglCreatePixmapSurface", eglCreatePixmapSurface == NULL);
+ glewInfoFunc(fi, "eglCreateWindowSurface", eglCreateWindowSurface == NULL);
+ glewInfoFunc(fi, "eglDestroyContext", eglDestroyContext == NULL);
+ glewInfoFunc(fi, "eglDestroySurface", eglDestroySurface == NULL);
+ glewInfoFunc(fi, "eglGetConfigAttrib", eglGetConfigAttrib == NULL);
+ glewInfoFunc(fi, "eglGetConfigs", eglGetConfigs == NULL);
+ glewInfoFunc(fi, "eglGetCurrentDisplay", eglGetCurrentDisplay == NULL);
+ glewInfoFunc(fi, "eglGetCurrentSurface", eglGetCurrentSurface == NULL);
+ glewInfoFunc(fi, "eglGetDisplay", eglGetDisplay == NULL);
+ glewInfoFunc(fi, "eglGetError", eglGetError == NULL);
+ glewInfoFunc(fi, "eglInitialize", eglInitialize == NULL);
+ glewInfoFunc(fi, "eglMakeCurrent", eglMakeCurrent == NULL);
+ glewInfoFunc(fi, "eglQueryContext", eglQueryContext == NULL);
+ glewInfoFunc(fi, "eglQueryString", eglQueryString == NULL);
+ glewInfoFunc(fi, "eglQuerySurface", eglQuerySurface == NULL);
+ glewInfoFunc(fi, "eglSwapBuffers", eglSwapBuffers == NULL);
+ glewInfoFunc(fi, "eglTerminate", eglTerminate == NULL);
+ glewInfoFunc(fi, "eglWaitGL", eglWaitGL == NULL);
+ glewInfoFunc(fi, "eglWaitNative", eglWaitNative == NULL);
+}
+
+#endif /* EGL_VERSION_1_0 */
+
+#ifdef EGL_VERSION_1_1
+
+static void _glewInfo_EGL_VERSION_1_1 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_1", EGLEW_VERSION_1_1, EGLEW_VERSION_1_1, EGLEW_VERSION_1_1);
+
+ glewInfoFunc(fi, "eglBindTexImage", eglBindTexImage == NULL);
+ glewInfoFunc(fi, "eglReleaseTexImage", eglReleaseTexImage == NULL);
+ glewInfoFunc(fi, "eglSurfaceAttrib", eglSurfaceAttrib == NULL);
+ glewInfoFunc(fi, "eglSwapInterval", eglSwapInterval == NULL);
+}
+
+#endif /* EGL_VERSION_1_1 */
+
+#ifdef EGL_VERSION_1_2
+
+static void _glewInfo_EGL_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_2", EGLEW_VERSION_1_2, EGLEW_VERSION_1_2, EGLEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "eglBindAPI", eglBindAPI == NULL);
+ glewInfoFunc(fi, "eglCreatePbufferFromClientBuffer", eglCreatePbufferFromClientBuffer == NULL);
+ glewInfoFunc(fi, "eglQueryAPI", eglQueryAPI == NULL);
+ glewInfoFunc(fi, "eglReleaseThread", eglReleaseThread == NULL);
+ glewInfoFunc(fi, "eglWaitClient", eglWaitClient == NULL);
+}
+
+#endif /* EGL_VERSION_1_2 */
+
+#ifdef EGL_VERSION_1_3
+
+static void _glewInfo_EGL_VERSION_1_3 (void)
+{
+ glewPrintExt("EGL_VERSION_1_3", EGLEW_VERSION_1_3, EGLEW_VERSION_1_3, EGLEW_VERSION_1_3);
+}
+
+#endif /* EGL_VERSION_1_3 */
+
+#ifdef EGL_VERSION_1_4
+
+static void _glewInfo_EGL_VERSION_1_4 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_4", EGLEW_VERSION_1_4, EGLEW_VERSION_1_4, EGLEW_VERSION_1_4);
+
+ glewInfoFunc(fi, "eglGetCurrentContext", eglGetCurrentContext == NULL);
+}
+
+#endif /* EGL_VERSION_1_4 */
+
+#ifdef EGL_VERSION_1_5
+
+static void _glewInfo_EGL_VERSION_1_5 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_5", EGLEW_VERSION_1_5, EGLEW_VERSION_1_5, EGLEW_VERSION_1_5);
+
+ glewInfoFunc(fi, "eglClientWaitSync", eglClientWaitSync == NULL);
+ glewInfoFunc(fi, "eglCreateImage", eglCreateImage == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformPixmapSurface", eglCreatePlatformPixmapSurface == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformWindowSurface", eglCreatePlatformWindowSurface == NULL);
+ glewInfoFunc(fi, "eglCreateSync", eglCreateSync == NULL);
+ glewInfoFunc(fi, "eglDestroyImage", eglDestroyImage == NULL);
+ glewInfoFunc(fi, "eglDestroySync", eglDestroySync == NULL);
+ glewInfoFunc(fi, "eglGetPlatformDisplay", eglGetPlatformDisplay == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttrib", eglGetSyncAttrib == NULL);
+ glewInfoFunc(fi, "eglWaitSync", eglWaitSync == NULL);
+}
+
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef EGL_ANDROID_GLES_layers
+
+static void _glewInfo_EGL_ANDROID_GLES_layers (void)
+{
+ glewPrintExt("EGL_ANDROID_GLES_layers", EGLEW_ANDROID_GLES_layers, eglewIsSupported("EGL_ANDROID_GLES_layers"), eglewGetExtension("EGL_ANDROID_GLES_layers"));
+}
+
+#endif /* EGL_ANDROID_GLES_layers */
+
+#ifdef EGL_ANDROID_blob_cache
+
+static void _glewInfo_EGL_ANDROID_blob_cache (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_blob_cache", EGLEW_ANDROID_blob_cache, eglewIsSupported("EGL_ANDROID_blob_cache"), eglewGetExtension("EGL_ANDROID_blob_cache"));
+
+ glewInfoFunc(fi, "eglSetBlobCacheFuncsANDROID", eglSetBlobCacheFuncsANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifdef EGL_ANDROID_create_native_client_buffer
+
+static void _glewInfo_EGL_ANDROID_create_native_client_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_create_native_client_buffer", EGLEW_ANDROID_create_native_client_buffer, eglewIsSupported("EGL_ANDROID_create_native_client_buffer"), eglewGetExtension("EGL_ANDROID_create_native_client_buffer"));
+
+ glewInfoFunc(fi, "eglCreateNativeClientBufferANDROID", eglCreateNativeClientBufferANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifdef EGL_ANDROID_framebuffer_target
+
+static void _glewInfo_EGL_ANDROID_framebuffer_target (void)
+{
+ glewPrintExt("EGL_ANDROID_framebuffer_target", EGLEW_ANDROID_framebuffer_target, eglewIsSupported("EGL_ANDROID_framebuffer_target"), eglewGetExtension("EGL_ANDROID_framebuffer_target"));
+}
+
+#endif /* EGL_ANDROID_framebuffer_target */
+
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+
+static void _glewInfo_EGL_ANDROID_front_buffer_auto_refresh (void)
+{
+ glewPrintExt("EGL_ANDROID_front_buffer_auto_refresh", EGLEW_ANDROID_front_buffer_auto_refresh, eglewIsSupported("EGL_ANDROID_front_buffer_auto_refresh"), eglewGetExtension("EGL_ANDROID_front_buffer_auto_refresh"));
+}
+
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+#ifdef EGL_ANDROID_get_frame_timestamps
+
+static void _glewInfo_EGL_ANDROID_get_frame_timestamps (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_get_frame_timestamps", EGLEW_ANDROID_get_frame_timestamps, eglewIsSupported("EGL_ANDROID_get_frame_timestamps"), eglewGetExtension("EGL_ANDROID_get_frame_timestamps"));
+
+ glewInfoFunc(fi, "eglGetCompositorTimingANDROID", eglGetCompositorTimingANDROID == NULL);
+ glewInfoFunc(fi, "eglGetCompositorTimingSupportedANDROID", eglGetCompositorTimingSupportedANDROID == NULL);
+ glewInfoFunc(fi, "eglGetFrameTimestampSupportedANDROID", eglGetFrameTimestampSupportedANDROID == NULL);
+ glewInfoFunc(fi, "eglGetFrameTimestampsANDROID", eglGetFrameTimestampsANDROID == NULL);
+ glewInfoFunc(fi, "eglGetNextFrameIdANDROID", eglGetNextFrameIdANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifdef EGL_ANDROID_get_native_client_buffer
+
+static void _glewInfo_EGL_ANDROID_get_native_client_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_get_native_client_buffer", EGLEW_ANDROID_get_native_client_buffer, eglewIsSupported("EGL_ANDROID_get_native_client_buffer"), eglewGetExtension("EGL_ANDROID_get_native_client_buffer"));
+
+ glewInfoFunc(fi, "eglGetNativeClientBufferANDROID", eglGetNativeClientBufferANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifdef EGL_ANDROID_image_native_buffer
+
+static void _glewInfo_EGL_ANDROID_image_native_buffer (void)
+{
+ glewPrintExt("EGL_ANDROID_image_native_buffer", EGLEW_ANDROID_image_native_buffer, eglewIsSupported("EGL_ANDROID_image_native_buffer"), eglewGetExtension("EGL_ANDROID_image_native_buffer"));
+}
+
+#endif /* EGL_ANDROID_image_native_buffer */
+
+#ifdef EGL_ANDROID_native_fence_sync
+
+static void _glewInfo_EGL_ANDROID_native_fence_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_native_fence_sync", EGLEW_ANDROID_native_fence_sync, eglewIsSupported("EGL_ANDROID_native_fence_sync"), eglewGetExtension("EGL_ANDROID_native_fence_sync"));
+
+ glewInfoFunc(fi, "eglDupNativeFenceFDANDROID", eglDupNativeFenceFDANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifdef EGL_ANDROID_presentation_time
+
+static void _glewInfo_EGL_ANDROID_presentation_time (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_presentation_time", EGLEW_ANDROID_presentation_time, eglewIsSupported("EGL_ANDROID_presentation_time"), eglewGetExtension("EGL_ANDROID_presentation_time"));
+
+ glewInfoFunc(fi, "eglPresentationTimeANDROID", eglPresentationTimeANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifdef EGL_ANDROID_recordable
+
+static void _glewInfo_EGL_ANDROID_recordable (void)
+{
+ glewPrintExt("EGL_ANDROID_recordable", EGLEW_ANDROID_recordable, eglewIsSupported("EGL_ANDROID_recordable"), eglewGetExtension("EGL_ANDROID_recordable"));
+}
+
+#endif /* EGL_ANDROID_recordable */
+
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+
+static void _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer (void)
+{
+ glewPrintExt("EGL_ANGLE_d3d_share_handle_client_buffer", EGLEW_ANGLE_d3d_share_handle_client_buffer, eglewIsSupported("EGL_ANGLE_d3d_share_handle_client_buffer"), eglewGetExtension("EGL_ANGLE_d3d_share_handle_client_buffer"));
+}
+
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+#ifdef EGL_ANGLE_device_d3d
+
+static void _glewInfo_EGL_ANGLE_device_d3d (void)
+{
+ glewPrintExt("EGL_ANGLE_device_d3d", EGLEW_ANGLE_device_d3d, eglewIsSupported("EGL_ANGLE_device_d3d"), eglewGetExtension("EGL_ANGLE_device_d3d"));
+}
+
+#endif /* EGL_ANGLE_device_d3d */
+
+#ifdef EGL_ANGLE_query_surface_pointer
+
+static void _glewInfo_EGL_ANGLE_query_surface_pointer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANGLE_query_surface_pointer", EGLEW_ANGLE_query_surface_pointer, eglewIsSupported("EGL_ANGLE_query_surface_pointer"), eglewGetExtension("EGL_ANGLE_query_surface_pointer"));
+
+ glewInfoFunc(fi, "eglQuerySurfacePointerANGLE", eglQuerySurfacePointerANGLE == NULL);
+}
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+static void _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle (void)
+{
+ glewPrintExt("EGL_ANGLE_surface_d3d_texture_2d_share_handle", EGLEW_ANGLE_surface_d3d_texture_2d_share_handle, eglewIsSupported("EGL_ANGLE_surface_d3d_texture_2d_share_handle"), eglewGetExtension("EGL_ANGLE_surface_d3d_texture_2d_share_handle"));
+}
+
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+#ifdef EGL_ANGLE_sync_control_rate
+
+static void _glewInfo_EGL_ANGLE_sync_control_rate (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANGLE_sync_control_rate", EGLEW_ANGLE_sync_control_rate, eglewIsSupported("EGL_ANGLE_sync_control_rate"), eglewGetExtension("EGL_ANGLE_sync_control_rate"));
+
+ glewInfoFunc(fi, "eglGetMscRateANGLE", eglGetMscRateANGLE == NULL);
+}
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifdef EGL_ANGLE_window_fixed_size
+
+static void _glewInfo_EGL_ANGLE_window_fixed_size (void)
+{
+ glewPrintExt("EGL_ANGLE_window_fixed_size", EGLEW_ANGLE_window_fixed_size, eglewIsSupported("EGL_ANGLE_window_fixed_size"), eglewGetExtension("EGL_ANGLE_window_fixed_size"));
+}
+
+#endif /* EGL_ANGLE_window_fixed_size */
+
+#ifdef EGL_ARM_image_format
+
+static void _glewInfo_EGL_ARM_image_format (void)
+{
+ glewPrintExt("EGL_ARM_image_format", EGLEW_ARM_image_format, eglewIsSupported("EGL_ARM_image_format"), eglewGetExtension("EGL_ARM_image_format"));
+}
+
+#endif /* EGL_ARM_image_format */
+
+#ifdef EGL_ARM_implicit_external_sync
+
+static void _glewInfo_EGL_ARM_implicit_external_sync (void)
+{
+ glewPrintExt("EGL_ARM_implicit_external_sync", EGLEW_ARM_implicit_external_sync, eglewIsSupported("EGL_ARM_implicit_external_sync"), eglewGetExtension("EGL_ARM_implicit_external_sync"));
+}
+
+#endif /* EGL_ARM_implicit_external_sync */
+
+#ifdef EGL_ARM_pixmap_multisample_discard
+
+static void _glewInfo_EGL_ARM_pixmap_multisample_discard (void)
+{
+ glewPrintExt("EGL_ARM_pixmap_multisample_discard", EGLEW_ARM_pixmap_multisample_discard, eglewIsSupported("EGL_ARM_pixmap_multisample_discard"), eglewGetExtension("EGL_ARM_pixmap_multisample_discard"));
+}
+
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+#ifdef EGL_EXT_bind_to_front
+
+static void _glewInfo_EGL_EXT_bind_to_front (void)
+{
+ glewPrintExt("EGL_EXT_bind_to_front", EGLEW_EXT_bind_to_front, eglewIsSupported("EGL_EXT_bind_to_front"), eglewGetExtension("EGL_EXT_bind_to_front"));
+}
+
+#endif /* EGL_EXT_bind_to_front */
+
+#ifdef EGL_EXT_buffer_age
+
+static void _glewInfo_EGL_EXT_buffer_age (void)
+{
+ glewPrintExt("EGL_EXT_buffer_age", EGLEW_EXT_buffer_age, eglewIsSupported("EGL_EXT_buffer_age"), eglewGetExtension("EGL_EXT_buffer_age"));
+}
+
+#endif /* EGL_EXT_buffer_age */
+
+#ifdef EGL_EXT_client_extensions
+
+static void _glewInfo_EGL_EXT_client_extensions (void)
+{
+ glewPrintExt("EGL_EXT_client_extensions", EGLEW_EXT_client_extensions, eglewIsSupported("EGL_EXT_client_extensions"), eglewGetExtension("EGL_EXT_client_extensions"));
+}
+
+#endif /* EGL_EXT_client_extensions */
+
+#ifdef EGL_EXT_client_sync
+
+static void _glewInfo_EGL_EXT_client_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_client_sync", EGLEW_EXT_client_sync, eglewIsSupported("EGL_EXT_client_sync"), eglewGetExtension("EGL_EXT_client_sync"));
+
+ glewInfoFunc(fi, "eglClientSignalSyncEXT", eglClientSignalSyncEXT == NULL);
+}
+
+#endif /* EGL_EXT_client_sync */
+
+#ifdef EGL_EXT_compositor
+
+static void _glewInfo_EGL_EXT_compositor (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_compositor", EGLEW_EXT_compositor, eglewIsSupported("EGL_EXT_compositor"), eglewGetExtension("EGL_EXT_compositor"));
+
+ glewInfoFunc(fi, "eglCompositorBindTexWindowEXT", eglCompositorBindTexWindowEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetContextAttributesEXT", eglCompositorSetContextAttributesEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetContextListEXT", eglCompositorSetContextListEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetSizeEXT", eglCompositorSetSizeEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetWindowAttributesEXT", eglCompositorSetWindowAttributesEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetWindowListEXT", eglCompositorSetWindowListEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSwapPolicyEXT", eglCompositorSwapPolicyEXT == NULL);
+}
+
+#endif /* EGL_EXT_compositor */
+
+#ifdef EGL_EXT_config_select_group
+
+static void _glewInfo_EGL_EXT_config_select_group (void)
+{
+ glewPrintExt("EGL_EXT_config_select_group", EGLEW_EXT_config_select_group, eglewIsSupported("EGL_EXT_config_select_group"), eglewGetExtension("EGL_EXT_config_select_group"));
+}
+
+#endif /* EGL_EXT_config_select_group */
+
+#ifdef EGL_EXT_create_context_robustness
+
+static void _glewInfo_EGL_EXT_create_context_robustness (void)
+{
+ glewPrintExt("EGL_EXT_create_context_robustness", EGLEW_EXT_create_context_robustness, eglewIsSupported("EGL_EXT_create_context_robustness"), eglewGetExtension("EGL_EXT_create_context_robustness"));
+}
+
+#endif /* EGL_EXT_create_context_robustness */
+
+#ifdef EGL_EXT_device_base
+
+static void _glewInfo_EGL_EXT_device_base (void)
+{
+ glewPrintExt("EGL_EXT_device_base", EGLEW_EXT_device_base, eglewIsSupported("EGL_EXT_device_base"), eglewGetExtension("EGL_EXT_device_base"));
+}
+
+#endif /* EGL_EXT_device_base */
+
+#ifdef EGL_EXT_device_drm
+
+static void _glewInfo_EGL_EXT_device_drm (void)
+{
+ glewPrintExt("EGL_EXT_device_drm", EGLEW_EXT_device_drm, eglewIsSupported("EGL_EXT_device_drm"), eglewGetExtension("EGL_EXT_device_drm"));
+}
+
+#endif /* EGL_EXT_device_drm */
+
+#ifdef EGL_EXT_device_drm_render_node
+
+static void _glewInfo_EGL_EXT_device_drm_render_node (void)
+{
+ glewPrintExt("EGL_EXT_device_drm_render_node", EGLEW_EXT_device_drm_render_node, eglewIsSupported("EGL_EXT_device_drm_render_node"), eglewGetExtension("EGL_EXT_device_drm_render_node"));
+}
+
+#endif /* EGL_EXT_device_drm_render_node */
+
+#ifdef EGL_EXT_device_enumeration
+
+static void _glewInfo_EGL_EXT_device_enumeration (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_enumeration", EGLEW_EXT_device_enumeration, eglewIsSupported("EGL_EXT_device_enumeration"), eglewGetExtension("EGL_EXT_device_enumeration"));
+
+ glewInfoFunc(fi, "eglQueryDevicesEXT", eglQueryDevicesEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_enumeration */
+
+#ifdef EGL_EXT_device_openwf
+
+static void _glewInfo_EGL_EXT_device_openwf (void)
+{
+ glewPrintExt("EGL_EXT_device_openwf", EGLEW_EXT_device_openwf, eglewIsSupported("EGL_EXT_device_openwf"), eglewGetExtension("EGL_EXT_device_openwf"));
+}
+
+#endif /* EGL_EXT_device_openwf */
+
+#ifdef EGL_EXT_device_persistent_id
+
+static void _glewInfo_EGL_EXT_device_persistent_id (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_persistent_id", EGLEW_EXT_device_persistent_id, eglewIsSupported("EGL_EXT_device_persistent_id"), eglewGetExtension("EGL_EXT_device_persistent_id"));
+
+ glewInfoFunc(fi, "eglQueryDeviceBinaryEXT", eglQueryDeviceBinaryEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifdef EGL_EXT_device_query
+
+static void _glewInfo_EGL_EXT_device_query (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_query", EGLEW_EXT_device_query, eglewIsSupported("EGL_EXT_device_query"), eglewGetExtension("EGL_EXT_device_query"));
+
+ glewInfoFunc(fi, "eglQueryDeviceAttribEXT", eglQueryDeviceAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDeviceStringEXT", eglQueryDeviceStringEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDisplayAttribEXT", eglQueryDisplayAttribEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_query */
+
+#ifdef EGL_EXT_device_query_name
+
+static void _glewInfo_EGL_EXT_device_query_name (void)
+{
+ glewPrintExt("EGL_EXT_device_query_name", EGLEW_EXT_device_query_name, eglewIsSupported("EGL_EXT_device_query_name"), eglewGetExtension("EGL_EXT_device_query_name"));
+}
+
+#endif /* EGL_EXT_device_query_name */
+
+#ifdef EGL_EXT_explicit_device
+
+static void _glewInfo_EGL_EXT_explicit_device (void)
+{
+ glewPrintExt("EGL_EXT_explicit_device", EGLEW_EXT_explicit_device, eglewIsSupported("EGL_EXT_explicit_device"), eglewGetExtension("EGL_EXT_explicit_device"));
+}
+
+#endif /* EGL_EXT_explicit_device */
+
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_bt2020_linear", EGLEW_EXT_gl_colorspace_bt2020_linear, eglewIsSupported("EGL_EXT_gl_colorspace_bt2020_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_bt2020_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+
+static void _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_bt2020_pq", EGLEW_EXT_gl_colorspace_bt2020_pq, eglewIsSupported("EGL_EXT_gl_colorspace_bt2020_pq"), eglewGetExtension("EGL_EXT_gl_colorspace_bt2020_pq"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3 (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3", EGLEW_EXT_gl_colorspace_display_p3, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3_linear", EGLEW_EXT_gl_colorspace_display_p3_linear, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3_passthrough (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3_passthrough", EGLEW_EXT_gl_colorspace_display_p3_passthrough, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3_passthrough"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3_passthrough"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+#ifdef EGL_EXT_gl_colorspace_scrgb
+
+static void _glewInfo_EGL_EXT_gl_colorspace_scrgb (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_scrgb", EGLEW_EXT_gl_colorspace_scrgb, eglewIsSupported("EGL_EXT_gl_colorspace_scrgb"), eglewGetExtension("EGL_EXT_gl_colorspace_scrgb"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_scrgb_linear", EGLEW_EXT_gl_colorspace_scrgb_linear, eglewIsSupported("EGL_EXT_gl_colorspace_scrgb_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_scrgb_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+#ifdef EGL_EXT_image_dma_buf_import
+
+static void _glewInfo_EGL_EXT_image_dma_buf_import (void)
+{
+ glewPrintExt("EGL_EXT_image_dma_buf_import", EGLEW_EXT_image_dma_buf_import, eglewIsSupported("EGL_EXT_image_dma_buf_import"), eglewGetExtension("EGL_EXT_image_dma_buf_import"));
+}
+
+#endif /* EGL_EXT_image_dma_buf_import */
+
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+
+static void _glewInfo_EGL_EXT_image_dma_buf_import_modifiers (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_image_dma_buf_import_modifiers", EGLEW_EXT_image_dma_buf_import_modifiers, eglewIsSupported("EGL_EXT_image_dma_buf_import_modifiers"), eglewGetExtension("EGL_EXT_image_dma_buf_import_modifiers"));
+
+ glewInfoFunc(fi, "eglQueryDmaBufFormatsEXT", eglQueryDmaBufFormatsEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDmaBufModifiersEXT", eglQueryDmaBufModifiersEXT == NULL);
+}
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifdef EGL_EXT_image_gl_colorspace
+
+static void _glewInfo_EGL_EXT_image_gl_colorspace (void)
+{
+ glewPrintExt("EGL_EXT_image_gl_colorspace", EGLEW_EXT_image_gl_colorspace, eglewIsSupported("EGL_EXT_image_gl_colorspace"), eglewGetExtension("EGL_EXT_image_gl_colorspace"));
+}
+
+#endif /* EGL_EXT_image_gl_colorspace */
+
+#ifdef EGL_EXT_image_implicit_sync_control
+
+static void _glewInfo_EGL_EXT_image_implicit_sync_control (void)
+{
+ glewPrintExt("EGL_EXT_image_implicit_sync_control", EGLEW_EXT_image_implicit_sync_control, eglewIsSupported("EGL_EXT_image_implicit_sync_control"), eglewGetExtension("EGL_EXT_image_implicit_sync_control"));
+}
+
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+#ifdef EGL_EXT_multiview_window
+
+static void _glewInfo_EGL_EXT_multiview_window (void)
+{
+ glewPrintExt("EGL_EXT_multiview_window", EGLEW_EXT_multiview_window, eglewIsSupported("EGL_EXT_multiview_window"), eglewGetExtension("EGL_EXT_multiview_window"));
+}
+
+#endif /* EGL_EXT_multiview_window */
+
+#ifdef EGL_EXT_output_base
+
+static void _glewInfo_EGL_EXT_output_base (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_output_base", EGLEW_EXT_output_base, eglewIsSupported("EGL_EXT_output_base"), eglewGetExtension("EGL_EXT_output_base"));
+
+ glewInfoFunc(fi, "eglGetOutputLayersEXT", eglGetOutputLayersEXT == NULL);
+ glewInfoFunc(fi, "eglGetOutputPortsEXT", eglGetOutputPortsEXT == NULL);
+ glewInfoFunc(fi, "eglOutputLayerAttribEXT", eglOutputLayerAttribEXT == NULL);
+ glewInfoFunc(fi, "eglOutputPortAttribEXT", eglOutputPortAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputLayerAttribEXT", eglQueryOutputLayerAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputLayerStringEXT", eglQueryOutputLayerStringEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputPortAttribEXT", eglQueryOutputPortAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputPortStringEXT", eglQueryOutputPortStringEXT == NULL);
+}
+
+#endif /* EGL_EXT_output_base */
+
+#ifdef EGL_EXT_output_drm
+
+static void _glewInfo_EGL_EXT_output_drm (void)
+{
+ glewPrintExt("EGL_EXT_output_drm", EGLEW_EXT_output_drm, eglewIsSupported("EGL_EXT_output_drm"), eglewGetExtension("EGL_EXT_output_drm"));
+}
+
+#endif /* EGL_EXT_output_drm */
+
+#ifdef EGL_EXT_output_openwf
+
+static void _glewInfo_EGL_EXT_output_openwf (void)
+{
+ glewPrintExt("EGL_EXT_output_openwf", EGLEW_EXT_output_openwf, eglewIsSupported("EGL_EXT_output_openwf"), eglewGetExtension("EGL_EXT_output_openwf"));
+}
+
+#endif /* EGL_EXT_output_openwf */
+
+#ifdef EGL_EXT_pixel_format_float
+
+static void _glewInfo_EGL_EXT_pixel_format_float (void)
+{
+ glewPrintExt("EGL_EXT_pixel_format_float", EGLEW_EXT_pixel_format_float, eglewIsSupported("EGL_EXT_pixel_format_float"), eglewGetExtension("EGL_EXT_pixel_format_float"));
+}
+
+#endif /* EGL_EXT_pixel_format_float */
+
+#ifdef EGL_EXT_platform_base
+
+static void _glewInfo_EGL_EXT_platform_base (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_platform_base", EGLEW_EXT_platform_base, eglewIsSupported("EGL_EXT_platform_base"), eglewGetExtension("EGL_EXT_platform_base"));
+
+ glewInfoFunc(fi, "eglCreatePlatformPixmapSurfaceEXT", eglCreatePlatformPixmapSurfaceEXT == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformWindowSurfaceEXT", eglCreatePlatformWindowSurfaceEXT == NULL);
+ glewInfoFunc(fi, "eglGetPlatformDisplayEXT", eglGetPlatformDisplayEXT == NULL);
+}
+
+#endif /* EGL_EXT_platform_base */
+
+#ifdef EGL_EXT_platform_device
+
+static void _glewInfo_EGL_EXT_platform_device (void)
+{
+ glewPrintExt("EGL_EXT_platform_device", EGLEW_EXT_platform_device, eglewIsSupported("EGL_EXT_platform_device"), eglewGetExtension("EGL_EXT_platform_device"));
+}
+
+#endif /* EGL_EXT_platform_device */
+
+#ifdef EGL_EXT_platform_wayland
+
+static void _glewInfo_EGL_EXT_platform_wayland (void)
+{
+ glewPrintExt("EGL_EXT_platform_wayland", EGLEW_EXT_platform_wayland, eglewIsSupported("EGL_EXT_platform_wayland"), eglewGetExtension("EGL_EXT_platform_wayland"));
+}
+
+#endif /* EGL_EXT_platform_wayland */
+
+#ifdef EGL_EXT_platform_x11
+
+static void _glewInfo_EGL_EXT_platform_x11 (void)
+{
+ glewPrintExt("EGL_EXT_platform_x11", EGLEW_EXT_platform_x11, eglewIsSupported("EGL_EXT_platform_x11"), eglewGetExtension("EGL_EXT_platform_x11"));
+}
+
+#endif /* EGL_EXT_platform_x11 */
+
+#ifdef EGL_EXT_platform_xcb
+
+static void _glewInfo_EGL_EXT_platform_xcb (void)
+{
+ glewPrintExt("EGL_EXT_platform_xcb", EGLEW_EXT_platform_xcb, eglewIsSupported("EGL_EXT_platform_xcb"), eglewGetExtension("EGL_EXT_platform_xcb"));
+}
+
+#endif /* EGL_EXT_platform_xcb */
+
+#ifdef EGL_EXT_present_opaque
+
+static void _glewInfo_EGL_EXT_present_opaque (void)
+{
+ glewPrintExt("EGL_EXT_present_opaque", EGLEW_EXT_present_opaque, eglewIsSupported("EGL_EXT_present_opaque"), eglewGetExtension("EGL_EXT_present_opaque"));
+}
+
+#endif /* EGL_EXT_present_opaque */
+
+#ifdef EGL_EXT_protected_content
+
+static void _glewInfo_EGL_EXT_protected_content (void)
+{
+ glewPrintExt("EGL_EXT_protected_content", EGLEW_EXT_protected_content, eglewIsSupported("EGL_EXT_protected_content"), eglewGetExtension("EGL_EXT_protected_content"));
+}
+
+#endif /* EGL_EXT_protected_content */
+
+#ifdef EGL_EXT_protected_surface
+
+static void _glewInfo_EGL_EXT_protected_surface (void)
+{
+ glewPrintExt("EGL_EXT_protected_surface", EGLEW_EXT_protected_surface, eglewIsSupported("EGL_EXT_protected_surface"), eglewGetExtension("EGL_EXT_protected_surface"));
+}
+
+#endif /* EGL_EXT_protected_surface */
+
+#ifdef EGL_EXT_stream_consumer_egloutput
+
+static void _glewInfo_EGL_EXT_stream_consumer_egloutput (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_stream_consumer_egloutput", EGLEW_EXT_stream_consumer_egloutput, eglewIsSupported("EGL_EXT_stream_consumer_egloutput"), eglewGetExtension("EGL_EXT_stream_consumer_egloutput"));
+
+ glewInfoFunc(fi, "eglStreamConsumerOutputEXT", eglStreamConsumerOutputEXT == NULL);
+}
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+
+static void _glewInfo_EGL_EXT_surface_CTA861_3_metadata (void)
+{
+ glewPrintExt("EGL_EXT_surface_CTA861_3_metadata", EGLEW_EXT_surface_CTA861_3_metadata, eglewIsSupported("EGL_EXT_surface_CTA861_3_metadata"), eglewGetExtension("EGL_EXT_surface_CTA861_3_metadata"));
+}
+
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+
+static void _glewInfo_EGL_EXT_surface_SMPTE2086_metadata (void)
+{
+ glewPrintExt("EGL_EXT_surface_SMPTE2086_metadata", EGLEW_EXT_surface_SMPTE2086_metadata, eglewIsSupported("EGL_EXT_surface_SMPTE2086_metadata"), eglewGetExtension("EGL_EXT_surface_SMPTE2086_metadata"));
+}
+
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+#ifdef EGL_EXT_surface_compression
+
+static void _glewInfo_EGL_EXT_surface_compression (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_surface_compression", EGLEW_EXT_surface_compression, eglewIsSupported("EGL_EXT_surface_compression"), eglewGetExtension("EGL_EXT_surface_compression"));
+
+ glewInfoFunc(fi, "eglQuerySupportedCompressionRatesEXT", eglQuerySupportedCompressionRatesEXT == NULL);
+}
+
+#endif /* EGL_EXT_surface_compression */
+
+#ifdef EGL_EXT_swap_buffers_with_damage
+
+static void _glewInfo_EGL_EXT_swap_buffers_with_damage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_swap_buffers_with_damage", EGLEW_EXT_swap_buffers_with_damage, eglewIsSupported("EGL_EXT_swap_buffers_with_damage"), eglewGetExtension("EGL_EXT_swap_buffers_with_damage"));
+
+ glewInfoFunc(fi, "eglSwapBuffersWithDamageEXT", eglSwapBuffersWithDamageEXT == NULL);
+}
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifdef EGL_EXT_sync_reuse
+
+static void _glewInfo_EGL_EXT_sync_reuse (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_sync_reuse", EGLEW_EXT_sync_reuse, eglewIsSupported("EGL_EXT_sync_reuse"), eglewGetExtension("EGL_EXT_sync_reuse"));
+
+ glewInfoFunc(fi, "eglUnsignalSyncEXT", eglUnsignalSyncEXT == NULL);
+}
+
+#endif /* EGL_EXT_sync_reuse */
+
+#ifdef EGL_EXT_yuv_surface
+
+static void _glewInfo_EGL_EXT_yuv_surface (void)
+{
+ glewPrintExt("EGL_EXT_yuv_surface", EGLEW_EXT_yuv_surface, eglewIsSupported("EGL_EXT_yuv_surface"), eglewGetExtension("EGL_EXT_yuv_surface"));
+}
+
+#endif /* EGL_EXT_yuv_surface */
+
+#ifdef EGL_HI_clientpixmap
+
+static void _glewInfo_EGL_HI_clientpixmap (void)
+{
+ GLboolean fi = glewPrintExt("EGL_HI_clientpixmap", EGLEW_HI_clientpixmap, eglewIsSupported("EGL_HI_clientpixmap"), eglewGetExtension("EGL_HI_clientpixmap"));
+
+ glewInfoFunc(fi, "eglCreatePixmapSurfaceHI", eglCreatePixmapSurfaceHI == NULL);
+}
+
+#endif /* EGL_HI_clientpixmap */
+
+#ifdef EGL_HI_colorformats
+
+static void _glewInfo_EGL_HI_colorformats (void)
+{
+ glewPrintExt("EGL_HI_colorformats", EGLEW_HI_colorformats, eglewIsSupported("EGL_HI_colorformats"), eglewGetExtension("EGL_HI_colorformats"));
+}
+
+#endif /* EGL_HI_colorformats */
+
+#ifdef EGL_IMG_context_priority
+
+static void _glewInfo_EGL_IMG_context_priority (void)
+{
+ glewPrintExt("EGL_IMG_context_priority", EGLEW_IMG_context_priority, eglewIsSupported("EGL_IMG_context_priority"), eglewGetExtension("EGL_IMG_context_priority"));
+}
+
+#endif /* EGL_IMG_context_priority */
+
+#ifdef EGL_IMG_image_plane_attribs
+
+static void _glewInfo_EGL_IMG_image_plane_attribs (void)
+{
+ glewPrintExt("EGL_IMG_image_plane_attribs", EGLEW_IMG_image_plane_attribs, eglewIsSupported("EGL_IMG_image_plane_attribs"), eglewGetExtension("EGL_IMG_image_plane_attribs"));
+}
+
+#endif /* EGL_IMG_image_plane_attribs */
+
+#ifdef EGL_KHR_cl_event
+
+static void _glewInfo_EGL_KHR_cl_event (void)
+{
+ glewPrintExt("EGL_KHR_cl_event", EGLEW_KHR_cl_event, eglewIsSupported("EGL_KHR_cl_event"), eglewGetExtension("EGL_KHR_cl_event"));
+}
+
+#endif /* EGL_KHR_cl_event */
+
+#ifdef EGL_KHR_cl_event2
+
+static void _glewInfo_EGL_KHR_cl_event2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_cl_event2", EGLEW_KHR_cl_event2, eglewIsSupported("EGL_KHR_cl_event2"), eglewGetExtension("EGL_KHR_cl_event2"));
+
+ glewInfoFunc(fi, "eglCreateSync64KHR", eglCreateSync64KHR == NULL);
+}
+
+#endif /* EGL_KHR_cl_event2 */
+
+#ifdef EGL_KHR_client_get_all_proc_addresses
+
+static void _glewInfo_EGL_KHR_client_get_all_proc_addresses (void)
+{
+ glewPrintExt("EGL_KHR_client_get_all_proc_addresses", EGLEW_KHR_client_get_all_proc_addresses, eglewIsSupported("EGL_KHR_client_get_all_proc_addresses"), eglewGetExtension("EGL_KHR_client_get_all_proc_addresses"));
+}
+
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+#ifdef EGL_KHR_config_attribs
+
+static void _glewInfo_EGL_KHR_config_attribs (void)
+{
+ glewPrintExt("EGL_KHR_config_attribs", EGLEW_KHR_config_attribs, eglewIsSupported("EGL_KHR_config_attribs"), eglewGetExtension("EGL_KHR_config_attribs"));
+}
+
+#endif /* EGL_KHR_config_attribs */
+
+#ifdef EGL_KHR_context_flush_control
+
+static void _glewInfo_EGL_KHR_context_flush_control (void)
+{
+ glewPrintExt("EGL_KHR_context_flush_control", EGLEW_KHR_context_flush_control, eglewIsSupported("EGL_KHR_context_flush_control"), eglewGetExtension("EGL_KHR_context_flush_control"));
+}
+
+#endif /* EGL_KHR_context_flush_control */
+
+#ifdef EGL_KHR_create_context
+
+static void _glewInfo_EGL_KHR_create_context (void)
+{
+ glewPrintExt("EGL_KHR_create_context", EGLEW_KHR_create_context, eglewIsSupported("EGL_KHR_create_context"), eglewGetExtension("EGL_KHR_create_context"));
+}
+
+#endif /* EGL_KHR_create_context */
+
+#ifdef EGL_KHR_create_context_no_error
+
+static void _glewInfo_EGL_KHR_create_context_no_error (void)
+{
+ glewPrintExt("EGL_KHR_create_context_no_error", EGLEW_KHR_create_context_no_error, eglewIsSupported("EGL_KHR_create_context_no_error"), eglewGetExtension("EGL_KHR_create_context_no_error"));
+}
+
+#endif /* EGL_KHR_create_context_no_error */
+
+#ifdef EGL_KHR_debug
+
+static void _glewInfo_EGL_KHR_debug (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_debug", EGLEW_KHR_debug, eglewIsSupported("EGL_KHR_debug"), eglewGetExtension("EGL_KHR_debug"));
+
+ glewInfoFunc(fi, "eglDebugMessageControlKHR", eglDebugMessageControlKHR == NULL);
+ glewInfoFunc(fi, "eglLabelObjectKHR", eglLabelObjectKHR == NULL);
+ glewInfoFunc(fi, "eglQueryDebugKHR", eglQueryDebugKHR == NULL);
+}
+
+#endif /* EGL_KHR_debug */
+
+#ifdef EGL_KHR_display_reference
+
+static void _glewInfo_EGL_KHR_display_reference (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_display_reference", EGLEW_KHR_display_reference, eglewIsSupported("EGL_KHR_display_reference"), eglewGetExtension("EGL_KHR_display_reference"));
+
+ glewInfoFunc(fi, "eglQueryDisplayAttribKHR", eglQueryDisplayAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_display_reference */
+
+#ifdef EGL_KHR_fence_sync
+
+static void _glewInfo_EGL_KHR_fence_sync (void)
+{
+ glewPrintExt("EGL_KHR_fence_sync", EGLEW_KHR_fence_sync, eglewIsSupported("EGL_KHR_fence_sync"), eglewGetExtension("EGL_KHR_fence_sync"));
+}
+
+#endif /* EGL_KHR_fence_sync */
+
+#ifdef EGL_KHR_get_all_proc_addresses
+
+static void _glewInfo_EGL_KHR_get_all_proc_addresses (void)
+{
+ glewPrintExt("EGL_KHR_get_all_proc_addresses", EGLEW_KHR_get_all_proc_addresses, eglewIsSupported("EGL_KHR_get_all_proc_addresses"), eglewGetExtension("EGL_KHR_get_all_proc_addresses"));
+}
+
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+#ifdef EGL_KHR_gl_colorspace
+
+static void _glewInfo_EGL_KHR_gl_colorspace (void)
+{
+ glewPrintExt("EGL_KHR_gl_colorspace", EGLEW_KHR_gl_colorspace, eglewIsSupported("EGL_KHR_gl_colorspace"), eglewGetExtension("EGL_KHR_gl_colorspace"));
+}
+
+#endif /* EGL_KHR_gl_colorspace */
+
+#ifdef EGL_KHR_gl_renderbuffer_image
+
+static void _glewInfo_EGL_KHR_gl_renderbuffer_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_renderbuffer_image", EGLEW_KHR_gl_renderbuffer_image, eglewIsSupported("EGL_KHR_gl_renderbuffer_image"), eglewGetExtension("EGL_KHR_gl_renderbuffer_image"));
+}
+
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+#ifdef EGL_KHR_gl_texture_2D_image
+
+static void _glewInfo_EGL_KHR_gl_texture_2D_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_2D_image", EGLEW_KHR_gl_texture_2D_image, eglewIsSupported("EGL_KHR_gl_texture_2D_image"), eglewGetExtension("EGL_KHR_gl_texture_2D_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+#ifdef EGL_KHR_gl_texture_3D_image
+
+static void _glewInfo_EGL_KHR_gl_texture_3D_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_3D_image", EGLEW_KHR_gl_texture_3D_image, eglewIsSupported("EGL_KHR_gl_texture_3D_image"), eglewGetExtension("EGL_KHR_gl_texture_3D_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+#ifdef EGL_KHR_gl_texture_cubemap_image
+
+static void _glewInfo_EGL_KHR_gl_texture_cubemap_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_cubemap_image", EGLEW_KHR_gl_texture_cubemap_image, eglewIsSupported("EGL_KHR_gl_texture_cubemap_image"), eglewGetExtension("EGL_KHR_gl_texture_cubemap_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+#ifdef EGL_KHR_image
+
+static void _glewInfo_EGL_KHR_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_image", EGLEW_KHR_image, eglewIsSupported("EGL_KHR_image"), eglewGetExtension("EGL_KHR_image"));
+
+ glewInfoFunc(fi, "eglCreateImageKHR", eglCreateImageKHR == NULL);
+ glewInfoFunc(fi, "eglDestroyImageKHR", eglDestroyImageKHR == NULL);
+}
+
+#endif /* EGL_KHR_image */
+
+#ifdef EGL_KHR_image_base
+
+static void _glewInfo_EGL_KHR_image_base (void)
+{
+ glewPrintExt("EGL_KHR_image_base", EGLEW_KHR_image_base, eglewIsSupported("EGL_KHR_image_base"), eglewGetExtension("EGL_KHR_image_base"));
+}
+
+#endif /* EGL_KHR_image_base */
+
+#ifdef EGL_KHR_image_pixmap
+
+static void _glewInfo_EGL_KHR_image_pixmap (void)
+{
+ glewPrintExt("EGL_KHR_image_pixmap", EGLEW_KHR_image_pixmap, eglewIsSupported("EGL_KHR_image_pixmap"), eglewGetExtension("EGL_KHR_image_pixmap"));
+}
+
+#endif /* EGL_KHR_image_pixmap */
+
+#ifdef EGL_KHR_lock_surface
+
+static void _glewInfo_EGL_KHR_lock_surface (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_lock_surface", EGLEW_KHR_lock_surface, eglewIsSupported("EGL_KHR_lock_surface"), eglewGetExtension("EGL_KHR_lock_surface"));
+
+ glewInfoFunc(fi, "eglLockSurfaceKHR", eglLockSurfaceKHR == NULL);
+ glewInfoFunc(fi, "eglUnlockSurfaceKHR", eglUnlockSurfaceKHR == NULL);
+}
+
+#endif /* EGL_KHR_lock_surface */
+
+#ifdef EGL_KHR_lock_surface2
+
+static void _glewInfo_EGL_KHR_lock_surface2 (void)
+{
+ glewPrintExt("EGL_KHR_lock_surface2", EGLEW_KHR_lock_surface2, eglewIsSupported("EGL_KHR_lock_surface2"), eglewGetExtension("EGL_KHR_lock_surface2"));
+}
+
+#endif /* EGL_KHR_lock_surface2 */
+
+#ifdef EGL_KHR_lock_surface3
+
+static void _glewInfo_EGL_KHR_lock_surface3 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_lock_surface3", EGLEW_KHR_lock_surface3, eglewIsSupported("EGL_KHR_lock_surface3"), eglewGetExtension("EGL_KHR_lock_surface3"));
+
+ glewInfoFunc(fi, "eglQuerySurface64KHR", eglQuerySurface64KHR == NULL);
+}
+
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifdef EGL_KHR_mutable_render_buffer
+
+static void _glewInfo_EGL_KHR_mutable_render_buffer (void)
+{
+ glewPrintExt("EGL_KHR_mutable_render_buffer", EGLEW_KHR_mutable_render_buffer, eglewIsSupported("EGL_KHR_mutable_render_buffer"), eglewGetExtension("EGL_KHR_mutable_render_buffer"));
+}
+
+#endif /* EGL_KHR_mutable_render_buffer */
+
+#ifdef EGL_KHR_no_config_context
+
+static void _glewInfo_EGL_KHR_no_config_context (void)
+{
+ glewPrintExt("EGL_KHR_no_config_context", EGLEW_KHR_no_config_context, eglewIsSupported("EGL_KHR_no_config_context"), eglewGetExtension("EGL_KHR_no_config_context"));
+}
+
+#endif /* EGL_KHR_no_config_context */
+
+#ifdef EGL_KHR_partial_update
+
+static void _glewInfo_EGL_KHR_partial_update (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_partial_update", EGLEW_KHR_partial_update, eglewIsSupported("EGL_KHR_partial_update"), eglewGetExtension("EGL_KHR_partial_update"));
+
+ glewInfoFunc(fi, "eglSetDamageRegionKHR", eglSetDamageRegionKHR == NULL);
+}
+
+#endif /* EGL_KHR_partial_update */
+
+#ifdef EGL_KHR_platform_android
+
+static void _glewInfo_EGL_KHR_platform_android (void)
+{
+ glewPrintExt("EGL_KHR_platform_android", EGLEW_KHR_platform_android, eglewIsSupported("EGL_KHR_platform_android"), eglewGetExtension("EGL_KHR_platform_android"));
+}
+
+#endif /* EGL_KHR_platform_android */
+
+#ifdef EGL_KHR_platform_gbm
+
+static void _glewInfo_EGL_KHR_platform_gbm (void)
+{
+ glewPrintExt("EGL_KHR_platform_gbm", EGLEW_KHR_platform_gbm, eglewIsSupported("EGL_KHR_platform_gbm"), eglewGetExtension("EGL_KHR_platform_gbm"));
+}
+
+#endif /* EGL_KHR_platform_gbm */
+
+#ifdef EGL_KHR_platform_wayland
+
+static void _glewInfo_EGL_KHR_platform_wayland (void)
+{
+ glewPrintExt("EGL_KHR_platform_wayland", EGLEW_KHR_platform_wayland, eglewIsSupported("EGL_KHR_platform_wayland"), eglewGetExtension("EGL_KHR_platform_wayland"));
+}
+
+#endif /* EGL_KHR_platform_wayland */
+
+#ifdef EGL_KHR_platform_x11
+
+static void _glewInfo_EGL_KHR_platform_x11 (void)
+{
+ glewPrintExt("EGL_KHR_platform_x11", EGLEW_KHR_platform_x11, eglewIsSupported("EGL_KHR_platform_x11"), eglewGetExtension("EGL_KHR_platform_x11"));
+}
+
+#endif /* EGL_KHR_platform_x11 */
+
+#ifdef EGL_KHR_reusable_sync
+
+static void _glewInfo_EGL_KHR_reusable_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_reusable_sync", EGLEW_KHR_reusable_sync, eglewIsSupported("EGL_KHR_reusable_sync"), eglewGetExtension("EGL_KHR_reusable_sync"));
+
+ glewInfoFunc(fi, "eglClientWaitSyncKHR", eglClientWaitSyncKHR == NULL);
+ glewInfoFunc(fi, "eglCreateSyncKHR", eglCreateSyncKHR == NULL);
+ glewInfoFunc(fi, "eglDestroySyncKHR", eglDestroySyncKHR == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttribKHR", eglGetSyncAttribKHR == NULL);
+ glewInfoFunc(fi, "eglSignalSyncKHR", eglSignalSyncKHR == NULL);
+}
+
+#endif /* EGL_KHR_reusable_sync */
+
+#ifdef EGL_KHR_stream
+
+static void _glewInfo_EGL_KHR_stream (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream", EGLEW_KHR_stream, eglewIsSupported("EGL_KHR_stream"), eglewGetExtension("EGL_KHR_stream"));
+
+ glewInfoFunc(fi, "eglCreateStreamKHR", eglCreateStreamKHR == NULL);
+ glewInfoFunc(fi, "eglDestroyStreamKHR", eglDestroyStreamKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamKHR", eglQueryStreamKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamu64KHR", eglQueryStreamu64KHR == NULL);
+ glewInfoFunc(fi, "eglStreamAttribKHR", eglStreamAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream */
+
+#ifdef EGL_KHR_stream_attrib
+
+static void _glewInfo_EGL_KHR_stream_attrib (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_attrib", EGLEW_KHR_stream_attrib, eglewIsSupported("EGL_KHR_stream_attrib"), eglewGetExtension("EGL_KHR_stream_attrib"));
+
+ glewInfoFunc(fi, "eglCreateStreamAttribKHR", eglCreateStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamAttribKHR", eglQueryStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglSetStreamAttribKHR", eglSetStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerAcquireAttribKHR", eglStreamConsumerAcquireAttribKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerReleaseAttribKHR", eglStreamConsumerReleaseAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_attrib */
+
+#ifdef EGL_KHR_stream_consumer_gltexture
+
+static void _glewInfo_EGL_KHR_stream_consumer_gltexture (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_consumer_gltexture", EGLEW_KHR_stream_consumer_gltexture, eglewIsSupported("EGL_KHR_stream_consumer_gltexture"), eglewGetExtension("EGL_KHR_stream_consumer_gltexture"));
+
+ glewInfoFunc(fi, "eglStreamConsumerAcquireKHR", eglStreamConsumerAcquireKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerGLTextureExternalKHR", eglStreamConsumerGLTextureExternalKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerReleaseKHR", eglStreamConsumerReleaseKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifdef EGL_KHR_stream_cross_process_fd
+
+static void _glewInfo_EGL_KHR_stream_cross_process_fd (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_cross_process_fd", EGLEW_KHR_stream_cross_process_fd, eglewIsSupported("EGL_KHR_stream_cross_process_fd"), eglewGetExtension("EGL_KHR_stream_cross_process_fd"));
+
+ glewInfoFunc(fi, "eglCreateStreamFromFileDescriptorKHR", eglCreateStreamFromFileDescriptorKHR == NULL);
+ glewInfoFunc(fi, "eglGetStreamFileDescriptorKHR", eglGetStreamFileDescriptorKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifdef EGL_KHR_stream_fifo
+
+static void _glewInfo_EGL_KHR_stream_fifo (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_fifo", EGLEW_KHR_stream_fifo, eglewIsSupported("EGL_KHR_stream_fifo"), eglewGetExtension("EGL_KHR_stream_fifo"));
+
+ glewInfoFunc(fi, "eglQueryStreamTimeKHR", eglQueryStreamTimeKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_fifo */
+
+#ifdef EGL_KHR_stream_producer_aldatalocator
+
+static void _glewInfo_EGL_KHR_stream_producer_aldatalocator (void)
+{
+ glewPrintExt("EGL_KHR_stream_producer_aldatalocator", EGLEW_KHR_stream_producer_aldatalocator, eglewIsSupported("EGL_KHR_stream_producer_aldatalocator"), eglewGetExtension("EGL_KHR_stream_producer_aldatalocator"));
+}
+
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+#ifdef EGL_KHR_stream_producer_eglsurface
+
+static void _glewInfo_EGL_KHR_stream_producer_eglsurface (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_producer_eglsurface", EGLEW_KHR_stream_producer_eglsurface, eglewIsSupported("EGL_KHR_stream_producer_eglsurface"), eglewGetExtension("EGL_KHR_stream_producer_eglsurface"));
+
+ glewInfoFunc(fi, "eglCreateStreamProducerSurfaceKHR", eglCreateStreamProducerSurfaceKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifdef EGL_KHR_surfaceless_context
+
+static void _glewInfo_EGL_KHR_surfaceless_context (void)
+{
+ glewPrintExt("EGL_KHR_surfaceless_context", EGLEW_KHR_surfaceless_context, eglewIsSupported("EGL_KHR_surfaceless_context"), eglewGetExtension("EGL_KHR_surfaceless_context"));
+}
+
+#endif /* EGL_KHR_surfaceless_context */
+
+#ifdef EGL_KHR_swap_buffers_with_damage
+
+static void _glewInfo_EGL_KHR_swap_buffers_with_damage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_swap_buffers_with_damage", EGLEW_KHR_swap_buffers_with_damage, eglewIsSupported("EGL_KHR_swap_buffers_with_damage"), eglewGetExtension("EGL_KHR_swap_buffers_with_damage"));
+
+ glewInfoFunc(fi, "eglSwapBuffersWithDamageKHR", eglSwapBuffersWithDamageKHR == NULL);
+}
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifdef EGL_KHR_vg_parent_image
+
+static void _glewInfo_EGL_KHR_vg_parent_image (void)
+{
+ glewPrintExt("EGL_KHR_vg_parent_image", EGLEW_KHR_vg_parent_image, eglewIsSupported("EGL_KHR_vg_parent_image"), eglewGetExtension("EGL_KHR_vg_parent_image"));
+}
+
+#endif /* EGL_KHR_vg_parent_image */
+
+#ifdef EGL_KHR_wait_sync
+
+static void _glewInfo_EGL_KHR_wait_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_wait_sync", EGLEW_KHR_wait_sync, eglewIsSupported("EGL_KHR_wait_sync"), eglewGetExtension("EGL_KHR_wait_sync"));
+
+ glewInfoFunc(fi, "eglWaitSyncKHR", eglWaitSyncKHR == NULL);
+}
+
+#endif /* EGL_KHR_wait_sync */
+
+#ifdef EGL_MESA_drm_image
+
+static void _glewInfo_EGL_MESA_drm_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_drm_image", EGLEW_MESA_drm_image, eglewIsSupported("EGL_MESA_drm_image"), eglewGetExtension("EGL_MESA_drm_image"));
+
+ glewInfoFunc(fi, "eglCreateDRMImageMESA", eglCreateDRMImageMESA == NULL);
+ glewInfoFunc(fi, "eglExportDRMImageMESA", eglExportDRMImageMESA == NULL);
+}
+
+#endif /* EGL_MESA_drm_image */
+
+#ifdef EGL_MESA_image_dma_buf_export
+
+static void _glewInfo_EGL_MESA_image_dma_buf_export (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_image_dma_buf_export", EGLEW_MESA_image_dma_buf_export, eglewIsSupported("EGL_MESA_image_dma_buf_export"), eglewGetExtension("EGL_MESA_image_dma_buf_export"));
+
+ glewInfoFunc(fi, "eglExportDMABUFImageMESA", eglExportDMABUFImageMESA == NULL);
+ glewInfoFunc(fi, "eglExportDMABUFImageQueryMESA", eglExportDMABUFImageQueryMESA == NULL);
+}
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifdef EGL_MESA_platform_gbm
+
+static void _glewInfo_EGL_MESA_platform_gbm (void)
+{
+ glewPrintExt("EGL_MESA_platform_gbm", EGLEW_MESA_platform_gbm, eglewIsSupported("EGL_MESA_platform_gbm"), eglewGetExtension("EGL_MESA_platform_gbm"));
+}
+
+#endif /* EGL_MESA_platform_gbm */
+
+#ifdef EGL_MESA_platform_surfaceless
+
+static void _glewInfo_EGL_MESA_platform_surfaceless (void)
+{
+ glewPrintExt("EGL_MESA_platform_surfaceless", EGLEW_MESA_platform_surfaceless, eglewIsSupported("EGL_MESA_platform_surfaceless"), eglewGetExtension("EGL_MESA_platform_surfaceless"));
+}
+
+#endif /* EGL_MESA_platform_surfaceless */
+
+#ifdef EGL_MESA_query_driver
+
+static void _glewInfo_EGL_MESA_query_driver (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_query_driver", EGLEW_MESA_query_driver, eglewIsSupported("EGL_MESA_query_driver"), eglewGetExtension("EGL_MESA_query_driver"));
+
+ glewInfoFunc(fi, "eglGetDisplayDriverConfig", eglGetDisplayDriverConfig == NULL);
+ glewInfoFunc(fi, "eglGetDisplayDriverName", eglGetDisplayDriverName == NULL);
+}
+
+#endif /* EGL_MESA_query_driver */
+
+#ifdef EGL_NOK_swap_region
+
+static void _glewInfo_EGL_NOK_swap_region (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NOK_swap_region", EGLEW_NOK_swap_region, eglewIsSupported("EGL_NOK_swap_region"), eglewGetExtension("EGL_NOK_swap_region"));
+
+ glewInfoFunc(fi, "eglSwapBuffersRegionNOK", eglSwapBuffersRegionNOK == NULL);
+}
+
+#endif /* EGL_NOK_swap_region */
+
+#ifdef EGL_NOK_swap_region2
+
+static void _glewInfo_EGL_NOK_swap_region2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NOK_swap_region2", EGLEW_NOK_swap_region2, eglewIsSupported("EGL_NOK_swap_region2"), eglewGetExtension("EGL_NOK_swap_region2"));
+
+ glewInfoFunc(fi, "eglSwapBuffersRegion2NOK", eglSwapBuffersRegion2NOK == NULL);
+}
+
+#endif /* EGL_NOK_swap_region2 */
+
+#ifdef EGL_NOK_texture_from_pixmap
+
+static void _glewInfo_EGL_NOK_texture_from_pixmap (void)
+{
+ glewPrintExt("EGL_NOK_texture_from_pixmap", EGLEW_NOK_texture_from_pixmap, eglewIsSupported("EGL_NOK_texture_from_pixmap"), eglewGetExtension("EGL_NOK_texture_from_pixmap"));
+}
+
+#endif /* EGL_NOK_texture_from_pixmap */
+
+#ifdef EGL_NV_3dvision_surface
+
+static void _glewInfo_EGL_NV_3dvision_surface (void)
+{
+ glewPrintExt("EGL_NV_3dvision_surface", EGLEW_NV_3dvision_surface, eglewIsSupported("EGL_NV_3dvision_surface"), eglewGetExtension("EGL_NV_3dvision_surface"));
+}
+
+#endif /* EGL_NV_3dvision_surface */
+
+#ifdef EGL_NV_context_priority_realtime
+
+static void _glewInfo_EGL_NV_context_priority_realtime (void)
+{
+ glewPrintExt("EGL_NV_context_priority_realtime", EGLEW_NV_context_priority_realtime, eglewIsSupported("EGL_NV_context_priority_realtime"), eglewGetExtension("EGL_NV_context_priority_realtime"));
+}
+
+#endif /* EGL_NV_context_priority_realtime */
+
+#ifdef EGL_NV_coverage_sample
+
+static void _glewInfo_EGL_NV_coverage_sample (void)
+{
+ glewPrintExt("EGL_NV_coverage_sample", EGLEW_NV_coverage_sample, eglewIsSupported("EGL_NV_coverage_sample"), eglewGetExtension("EGL_NV_coverage_sample"));
+}
+
+#endif /* EGL_NV_coverage_sample */
+
+#ifdef EGL_NV_coverage_sample_resolve
+
+static void _glewInfo_EGL_NV_coverage_sample_resolve (void)
+{
+ glewPrintExt("EGL_NV_coverage_sample_resolve", EGLEW_NV_coverage_sample_resolve, eglewIsSupported("EGL_NV_coverage_sample_resolve"), eglewGetExtension("EGL_NV_coverage_sample_resolve"));
+}
+
+#endif /* EGL_NV_coverage_sample_resolve */
+
+#ifdef EGL_NV_cuda_event
+
+static void _glewInfo_EGL_NV_cuda_event (void)
+{
+ glewPrintExt("EGL_NV_cuda_event", EGLEW_NV_cuda_event, eglewIsSupported("EGL_NV_cuda_event"), eglewGetExtension("EGL_NV_cuda_event"));
+}
+
+#endif /* EGL_NV_cuda_event */
+
+#ifdef EGL_NV_depth_nonlinear
+
+static void _glewInfo_EGL_NV_depth_nonlinear (void)
+{
+ glewPrintExt("EGL_NV_depth_nonlinear", EGLEW_NV_depth_nonlinear, eglewIsSupported("EGL_NV_depth_nonlinear"), eglewGetExtension("EGL_NV_depth_nonlinear"));
+}
+
+#endif /* EGL_NV_depth_nonlinear */
+
+#ifdef EGL_NV_device_cuda
+
+static void _glewInfo_EGL_NV_device_cuda (void)
+{
+ glewPrintExt("EGL_NV_device_cuda", EGLEW_NV_device_cuda, eglewIsSupported("EGL_NV_device_cuda"), eglewGetExtension("EGL_NV_device_cuda"));
+}
+
+#endif /* EGL_NV_device_cuda */
+
+#ifdef EGL_NV_native_query
+
+static void _glewInfo_EGL_NV_native_query (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_native_query", EGLEW_NV_native_query, eglewIsSupported("EGL_NV_native_query"), eglewGetExtension("EGL_NV_native_query"));
+
+ glewInfoFunc(fi, "eglQueryNativeDisplayNV", eglQueryNativeDisplayNV == NULL);
+ glewInfoFunc(fi, "eglQueryNativePixmapNV", eglQueryNativePixmapNV == NULL);
+ glewInfoFunc(fi, "eglQueryNativeWindowNV", eglQueryNativeWindowNV == NULL);
+}
+
+#endif /* EGL_NV_native_query */
+
+#ifdef EGL_NV_post_convert_rounding
+
+static void _glewInfo_EGL_NV_post_convert_rounding (void)
+{
+ glewPrintExt("EGL_NV_post_convert_rounding", EGLEW_NV_post_convert_rounding, eglewIsSupported("EGL_NV_post_convert_rounding"), eglewGetExtension("EGL_NV_post_convert_rounding"));
+}
+
+#endif /* EGL_NV_post_convert_rounding */
+
+#ifdef EGL_NV_post_sub_buffer
+
+static void _glewInfo_EGL_NV_post_sub_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_post_sub_buffer", EGLEW_NV_post_sub_buffer, eglewIsSupported("EGL_NV_post_sub_buffer"), eglewGetExtension("EGL_NV_post_sub_buffer"));
+
+ glewInfoFunc(fi, "eglPostSubBufferNV", eglPostSubBufferNV == NULL);
+}
+
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifdef EGL_NV_quadruple_buffer
+
+static void _glewInfo_EGL_NV_quadruple_buffer (void)
+{
+ glewPrintExt("EGL_NV_quadruple_buffer", EGLEW_NV_quadruple_buffer, eglewIsSupported("EGL_NV_quadruple_buffer"), eglewGetExtension("EGL_NV_quadruple_buffer"));
+}
+
+#endif /* EGL_NV_quadruple_buffer */
+
+#ifdef EGL_NV_robustness_video_memory_purge
+
+static void _glewInfo_EGL_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("EGL_NV_robustness_video_memory_purge", EGLEW_NV_robustness_video_memory_purge, eglewIsSupported("EGL_NV_robustness_video_memory_purge"), eglewGetExtension("EGL_NV_robustness_video_memory_purge"));
+}
+
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+#ifdef EGL_NV_stream_consumer_eglimage
+
+static void _glewInfo_EGL_NV_stream_consumer_eglimage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_consumer_eglimage", EGLEW_NV_stream_consumer_eglimage, eglewIsSupported("EGL_NV_stream_consumer_eglimage"), eglewGetExtension("EGL_NV_stream_consumer_eglimage"));
+
+ glewInfoFunc(fi, "eglQueryStreamConsumerEventNV", eglQueryStreamConsumerEventNV == NULL);
+ glewInfoFunc(fi, "eglStreamAcquireImageNV", eglStreamAcquireImageNV == NULL);
+ glewInfoFunc(fi, "eglStreamImageConsumerConnectNV", eglStreamImageConsumerConnectNV == NULL);
+ glewInfoFunc(fi, "eglStreamReleaseImageNV", eglStreamReleaseImageNV == NULL);
+}
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+
+static void _glewInfo_EGL_NV_stream_consumer_gltexture_yuv (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_consumer_gltexture_yuv", EGLEW_NV_stream_consumer_gltexture_yuv, eglewIsSupported("EGL_NV_stream_consumer_gltexture_yuv"), eglewGetExtension("EGL_NV_stream_consumer_gltexture_yuv"));
+
+ glewInfoFunc(fi, "eglStreamConsumerGLTextureExternalAttribsNV", eglStreamConsumerGLTextureExternalAttribsNV == NULL);
+}
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifdef EGL_NV_stream_cross_display
+
+static void _glewInfo_EGL_NV_stream_cross_display (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_display", EGLEW_NV_stream_cross_display, eglewIsSupported("EGL_NV_stream_cross_display"), eglewGetExtension("EGL_NV_stream_cross_display"));
+}
+
+#endif /* EGL_NV_stream_cross_display */
+
+#ifdef EGL_NV_stream_cross_object
+
+static void _glewInfo_EGL_NV_stream_cross_object (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_object", EGLEW_NV_stream_cross_object, eglewIsSupported("EGL_NV_stream_cross_object"), eglewGetExtension("EGL_NV_stream_cross_object"));
+}
+
+#endif /* EGL_NV_stream_cross_object */
+
+#ifdef EGL_NV_stream_cross_partition
+
+static void _glewInfo_EGL_NV_stream_cross_partition (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_partition", EGLEW_NV_stream_cross_partition, eglewIsSupported("EGL_NV_stream_cross_partition"), eglewGetExtension("EGL_NV_stream_cross_partition"));
+}
+
+#endif /* EGL_NV_stream_cross_partition */
+
+#ifdef EGL_NV_stream_cross_process
+
+static void _glewInfo_EGL_NV_stream_cross_process (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_process", EGLEW_NV_stream_cross_process, eglewIsSupported("EGL_NV_stream_cross_process"), eglewGetExtension("EGL_NV_stream_cross_process"));
+}
+
+#endif /* EGL_NV_stream_cross_process */
+
+#ifdef EGL_NV_stream_cross_system
+
+static void _glewInfo_EGL_NV_stream_cross_system (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_system", EGLEW_NV_stream_cross_system, eglewIsSupported("EGL_NV_stream_cross_system"), eglewGetExtension("EGL_NV_stream_cross_system"));
+}
+
+#endif /* EGL_NV_stream_cross_system */
+
+#ifdef EGL_NV_stream_dma
+
+static void _glewInfo_EGL_NV_stream_dma (void)
+{
+ glewPrintExt("EGL_NV_stream_dma", EGLEW_NV_stream_dma, eglewIsSupported("EGL_NV_stream_dma"), eglewGetExtension("EGL_NV_stream_dma"));
+}
+
+#endif /* EGL_NV_stream_dma */
+
+#ifdef EGL_NV_stream_fifo_next
+
+static void _glewInfo_EGL_NV_stream_fifo_next (void)
+{
+ glewPrintExt("EGL_NV_stream_fifo_next", EGLEW_NV_stream_fifo_next, eglewIsSupported("EGL_NV_stream_fifo_next"), eglewGetExtension("EGL_NV_stream_fifo_next"));
+}
+
+#endif /* EGL_NV_stream_fifo_next */
+
+#ifdef EGL_NV_stream_fifo_synchronous
+
+static void _glewInfo_EGL_NV_stream_fifo_synchronous (void)
+{
+ glewPrintExt("EGL_NV_stream_fifo_synchronous", EGLEW_NV_stream_fifo_synchronous, eglewIsSupported("EGL_NV_stream_fifo_synchronous"), eglewGetExtension("EGL_NV_stream_fifo_synchronous"));
+}
+
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+#ifdef EGL_NV_stream_flush
+
+static void _glewInfo_EGL_NV_stream_flush (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_flush", EGLEW_NV_stream_flush, eglewIsSupported("EGL_NV_stream_flush"), eglewGetExtension("EGL_NV_stream_flush"));
+
+ glewInfoFunc(fi, "eglStreamFlushNV", eglStreamFlushNV == NULL);
+}
+
+#endif /* EGL_NV_stream_flush */
+
+#ifdef EGL_NV_stream_frame_limits
+
+static void _glewInfo_EGL_NV_stream_frame_limits (void)
+{
+ glewPrintExt("EGL_NV_stream_frame_limits", EGLEW_NV_stream_frame_limits, eglewIsSupported("EGL_NV_stream_frame_limits"), eglewGetExtension("EGL_NV_stream_frame_limits"));
+}
+
+#endif /* EGL_NV_stream_frame_limits */
+
+#ifdef EGL_NV_stream_metadata
+
+static void _glewInfo_EGL_NV_stream_metadata (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_metadata", EGLEW_NV_stream_metadata, eglewIsSupported("EGL_NV_stream_metadata"), eglewGetExtension("EGL_NV_stream_metadata"));
+
+ glewInfoFunc(fi, "eglQueryDisplayAttribNV", eglQueryDisplayAttribNV == NULL);
+ glewInfoFunc(fi, "eglQueryStreamMetadataNV", eglQueryStreamMetadataNV == NULL);
+ glewInfoFunc(fi, "eglSetStreamMetadataNV", eglSetStreamMetadataNV == NULL);
+}
+
+#endif /* EGL_NV_stream_metadata */
+
+#ifdef EGL_NV_stream_origin
+
+static void _glewInfo_EGL_NV_stream_origin (void)
+{
+ glewPrintExt("EGL_NV_stream_origin", EGLEW_NV_stream_origin, eglewIsSupported("EGL_NV_stream_origin"), eglewGetExtension("EGL_NV_stream_origin"));
+}
+
+#endif /* EGL_NV_stream_origin */
+
+#ifdef EGL_NV_stream_remote
+
+static void _glewInfo_EGL_NV_stream_remote (void)
+{
+ glewPrintExt("EGL_NV_stream_remote", EGLEW_NV_stream_remote, eglewIsSupported("EGL_NV_stream_remote"), eglewGetExtension("EGL_NV_stream_remote"));
+}
+
+#endif /* EGL_NV_stream_remote */
+
+#ifdef EGL_NV_stream_reset
+
+static void _glewInfo_EGL_NV_stream_reset (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_reset", EGLEW_NV_stream_reset, eglewIsSupported("EGL_NV_stream_reset"), eglewGetExtension("EGL_NV_stream_reset"));
+
+ glewInfoFunc(fi, "eglResetStreamNV", eglResetStreamNV == NULL);
+}
+
+#endif /* EGL_NV_stream_reset */
+
+#ifdef EGL_NV_stream_socket
+
+static void _glewInfo_EGL_NV_stream_socket (void)
+{
+ glewPrintExt("EGL_NV_stream_socket", EGLEW_NV_stream_socket, eglewIsSupported("EGL_NV_stream_socket"), eglewGetExtension("EGL_NV_stream_socket"));
+}
+
+#endif /* EGL_NV_stream_socket */
+
+#ifdef EGL_NV_stream_socket_inet
+
+static void _glewInfo_EGL_NV_stream_socket_inet (void)
+{
+ glewPrintExt("EGL_NV_stream_socket_inet", EGLEW_NV_stream_socket_inet, eglewIsSupported("EGL_NV_stream_socket_inet"), eglewGetExtension("EGL_NV_stream_socket_inet"));
+}
+
+#endif /* EGL_NV_stream_socket_inet */
+
+#ifdef EGL_NV_stream_socket_unix
+
+static void _glewInfo_EGL_NV_stream_socket_unix (void)
+{
+ glewPrintExt("EGL_NV_stream_socket_unix", EGLEW_NV_stream_socket_unix, eglewIsSupported("EGL_NV_stream_socket_unix"), eglewGetExtension("EGL_NV_stream_socket_unix"));
+}
+
+#endif /* EGL_NV_stream_socket_unix */
+
+#ifdef EGL_NV_stream_sync
+
+static void _glewInfo_EGL_NV_stream_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_sync", EGLEW_NV_stream_sync, eglewIsSupported("EGL_NV_stream_sync"), eglewGetExtension("EGL_NV_stream_sync"));
+
+ glewInfoFunc(fi, "eglCreateStreamSyncNV", eglCreateStreamSyncNV == NULL);
+}
+
+#endif /* EGL_NV_stream_sync */
+
+#ifdef EGL_NV_sync
+
+static void _glewInfo_EGL_NV_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_sync", EGLEW_NV_sync, eglewIsSupported("EGL_NV_sync"), eglewGetExtension("EGL_NV_sync"));
+
+ glewInfoFunc(fi, "eglClientWaitSyncNV", eglClientWaitSyncNV == NULL);
+ glewInfoFunc(fi, "eglCreateFenceSyncNV", eglCreateFenceSyncNV == NULL);
+ glewInfoFunc(fi, "eglDestroySyncNV", eglDestroySyncNV == NULL);
+ glewInfoFunc(fi, "eglFenceNV", eglFenceNV == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttribNV", eglGetSyncAttribNV == NULL);
+ glewInfoFunc(fi, "eglSignalSyncNV", eglSignalSyncNV == NULL);
+}
+
+#endif /* EGL_NV_sync */
+
+#ifdef EGL_NV_system_time
+
+static void _glewInfo_EGL_NV_system_time (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_system_time", EGLEW_NV_system_time, eglewIsSupported("EGL_NV_system_time"), eglewGetExtension("EGL_NV_system_time"));
+
+ glewInfoFunc(fi, "eglGetSystemTimeFrequencyNV", eglGetSystemTimeFrequencyNV == NULL);
+ glewInfoFunc(fi, "eglGetSystemTimeNV", eglGetSystemTimeNV == NULL);
+}
+
+#endif /* EGL_NV_system_time */
+
+#ifdef EGL_NV_triple_buffer
+
+static void _glewInfo_EGL_NV_triple_buffer (void)
+{
+ glewPrintExt("EGL_NV_triple_buffer", EGLEW_NV_triple_buffer, eglewIsSupported("EGL_NV_triple_buffer"), eglewGetExtension("EGL_NV_triple_buffer"));
+}
+
+#endif /* EGL_NV_triple_buffer */
+
+#ifdef EGL_TIZEN_image_native_buffer
+
+static void _glewInfo_EGL_TIZEN_image_native_buffer (void)
+{
+ glewPrintExt("EGL_TIZEN_image_native_buffer", EGLEW_TIZEN_image_native_buffer, eglewIsSupported("EGL_TIZEN_image_native_buffer"), eglewGetExtension("EGL_TIZEN_image_native_buffer"));
+}
+
+#endif /* EGL_TIZEN_image_native_buffer */
+
+#ifdef EGL_TIZEN_image_native_surface
+
+static void _glewInfo_EGL_TIZEN_image_native_surface (void)
+{
+ glewPrintExt("EGL_TIZEN_image_native_surface", EGLEW_TIZEN_image_native_surface, eglewIsSupported("EGL_TIZEN_image_native_surface"), eglewGetExtension("EGL_TIZEN_image_native_surface"));
+}
+
+#endif /* EGL_TIZEN_image_native_surface */
+
+#ifdef EGL_WL_bind_wayland_display
+
+static void _glewInfo_EGL_WL_bind_wayland_display (void)
+{
+ GLboolean fi = glewPrintExt("EGL_WL_bind_wayland_display", EGLEW_WL_bind_wayland_display, eglewIsSupported("EGL_WL_bind_wayland_display"), eglewGetExtension("EGL_WL_bind_wayland_display"));
+
+ glewInfoFunc(fi, "eglBindWaylandDisplayWL", eglBindWaylandDisplayWL == NULL);
+ glewInfoFunc(fi, "eglQueryWaylandBufferWL", eglQueryWaylandBufferWL == NULL);
+ glewInfoFunc(fi, "eglUnbindWaylandDisplayWL", eglUnbindWaylandDisplayWL == NULL);
+}
+
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifdef EGL_WL_create_wayland_buffer_from_image
+
+static void _glewInfo_EGL_WL_create_wayland_buffer_from_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_WL_create_wayland_buffer_from_image", EGLEW_WL_create_wayland_buffer_from_image, eglewIsSupported("EGL_WL_create_wayland_buffer_from_image"), eglewGetExtension("EGL_WL_create_wayland_buffer_from_image"));
+
+ glewInfoFunc(fi, "eglCreateWaylandBufferFromImageWL", eglCreateWaylandBufferFromImageWL == NULL);
+}
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+#elif _WIN32
+
+#ifdef WGL_3DFX_multisample
+
+static void _glewInfo_WGL_3DFX_multisample (void)
+{
+ glewPrintExt("WGL_3DFX_multisample", WGLEW_3DFX_multisample, wglewIsSupported("WGL_3DFX_multisample"), wglewGetExtension("WGL_3DFX_multisample"));
+}
+
+#endif /* WGL_3DFX_multisample */
+
+#ifdef WGL_3DL_stereo_control
+
+static void _glewInfo_WGL_3DL_stereo_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_3DL_stereo_control", WGLEW_3DL_stereo_control, wglewIsSupported("WGL_3DL_stereo_control"), wglewGetExtension("WGL_3DL_stereo_control"));
+
+ glewInfoFunc(fi, "wglSetStereoEmitterState3DL", wglSetStereoEmitterState3DL == NULL);
+}
+
+#endif /* WGL_3DL_stereo_control */
+
+#ifdef WGL_AMD_gpu_association
+
+static void _glewInfo_WGL_AMD_gpu_association (void)
+{
+ GLboolean fi = glewPrintExt("WGL_AMD_gpu_association", WGLEW_AMD_gpu_association, wglewIsSupported("WGL_AMD_gpu_association"), wglewGetExtension("WGL_AMD_gpu_association"));
+
+ glewInfoFunc(fi, "wglBlitContextFramebufferAMD", wglBlitContextFramebufferAMD == NULL);
+ glewInfoFunc(fi, "wglCreateAssociatedContextAMD", wglCreateAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglCreateAssociatedContextAttribsAMD", wglCreateAssociatedContextAttribsAMD == NULL);
+ glewInfoFunc(fi, "wglDeleteAssociatedContextAMD", wglDeleteAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglGetContextGPUIDAMD", wglGetContextGPUIDAMD == NULL);
+ glewInfoFunc(fi, "wglGetCurrentAssociatedContextAMD", wglGetCurrentAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglGetGPUIDsAMD", wglGetGPUIDsAMD == NULL);
+ glewInfoFunc(fi, "wglGetGPUInfoAMD", wglGetGPUInfoAMD == NULL);
+ glewInfoFunc(fi, "wglMakeAssociatedContextCurrentAMD", wglMakeAssociatedContextCurrentAMD == NULL);
+}
+
+#endif /* WGL_AMD_gpu_association */
+
+#ifdef WGL_ARB_buffer_region
+
+static void _glewInfo_WGL_ARB_buffer_region (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_buffer_region", WGLEW_ARB_buffer_region, wglewIsSupported("WGL_ARB_buffer_region"), wglewGetExtension("WGL_ARB_buffer_region"));
+
+ glewInfoFunc(fi, "wglCreateBufferRegionARB", wglCreateBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglDeleteBufferRegionARB", wglDeleteBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglRestoreBufferRegionARB", wglRestoreBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglSaveBufferRegionARB", wglSaveBufferRegionARB == NULL);
+}
+
+#endif /* WGL_ARB_buffer_region */
+
+#ifdef WGL_ARB_context_flush_control
+
+static void _glewInfo_WGL_ARB_context_flush_control (void)
+{
+ glewPrintExt("WGL_ARB_context_flush_control", WGLEW_ARB_context_flush_control, wglewIsSupported("WGL_ARB_context_flush_control"), wglewGetExtension("WGL_ARB_context_flush_control"));
+}
+
+#endif /* WGL_ARB_context_flush_control */
+
+#ifdef WGL_ARB_create_context
+
+static void _glewInfo_WGL_ARB_create_context (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_create_context", WGLEW_ARB_create_context, wglewIsSupported("WGL_ARB_create_context"), wglewGetExtension("WGL_ARB_create_context"));
+
+ glewInfoFunc(fi, "wglCreateContextAttribsARB", wglCreateContextAttribsARB == NULL);
+}
+
+#endif /* WGL_ARB_create_context */
+
+#ifdef WGL_ARB_create_context_no_error
+
+static void _glewInfo_WGL_ARB_create_context_no_error (void)
+{
+ glewPrintExt("WGL_ARB_create_context_no_error", WGLEW_ARB_create_context_no_error, wglewIsSupported("WGL_ARB_create_context_no_error"), wglewGetExtension("WGL_ARB_create_context_no_error"));
+}
+
+#endif /* WGL_ARB_create_context_no_error */
+
+#ifdef WGL_ARB_create_context_profile
+
+static void _glewInfo_WGL_ARB_create_context_profile (void)
+{
+ glewPrintExt("WGL_ARB_create_context_profile", WGLEW_ARB_create_context_profile, wglewIsSupported("WGL_ARB_create_context_profile"), wglewGetExtension("WGL_ARB_create_context_profile"));
+}
+
+#endif /* WGL_ARB_create_context_profile */
+
+#ifdef WGL_ARB_create_context_robustness
+
+static void _glewInfo_WGL_ARB_create_context_robustness (void)
+{
+ glewPrintExt("WGL_ARB_create_context_robustness", WGLEW_ARB_create_context_robustness, wglewIsSupported("WGL_ARB_create_context_robustness"), wglewGetExtension("WGL_ARB_create_context_robustness"));
+}
+
+#endif /* WGL_ARB_create_context_robustness */
+
+#ifdef WGL_ARB_extensions_string
+
+static void _glewInfo_WGL_ARB_extensions_string (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_extensions_string", WGLEW_ARB_extensions_string, wglewIsSupported("WGL_ARB_extensions_string"), wglewGetExtension("WGL_ARB_extensions_string"));
+
+ glewInfoFunc(fi, "wglGetExtensionsStringARB", wglGetExtensionsStringARB == NULL);
+}
+
+#endif /* WGL_ARB_extensions_string */
+
+#ifdef WGL_ARB_framebuffer_sRGB
+
+static void _glewInfo_WGL_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("WGL_ARB_framebuffer_sRGB", WGLEW_ARB_framebuffer_sRGB, wglewIsSupported("WGL_ARB_framebuffer_sRGB"), wglewGetExtension("WGL_ARB_framebuffer_sRGB"));
+}
+
+#endif /* WGL_ARB_framebuffer_sRGB */
+
+#ifdef WGL_ARB_make_current_read
+
+static void _glewInfo_WGL_ARB_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_make_current_read", WGLEW_ARB_make_current_read, wglewIsSupported("WGL_ARB_make_current_read"), wglewGetExtension("WGL_ARB_make_current_read"));
+
+ glewInfoFunc(fi, "wglGetCurrentReadDCARB", wglGetCurrentReadDCARB == NULL);
+ glewInfoFunc(fi, "wglMakeContextCurrentARB", wglMakeContextCurrentARB == NULL);
+}
+
+#endif /* WGL_ARB_make_current_read */
+
+#ifdef WGL_ARB_multisample
+
+static void _glewInfo_WGL_ARB_multisample (void)
+{
+ glewPrintExt("WGL_ARB_multisample", WGLEW_ARB_multisample, wglewIsSupported("WGL_ARB_multisample"), wglewGetExtension("WGL_ARB_multisample"));
+}
+
+#endif /* WGL_ARB_multisample */
+
+#ifdef WGL_ARB_pbuffer
+
+static void _glewInfo_WGL_ARB_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_pbuffer", WGLEW_ARB_pbuffer, wglewIsSupported("WGL_ARB_pbuffer"), wglewGetExtension("WGL_ARB_pbuffer"));
+
+ glewInfoFunc(fi, "wglCreatePbufferARB", wglCreatePbufferARB == NULL);
+ glewInfoFunc(fi, "wglDestroyPbufferARB", wglDestroyPbufferARB == NULL);
+ glewInfoFunc(fi, "wglGetPbufferDCARB", wglGetPbufferDCARB == NULL);
+ glewInfoFunc(fi, "wglQueryPbufferARB", wglQueryPbufferARB == NULL);
+ glewInfoFunc(fi, "wglReleasePbufferDCARB", wglReleasePbufferDCARB == NULL);
+}
+
+#endif /* WGL_ARB_pbuffer */
+
+#ifdef WGL_ARB_pixel_format
+
+static void _glewInfo_WGL_ARB_pixel_format (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_pixel_format", WGLEW_ARB_pixel_format, wglewIsSupported("WGL_ARB_pixel_format"), wglewGetExtension("WGL_ARB_pixel_format"));
+
+ glewInfoFunc(fi, "wglChoosePixelFormatARB", wglChoosePixelFormatARB == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribfvARB", wglGetPixelFormatAttribfvARB == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribivARB", wglGetPixelFormatAttribivARB == NULL);
+}
+
+#endif /* WGL_ARB_pixel_format */
+
+#ifdef WGL_ARB_pixel_format_float
+
+static void _glewInfo_WGL_ARB_pixel_format_float (void)
+{
+ glewPrintExt("WGL_ARB_pixel_format_float", WGLEW_ARB_pixel_format_float, wglewIsSupported("WGL_ARB_pixel_format_float"), wglewGetExtension("WGL_ARB_pixel_format_float"));
+}
+
+#endif /* WGL_ARB_pixel_format_float */
+
+#ifdef WGL_ARB_render_texture
+
+static void _glewInfo_WGL_ARB_render_texture (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_render_texture", WGLEW_ARB_render_texture, wglewIsSupported("WGL_ARB_render_texture"), wglewGetExtension("WGL_ARB_render_texture"));
+
+ glewInfoFunc(fi, "wglBindTexImageARB", wglBindTexImageARB == NULL);
+ glewInfoFunc(fi, "wglReleaseTexImageARB", wglReleaseTexImageARB == NULL);
+ glewInfoFunc(fi, "wglSetPbufferAttribARB", wglSetPbufferAttribARB == NULL);
+}
+
+#endif /* WGL_ARB_render_texture */
+
+#ifdef WGL_ARB_robustness_application_isolation
+
+static void _glewInfo_WGL_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("WGL_ARB_robustness_application_isolation", WGLEW_ARB_robustness_application_isolation, wglewIsSupported("WGL_ARB_robustness_application_isolation"), wglewGetExtension("WGL_ARB_robustness_application_isolation"));
+}
+
+#endif /* WGL_ARB_robustness_application_isolation */
+
+#ifdef WGL_ARB_robustness_share_group_isolation
+
+static void _glewInfo_WGL_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("WGL_ARB_robustness_share_group_isolation", WGLEW_ARB_robustness_share_group_isolation, wglewIsSupported("WGL_ARB_robustness_share_group_isolation"), wglewGetExtension("WGL_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* WGL_ARB_robustness_share_group_isolation */
+
+#ifdef WGL_ATI_pixel_format_float
+
+static void _glewInfo_WGL_ATI_pixel_format_float (void)
+{
+ glewPrintExt("WGL_ATI_pixel_format_float", WGLEW_ATI_pixel_format_float, wglewIsSupported("WGL_ATI_pixel_format_float"), wglewGetExtension("WGL_ATI_pixel_format_float"));
+}
+
+#endif /* WGL_ATI_pixel_format_float */
+
+#ifdef WGL_ATI_render_texture_rectangle
+
+static void _glewInfo_WGL_ATI_render_texture_rectangle (void)
+{
+ glewPrintExt("WGL_ATI_render_texture_rectangle", WGLEW_ATI_render_texture_rectangle, wglewIsSupported("WGL_ATI_render_texture_rectangle"), wglewGetExtension("WGL_ATI_render_texture_rectangle"));
+}
+
+#endif /* WGL_ATI_render_texture_rectangle */
+
+#ifdef WGL_EXT_colorspace
+
+static void _glewInfo_WGL_EXT_colorspace (void)
+{
+ glewPrintExt("WGL_EXT_colorspace", WGLEW_EXT_colorspace, wglewIsSupported("WGL_EXT_colorspace"), wglewGetExtension("WGL_EXT_colorspace"));
+}
+
+#endif /* WGL_EXT_colorspace */
+
+#ifdef WGL_EXT_create_context_es2_profile
+
+static void _glewInfo_WGL_EXT_create_context_es2_profile (void)
+{
+ glewPrintExt("WGL_EXT_create_context_es2_profile", WGLEW_EXT_create_context_es2_profile, wglewIsSupported("WGL_EXT_create_context_es2_profile"), wglewGetExtension("WGL_EXT_create_context_es2_profile"));
+}
+
+#endif /* WGL_EXT_create_context_es2_profile */
+
+#ifdef WGL_EXT_create_context_es_profile
+
+static void _glewInfo_WGL_EXT_create_context_es_profile (void)
+{
+ glewPrintExt("WGL_EXT_create_context_es_profile", WGLEW_EXT_create_context_es_profile, wglewIsSupported("WGL_EXT_create_context_es_profile"), wglewGetExtension("WGL_EXT_create_context_es_profile"));
+}
+
+#endif /* WGL_EXT_create_context_es_profile */
+
+#ifdef WGL_EXT_depth_float
+
+static void _glewInfo_WGL_EXT_depth_float (void)
+{
+ glewPrintExt("WGL_EXT_depth_float", WGLEW_EXT_depth_float, wglewIsSupported("WGL_EXT_depth_float"), wglewGetExtension("WGL_EXT_depth_float"));
+}
+
+#endif /* WGL_EXT_depth_float */
+
+#ifdef WGL_EXT_display_color_table
+
+static void _glewInfo_WGL_EXT_display_color_table (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_display_color_table", WGLEW_EXT_display_color_table, wglewIsSupported("WGL_EXT_display_color_table"), wglewGetExtension("WGL_EXT_display_color_table"));
+
+ glewInfoFunc(fi, "wglBindDisplayColorTableEXT", wglBindDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglCreateDisplayColorTableEXT", wglCreateDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglDestroyDisplayColorTableEXT", wglDestroyDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglLoadDisplayColorTableEXT", wglLoadDisplayColorTableEXT == NULL);
+}
+
+#endif /* WGL_EXT_display_color_table */
+
+#ifdef WGL_EXT_extensions_string
+
+static void _glewInfo_WGL_EXT_extensions_string (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_extensions_string", WGLEW_EXT_extensions_string, wglewIsSupported("WGL_EXT_extensions_string"), wglewGetExtension("WGL_EXT_extensions_string"));
+
+ glewInfoFunc(fi, "wglGetExtensionsStringEXT", wglGetExtensionsStringEXT == NULL);
+}
+
+#endif /* WGL_EXT_extensions_string */
+
+#ifdef WGL_EXT_framebuffer_sRGB
+
+static void _glewInfo_WGL_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("WGL_EXT_framebuffer_sRGB", WGLEW_EXT_framebuffer_sRGB, wglewIsSupported("WGL_EXT_framebuffer_sRGB"), wglewGetExtension("WGL_EXT_framebuffer_sRGB"));
+}
+
+#endif /* WGL_EXT_framebuffer_sRGB */
+
+#ifdef WGL_EXT_make_current_read
+
+static void _glewInfo_WGL_EXT_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_make_current_read", WGLEW_EXT_make_current_read, wglewIsSupported("WGL_EXT_make_current_read"), wglewGetExtension("WGL_EXT_make_current_read"));
+
+ glewInfoFunc(fi, "wglGetCurrentReadDCEXT", wglGetCurrentReadDCEXT == NULL);
+ glewInfoFunc(fi, "wglMakeContextCurrentEXT", wglMakeContextCurrentEXT == NULL);
+}
+
+#endif /* WGL_EXT_make_current_read */
+
+#ifdef WGL_EXT_multisample
+
+static void _glewInfo_WGL_EXT_multisample (void)
+{
+ glewPrintExt("WGL_EXT_multisample", WGLEW_EXT_multisample, wglewIsSupported("WGL_EXT_multisample"), wglewGetExtension("WGL_EXT_multisample"));
+}
+
+#endif /* WGL_EXT_multisample */
+
+#ifdef WGL_EXT_pbuffer
+
+static void _glewInfo_WGL_EXT_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_pbuffer", WGLEW_EXT_pbuffer, wglewIsSupported("WGL_EXT_pbuffer"), wglewGetExtension("WGL_EXT_pbuffer"));
+
+ glewInfoFunc(fi, "wglCreatePbufferEXT", wglCreatePbufferEXT == NULL);
+ glewInfoFunc(fi, "wglDestroyPbufferEXT", wglDestroyPbufferEXT == NULL);
+ glewInfoFunc(fi, "wglGetPbufferDCEXT", wglGetPbufferDCEXT == NULL);
+ glewInfoFunc(fi, "wglQueryPbufferEXT", wglQueryPbufferEXT == NULL);
+ glewInfoFunc(fi, "wglReleasePbufferDCEXT", wglReleasePbufferDCEXT == NULL);
+}
+
+#endif /* WGL_EXT_pbuffer */
+
+#ifdef WGL_EXT_pixel_format
+
+static void _glewInfo_WGL_EXT_pixel_format (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_pixel_format", WGLEW_EXT_pixel_format, wglewIsSupported("WGL_EXT_pixel_format"), wglewGetExtension("WGL_EXT_pixel_format"));
+
+ glewInfoFunc(fi, "wglChoosePixelFormatEXT", wglChoosePixelFormatEXT == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribfvEXT", wglGetPixelFormatAttribfvEXT == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribivEXT", wglGetPixelFormatAttribivEXT == NULL);
+}
+
+#endif /* WGL_EXT_pixel_format */
+
+#ifdef WGL_EXT_pixel_format_packed_float
+
+static void _glewInfo_WGL_EXT_pixel_format_packed_float (void)
+{
+ glewPrintExt("WGL_EXT_pixel_format_packed_float", WGLEW_EXT_pixel_format_packed_float, wglewIsSupported("WGL_EXT_pixel_format_packed_float"), wglewGetExtension("WGL_EXT_pixel_format_packed_float"));
+}
+
+#endif /* WGL_EXT_pixel_format_packed_float */
+
+#ifdef WGL_EXT_swap_control
+
+static void _glewInfo_WGL_EXT_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_swap_control", WGLEW_EXT_swap_control, wglewIsSupported("WGL_EXT_swap_control"), wglewGetExtension("WGL_EXT_swap_control"));
+
+ glewInfoFunc(fi, "wglGetSwapIntervalEXT", wglGetSwapIntervalEXT == NULL);
+ glewInfoFunc(fi, "wglSwapIntervalEXT", wglSwapIntervalEXT == NULL);
+}
+
+#endif /* WGL_EXT_swap_control */
+
+#ifdef WGL_EXT_swap_control_tear
+
+static void _glewInfo_WGL_EXT_swap_control_tear (void)
+{
+ glewPrintExt("WGL_EXT_swap_control_tear", WGLEW_EXT_swap_control_tear, wglewIsSupported("WGL_EXT_swap_control_tear"), wglewGetExtension("WGL_EXT_swap_control_tear"));
+}
+
+#endif /* WGL_EXT_swap_control_tear */
+
+#ifdef WGL_I3D_digital_video_control
+
+static void _glewInfo_WGL_I3D_digital_video_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_digital_video_control", WGLEW_I3D_digital_video_control, wglewIsSupported("WGL_I3D_digital_video_control"), wglewGetExtension("WGL_I3D_digital_video_control"));
+
+ glewInfoFunc(fi, "wglGetDigitalVideoParametersI3D", wglGetDigitalVideoParametersI3D == NULL);
+ glewInfoFunc(fi, "wglSetDigitalVideoParametersI3D", wglSetDigitalVideoParametersI3D == NULL);
+}
+
+#endif /* WGL_I3D_digital_video_control */
+
+#ifdef WGL_I3D_gamma
+
+static void _glewInfo_WGL_I3D_gamma (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_gamma", WGLEW_I3D_gamma, wglewIsSupported("WGL_I3D_gamma"), wglewGetExtension("WGL_I3D_gamma"));
+
+ glewInfoFunc(fi, "wglGetGammaTableI3D", wglGetGammaTableI3D == NULL);
+ glewInfoFunc(fi, "wglGetGammaTableParametersI3D", wglGetGammaTableParametersI3D == NULL);
+ glewInfoFunc(fi, "wglSetGammaTableI3D", wglSetGammaTableI3D == NULL);
+ glewInfoFunc(fi, "wglSetGammaTableParametersI3D", wglSetGammaTableParametersI3D == NULL);
+}
+
+#endif /* WGL_I3D_gamma */
+
+#ifdef WGL_I3D_genlock
+
+static void _glewInfo_WGL_I3D_genlock (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_genlock", WGLEW_I3D_genlock, wglewIsSupported("WGL_I3D_genlock"), wglewGetExtension("WGL_I3D_genlock"));
+
+ glewInfoFunc(fi, "wglDisableGenlockI3D", wglDisableGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglEnableGenlockI3D", wglEnableGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSampleRateI3D", wglGenlockSampleRateI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceDelayI3D", wglGenlockSourceDelayI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceEdgeI3D", wglGenlockSourceEdgeI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceI3D", wglGenlockSourceI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSampleRateI3D", wglGetGenlockSampleRateI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceDelayI3D", wglGetGenlockSourceDelayI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceEdgeI3D", wglGetGenlockSourceEdgeI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceI3D", wglGetGenlockSourceI3D == NULL);
+ glewInfoFunc(fi, "wglIsEnabledGenlockI3D", wglIsEnabledGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglQueryGenlockMaxSourceDelayI3D", wglQueryGenlockMaxSourceDelayI3D == NULL);
+}
+
+#endif /* WGL_I3D_genlock */
+
+#ifdef WGL_I3D_image_buffer
+
+static void _glewInfo_WGL_I3D_image_buffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_image_buffer", WGLEW_I3D_image_buffer, wglewIsSupported("WGL_I3D_image_buffer"), wglewGetExtension("WGL_I3D_image_buffer"));
+
+ glewInfoFunc(fi, "wglAssociateImageBufferEventsI3D", wglAssociateImageBufferEventsI3D == NULL);
+ glewInfoFunc(fi, "wglCreateImageBufferI3D", wglCreateImageBufferI3D == NULL);
+ glewInfoFunc(fi, "wglDestroyImageBufferI3D", wglDestroyImageBufferI3D == NULL);
+ glewInfoFunc(fi, "wglReleaseImageBufferEventsI3D", wglReleaseImageBufferEventsI3D == NULL);
+}
+
+#endif /* WGL_I3D_image_buffer */
+
+#ifdef WGL_I3D_swap_frame_lock
+
+static void _glewInfo_WGL_I3D_swap_frame_lock (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_swap_frame_lock", WGLEW_I3D_swap_frame_lock, wglewIsSupported("WGL_I3D_swap_frame_lock"), wglewGetExtension("WGL_I3D_swap_frame_lock"));
+
+ glewInfoFunc(fi, "wglDisableFrameLockI3D", wglDisableFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglEnableFrameLockI3D", wglEnableFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglIsEnabledFrameLockI3D", wglIsEnabledFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglQueryFrameLockMasterI3D", wglQueryFrameLockMasterI3D == NULL);
+}
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+#ifdef WGL_I3D_swap_frame_usage
+
+static void _glewInfo_WGL_I3D_swap_frame_usage (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_swap_frame_usage", WGLEW_I3D_swap_frame_usage, wglewIsSupported("WGL_I3D_swap_frame_usage"), wglewGetExtension("WGL_I3D_swap_frame_usage"));
+
+ glewInfoFunc(fi, "wglBeginFrameTrackingI3D", wglBeginFrameTrackingI3D == NULL);
+ glewInfoFunc(fi, "wglEndFrameTrackingI3D", wglEndFrameTrackingI3D == NULL);
+ glewInfoFunc(fi, "wglGetFrameUsageI3D", wglGetFrameUsageI3D == NULL);
+ glewInfoFunc(fi, "wglQueryFrameTrackingI3D", wglQueryFrameTrackingI3D == NULL);
+}
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+#ifdef WGL_NV_DX_interop
+
+static void _glewInfo_WGL_NV_DX_interop (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_DX_interop", WGLEW_NV_DX_interop, wglewIsSupported("WGL_NV_DX_interop"), wglewGetExtension("WGL_NV_DX_interop"));
+
+ glewInfoFunc(fi, "wglDXCloseDeviceNV", wglDXCloseDeviceNV == NULL);
+ glewInfoFunc(fi, "wglDXLockObjectsNV", wglDXLockObjectsNV == NULL);
+ glewInfoFunc(fi, "wglDXObjectAccessNV", wglDXObjectAccessNV == NULL);
+ glewInfoFunc(fi, "wglDXOpenDeviceNV", wglDXOpenDeviceNV == NULL);
+ glewInfoFunc(fi, "wglDXRegisterObjectNV", wglDXRegisterObjectNV == NULL);
+ glewInfoFunc(fi, "wglDXSetResourceShareHandleNV", wglDXSetResourceShareHandleNV == NULL);
+ glewInfoFunc(fi, "wglDXUnlockObjectsNV", wglDXUnlockObjectsNV == NULL);
+ glewInfoFunc(fi, "wglDXUnregisterObjectNV", wglDXUnregisterObjectNV == NULL);
+}
+
+#endif /* WGL_NV_DX_interop */
+
+#ifdef WGL_NV_DX_interop2
+
+static void _glewInfo_WGL_NV_DX_interop2 (void)
+{
+ glewPrintExt("WGL_NV_DX_interop2", WGLEW_NV_DX_interop2, wglewIsSupported("WGL_NV_DX_interop2"), wglewGetExtension("WGL_NV_DX_interop2"));
+}
+
+#endif /* WGL_NV_DX_interop2 */
+
+#ifdef WGL_NV_copy_image
+
+static void _glewInfo_WGL_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_copy_image", WGLEW_NV_copy_image, wglewIsSupported("WGL_NV_copy_image"), wglewGetExtension("WGL_NV_copy_image"));
+
+ glewInfoFunc(fi, "wglCopyImageSubDataNV", wglCopyImageSubDataNV == NULL);
+}
+
+#endif /* WGL_NV_copy_image */
+
+#ifdef WGL_NV_delay_before_swap
+
+static void _glewInfo_WGL_NV_delay_before_swap (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_delay_before_swap", WGLEW_NV_delay_before_swap, wglewIsSupported("WGL_NV_delay_before_swap"), wglewGetExtension("WGL_NV_delay_before_swap"));
+
+ glewInfoFunc(fi, "wglDelayBeforeSwapNV", wglDelayBeforeSwapNV == NULL);
+}
+
+#endif /* WGL_NV_delay_before_swap */
+
+#ifdef WGL_NV_float_buffer
+
+static void _glewInfo_WGL_NV_float_buffer (void)
+{
+ glewPrintExt("WGL_NV_float_buffer", WGLEW_NV_float_buffer, wglewIsSupported("WGL_NV_float_buffer"), wglewGetExtension("WGL_NV_float_buffer"));
+}
+
+#endif /* WGL_NV_float_buffer */
+
+#ifdef WGL_NV_gpu_affinity
+
+static void _glewInfo_WGL_NV_gpu_affinity (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_gpu_affinity", WGLEW_NV_gpu_affinity, wglewIsSupported("WGL_NV_gpu_affinity"), wglewGetExtension("WGL_NV_gpu_affinity"));
+
+ glewInfoFunc(fi, "wglCreateAffinityDCNV", wglCreateAffinityDCNV == NULL);
+ glewInfoFunc(fi, "wglDeleteDCNV", wglDeleteDCNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpuDevicesNV", wglEnumGpuDevicesNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpusFromAffinityDCNV", wglEnumGpusFromAffinityDCNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpusNV", wglEnumGpusNV == NULL);
+}
+
+#endif /* WGL_NV_gpu_affinity */
+
+#ifdef WGL_NV_multigpu_context
+
+static void _glewInfo_WGL_NV_multigpu_context (void)
+{
+ glewPrintExt("WGL_NV_multigpu_context", WGLEW_NV_multigpu_context, wglewIsSupported("WGL_NV_multigpu_context"), wglewGetExtension("WGL_NV_multigpu_context"));
+}
+
+#endif /* WGL_NV_multigpu_context */
+
+#ifdef WGL_NV_multisample_coverage
+
+static void _glewInfo_WGL_NV_multisample_coverage (void)
+{
+ glewPrintExt("WGL_NV_multisample_coverage", WGLEW_NV_multisample_coverage, wglewIsSupported("WGL_NV_multisample_coverage"), wglewGetExtension("WGL_NV_multisample_coverage"));
+}
+
+#endif /* WGL_NV_multisample_coverage */
+
+#ifdef WGL_NV_present_video
+
+static void _glewInfo_WGL_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_present_video", WGLEW_NV_present_video, wglewIsSupported("WGL_NV_present_video"), wglewGetExtension("WGL_NV_present_video"));
+
+ glewInfoFunc(fi, "wglBindVideoDeviceNV", wglBindVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglEnumerateVideoDevicesNV", wglEnumerateVideoDevicesNV == NULL);
+ glewInfoFunc(fi, "wglQueryCurrentContextNV", wglQueryCurrentContextNV == NULL);
+}
+
+#endif /* WGL_NV_present_video */
+
+#ifdef WGL_NV_render_depth_texture
+
+static void _glewInfo_WGL_NV_render_depth_texture (void)
+{
+ glewPrintExt("WGL_NV_render_depth_texture", WGLEW_NV_render_depth_texture, wglewIsSupported("WGL_NV_render_depth_texture"), wglewGetExtension("WGL_NV_render_depth_texture"));
+}
+
+#endif /* WGL_NV_render_depth_texture */
+
+#ifdef WGL_NV_render_texture_rectangle
+
+static void _glewInfo_WGL_NV_render_texture_rectangle (void)
+{
+ glewPrintExt("WGL_NV_render_texture_rectangle", WGLEW_NV_render_texture_rectangle, wglewIsSupported("WGL_NV_render_texture_rectangle"), wglewGetExtension("WGL_NV_render_texture_rectangle"));
+}
+
+#endif /* WGL_NV_render_texture_rectangle */
+
+#ifdef WGL_NV_swap_group
+
+static void _glewInfo_WGL_NV_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_swap_group", WGLEW_NV_swap_group, wglewIsSupported("WGL_NV_swap_group"), wglewGetExtension("WGL_NV_swap_group"));
+
+ glewInfoFunc(fi, "wglBindSwapBarrierNV", wglBindSwapBarrierNV == NULL);
+ glewInfoFunc(fi, "wglJoinSwapGroupNV", wglJoinSwapGroupNV == NULL);
+ glewInfoFunc(fi, "wglQueryFrameCountNV", wglQueryFrameCountNV == NULL);
+ glewInfoFunc(fi, "wglQueryMaxSwapGroupsNV", wglQueryMaxSwapGroupsNV == NULL);
+ glewInfoFunc(fi, "wglQuerySwapGroupNV", wglQuerySwapGroupNV == NULL);
+ glewInfoFunc(fi, "wglResetFrameCountNV", wglResetFrameCountNV == NULL);
+}
+
+#endif /* WGL_NV_swap_group */
+
+#ifdef WGL_NV_vertex_array_range
+
+static void _glewInfo_WGL_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_vertex_array_range", WGLEW_NV_vertex_array_range, wglewIsSupported("WGL_NV_vertex_array_range"), wglewGetExtension("WGL_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "wglAllocateMemoryNV", wglAllocateMemoryNV == NULL);
+ glewInfoFunc(fi, "wglFreeMemoryNV", wglFreeMemoryNV == NULL);
+}
+
+#endif /* WGL_NV_vertex_array_range */
+
+#ifdef WGL_NV_video_capture
+
+static void _glewInfo_WGL_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_video_capture", WGLEW_NV_video_capture, wglewIsSupported("WGL_NV_video_capture"), wglewGetExtension("WGL_NV_video_capture"));
+
+ glewInfoFunc(fi, "wglBindVideoCaptureDeviceNV", wglBindVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglEnumerateVideoCaptureDevicesNV", wglEnumerateVideoCaptureDevicesNV == NULL);
+ glewInfoFunc(fi, "wglLockVideoCaptureDeviceNV", wglLockVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglQueryVideoCaptureDeviceNV", wglQueryVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoCaptureDeviceNV", wglReleaseVideoCaptureDeviceNV == NULL);
+}
+
+#endif /* WGL_NV_video_capture */
+
+#ifdef WGL_NV_video_output
+
+static void _glewInfo_WGL_NV_video_output (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_video_output", WGLEW_NV_video_output, wglewIsSupported("WGL_NV_video_output"), wglewGetExtension("WGL_NV_video_output"));
+
+ glewInfoFunc(fi, "wglBindVideoImageNV", wglBindVideoImageNV == NULL);
+ glewInfoFunc(fi, "wglGetVideoDeviceNV", wglGetVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglGetVideoInfoNV", wglGetVideoInfoNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoDeviceNV", wglReleaseVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoImageNV", wglReleaseVideoImageNV == NULL);
+ glewInfoFunc(fi, "wglSendPbufferToVideoNV", wglSendPbufferToVideoNV == NULL);
+}
+
+#endif /* WGL_NV_video_output */
+
+#ifdef WGL_OML_sync_control
+
+static void _glewInfo_WGL_OML_sync_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_OML_sync_control", WGLEW_OML_sync_control, wglewIsSupported("WGL_OML_sync_control"), wglewGetExtension("WGL_OML_sync_control"));
+
+ glewInfoFunc(fi, "wglGetMscRateOML", wglGetMscRateOML == NULL);
+ glewInfoFunc(fi, "wglGetSyncValuesOML", wglGetSyncValuesOML == NULL);
+ glewInfoFunc(fi, "wglSwapBuffersMscOML", wglSwapBuffersMscOML == NULL);
+ glewInfoFunc(fi, "wglSwapLayerBuffersMscOML", wglSwapLayerBuffersMscOML == NULL);
+ glewInfoFunc(fi, "wglWaitForMscOML", wglWaitForMscOML == NULL);
+ glewInfoFunc(fi, "wglWaitForSbcOML", wglWaitForSbcOML == NULL);
+}
+
+#endif /* WGL_OML_sync_control */
+
+#else /* _UNIX */
+
+#ifdef GLX_VERSION_1_2
+
+static void _glewInfo_GLX_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("GLX_VERSION_1_2", GLXEW_VERSION_1_2, GLXEW_VERSION_1_2, GLXEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "glXGetCurrentDisplay", glXGetCurrentDisplay == NULL);
+}
+
+#endif /* GLX_VERSION_1_2 */
+
+#ifdef GLX_VERSION_1_3
+
+static void _glewInfo_GLX_VERSION_1_3 (void)
+{
+ GLboolean fi = glewPrintExt("GLX_VERSION_1_3", GLXEW_VERSION_1_3, GLXEW_VERSION_1_3, GLXEW_VERSION_1_3);
+
+ glewInfoFunc(fi, "glXChooseFBConfig", glXChooseFBConfig == NULL);
+ glewInfoFunc(fi, "glXCreateNewContext", glXCreateNewContext == NULL);
+ glewInfoFunc(fi, "glXCreatePbuffer", glXCreatePbuffer == NULL);
+ glewInfoFunc(fi, "glXCreatePixmap", glXCreatePixmap == NULL);
+ glewInfoFunc(fi, "glXCreateWindow", glXCreateWindow == NULL);
+ glewInfoFunc(fi, "glXDestroyPbuffer", glXDestroyPbuffer == NULL);
+ glewInfoFunc(fi, "glXDestroyPixmap", glXDestroyPixmap == NULL);
+ glewInfoFunc(fi, "glXDestroyWindow", glXDestroyWindow == NULL);
+ glewInfoFunc(fi, "glXGetCurrentReadDrawable", glXGetCurrentReadDrawable == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigAttrib", glXGetFBConfigAttrib == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigs", glXGetFBConfigs == NULL);
+ glewInfoFunc(fi, "glXGetSelectedEvent", glXGetSelectedEvent == NULL);
+ glewInfoFunc(fi, "glXGetVisualFromFBConfig", glXGetVisualFromFBConfig == NULL);
+ glewInfoFunc(fi, "glXMakeContextCurrent", glXMakeContextCurrent == NULL);
+ glewInfoFunc(fi, "glXQueryContext", glXQueryContext == NULL);
+ glewInfoFunc(fi, "glXQueryDrawable", glXQueryDrawable == NULL);
+ glewInfoFunc(fi, "glXSelectEvent", glXSelectEvent == NULL);
+}
+
+#endif /* GLX_VERSION_1_3 */
+
+#ifdef GLX_VERSION_1_4
+
+static void _glewInfo_GLX_VERSION_1_4 (void)
+{
+ glewPrintExt("GLX_VERSION_1_4", GLXEW_VERSION_1_4, GLXEW_VERSION_1_4, GLXEW_VERSION_1_4);
+}
+
+#endif /* GLX_VERSION_1_4 */
+
+#ifdef GLX_3DFX_multisample
+
+static void _glewInfo_GLX_3DFX_multisample (void)
+{
+ glewPrintExt("GLX_3DFX_multisample", GLXEW_3DFX_multisample, glxewIsSupported("GLX_3DFX_multisample"), glxewGetExtension("GLX_3DFX_multisample"));
+}
+
+#endif /* GLX_3DFX_multisample */
+
+#ifdef GLX_AMD_gpu_association
+
+static void _glewInfo_GLX_AMD_gpu_association (void)
+{
+ GLboolean fi = glewPrintExt("GLX_AMD_gpu_association", GLXEW_AMD_gpu_association, glxewIsSupported("GLX_AMD_gpu_association"), glxewGetExtension("GLX_AMD_gpu_association"));
+
+ glewInfoFunc(fi, "glXBlitContextFramebufferAMD", glXBlitContextFramebufferAMD == NULL);
+ glewInfoFunc(fi, "glXCreateAssociatedContextAMD", glXCreateAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXCreateAssociatedContextAttribsAMD", glXCreateAssociatedContextAttribsAMD == NULL);
+ glewInfoFunc(fi, "glXDeleteAssociatedContextAMD", glXDeleteAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXGetContextGPUIDAMD", glXGetContextGPUIDAMD == NULL);
+ glewInfoFunc(fi, "glXGetCurrentAssociatedContextAMD", glXGetCurrentAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXGetGPUIDsAMD", glXGetGPUIDsAMD == NULL);
+ glewInfoFunc(fi, "glXGetGPUInfoAMD", glXGetGPUInfoAMD == NULL);
+ glewInfoFunc(fi, "glXMakeAssociatedContextCurrentAMD", glXMakeAssociatedContextCurrentAMD == NULL);
+}
+
+#endif /* GLX_AMD_gpu_association */
+
+#ifdef GLX_ARB_context_flush_control
+
+static void _glewInfo_GLX_ARB_context_flush_control (void)
+{
+ glewPrintExt("GLX_ARB_context_flush_control", GLXEW_ARB_context_flush_control, glxewIsSupported("GLX_ARB_context_flush_control"), glxewGetExtension("GLX_ARB_context_flush_control"));
+}
+
+#endif /* GLX_ARB_context_flush_control */
+
+#ifdef GLX_ARB_create_context
+
+static void _glewInfo_GLX_ARB_create_context (void)
+{
+ GLboolean fi = glewPrintExt("GLX_ARB_create_context", GLXEW_ARB_create_context, glxewIsSupported("GLX_ARB_create_context"), glxewGetExtension("GLX_ARB_create_context"));
+
+ glewInfoFunc(fi, "glXCreateContextAttribsARB", glXCreateContextAttribsARB == NULL);
+}
+
+#endif /* GLX_ARB_create_context */
+
+#ifdef GLX_ARB_create_context_no_error
+
+static void _glewInfo_GLX_ARB_create_context_no_error (void)
+{
+ glewPrintExt("GLX_ARB_create_context_no_error", GLXEW_ARB_create_context_no_error, glxewIsSupported("GLX_ARB_create_context_no_error"), glxewGetExtension("GLX_ARB_create_context_no_error"));
+}
+
+#endif /* GLX_ARB_create_context_no_error */
+
+#ifdef GLX_ARB_create_context_profile
+
+static void _glewInfo_GLX_ARB_create_context_profile (void)
+{
+ glewPrintExt("GLX_ARB_create_context_profile", GLXEW_ARB_create_context_profile, glxewIsSupported("GLX_ARB_create_context_profile"), glxewGetExtension("GLX_ARB_create_context_profile"));
+}
+
+#endif /* GLX_ARB_create_context_profile */
+
+#ifdef GLX_ARB_create_context_robustness
+
+static void _glewInfo_GLX_ARB_create_context_robustness (void)
+{
+ glewPrintExt("GLX_ARB_create_context_robustness", GLXEW_ARB_create_context_robustness, glxewIsSupported("GLX_ARB_create_context_robustness"), glxewGetExtension("GLX_ARB_create_context_robustness"));
+}
+
+#endif /* GLX_ARB_create_context_robustness */
+
+#ifdef GLX_ARB_fbconfig_float
+
+static void _glewInfo_GLX_ARB_fbconfig_float (void)
+{
+ glewPrintExt("GLX_ARB_fbconfig_float", GLXEW_ARB_fbconfig_float, glxewIsSupported("GLX_ARB_fbconfig_float"), glxewGetExtension("GLX_ARB_fbconfig_float"));
+}
+
+#endif /* GLX_ARB_fbconfig_float */
+
+#ifdef GLX_ARB_framebuffer_sRGB
+
+static void _glewInfo_GLX_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("GLX_ARB_framebuffer_sRGB", GLXEW_ARB_framebuffer_sRGB, glxewIsSupported("GLX_ARB_framebuffer_sRGB"), glxewGetExtension("GLX_ARB_framebuffer_sRGB"));
+}
+
+#endif /* GLX_ARB_framebuffer_sRGB */
+
+#ifdef GLX_ARB_get_proc_address
+
+static void _glewInfo_GLX_ARB_get_proc_address (void)
+{
+ glewPrintExt("GLX_ARB_get_proc_address", GLXEW_ARB_get_proc_address, glxewIsSupported("GLX_ARB_get_proc_address"), glxewGetExtension("GLX_ARB_get_proc_address"));
+}
+
+#endif /* GLX_ARB_get_proc_address */
+
+#ifdef GLX_ARB_multisample
+
+static void _glewInfo_GLX_ARB_multisample (void)
+{
+ glewPrintExt("GLX_ARB_multisample", GLXEW_ARB_multisample, glxewIsSupported("GLX_ARB_multisample"), glxewGetExtension("GLX_ARB_multisample"));
+}
+
+#endif /* GLX_ARB_multisample */
+
+#ifdef GLX_ARB_robustness_application_isolation
+
+static void _glewInfo_GLX_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("GLX_ARB_robustness_application_isolation", GLXEW_ARB_robustness_application_isolation, glxewIsSupported("GLX_ARB_robustness_application_isolation"), glxewGetExtension("GLX_ARB_robustness_application_isolation"));
+}
+
+#endif /* GLX_ARB_robustness_application_isolation */
+
+#ifdef GLX_ARB_robustness_share_group_isolation
+
+static void _glewInfo_GLX_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("GLX_ARB_robustness_share_group_isolation", GLXEW_ARB_robustness_share_group_isolation, glxewIsSupported("GLX_ARB_robustness_share_group_isolation"), glxewGetExtension("GLX_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* GLX_ARB_robustness_share_group_isolation */
+
+#ifdef GLX_ARB_vertex_buffer_object
+
+static void _glewInfo_GLX_ARB_vertex_buffer_object (void)
+{
+ glewPrintExt("GLX_ARB_vertex_buffer_object", GLXEW_ARB_vertex_buffer_object, glxewIsSupported("GLX_ARB_vertex_buffer_object"), glxewGetExtension("GLX_ARB_vertex_buffer_object"));
+}
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
+#ifdef GLX_ATI_pixel_format_float
+
+static void _glewInfo_GLX_ATI_pixel_format_float (void)
+{
+ glewPrintExt("GLX_ATI_pixel_format_float", GLXEW_ATI_pixel_format_float, glxewIsSupported("GLX_ATI_pixel_format_float"), glxewGetExtension("GLX_ATI_pixel_format_float"));
+}
+
+#endif /* GLX_ATI_pixel_format_float */
+
+#ifdef GLX_ATI_render_texture
+
+static void _glewInfo_GLX_ATI_render_texture (void)
+{
+ GLboolean fi = glewPrintExt("GLX_ATI_render_texture", GLXEW_ATI_render_texture, glxewIsSupported("GLX_ATI_render_texture"), glxewGetExtension("GLX_ATI_render_texture"));
+
+ glewInfoFunc(fi, "glXBindTexImageATI", glXBindTexImageATI == NULL);
+ glewInfoFunc(fi, "glXDrawableAttribATI", glXDrawableAttribATI == NULL);
+ glewInfoFunc(fi, "glXReleaseTexImageATI", glXReleaseTexImageATI == NULL);
+}
+
+#endif /* GLX_ATI_render_texture */
+
+#ifdef GLX_EXT_buffer_age
+
+static void _glewInfo_GLX_EXT_buffer_age (void)
+{
+ glewPrintExt("GLX_EXT_buffer_age", GLXEW_EXT_buffer_age, glxewIsSupported("GLX_EXT_buffer_age"), glxewGetExtension("GLX_EXT_buffer_age"));
+}
+
+#endif /* GLX_EXT_buffer_age */
+
+#ifdef GLX_EXT_context_priority
+
+static void _glewInfo_GLX_EXT_context_priority (void)
+{
+ glewPrintExt("GLX_EXT_context_priority", GLXEW_EXT_context_priority, glxewIsSupported("GLX_EXT_context_priority"), glxewGetExtension("GLX_EXT_context_priority"));
+}
+
+#endif /* GLX_EXT_context_priority */
+
+#ifdef GLX_EXT_create_context_es2_profile
+
+static void _glewInfo_GLX_EXT_create_context_es2_profile (void)
+{
+ glewPrintExt("GLX_EXT_create_context_es2_profile", GLXEW_EXT_create_context_es2_profile, glxewIsSupported("GLX_EXT_create_context_es2_profile"), glxewGetExtension("GLX_EXT_create_context_es2_profile"));
+}
+
+#endif /* GLX_EXT_create_context_es2_profile */
+
+#ifdef GLX_EXT_create_context_es_profile
+
+static void _glewInfo_GLX_EXT_create_context_es_profile (void)
+{
+ glewPrintExt("GLX_EXT_create_context_es_profile", GLXEW_EXT_create_context_es_profile, glxewIsSupported("GLX_EXT_create_context_es_profile"), glxewGetExtension("GLX_EXT_create_context_es_profile"));
+}
+
+#endif /* GLX_EXT_create_context_es_profile */
+
+#ifdef GLX_EXT_fbconfig_packed_float
+
+static void _glewInfo_GLX_EXT_fbconfig_packed_float (void)
+{
+ glewPrintExt("GLX_EXT_fbconfig_packed_float", GLXEW_EXT_fbconfig_packed_float, glxewIsSupported("GLX_EXT_fbconfig_packed_float"), glxewGetExtension("GLX_EXT_fbconfig_packed_float"));
+}
+
+#endif /* GLX_EXT_fbconfig_packed_float */
+
+#ifdef GLX_EXT_framebuffer_sRGB
+
+static void _glewInfo_GLX_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("GLX_EXT_framebuffer_sRGB", GLXEW_EXT_framebuffer_sRGB, glxewIsSupported("GLX_EXT_framebuffer_sRGB"), glxewGetExtension("GLX_EXT_framebuffer_sRGB"));
+}
+
+#endif /* GLX_EXT_framebuffer_sRGB */
+
+#ifdef GLX_EXT_get_drawable_type
+
+static void _glewInfo_GLX_EXT_get_drawable_type (void)
+{
+ glewPrintExt("GLX_EXT_get_drawable_type", GLXEW_EXT_get_drawable_type, glxewIsSupported("GLX_EXT_get_drawable_type"), glxewGetExtension("GLX_EXT_get_drawable_type"));
+}
+
+#endif /* GLX_EXT_get_drawable_type */
+
+#ifdef GLX_EXT_import_context
+
+static void _glewInfo_GLX_EXT_import_context (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_import_context", GLXEW_EXT_import_context, glxewIsSupported("GLX_EXT_import_context"), glxewGetExtension("GLX_EXT_import_context"));
+
+ glewInfoFunc(fi, "glXFreeContextEXT", glXFreeContextEXT == NULL);
+ glewInfoFunc(fi, "glXGetContextIDEXT", glXGetContextIDEXT == NULL);
+ glewInfoFunc(fi, "glXGetCurrentDisplayEXT", glXGetCurrentDisplayEXT == NULL);
+ glewInfoFunc(fi, "glXImportContextEXT", glXImportContextEXT == NULL);
+ glewInfoFunc(fi, "glXQueryContextInfoEXT", glXQueryContextInfoEXT == NULL);
+}
+
+#endif /* GLX_EXT_import_context */
+
+#ifdef GLX_EXT_libglvnd
+
+static void _glewInfo_GLX_EXT_libglvnd (void)
+{
+ glewPrintExt("GLX_EXT_libglvnd", GLXEW_EXT_libglvnd, glxewIsSupported("GLX_EXT_libglvnd"), glxewGetExtension("GLX_EXT_libglvnd"));
+}
+
+#endif /* GLX_EXT_libglvnd */
+
+#ifdef GLX_EXT_no_config_context
+
+static void _glewInfo_GLX_EXT_no_config_context (void)
+{
+ glewPrintExt("GLX_EXT_no_config_context", GLXEW_EXT_no_config_context, glxewIsSupported("GLX_EXT_no_config_context"), glxewGetExtension("GLX_EXT_no_config_context"));
+}
+
+#endif /* GLX_EXT_no_config_context */
+
+#ifdef GLX_EXT_scene_marker
+
+static void _glewInfo_GLX_EXT_scene_marker (void)
+{
+ glewPrintExt("GLX_EXT_scene_marker", GLXEW_EXT_scene_marker, glxewIsSupported("GLX_EXT_scene_marker"), glxewGetExtension("GLX_EXT_scene_marker"));
+}
+
+#endif /* GLX_EXT_scene_marker */
+
+#ifdef GLX_EXT_stereo_tree
+
+static void _glewInfo_GLX_EXT_stereo_tree (void)
+{
+ glewPrintExt("GLX_EXT_stereo_tree", GLXEW_EXT_stereo_tree, glxewIsSupported("GLX_EXT_stereo_tree"), glxewGetExtension("GLX_EXT_stereo_tree"));
+}
+
+#endif /* GLX_EXT_stereo_tree */
+
+#ifdef GLX_EXT_swap_control
+
+static void _glewInfo_GLX_EXT_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_swap_control", GLXEW_EXT_swap_control, glxewIsSupported("GLX_EXT_swap_control"), glxewGetExtension("GLX_EXT_swap_control"));
+
+ glewInfoFunc(fi, "glXSwapIntervalEXT", glXSwapIntervalEXT == NULL);
+}
+
+#endif /* GLX_EXT_swap_control */
+
+#ifdef GLX_EXT_swap_control_tear
+
+static void _glewInfo_GLX_EXT_swap_control_tear (void)
+{
+ glewPrintExt("GLX_EXT_swap_control_tear", GLXEW_EXT_swap_control_tear, glxewIsSupported("GLX_EXT_swap_control_tear"), glxewGetExtension("GLX_EXT_swap_control_tear"));
+}
+
+#endif /* GLX_EXT_swap_control_tear */
+
+#ifdef GLX_EXT_texture_from_pixmap
+
+static void _glewInfo_GLX_EXT_texture_from_pixmap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_texture_from_pixmap", GLXEW_EXT_texture_from_pixmap, glxewIsSupported("GLX_EXT_texture_from_pixmap"), glxewGetExtension("GLX_EXT_texture_from_pixmap"));
+
+ glewInfoFunc(fi, "glXBindTexImageEXT", glXBindTexImageEXT == NULL);
+ glewInfoFunc(fi, "glXReleaseTexImageEXT", glXReleaseTexImageEXT == NULL);
+}
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+#ifdef GLX_EXT_visual_info
+
+static void _glewInfo_GLX_EXT_visual_info (void)
+{
+ glewPrintExt("GLX_EXT_visual_info", GLXEW_EXT_visual_info, glxewIsSupported("GLX_EXT_visual_info"), glxewGetExtension("GLX_EXT_visual_info"));
+}
+
+#endif /* GLX_EXT_visual_info */
+
+#ifdef GLX_EXT_visual_rating
+
+static void _glewInfo_GLX_EXT_visual_rating (void)
+{
+ glewPrintExt("GLX_EXT_visual_rating", GLXEW_EXT_visual_rating, glxewIsSupported("GLX_EXT_visual_rating"), glxewGetExtension("GLX_EXT_visual_rating"));
+}
+
+#endif /* GLX_EXT_visual_rating */
+
+#ifdef GLX_INTEL_swap_event
+
+static void _glewInfo_GLX_INTEL_swap_event (void)
+{
+ glewPrintExt("GLX_INTEL_swap_event", GLXEW_INTEL_swap_event, glxewIsSupported("GLX_INTEL_swap_event"), glxewGetExtension("GLX_INTEL_swap_event"));
+}
+
+#endif /* GLX_INTEL_swap_event */
+
+#ifdef GLX_MESA_agp_offset
+
+static void _glewInfo_GLX_MESA_agp_offset (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_agp_offset", GLXEW_MESA_agp_offset, glxewIsSupported("GLX_MESA_agp_offset"), glxewGetExtension("GLX_MESA_agp_offset"));
+
+ glewInfoFunc(fi, "glXGetAGPOffsetMESA", glXGetAGPOffsetMESA == NULL);
+}
+
+#endif /* GLX_MESA_agp_offset */
+
+#ifdef GLX_MESA_copy_sub_buffer
+
+static void _glewInfo_GLX_MESA_copy_sub_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_copy_sub_buffer", GLXEW_MESA_copy_sub_buffer, glxewIsSupported("GLX_MESA_copy_sub_buffer"), glxewGetExtension("GLX_MESA_copy_sub_buffer"));
+
+ glewInfoFunc(fi, "glXCopySubBufferMESA", glXCopySubBufferMESA == NULL);
+}
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+#ifdef GLX_MESA_pixmap_colormap
+
+static void _glewInfo_GLX_MESA_pixmap_colormap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_pixmap_colormap", GLXEW_MESA_pixmap_colormap, glxewIsSupported("GLX_MESA_pixmap_colormap"), glxewGetExtension("GLX_MESA_pixmap_colormap"));
+
+ glewInfoFunc(fi, "glXCreateGLXPixmapMESA", glXCreateGLXPixmapMESA == NULL);
+}
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+#ifdef GLX_MESA_query_renderer
+
+static void _glewInfo_GLX_MESA_query_renderer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_query_renderer", GLXEW_MESA_query_renderer, glxewIsSupported("GLX_MESA_query_renderer"), glxewGetExtension("GLX_MESA_query_renderer"));
+
+ glewInfoFunc(fi, "glXQueryCurrentRendererIntegerMESA", glXQueryCurrentRendererIntegerMESA == NULL);
+ glewInfoFunc(fi, "glXQueryCurrentRendererStringMESA", glXQueryCurrentRendererStringMESA == NULL);
+ glewInfoFunc(fi, "glXQueryRendererIntegerMESA", glXQueryRendererIntegerMESA == NULL);
+ glewInfoFunc(fi, "glXQueryRendererStringMESA", glXQueryRendererStringMESA == NULL);
+}
+
+#endif /* GLX_MESA_query_renderer */
+
+#ifdef GLX_MESA_release_buffers
+
+static void _glewInfo_GLX_MESA_release_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_release_buffers", GLXEW_MESA_release_buffers, glxewIsSupported("GLX_MESA_release_buffers"), glxewGetExtension("GLX_MESA_release_buffers"));
+
+ glewInfoFunc(fi, "glXReleaseBuffersMESA", glXReleaseBuffersMESA == NULL);
+}
+
+#endif /* GLX_MESA_release_buffers */
+
+#ifdef GLX_MESA_set_3dfx_mode
+
+static void _glewInfo_GLX_MESA_set_3dfx_mode (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_set_3dfx_mode", GLXEW_MESA_set_3dfx_mode, glxewIsSupported("GLX_MESA_set_3dfx_mode"), glxewGetExtension("GLX_MESA_set_3dfx_mode"));
+
+ glewInfoFunc(fi, "glXSet3DfxModeMESA", glXSet3DfxModeMESA == NULL);
+}
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+#ifdef GLX_MESA_swap_control
+
+static void _glewInfo_GLX_MESA_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_swap_control", GLXEW_MESA_swap_control, glxewIsSupported("GLX_MESA_swap_control"), glxewGetExtension("GLX_MESA_swap_control"));
+
+ glewInfoFunc(fi, "glXGetSwapIntervalMESA", glXGetSwapIntervalMESA == NULL);
+ glewInfoFunc(fi, "glXSwapIntervalMESA", glXSwapIntervalMESA == NULL);
+}
+
+#endif /* GLX_MESA_swap_control */
+
+#ifdef GLX_NV_copy_buffer
+
+static void _glewInfo_GLX_NV_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_copy_buffer", GLXEW_NV_copy_buffer, glxewIsSupported("GLX_NV_copy_buffer"), glxewGetExtension("GLX_NV_copy_buffer"));
+
+ glewInfoFunc(fi, "glXCopyBufferSubDataNV", glXCopyBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glXNamedCopyBufferSubDataNV", glXNamedCopyBufferSubDataNV == NULL);
+}
+
+#endif /* GLX_NV_copy_buffer */
+
+#ifdef GLX_NV_copy_image
+
+static void _glewInfo_GLX_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_copy_image", GLXEW_NV_copy_image, glxewIsSupported("GLX_NV_copy_image"), glxewGetExtension("GLX_NV_copy_image"));
+
+ glewInfoFunc(fi, "glXCopyImageSubDataNV", glXCopyImageSubDataNV == NULL);
+}
+
+#endif /* GLX_NV_copy_image */
+
+#ifdef GLX_NV_delay_before_swap
+
+static void _glewInfo_GLX_NV_delay_before_swap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_delay_before_swap", GLXEW_NV_delay_before_swap, glxewIsSupported("GLX_NV_delay_before_swap"), glxewGetExtension("GLX_NV_delay_before_swap"));
+
+ glewInfoFunc(fi, "glXDelayBeforeSwapNV", glXDelayBeforeSwapNV == NULL);
+}
+
+#endif /* GLX_NV_delay_before_swap */
+
+#ifdef GLX_NV_float_buffer
+
+static void _glewInfo_GLX_NV_float_buffer (void)
+{
+ glewPrintExt("GLX_NV_float_buffer", GLXEW_NV_float_buffer, glxewIsSupported("GLX_NV_float_buffer"), glxewGetExtension("GLX_NV_float_buffer"));
+}
+
+#endif /* GLX_NV_float_buffer */
+
+#ifdef GLX_NV_multigpu_context
+
+static void _glewInfo_GLX_NV_multigpu_context (void)
+{
+ glewPrintExt("GLX_NV_multigpu_context", GLXEW_NV_multigpu_context, glxewIsSupported("GLX_NV_multigpu_context"), glxewGetExtension("GLX_NV_multigpu_context"));
+}
+
+#endif /* GLX_NV_multigpu_context */
+
+#ifdef GLX_NV_multisample_coverage
+
+static void _glewInfo_GLX_NV_multisample_coverage (void)
+{
+ glewPrintExt("GLX_NV_multisample_coverage", GLXEW_NV_multisample_coverage, glxewIsSupported("GLX_NV_multisample_coverage"), glxewGetExtension("GLX_NV_multisample_coverage"));
+}
+
+#endif /* GLX_NV_multisample_coverage */
+
+#ifdef GLX_NV_present_video
+
+static void _glewInfo_GLX_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_present_video", GLXEW_NV_present_video, glxewIsSupported("GLX_NV_present_video"), glxewGetExtension("GLX_NV_present_video"));
+
+ glewInfoFunc(fi, "glXBindVideoDeviceNV", glXBindVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXEnumerateVideoDevicesNV", glXEnumerateVideoDevicesNV == NULL);
+}
+
+#endif /* GLX_NV_present_video */
+
+#ifdef GLX_NV_robustness_video_memory_purge
+
+static void _glewInfo_GLX_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("GLX_NV_robustness_video_memory_purge", GLXEW_NV_robustness_video_memory_purge, glxewIsSupported("GLX_NV_robustness_video_memory_purge"), glxewGetExtension("GLX_NV_robustness_video_memory_purge"));
+}
+
+#endif /* GLX_NV_robustness_video_memory_purge */
+
+#ifdef GLX_NV_swap_group
+
+static void _glewInfo_GLX_NV_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_swap_group", GLXEW_NV_swap_group, glxewIsSupported("GLX_NV_swap_group"), glxewGetExtension("GLX_NV_swap_group"));
+
+ glewInfoFunc(fi, "glXBindSwapBarrierNV", glXBindSwapBarrierNV == NULL);
+ glewInfoFunc(fi, "glXJoinSwapGroupNV", glXJoinSwapGroupNV == NULL);
+ glewInfoFunc(fi, "glXQueryFrameCountNV", glXQueryFrameCountNV == NULL);
+ glewInfoFunc(fi, "glXQueryMaxSwapGroupsNV", glXQueryMaxSwapGroupsNV == NULL);
+ glewInfoFunc(fi, "glXQuerySwapGroupNV", glXQuerySwapGroupNV == NULL);
+ glewInfoFunc(fi, "glXResetFrameCountNV", glXResetFrameCountNV == NULL);
+}
+
+#endif /* GLX_NV_swap_group */
+
+#ifdef GLX_NV_vertex_array_range
+
+static void _glewInfo_GLX_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_vertex_array_range", GLXEW_NV_vertex_array_range, glxewIsSupported("GLX_NV_vertex_array_range"), glxewGetExtension("GLX_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "glXAllocateMemoryNV", glXAllocateMemoryNV == NULL);
+ glewInfoFunc(fi, "glXFreeMemoryNV", glXFreeMemoryNV == NULL);
+}
+
+#endif /* GLX_NV_vertex_array_range */
+
+#ifdef GLX_NV_video_capture
+
+static void _glewInfo_GLX_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_video_capture", GLXEW_NV_video_capture, glxewIsSupported("GLX_NV_video_capture"), glxewGetExtension("GLX_NV_video_capture"));
+
+ glewInfoFunc(fi, "glXBindVideoCaptureDeviceNV", glXBindVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXEnumerateVideoCaptureDevicesNV", glXEnumerateVideoCaptureDevicesNV == NULL);
+ glewInfoFunc(fi, "glXLockVideoCaptureDeviceNV", glXLockVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXQueryVideoCaptureDeviceNV", glXQueryVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoCaptureDeviceNV", glXReleaseVideoCaptureDeviceNV == NULL);
+}
+
+#endif /* GLX_NV_video_capture */
+
+#ifdef GLX_NV_video_out
+
+static void _glewInfo_GLX_NV_video_out (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_video_out", GLXEW_NV_video_out, glxewIsSupported("GLX_NV_video_out"), glxewGetExtension("GLX_NV_video_out"));
+
+ glewInfoFunc(fi, "glXBindVideoImageNV", glXBindVideoImageNV == NULL);
+ glewInfoFunc(fi, "glXGetVideoDeviceNV", glXGetVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXGetVideoInfoNV", glXGetVideoInfoNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoDeviceNV", glXReleaseVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoImageNV", glXReleaseVideoImageNV == NULL);
+ glewInfoFunc(fi, "glXSendPbufferToVideoNV", glXSendPbufferToVideoNV == NULL);
+}
+
+#endif /* GLX_NV_video_out */
+
+#ifdef GLX_OML_swap_method
+
+static void _glewInfo_GLX_OML_swap_method (void)
+{
+ glewPrintExt("GLX_OML_swap_method", GLXEW_OML_swap_method, glxewIsSupported("GLX_OML_swap_method"), glxewGetExtension("GLX_OML_swap_method"));
+}
+
+#endif /* GLX_OML_swap_method */
+
+#ifdef GLX_OML_sync_control
+
+static void _glewInfo_GLX_OML_sync_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_OML_sync_control", GLXEW_OML_sync_control, glxewIsSupported("GLX_OML_sync_control"), glxewGetExtension("GLX_OML_sync_control"));
+
+ glewInfoFunc(fi, "glXGetMscRateOML", glXGetMscRateOML == NULL);
+ glewInfoFunc(fi, "glXGetSyncValuesOML", glXGetSyncValuesOML == NULL);
+ glewInfoFunc(fi, "glXSwapBuffersMscOML", glXSwapBuffersMscOML == NULL);
+ glewInfoFunc(fi, "glXWaitForMscOML", glXWaitForMscOML == NULL);
+ glewInfoFunc(fi, "glXWaitForSbcOML", glXWaitForSbcOML == NULL);
+}
+
+#endif /* GLX_OML_sync_control */
+
+#ifdef GLX_SGIS_blended_overlay
+
+static void _glewInfo_GLX_SGIS_blended_overlay (void)
+{
+ glewPrintExt("GLX_SGIS_blended_overlay", GLXEW_SGIS_blended_overlay, glxewIsSupported("GLX_SGIS_blended_overlay"), glxewGetExtension("GLX_SGIS_blended_overlay"));
+}
+
+#endif /* GLX_SGIS_blended_overlay */
+
+#ifdef GLX_SGIS_color_range
+
+static void _glewInfo_GLX_SGIS_color_range (void)
+{
+ glewPrintExt("GLX_SGIS_color_range", GLXEW_SGIS_color_range, glxewIsSupported("GLX_SGIS_color_range"), glxewGetExtension("GLX_SGIS_color_range"));
+}
+
+#endif /* GLX_SGIS_color_range */
+
+#ifdef GLX_SGIS_multisample
+
+static void _glewInfo_GLX_SGIS_multisample (void)
+{
+ glewPrintExt("GLX_SGIS_multisample", GLXEW_SGIS_multisample, glxewIsSupported("GLX_SGIS_multisample"), glxewGetExtension("GLX_SGIS_multisample"));
+}
+
+#endif /* GLX_SGIS_multisample */
+
+#ifdef GLX_SGIS_shared_multisample
+
+static void _glewInfo_GLX_SGIS_shared_multisample (void)
+{
+ glewPrintExt("GLX_SGIS_shared_multisample", GLXEW_SGIS_shared_multisample, glxewIsSupported("GLX_SGIS_shared_multisample"), glxewGetExtension("GLX_SGIS_shared_multisample"));
+}
+
+#endif /* GLX_SGIS_shared_multisample */
+
+#ifdef GLX_SGIX_fbconfig
+
+static void _glewInfo_GLX_SGIX_fbconfig (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_fbconfig", GLXEW_SGIX_fbconfig, glxewIsSupported("GLX_SGIX_fbconfig"), glxewGetExtension("GLX_SGIX_fbconfig"));
+
+ glewInfoFunc(fi, "glXChooseFBConfigSGIX", glXChooseFBConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXCreateContextWithConfigSGIX", glXCreateContextWithConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXCreateGLXPixmapWithConfigSGIX", glXCreateGLXPixmapWithConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigAttribSGIX", glXGetFBConfigAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigFromVisualSGIX", glXGetFBConfigFromVisualSGIX == NULL);
+ glewInfoFunc(fi, "glXGetVisualFromFBConfigSGIX", glXGetVisualFromFBConfigSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_fbconfig */
+
+#ifdef GLX_SGIX_hyperpipe
+
+static void _glewInfo_GLX_SGIX_hyperpipe (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_hyperpipe", GLXEW_SGIX_hyperpipe, glxewIsSupported("GLX_SGIX_hyperpipe"), glxewGetExtension("GLX_SGIX_hyperpipe"));
+
+ glewInfoFunc(fi, "glXBindHyperpipeSGIX", glXBindHyperpipeSGIX == NULL);
+ glewInfoFunc(fi, "glXDestroyHyperpipeConfigSGIX", glXDestroyHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXHyperpipeAttribSGIX", glXHyperpipeAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXHyperpipeConfigSGIX", glXHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeAttribSGIX", glXQueryHyperpipeAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeBestAttribSGIX", glXQueryHyperpipeBestAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeConfigSGIX", glXQueryHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeNetworkSGIX", glXQueryHyperpipeNetworkSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_hyperpipe */
+
+#ifdef GLX_SGIX_pbuffer
+
+static void _glewInfo_GLX_SGIX_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_pbuffer", GLXEW_SGIX_pbuffer, glxewIsSupported("GLX_SGIX_pbuffer"), glxewGetExtension("GLX_SGIX_pbuffer"));
+
+ glewInfoFunc(fi, "glXCreateGLXPbufferSGIX", glXCreateGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXDestroyGLXPbufferSGIX", glXDestroyGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXGetSelectedEventSGIX", glXGetSelectedEventSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryGLXPbufferSGIX", glXQueryGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXSelectEventSGIX", glXSelectEventSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_pbuffer */
+
+#ifdef GLX_SGIX_swap_barrier
+
+static void _glewInfo_GLX_SGIX_swap_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_swap_barrier", GLXEW_SGIX_swap_barrier, glxewIsSupported("GLX_SGIX_swap_barrier"), glxewGetExtension("GLX_SGIX_swap_barrier"));
+
+ glewInfoFunc(fi, "glXBindSwapBarrierSGIX", glXBindSwapBarrierSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryMaxSwapBarriersSGIX", glXQueryMaxSwapBarriersSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_swap_barrier */
+
+#ifdef GLX_SGIX_swap_group
+
+static void _glewInfo_GLX_SGIX_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_swap_group", GLXEW_SGIX_swap_group, glxewIsSupported("GLX_SGIX_swap_group"), glxewGetExtension("GLX_SGIX_swap_group"));
+
+ glewInfoFunc(fi, "glXJoinSwapGroupSGIX", glXJoinSwapGroupSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_swap_group */
+
+#ifdef GLX_SGIX_video_resize
+
+static void _glewInfo_GLX_SGIX_video_resize (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_video_resize", GLXEW_SGIX_video_resize, glxewIsSupported("GLX_SGIX_video_resize"), glxewGetExtension("GLX_SGIX_video_resize"));
+
+ glewInfoFunc(fi, "glXBindChannelToWindowSGIX", glXBindChannelToWindowSGIX == NULL);
+ glewInfoFunc(fi, "glXChannelRectSGIX", glXChannelRectSGIX == NULL);
+ glewInfoFunc(fi, "glXChannelRectSyncSGIX", glXChannelRectSyncSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryChannelDeltasSGIX", glXQueryChannelDeltasSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryChannelRectSGIX", glXQueryChannelRectSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_video_resize */
+
+#ifdef GLX_SGIX_visual_select_group
+
+static void _glewInfo_GLX_SGIX_visual_select_group (void)
+{
+ glewPrintExt("GLX_SGIX_visual_select_group", GLXEW_SGIX_visual_select_group, glxewIsSupported("GLX_SGIX_visual_select_group"), glxewGetExtension("GLX_SGIX_visual_select_group"));
+}
+
+#endif /* GLX_SGIX_visual_select_group */
+
+#ifdef GLX_SGI_cushion
+
+static void _glewInfo_GLX_SGI_cushion (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_cushion", GLXEW_SGI_cushion, glxewIsSupported("GLX_SGI_cushion"), glxewGetExtension("GLX_SGI_cushion"));
+
+ glewInfoFunc(fi, "glXCushionSGI", glXCushionSGI == NULL);
+}
+
+#endif /* GLX_SGI_cushion */
+
+#ifdef GLX_SGI_make_current_read
+
+static void _glewInfo_GLX_SGI_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_make_current_read", GLXEW_SGI_make_current_read, glxewIsSupported("GLX_SGI_make_current_read"), glxewGetExtension("GLX_SGI_make_current_read"));
+
+ glewInfoFunc(fi, "glXGetCurrentReadDrawableSGI", glXGetCurrentReadDrawableSGI == NULL);
+ glewInfoFunc(fi, "glXMakeCurrentReadSGI", glXMakeCurrentReadSGI == NULL);
+}
+
+#endif /* GLX_SGI_make_current_read */
+
+#ifdef GLX_SGI_swap_control
+
+static void _glewInfo_GLX_SGI_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_swap_control", GLXEW_SGI_swap_control, glxewIsSupported("GLX_SGI_swap_control"), glxewGetExtension("GLX_SGI_swap_control"));
+
+ glewInfoFunc(fi, "glXSwapIntervalSGI", glXSwapIntervalSGI == NULL);
+}
+
+#endif /* GLX_SGI_swap_control */
+
+#ifdef GLX_SGI_video_sync
+
+static void _glewInfo_GLX_SGI_video_sync (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_video_sync", GLXEW_SGI_video_sync, glxewIsSupported("GLX_SGI_video_sync"), glxewGetExtension("GLX_SGI_video_sync"));
+
+ glewInfoFunc(fi, "glXGetVideoSyncSGI", glXGetVideoSyncSGI == NULL);
+ glewInfoFunc(fi, "glXWaitVideoSyncSGI", glXWaitVideoSyncSGI == NULL);
+}
+
+#endif /* GLX_SGI_video_sync */
+
+#ifdef GLX_SUN_get_transparent_index
+
+static void _glewInfo_GLX_SUN_get_transparent_index (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SUN_get_transparent_index", GLXEW_SUN_get_transparent_index, glxewIsSupported("GLX_SUN_get_transparent_index"), glxewGetExtension("GLX_SUN_get_transparent_index"));
+
+ glewInfoFunc(fi, "glXGetTransparentIndexSUN", glXGetTransparentIndexSUN == NULL);
+}
+
+#endif /* GLX_SUN_get_transparent_index */
+
+#ifdef GLX_SUN_video_resize
+
+static void _glewInfo_GLX_SUN_video_resize (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SUN_video_resize", GLXEW_SUN_video_resize, glxewIsSupported("GLX_SUN_video_resize"), glxewGetExtension("GLX_SUN_video_resize"));
+
+ glewInfoFunc(fi, "glXGetVideoResizeSUN", glXGetVideoResizeSUN == NULL);
+ glewInfoFunc(fi, "glXVideoResizeSUN", glXVideoResizeSUN == NULL);
+}
+
+#endif /* GLX_SUN_video_resize */
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+static void glewInfo (void)
+{
+#ifdef GL_VERSION_1_1
+ _glewInfo_GL_VERSION_1_1();
+#endif /* GL_VERSION_1_1 */
+#ifdef GL_VERSION_1_2
+ _glewInfo_GL_VERSION_1_2();
+#endif /* GL_VERSION_1_2 */
+#ifdef GL_VERSION_1_2_1
+ _glewInfo_GL_VERSION_1_2_1();
+#endif /* GL_VERSION_1_2_1 */
+#ifdef GL_VERSION_1_3
+ _glewInfo_GL_VERSION_1_3();
+#endif /* GL_VERSION_1_3 */
+#ifdef GL_VERSION_1_4
+ _glewInfo_GL_VERSION_1_4();
+#endif /* GL_VERSION_1_4 */
+#ifdef GL_VERSION_1_5
+ _glewInfo_GL_VERSION_1_5();
+#endif /* GL_VERSION_1_5 */
+#ifdef GL_VERSION_2_0
+ _glewInfo_GL_VERSION_2_0();
+#endif /* GL_VERSION_2_0 */
+#ifdef GL_VERSION_2_1
+ _glewInfo_GL_VERSION_2_1();
+#endif /* GL_VERSION_2_1 */
+#ifdef GL_VERSION_3_0
+ _glewInfo_GL_VERSION_3_0();
+#endif /* GL_VERSION_3_0 */
+#ifdef GL_VERSION_3_1
+ _glewInfo_GL_VERSION_3_1();
+#endif /* GL_VERSION_3_1 */
+#ifdef GL_VERSION_3_2
+ _glewInfo_GL_VERSION_3_2();
+#endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+ _glewInfo_GL_VERSION_3_3();
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+ _glewInfo_GL_VERSION_4_0();
+#endif /* GL_VERSION_4_0 */
+#ifdef GL_VERSION_4_1
+ _glewInfo_GL_VERSION_4_1();
+#endif /* GL_VERSION_4_1 */
+#ifdef GL_VERSION_4_2
+ _glewInfo_GL_VERSION_4_2();
+#endif /* GL_VERSION_4_2 */
+#ifdef GL_VERSION_4_3
+ _glewInfo_GL_VERSION_4_3();
+#endif /* GL_VERSION_4_3 */
+#ifdef GL_VERSION_4_4
+ _glewInfo_GL_VERSION_4_4();
+#endif /* GL_VERSION_4_4 */
+#ifdef GL_VERSION_4_5
+ _glewInfo_GL_VERSION_4_5();
+#endif /* GL_VERSION_4_5 */
+#ifdef GL_VERSION_4_6
+ _glewInfo_GL_VERSION_4_6();
+#endif /* GL_VERSION_4_6 */
+#ifdef GL_3DFX_multisample
+ _glewInfo_GL_3DFX_multisample();
+#endif /* GL_3DFX_multisample */
+#ifdef GL_3DFX_tbuffer
+ _glewInfo_GL_3DFX_tbuffer();
+#endif /* GL_3DFX_tbuffer */
+#ifdef GL_3DFX_texture_compression_FXT1
+ _glewInfo_GL_3DFX_texture_compression_FXT1();
+#endif /* GL_3DFX_texture_compression_FXT1 */
+#ifdef GL_AMD_blend_minmax_factor
+ _glewInfo_GL_AMD_blend_minmax_factor();
+#endif /* GL_AMD_blend_minmax_factor */
+#ifdef GL_AMD_compressed_3DC_texture
+ _glewInfo_GL_AMD_compressed_3DC_texture();
+#endif /* GL_AMD_compressed_3DC_texture */
+#ifdef GL_AMD_compressed_ATC_texture
+ _glewInfo_GL_AMD_compressed_ATC_texture();
+#endif /* GL_AMD_compressed_ATC_texture */
+#ifdef GL_AMD_conservative_depth
+ _glewInfo_GL_AMD_conservative_depth();
+#endif /* GL_AMD_conservative_depth */
+#ifdef GL_AMD_debug_output
+ _glewInfo_GL_AMD_debug_output();
+#endif /* GL_AMD_debug_output */
+#ifdef GL_AMD_depth_clamp_separate
+ _glewInfo_GL_AMD_depth_clamp_separate();
+#endif /* GL_AMD_depth_clamp_separate */
+#ifdef GL_AMD_draw_buffers_blend
+ _glewInfo_GL_AMD_draw_buffers_blend();
+#endif /* GL_AMD_draw_buffers_blend */
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ _glewInfo_GL_AMD_framebuffer_multisample_advanced();
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+#ifdef GL_AMD_framebuffer_sample_positions
+ _glewInfo_GL_AMD_framebuffer_sample_positions();
+#endif /* GL_AMD_framebuffer_sample_positions */
+#ifdef GL_AMD_gcn_shader
+ _glewInfo_GL_AMD_gcn_shader();
+#endif /* GL_AMD_gcn_shader */
+#ifdef GL_AMD_gpu_shader_half_float
+ _glewInfo_GL_AMD_gpu_shader_half_float();
+#endif /* GL_AMD_gpu_shader_half_float */
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ _glewInfo_GL_AMD_gpu_shader_half_float_fetch();
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+#ifdef GL_AMD_gpu_shader_int16
+ _glewInfo_GL_AMD_gpu_shader_int16();
+#endif /* GL_AMD_gpu_shader_int16 */
+#ifdef GL_AMD_gpu_shader_int64
+ _glewInfo_GL_AMD_gpu_shader_int64();
+#endif /* GL_AMD_gpu_shader_int64 */
+#ifdef GL_AMD_interleaved_elements
+ _glewInfo_GL_AMD_interleaved_elements();
+#endif /* GL_AMD_interleaved_elements */
+#ifdef GL_AMD_multi_draw_indirect
+ _glewInfo_GL_AMD_multi_draw_indirect();
+#endif /* GL_AMD_multi_draw_indirect */
+#ifdef GL_AMD_name_gen_delete
+ _glewInfo_GL_AMD_name_gen_delete();
+#endif /* GL_AMD_name_gen_delete */
+#ifdef GL_AMD_occlusion_query_event
+ _glewInfo_GL_AMD_occlusion_query_event();
+#endif /* GL_AMD_occlusion_query_event */
+#ifdef GL_AMD_performance_monitor
+ _glewInfo_GL_AMD_performance_monitor();
+#endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_pinned_memory
+ _glewInfo_GL_AMD_pinned_memory();
+#endif /* GL_AMD_pinned_memory */
+#ifdef GL_AMD_program_binary_Z400
+ _glewInfo_GL_AMD_program_binary_Z400();
+#endif /* GL_AMD_program_binary_Z400 */
+#ifdef GL_AMD_query_buffer_object
+ _glewInfo_GL_AMD_query_buffer_object();
+#endif /* GL_AMD_query_buffer_object */
+#ifdef GL_AMD_sample_positions
+ _glewInfo_GL_AMD_sample_positions();
+#endif /* GL_AMD_sample_positions */
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ _glewInfo_GL_AMD_seamless_cubemap_per_texture();
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+#ifdef GL_AMD_shader_atomic_counter_ops
+ _glewInfo_GL_AMD_shader_atomic_counter_ops();
+#endif /* GL_AMD_shader_atomic_counter_ops */
+#ifdef GL_AMD_shader_ballot
+ _glewInfo_GL_AMD_shader_ballot();
+#endif /* GL_AMD_shader_ballot */
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ _glewInfo_GL_AMD_shader_explicit_vertex_parameter();
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+#ifdef GL_AMD_shader_image_load_store_lod
+ _glewInfo_GL_AMD_shader_image_load_store_lod();
+#endif /* GL_AMD_shader_image_load_store_lod */
+#ifdef GL_AMD_shader_stencil_export
+ _glewInfo_GL_AMD_shader_stencil_export();
+#endif /* GL_AMD_shader_stencil_export */
+#ifdef GL_AMD_shader_stencil_value_export
+ _glewInfo_GL_AMD_shader_stencil_value_export();
+#endif /* GL_AMD_shader_stencil_value_export */
+#ifdef GL_AMD_shader_trinary_minmax
+ _glewInfo_GL_AMD_shader_trinary_minmax();
+#endif /* GL_AMD_shader_trinary_minmax */
+#ifdef GL_AMD_sparse_texture
+ _glewInfo_GL_AMD_sparse_texture();
+#endif /* GL_AMD_sparse_texture */
+#ifdef GL_AMD_stencil_operation_extended
+ _glewInfo_GL_AMD_stencil_operation_extended();
+#endif /* GL_AMD_stencil_operation_extended */
+#ifdef GL_AMD_texture_gather_bias_lod
+ _glewInfo_GL_AMD_texture_gather_bias_lod();
+#endif /* GL_AMD_texture_gather_bias_lod */
+#ifdef GL_AMD_texture_texture4
+ _glewInfo_GL_AMD_texture_texture4();
+#endif /* GL_AMD_texture_texture4 */
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ _glewInfo_GL_AMD_transform_feedback3_lines_triangles();
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+#ifdef GL_AMD_transform_feedback4
+ _glewInfo_GL_AMD_transform_feedback4();
+#endif /* GL_AMD_transform_feedback4 */
+#ifdef GL_AMD_vertex_shader_layer
+ _glewInfo_GL_AMD_vertex_shader_layer();
+#endif /* GL_AMD_vertex_shader_layer */
+#ifdef GL_AMD_vertex_shader_tessellator
+ _glewInfo_GL_AMD_vertex_shader_tessellator();
+#endif /* GL_AMD_vertex_shader_tessellator */
+#ifdef GL_AMD_vertex_shader_viewport_index
+ _glewInfo_GL_AMD_vertex_shader_viewport_index();
+#endif /* GL_AMD_vertex_shader_viewport_index */
+#ifdef GL_ANDROID_extension_pack_es31a
+ _glewInfo_GL_ANDROID_extension_pack_es31a();
+#endif /* GL_ANDROID_extension_pack_es31a */
+#ifdef GL_ANGLE_depth_texture
+ _glewInfo_GL_ANGLE_depth_texture();
+#endif /* GL_ANGLE_depth_texture */
+#ifdef GL_ANGLE_framebuffer_blit
+ _glewInfo_GL_ANGLE_framebuffer_blit();
+#endif /* GL_ANGLE_framebuffer_blit */
+#ifdef GL_ANGLE_framebuffer_multisample
+ _glewInfo_GL_ANGLE_framebuffer_multisample();
+#endif /* GL_ANGLE_framebuffer_multisample */
+#ifdef GL_ANGLE_instanced_arrays
+ _glewInfo_GL_ANGLE_instanced_arrays();
+#endif /* GL_ANGLE_instanced_arrays */
+#ifdef GL_ANGLE_pack_reverse_row_order
+ _glewInfo_GL_ANGLE_pack_reverse_row_order();
+#endif /* GL_ANGLE_pack_reverse_row_order */
+#ifdef GL_ANGLE_program_binary
+ _glewInfo_GL_ANGLE_program_binary();
+#endif /* GL_ANGLE_program_binary */
+#ifdef GL_ANGLE_texture_compression_dxt1
+ _glewInfo_GL_ANGLE_texture_compression_dxt1();
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+#ifdef GL_ANGLE_texture_compression_dxt3
+ _glewInfo_GL_ANGLE_texture_compression_dxt3();
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+#ifdef GL_ANGLE_texture_compression_dxt5
+ _glewInfo_GL_ANGLE_texture_compression_dxt5();
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+#ifdef GL_ANGLE_texture_usage
+ _glewInfo_GL_ANGLE_texture_usage();
+#endif /* GL_ANGLE_texture_usage */
+#ifdef GL_ANGLE_timer_query
+ _glewInfo_GL_ANGLE_timer_query();
+#endif /* GL_ANGLE_timer_query */
+#ifdef GL_ANGLE_translated_shader_source
+ _glewInfo_GL_ANGLE_translated_shader_source();
+#endif /* GL_ANGLE_translated_shader_source */
+#ifdef GL_APPLE_aux_depth_stencil
+ _glewInfo_GL_APPLE_aux_depth_stencil();
+#endif /* GL_APPLE_aux_depth_stencil */
+#ifdef GL_APPLE_client_storage
+ _glewInfo_GL_APPLE_client_storage();
+#endif /* GL_APPLE_client_storage */
+#ifdef GL_APPLE_clip_distance
+ _glewInfo_GL_APPLE_clip_distance();
+#endif /* GL_APPLE_clip_distance */
+#ifdef GL_APPLE_color_buffer_packed_float
+ _glewInfo_GL_APPLE_color_buffer_packed_float();
+#endif /* GL_APPLE_color_buffer_packed_float */
+#ifdef GL_APPLE_copy_texture_levels
+ _glewInfo_GL_APPLE_copy_texture_levels();
+#endif /* GL_APPLE_copy_texture_levels */
+#ifdef GL_APPLE_element_array
+ _glewInfo_GL_APPLE_element_array();
+#endif /* GL_APPLE_element_array */
+#ifdef GL_APPLE_fence
+ _glewInfo_GL_APPLE_fence();
+#endif /* GL_APPLE_fence */
+#ifdef GL_APPLE_float_pixels
+ _glewInfo_GL_APPLE_float_pixels();
+#endif /* GL_APPLE_float_pixels */
+#ifdef GL_APPLE_flush_buffer_range
+ _glewInfo_GL_APPLE_flush_buffer_range();
+#endif /* GL_APPLE_flush_buffer_range */
+#ifdef GL_APPLE_framebuffer_multisample
+ _glewInfo_GL_APPLE_framebuffer_multisample();
+#endif /* GL_APPLE_framebuffer_multisample */
+#ifdef GL_APPLE_object_purgeable
+ _glewInfo_GL_APPLE_object_purgeable();
+#endif /* GL_APPLE_object_purgeable */
+#ifdef GL_APPLE_pixel_buffer
+ _glewInfo_GL_APPLE_pixel_buffer();
+#endif /* GL_APPLE_pixel_buffer */
+#ifdef GL_APPLE_rgb_422
+ _glewInfo_GL_APPLE_rgb_422();
+#endif /* GL_APPLE_rgb_422 */
+#ifdef GL_APPLE_row_bytes
+ _glewInfo_GL_APPLE_row_bytes();
+#endif /* GL_APPLE_row_bytes */
+#ifdef GL_APPLE_specular_vector
+ _glewInfo_GL_APPLE_specular_vector();
+#endif /* GL_APPLE_specular_vector */
+#ifdef GL_APPLE_sync
+ _glewInfo_GL_APPLE_sync();
+#endif /* GL_APPLE_sync */
+#ifdef GL_APPLE_texture_2D_limited_npot
+ _glewInfo_GL_APPLE_texture_2D_limited_npot();
+#endif /* GL_APPLE_texture_2D_limited_npot */
+#ifdef GL_APPLE_texture_format_BGRA8888
+ _glewInfo_GL_APPLE_texture_format_BGRA8888();
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+#ifdef GL_APPLE_texture_max_level
+ _glewInfo_GL_APPLE_texture_max_level();
+#endif /* GL_APPLE_texture_max_level */
+#ifdef GL_APPLE_texture_packed_float
+ _glewInfo_GL_APPLE_texture_packed_float();
+#endif /* GL_APPLE_texture_packed_float */
+#ifdef GL_APPLE_texture_range
+ _glewInfo_GL_APPLE_texture_range();
+#endif /* GL_APPLE_texture_range */
+#ifdef GL_APPLE_transform_hint
+ _glewInfo_GL_APPLE_transform_hint();
+#endif /* GL_APPLE_transform_hint */
+#ifdef GL_APPLE_vertex_array_object
+ _glewInfo_GL_APPLE_vertex_array_object();
+#endif /* GL_APPLE_vertex_array_object */
+#ifdef GL_APPLE_vertex_array_range
+ _glewInfo_GL_APPLE_vertex_array_range();
+#endif /* GL_APPLE_vertex_array_range */
+#ifdef GL_APPLE_vertex_program_evaluators
+ _glewInfo_GL_APPLE_vertex_program_evaluators();
+#endif /* GL_APPLE_vertex_program_evaluators */
+#ifdef GL_APPLE_ycbcr_422
+ _glewInfo_GL_APPLE_ycbcr_422();
+#endif /* GL_APPLE_ycbcr_422 */
+#ifdef GL_ARB_ES2_compatibility
+ _glewInfo_GL_ARB_ES2_compatibility();
+#endif /* GL_ARB_ES2_compatibility */
+#ifdef GL_ARB_ES3_1_compatibility
+ _glewInfo_GL_ARB_ES3_1_compatibility();
+#endif /* GL_ARB_ES3_1_compatibility */
+#ifdef GL_ARB_ES3_2_compatibility
+ _glewInfo_GL_ARB_ES3_2_compatibility();
+#endif /* GL_ARB_ES3_2_compatibility */
+#ifdef GL_ARB_ES3_compatibility
+ _glewInfo_GL_ARB_ES3_compatibility();
+#endif /* GL_ARB_ES3_compatibility */
+#ifdef GL_ARB_arrays_of_arrays
+ _glewInfo_GL_ARB_arrays_of_arrays();
+#endif /* GL_ARB_arrays_of_arrays */
+#ifdef GL_ARB_base_instance
+ _glewInfo_GL_ARB_base_instance();
+#endif /* GL_ARB_base_instance */
+#ifdef GL_ARB_bindless_texture
+ _glewInfo_GL_ARB_bindless_texture();
+#endif /* GL_ARB_bindless_texture */
+#ifdef GL_ARB_blend_func_extended
+ _glewInfo_GL_ARB_blend_func_extended();
+#endif /* GL_ARB_blend_func_extended */
+#ifdef GL_ARB_buffer_storage
+ _glewInfo_GL_ARB_buffer_storage();
+#endif /* GL_ARB_buffer_storage */
+#ifdef GL_ARB_cl_event
+ _glewInfo_GL_ARB_cl_event();
+#endif /* GL_ARB_cl_event */
+#ifdef GL_ARB_clear_buffer_object
+ _glewInfo_GL_ARB_clear_buffer_object();
+#endif /* GL_ARB_clear_buffer_object */
+#ifdef GL_ARB_clear_texture
+ _glewInfo_GL_ARB_clear_texture();
+#endif /* GL_ARB_clear_texture */
+#ifdef GL_ARB_clip_control
+ _glewInfo_GL_ARB_clip_control();
+#endif /* GL_ARB_clip_control */
+#ifdef GL_ARB_color_buffer_float
+ _glewInfo_GL_ARB_color_buffer_float();
+#endif /* GL_ARB_color_buffer_float */
+#ifdef GL_ARB_compatibility
+ _glewInfo_GL_ARB_compatibility();
+#endif /* GL_ARB_compatibility */
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ _glewInfo_GL_ARB_compressed_texture_pixel_storage();
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+#ifdef GL_ARB_compute_shader
+ _glewInfo_GL_ARB_compute_shader();
+#endif /* GL_ARB_compute_shader */
+#ifdef GL_ARB_compute_variable_group_size
+ _glewInfo_GL_ARB_compute_variable_group_size();
+#endif /* GL_ARB_compute_variable_group_size */
+#ifdef GL_ARB_conditional_render_inverted
+ _glewInfo_GL_ARB_conditional_render_inverted();
+#endif /* GL_ARB_conditional_render_inverted */
+#ifdef GL_ARB_conservative_depth
+ _glewInfo_GL_ARB_conservative_depth();
+#endif /* GL_ARB_conservative_depth */
+#ifdef GL_ARB_copy_buffer
+ _glewInfo_GL_ARB_copy_buffer();
+#endif /* GL_ARB_copy_buffer */
+#ifdef GL_ARB_copy_image
+ _glewInfo_GL_ARB_copy_image();
+#endif /* GL_ARB_copy_image */
+#ifdef GL_ARB_cull_distance
+ _glewInfo_GL_ARB_cull_distance();
+#endif /* GL_ARB_cull_distance */
+#ifdef GL_ARB_debug_output
+ _glewInfo_GL_ARB_debug_output();
+#endif /* GL_ARB_debug_output */
+#ifdef GL_ARB_depth_buffer_float
+ _glewInfo_GL_ARB_depth_buffer_float();
+#endif /* GL_ARB_depth_buffer_float */
+#ifdef GL_ARB_depth_clamp
+ _glewInfo_GL_ARB_depth_clamp();
+#endif /* GL_ARB_depth_clamp */
+#ifdef GL_ARB_depth_texture
+ _glewInfo_GL_ARB_depth_texture();
+#endif /* GL_ARB_depth_texture */
+#ifdef GL_ARB_derivative_control
+ _glewInfo_GL_ARB_derivative_control();
+#endif /* GL_ARB_derivative_control */
+#ifdef GL_ARB_direct_state_access
+ _glewInfo_GL_ARB_direct_state_access();
+#endif /* GL_ARB_direct_state_access */
+#ifdef GL_ARB_draw_buffers
+ _glewInfo_GL_ARB_draw_buffers();
+#endif /* GL_ARB_draw_buffers */
+#ifdef GL_ARB_draw_buffers_blend
+ _glewInfo_GL_ARB_draw_buffers_blend();
+#endif /* GL_ARB_draw_buffers_blend */
+#ifdef GL_ARB_draw_elements_base_vertex
+ _glewInfo_GL_ARB_draw_elements_base_vertex();
+#endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+ _glewInfo_GL_ARB_draw_indirect();
+#endif /* GL_ARB_draw_indirect */
+#ifdef GL_ARB_draw_instanced
+ _glewInfo_GL_ARB_draw_instanced();
+#endif /* GL_ARB_draw_instanced */
+#ifdef GL_ARB_enhanced_layouts
+ _glewInfo_GL_ARB_enhanced_layouts();
+#endif /* GL_ARB_enhanced_layouts */
+#ifdef GL_ARB_explicit_attrib_location
+ _glewInfo_GL_ARB_explicit_attrib_location();
+#endif /* GL_ARB_explicit_attrib_location */
+#ifdef GL_ARB_explicit_uniform_location
+ _glewInfo_GL_ARB_explicit_uniform_location();
+#endif /* GL_ARB_explicit_uniform_location */
+#ifdef GL_ARB_fragment_coord_conventions
+ _glewInfo_GL_ARB_fragment_coord_conventions();
+#endif /* GL_ARB_fragment_coord_conventions */
+#ifdef GL_ARB_fragment_layer_viewport
+ _glewInfo_GL_ARB_fragment_layer_viewport();
+#endif /* GL_ARB_fragment_layer_viewport */
+#ifdef GL_ARB_fragment_program
+ _glewInfo_GL_ARB_fragment_program();
+#endif /* GL_ARB_fragment_program */
+#ifdef GL_ARB_fragment_program_shadow
+ _glewInfo_GL_ARB_fragment_program_shadow();
+#endif /* GL_ARB_fragment_program_shadow */
+#ifdef GL_ARB_fragment_shader
+ _glewInfo_GL_ARB_fragment_shader();
+#endif /* GL_ARB_fragment_shader */
+#ifdef GL_ARB_fragment_shader_interlock
+ _glewInfo_GL_ARB_fragment_shader_interlock();
+#endif /* GL_ARB_fragment_shader_interlock */
+#ifdef GL_ARB_framebuffer_no_attachments
+ _glewInfo_GL_ARB_framebuffer_no_attachments();
+#endif /* GL_ARB_framebuffer_no_attachments */
+#ifdef GL_ARB_framebuffer_object
+ _glewInfo_GL_ARB_framebuffer_object();
+#endif /* GL_ARB_framebuffer_object */
+#ifdef GL_ARB_framebuffer_sRGB
+ _glewInfo_GL_ARB_framebuffer_sRGB();
+#endif /* GL_ARB_framebuffer_sRGB */
+#ifdef GL_ARB_geometry_shader4
+ _glewInfo_GL_ARB_geometry_shader4();
+#endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_get_program_binary
+ _glewInfo_GL_ARB_get_program_binary();
+#endif /* GL_ARB_get_program_binary */
+#ifdef GL_ARB_get_texture_sub_image
+ _glewInfo_GL_ARB_get_texture_sub_image();
+#endif /* GL_ARB_get_texture_sub_image */
+#ifdef GL_ARB_gl_spirv
+ _glewInfo_GL_ARB_gl_spirv();
+#endif /* GL_ARB_gl_spirv */
+#ifdef GL_ARB_gpu_shader5
+ _glewInfo_GL_ARB_gpu_shader5();
+#endif /* GL_ARB_gpu_shader5 */
+#ifdef GL_ARB_gpu_shader_fp64
+ _glewInfo_GL_ARB_gpu_shader_fp64();
+#endif /* GL_ARB_gpu_shader_fp64 */
+#ifdef GL_ARB_gpu_shader_int64
+ _glewInfo_GL_ARB_gpu_shader_int64();
+#endif /* GL_ARB_gpu_shader_int64 */
+#ifdef GL_ARB_half_float_pixel
+ _glewInfo_GL_ARB_half_float_pixel();
+#endif /* GL_ARB_half_float_pixel */
+#ifdef GL_ARB_half_float_vertex
+ _glewInfo_GL_ARB_half_float_vertex();
+#endif /* GL_ARB_half_float_vertex */
+#ifdef GL_ARB_imaging
+ _glewInfo_GL_ARB_imaging();
+#endif /* GL_ARB_imaging */
+#ifdef GL_ARB_indirect_parameters
+ _glewInfo_GL_ARB_indirect_parameters();
+#endif /* GL_ARB_indirect_parameters */
+#ifdef GL_ARB_instanced_arrays
+ _glewInfo_GL_ARB_instanced_arrays();
+#endif /* GL_ARB_instanced_arrays */
+#ifdef GL_ARB_internalformat_query
+ _glewInfo_GL_ARB_internalformat_query();
+#endif /* GL_ARB_internalformat_query */
+#ifdef GL_ARB_internalformat_query2
+ _glewInfo_GL_ARB_internalformat_query2();
+#endif /* GL_ARB_internalformat_query2 */
+#ifdef GL_ARB_invalidate_subdata
+ _glewInfo_GL_ARB_invalidate_subdata();
+#endif /* GL_ARB_invalidate_subdata */
+#ifdef GL_ARB_map_buffer_alignment
+ _glewInfo_GL_ARB_map_buffer_alignment();
+#endif /* GL_ARB_map_buffer_alignment */
+#ifdef GL_ARB_map_buffer_range
+ _glewInfo_GL_ARB_map_buffer_range();
+#endif /* GL_ARB_map_buffer_range */
+#ifdef GL_ARB_matrix_palette
+ _glewInfo_GL_ARB_matrix_palette();
+#endif /* GL_ARB_matrix_palette */
+#ifdef GL_ARB_multi_bind
+ _glewInfo_GL_ARB_multi_bind();
+#endif /* GL_ARB_multi_bind */
+#ifdef GL_ARB_multi_draw_indirect
+ _glewInfo_GL_ARB_multi_draw_indirect();
+#endif /* GL_ARB_multi_draw_indirect */
+#ifdef GL_ARB_multisample
+ _glewInfo_GL_ARB_multisample();
+#endif /* GL_ARB_multisample */
+#ifdef GL_ARB_multitexture
+ _glewInfo_GL_ARB_multitexture();
+#endif /* GL_ARB_multitexture */
+#ifdef GL_ARB_occlusion_query
+ _glewInfo_GL_ARB_occlusion_query();
+#endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_occlusion_query2
+ _glewInfo_GL_ARB_occlusion_query2();
+#endif /* GL_ARB_occlusion_query2 */
+#ifdef GL_ARB_parallel_shader_compile
+ _glewInfo_GL_ARB_parallel_shader_compile();
+#endif /* GL_ARB_parallel_shader_compile */
+#ifdef GL_ARB_pipeline_statistics_query
+ _glewInfo_GL_ARB_pipeline_statistics_query();
+#endif /* GL_ARB_pipeline_statistics_query */
+#ifdef GL_ARB_pixel_buffer_object
+ _glewInfo_GL_ARB_pixel_buffer_object();
+#endif /* GL_ARB_pixel_buffer_object */
+#ifdef GL_ARB_point_parameters
+ _glewInfo_GL_ARB_point_parameters();
+#endif /* GL_ARB_point_parameters */
+#ifdef GL_ARB_point_sprite
+ _glewInfo_GL_ARB_point_sprite();
+#endif /* GL_ARB_point_sprite */
+#ifdef GL_ARB_polygon_offset_clamp
+ _glewInfo_GL_ARB_polygon_offset_clamp();
+#endif /* GL_ARB_polygon_offset_clamp */
+#ifdef GL_ARB_post_depth_coverage
+ _glewInfo_GL_ARB_post_depth_coverage();
+#endif /* GL_ARB_post_depth_coverage */
+#ifdef GL_ARB_program_interface_query
+ _glewInfo_GL_ARB_program_interface_query();
+#endif /* GL_ARB_program_interface_query */
+#ifdef GL_ARB_provoking_vertex
+ _glewInfo_GL_ARB_provoking_vertex();
+#endif /* GL_ARB_provoking_vertex */
+#ifdef GL_ARB_query_buffer_object
+ _glewInfo_GL_ARB_query_buffer_object();
+#endif /* GL_ARB_query_buffer_object */
+#ifdef GL_ARB_robust_buffer_access_behavior
+ _glewInfo_GL_ARB_robust_buffer_access_behavior();
+#endif /* GL_ARB_robust_buffer_access_behavior */
+#ifdef GL_ARB_robustness
+ _glewInfo_GL_ARB_robustness();
+#endif /* GL_ARB_robustness */
+#ifdef GL_ARB_robustness_application_isolation
+ _glewInfo_GL_ARB_robustness_application_isolation();
+#endif /* GL_ARB_robustness_application_isolation */
+#ifdef GL_ARB_robustness_share_group_isolation
+ _glewInfo_GL_ARB_robustness_share_group_isolation();
+#endif /* GL_ARB_robustness_share_group_isolation */
+#ifdef GL_ARB_sample_locations
+ _glewInfo_GL_ARB_sample_locations();
+#endif /* GL_ARB_sample_locations */
+#ifdef GL_ARB_sample_shading
+ _glewInfo_GL_ARB_sample_shading();
+#endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+ _glewInfo_GL_ARB_sampler_objects();
+#endif /* GL_ARB_sampler_objects */
+#ifdef GL_ARB_seamless_cube_map
+ _glewInfo_GL_ARB_seamless_cube_map();
+#endif /* GL_ARB_seamless_cube_map */
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ _glewInfo_GL_ARB_seamless_cubemap_per_texture();
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+#ifdef GL_ARB_separate_shader_objects
+ _glewInfo_GL_ARB_separate_shader_objects();
+#endif /* GL_ARB_separate_shader_objects */
+#ifdef GL_ARB_shader_atomic_counter_ops
+ _glewInfo_GL_ARB_shader_atomic_counter_ops();
+#endif /* GL_ARB_shader_atomic_counter_ops */
+#ifdef GL_ARB_shader_atomic_counters
+ _glewInfo_GL_ARB_shader_atomic_counters();
+#endif /* GL_ARB_shader_atomic_counters */
+#ifdef GL_ARB_shader_ballot
+ _glewInfo_GL_ARB_shader_ballot();
+#endif /* GL_ARB_shader_ballot */
+#ifdef GL_ARB_shader_bit_encoding
+ _glewInfo_GL_ARB_shader_bit_encoding();
+#endif /* GL_ARB_shader_bit_encoding */
+#ifdef GL_ARB_shader_clock
+ _glewInfo_GL_ARB_shader_clock();
+#endif /* GL_ARB_shader_clock */
+#ifdef GL_ARB_shader_draw_parameters
+ _glewInfo_GL_ARB_shader_draw_parameters();
+#endif /* GL_ARB_shader_draw_parameters */
+#ifdef GL_ARB_shader_group_vote
+ _glewInfo_GL_ARB_shader_group_vote();
+#endif /* GL_ARB_shader_group_vote */
+#ifdef GL_ARB_shader_image_load_store
+ _glewInfo_GL_ARB_shader_image_load_store();
+#endif /* GL_ARB_shader_image_load_store */
+#ifdef GL_ARB_shader_image_size
+ _glewInfo_GL_ARB_shader_image_size();
+#endif /* GL_ARB_shader_image_size */
+#ifdef GL_ARB_shader_objects
+ _glewInfo_GL_ARB_shader_objects();
+#endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_precision
+ _glewInfo_GL_ARB_shader_precision();
+#endif /* GL_ARB_shader_precision */
+#ifdef GL_ARB_shader_stencil_export
+ _glewInfo_GL_ARB_shader_stencil_export();
+#endif /* GL_ARB_shader_stencil_export */
+#ifdef GL_ARB_shader_storage_buffer_object
+ _glewInfo_GL_ARB_shader_storage_buffer_object();
+#endif /* GL_ARB_shader_storage_buffer_object */
+#ifdef GL_ARB_shader_subroutine
+ _glewInfo_GL_ARB_shader_subroutine();
+#endif /* GL_ARB_shader_subroutine */
+#ifdef GL_ARB_shader_texture_image_samples
+ _glewInfo_GL_ARB_shader_texture_image_samples();
+#endif /* GL_ARB_shader_texture_image_samples */
+#ifdef GL_ARB_shader_texture_lod
+ _glewInfo_GL_ARB_shader_texture_lod();
+#endif /* GL_ARB_shader_texture_lod */
+#ifdef GL_ARB_shader_viewport_layer_array
+ _glewInfo_GL_ARB_shader_viewport_layer_array();
+#endif /* GL_ARB_shader_viewport_layer_array */
+#ifdef GL_ARB_shading_language_100
+ _glewInfo_GL_ARB_shading_language_100();
+#endif /* GL_ARB_shading_language_100 */
+#ifdef GL_ARB_shading_language_420pack
+ _glewInfo_GL_ARB_shading_language_420pack();
+#endif /* GL_ARB_shading_language_420pack */
+#ifdef GL_ARB_shading_language_include
+ _glewInfo_GL_ARB_shading_language_include();
+#endif /* GL_ARB_shading_language_include */
+#ifdef GL_ARB_shading_language_packing
+ _glewInfo_GL_ARB_shading_language_packing();
+#endif /* GL_ARB_shading_language_packing */
+#ifdef GL_ARB_shadow
+ _glewInfo_GL_ARB_shadow();
+#endif /* GL_ARB_shadow */
+#ifdef GL_ARB_shadow_ambient
+ _glewInfo_GL_ARB_shadow_ambient();
+#endif /* GL_ARB_shadow_ambient */
+#ifdef GL_ARB_sparse_buffer
+ _glewInfo_GL_ARB_sparse_buffer();
+#endif /* GL_ARB_sparse_buffer */
+#ifdef GL_ARB_sparse_texture
+ _glewInfo_GL_ARB_sparse_texture();
+#endif /* GL_ARB_sparse_texture */
+#ifdef GL_ARB_sparse_texture2
+ _glewInfo_GL_ARB_sparse_texture2();
+#endif /* GL_ARB_sparse_texture2 */
+#ifdef GL_ARB_sparse_texture_clamp
+ _glewInfo_GL_ARB_sparse_texture_clamp();
+#endif /* GL_ARB_sparse_texture_clamp */
+#ifdef GL_ARB_spirv_extensions
+ _glewInfo_GL_ARB_spirv_extensions();
+#endif /* GL_ARB_spirv_extensions */
+#ifdef GL_ARB_stencil_texturing
+ _glewInfo_GL_ARB_stencil_texturing();
+#endif /* GL_ARB_stencil_texturing */
+#ifdef GL_ARB_sync
+ _glewInfo_GL_ARB_sync();
+#endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+ _glewInfo_GL_ARB_tessellation_shader();
+#endif /* GL_ARB_tessellation_shader */
+#ifdef GL_ARB_texture_barrier
+ _glewInfo_GL_ARB_texture_barrier();
+#endif /* GL_ARB_texture_barrier */
+#ifdef GL_ARB_texture_border_clamp
+ _glewInfo_GL_ARB_texture_border_clamp();
+#endif /* GL_ARB_texture_border_clamp */
+#ifdef GL_ARB_texture_buffer_object
+ _glewInfo_GL_ARB_texture_buffer_object();
+#endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ _glewInfo_GL_ARB_texture_buffer_object_rgb32();
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+#ifdef GL_ARB_texture_buffer_range
+ _glewInfo_GL_ARB_texture_buffer_range();
+#endif /* GL_ARB_texture_buffer_range */
+#ifdef GL_ARB_texture_compression
+ _glewInfo_GL_ARB_texture_compression();
+#endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_compression_bptc
+ _glewInfo_GL_ARB_texture_compression_bptc();
+#endif /* GL_ARB_texture_compression_bptc */
+#ifdef GL_ARB_texture_compression_rgtc
+ _glewInfo_GL_ARB_texture_compression_rgtc();
+#endif /* GL_ARB_texture_compression_rgtc */
+#ifdef GL_ARB_texture_cube_map
+ _glewInfo_GL_ARB_texture_cube_map();
+#endif /* GL_ARB_texture_cube_map */
+#ifdef GL_ARB_texture_cube_map_array
+ _glewInfo_GL_ARB_texture_cube_map_array();
+#endif /* GL_ARB_texture_cube_map_array */
+#ifdef GL_ARB_texture_env_add
+ _glewInfo_GL_ARB_texture_env_add();
+#endif /* GL_ARB_texture_env_add */
+#ifdef GL_ARB_texture_env_combine
+ _glewInfo_GL_ARB_texture_env_combine();
+#endif /* GL_ARB_texture_env_combine */
+#ifdef GL_ARB_texture_env_crossbar
+ _glewInfo_GL_ARB_texture_env_crossbar();
+#endif /* GL_ARB_texture_env_crossbar */
+#ifdef GL_ARB_texture_env_dot3
+ _glewInfo_GL_ARB_texture_env_dot3();
+#endif /* GL_ARB_texture_env_dot3 */
+#ifdef GL_ARB_texture_filter_anisotropic
+ _glewInfo_GL_ARB_texture_filter_anisotropic();
+#endif /* GL_ARB_texture_filter_anisotropic */
+#ifdef GL_ARB_texture_filter_minmax
+ _glewInfo_GL_ARB_texture_filter_minmax();
+#endif /* GL_ARB_texture_filter_minmax */
+#ifdef GL_ARB_texture_float
+ _glewInfo_GL_ARB_texture_float();
+#endif /* GL_ARB_texture_float */
+#ifdef GL_ARB_texture_gather
+ _glewInfo_GL_ARB_texture_gather();
+#endif /* GL_ARB_texture_gather */
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ _glewInfo_GL_ARB_texture_mirror_clamp_to_edge();
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+#ifdef GL_ARB_texture_mirrored_repeat
+ _glewInfo_GL_ARB_texture_mirrored_repeat();
+#endif /* GL_ARB_texture_mirrored_repeat */
+#ifdef GL_ARB_texture_multisample
+ _glewInfo_GL_ARB_texture_multisample();
+#endif /* GL_ARB_texture_multisample */
+#ifdef GL_ARB_texture_non_power_of_two
+ _glewInfo_GL_ARB_texture_non_power_of_two();
+#endif /* GL_ARB_texture_non_power_of_two */
+#ifdef GL_ARB_texture_query_levels
+ _glewInfo_GL_ARB_texture_query_levels();
+#endif /* GL_ARB_texture_query_levels */
+#ifdef GL_ARB_texture_query_lod
+ _glewInfo_GL_ARB_texture_query_lod();
+#endif /* GL_ARB_texture_query_lod */
+#ifdef GL_ARB_texture_rectangle
+ _glewInfo_GL_ARB_texture_rectangle();
+#endif /* GL_ARB_texture_rectangle */
+#ifdef GL_ARB_texture_rg
+ _glewInfo_GL_ARB_texture_rg();
+#endif /* GL_ARB_texture_rg */
+#ifdef GL_ARB_texture_rgb10_a2ui
+ _glewInfo_GL_ARB_texture_rgb10_a2ui();
+#endif /* GL_ARB_texture_rgb10_a2ui */
+#ifdef GL_ARB_texture_stencil8
+ _glewInfo_GL_ARB_texture_stencil8();
+#endif /* GL_ARB_texture_stencil8 */
+#ifdef GL_ARB_texture_storage
+ _glewInfo_GL_ARB_texture_storage();
+#endif /* GL_ARB_texture_storage */
+#ifdef GL_ARB_texture_storage_multisample
+ _glewInfo_GL_ARB_texture_storage_multisample();
+#endif /* GL_ARB_texture_storage_multisample */
+#ifdef GL_ARB_texture_swizzle
+ _glewInfo_GL_ARB_texture_swizzle();
+#endif /* GL_ARB_texture_swizzle */
+#ifdef GL_ARB_texture_view
+ _glewInfo_GL_ARB_texture_view();
+#endif /* GL_ARB_texture_view */
+#ifdef GL_ARB_timer_query
+ _glewInfo_GL_ARB_timer_query();
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+ _glewInfo_GL_ARB_transform_feedback2();
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+ _glewInfo_GL_ARB_transform_feedback3();
+#endif /* GL_ARB_transform_feedback3 */
+#ifdef GL_ARB_transform_feedback_instanced
+ _glewInfo_GL_ARB_transform_feedback_instanced();
+#endif /* GL_ARB_transform_feedback_instanced */
+#ifdef GL_ARB_transform_feedback_overflow_query
+ _glewInfo_GL_ARB_transform_feedback_overflow_query();
+#endif /* GL_ARB_transform_feedback_overflow_query */
+#ifdef GL_ARB_transpose_matrix
+ _glewInfo_GL_ARB_transpose_matrix();
+#endif /* GL_ARB_transpose_matrix */
+#ifdef GL_ARB_uniform_buffer_object
+ _glewInfo_GL_ARB_uniform_buffer_object();
+#endif /* GL_ARB_uniform_buffer_object */
+#ifdef GL_ARB_vertex_array_bgra
+ _glewInfo_GL_ARB_vertex_array_bgra();
+#endif /* GL_ARB_vertex_array_bgra */
+#ifdef GL_ARB_vertex_array_object
+ _glewInfo_GL_ARB_vertex_array_object();
+#endif /* GL_ARB_vertex_array_object */
+#ifdef GL_ARB_vertex_attrib_64bit
+ _glewInfo_GL_ARB_vertex_attrib_64bit();
+#endif /* GL_ARB_vertex_attrib_64bit */
+#ifdef GL_ARB_vertex_attrib_binding
+ _glewInfo_GL_ARB_vertex_attrib_binding();
+#endif /* GL_ARB_vertex_attrib_binding */
+#ifdef GL_ARB_vertex_blend
+ _glewInfo_GL_ARB_vertex_blend();
+#endif /* GL_ARB_vertex_blend */
+#ifdef GL_ARB_vertex_buffer_object
+ _glewInfo_GL_ARB_vertex_buffer_object();
+#endif /* GL_ARB_vertex_buffer_object */
+#ifdef GL_ARB_vertex_program
+ _glewInfo_GL_ARB_vertex_program();
+#endif /* GL_ARB_vertex_program */
+#ifdef GL_ARB_vertex_shader
+ _glewInfo_GL_ARB_vertex_shader();
+#endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev();
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev();
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+#ifdef GL_ARB_viewport_array
+ _glewInfo_GL_ARB_viewport_array();
+#endif /* GL_ARB_viewport_array */
+#ifdef GL_ARB_window_pos
+ _glewInfo_GL_ARB_window_pos();
+#endif /* GL_ARB_window_pos */
+#ifdef GL_ARM_mali_program_binary
+ _glewInfo_GL_ARM_mali_program_binary();
+#endif /* GL_ARM_mali_program_binary */
+#ifdef GL_ARM_mali_shader_binary
+ _glewInfo_GL_ARM_mali_shader_binary();
+#endif /* GL_ARM_mali_shader_binary */
+#ifdef GL_ARM_rgba8
+ _glewInfo_GL_ARM_rgba8();
+#endif /* GL_ARM_rgba8 */
+#ifdef GL_ARM_shader_framebuffer_fetch
+ _glewInfo_GL_ARM_shader_framebuffer_fetch();
+#endif /* GL_ARM_shader_framebuffer_fetch */
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil();
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ _glewInfo_GL_ARM_texture_unnormalized_coordinates();
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+#ifdef GL_ATIX_point_sprites
+ _glewInfo_GL_ATIX_point_sprites();
+#endif /* GL_ATIX_point_sprites */
+#ifdef GL_ATIX_texture_env_combine3
+ _glewInfo_GL_ATIX_texture_env_combine3();
+#endif /* GL_ATIX_texture_env_combine3 */
+#ifdef GL_ATIX_texture_env_route
+ _glewInfo_GL_ATIX_texture_env_route();
+#endif /* GL_ATIX_texture_env_route */
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ _glewInfo_GL_ATIX_vertex_shader_output_point_size();
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+#ifdef GL_ATI_draw_buffers
+ _glewInfo_GL_ATI_draw_buffers();
+#endif /* GL_ATI_draw_buffers */
+#ifdef GL_ATI_element_array
+ _glewInfo_GL_ATI_element_array();
+#endif /* GL_ATI_element_array */
+#ifdef GL_ATI_envmap_bumpmap
+ _glewInfo_GL_ATI_envmap_bumpmap();
+#endif /* GL_ATI_envmap_bumpmap */
+#ifdef GL_ATI_fragment_shader
+ _glewInfo_GL_ATI_fragment_shader();
+#endif /* GL_ATI_fragment_shader */
+#ifdef GL_ATI_map_object_buffer
+ _glewInfo_GL_ATI_map_object_buffer();
+#endif /* GL_ATI_map_object_buffer */
+#ifdef GL_ATI_meminfo
+ _glewInfo_GL_ATI_meminfo();
+#endif /* GL_ATI_meminfo */
+#ifdef GL_ATI_pn_triangles
+ _glewInfo_GL_ATI_pn_triangles();
+#endif /* GL_ATI_pn_triangles */
+#ifdef GL_ATI_separate_stencil
+ _glewInfo_GL_ATI_separate_stencil();
+#endif /* GL_ATI_separate_stencil */
+#ifdef GL_ATI_shader_texture_lod
+ _glewInfo_GL_ATI_shader_texture_lod();
+#endif /* GL_ATI_shader_texture_lod */
+#ifdef GL_ATI_text_fragment_shader
+ _glewInfo_GL_ATI_text_fragment_shader();
+#endif /* GL_ATI_text_fragment_shader */
+#ifdef GL_ATI_texture_compression_3dc
+ _glewInfo_GL_ATI_texture_compression_3dc();
+#endif /* GL_ATI_texture_compression_3dc */
+#ifdef GL_ATI_texture_env_combine3
+ _glewInfo_GL_ATI_texture_env_combine3();
+#endif /* GL_ATI_texture_env_combine3 */
+#ifdef GL_ATI_texture_float
+ _glewInfo_GL_ATI_texture_float();
+#endif /* GL_ATI_texture_float */
+#ifdef GL_ATI_texture_mirror_once
+ _glewInfo_GL_ATI_texture_mirror_once();
+#endif /* GL_ATI_texture_mirror_once */
+#ifdef GL_ATI_vertex_array_object
+ _glewInfo_GL_ATI_vertex_array_object();
+#endif /* GL_ATI_vertex_array_object */
+#ifdef GL_ATI_vertex_attrib_array_object
+ _glewInfo_GL_ATI_vertex_attrib_array_object();
+#endif /* GL_ATI_vertex_attrib_array_object */
+#ifdef GL_ATI_vertex_streams
+ _glewInfo_GL_ATI_vertex_streams();
+#endif /* GL_ATI_vertex_streams */
+#ifdef GL_DMP_program_binary
+ _glewInfo_GL_DMP_program_binary();
+#endif /* GL_DMP_program_binary */
+#ifdef GL_DMP_shader_binary
+ _glewInfo_GL_DMP_shader_binary();
+#endif /* GL_DMP_shader_binary */
+#ifdef GL_EXT_422_pixels
+ _glewInfo_GL_EXT_422_pixels();
+#endif /* GL_EXT_422_pixels */
+#ifdef GL_EXT_Cg_shader
+ _glewInfo_GL_EXT_Cg_shader();
+#endif /* GL_EXT_Cg_shader */
+#ifdef GL_EXT_EGL_image_array
+ _glewInfo_GL_EXT_EGL_image_array();
+#endif /* GL_EXT_EGL_image_array */
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ _glewInfo_GL_EXT_EGL_image_external_wrap_modes();
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+#ifdef GL_EXT_EGL_image_storage
+ _glewInfo_GL_EXT_EGL_image_storage();
+#endif /* GL_EXT_EGL_image_storage */
+#ifdef GL_EXT_EGL_image_storage_compression
+ _glewInfo_GL_EXT_EGL_image_storage_compression();
+#endif /* GL_EXT_EGL_image_storage_compression */
+#ifdef GL_EXT_EGL_sync
+ _glewInfo_GL_EXT_EGL_sync();
+#endif /* GL_EXT_EGL_sync */
+#ifdef GL_EXT_YUV_target
+ _glewInfo_GL_EXT_YUV_target();
+#endif /* GL_EXT_YUV_target */
+#ifdef GL_EXT_abgr
+ _glewInfo_GL_EXT_abgr();
+#endif /* GL_EXT_abgr */
+#ifdef GL_EXT_base_instance
+ _glewInfo_GL_EXT_base_instance();
+#endif /* GL_EXT_base_instance */
+#ifdef GL_EXT_bgra
+ _glewInfo_GL_EXT_bgra();
+#endif /* GL_EXT_bgra */
+#ifdef GL_EXT_bindable_uniform
+ _glewInfo_GL_EXT_bindable_uniform();
+#endif /* GL_EXT_bindable_uniform */
+#ifdef GL_EXT_blend_color
+ _glewInfo_GL_EXT_blend_color();
+#endif /* GL_EXT_blend_color */
+#ifdef GL_EXT_blend_equation_separate
+ _glewInfo_GL_EXT_blend_equation_separate();
+#endif /* GL_EXT_blend_equation_separate */
+#ifdef GL_EXT_blend_func_extended
+ _glewInfo_GL_EXT_blend_func_extended();
+#endif /* GL_EXT_blend_func_extended */
+#ifdef GL_EXT_blend_func_separate
+ _glewInfo_GL_EXT_blend_func_separate();
+#endif /* GL_EXT_blend_func_separate */
+#ifdef GL_EXT_blend_logic_op
+ _glewInfo_GL_EXT_blend_logic_op();
+#endif /* GL_EXT_blend_logic_op */
+#ifdef GL_EXT_blend_minmax
+ _glewInfo_GL_EXT_blend_minmax();
+#endif /* GL_EXT_blend_minmax */
+#ifdef GL_EXT_blend_subtract
+ _glewInfo_GL_EXT_blend_subtract();
+#endif /* GL_EXT_blend_subtract */
+#ifdef GL_EXT_buffer_storage
+ _glewInfo_GL_EXT_buffer_storage();
+#endif /* GL_EXT_buffer_storage */
+#ifdef GL_EXT_clear_texture
+ _glewInfo_GL_EXT_clear_texture();
+#endif /* GL_EXT_clear_texture */
+#ifdef GL_EXT_clip_control
+ _glewInfo_GL_EXT_clip_control();
+#endif /* GL_EXT_clip_control */
+#ifdef GL_EXT_clip_cull_distance
+ _glewInfo_GL_EXT_clip_cull_distance();
+#endif /* GL_EXT_clip_cull_distance */
+#ifdef GL_EXT_clip_volume_hint
+ _glewInfo_GL_EXT_clip_volume_hint();
+#endif /* GL_EXT_clip_volume_hint */
+#ifdef GL_EXT_cmyka
+ _glewInfo_GL_EXT_cmyka();
+#endif /* GL_EXT_cmyka */
+#ifdef GL_EXT_color_buffer_float
+ _glewInfo_GL_EXT_color_buffer_float();
+#endif /* GL_EXT_color_buffer_float */
+#ifdef GL_EXT_color_buffer_half_float
+ _glewInfo_GL_EXT_color_buffer_half_float();
+#endif /* GL_EXT_color_buffer_half_float */
+#ifdef GL_EXT_color_subtable
+ _glewInfo_GL_EXT_color_subtable();
+#endif /* GL_EXT_color_subtable */
+#ifdef GL_EXT_compiled_vertex_array
+ _glewInfo_GL_EXT_compiled_vertex_array();
+#endif /* GL_EXT_compiled_vertex_array */
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture();
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+#ifdef GL_EXT_conservative_depth
+ _glewInfo_GL_EXT_conservative_depth();
+#endif /* GL_EXT_conservative_depth */
+#ifdef GL_EXT_convolution
+ _glewInfo_GL_EXT_convolution();
+#endif /* GL_EXT_convolution */
+#ifdef GL_EXT_coordinate_frame
+ _glewInfo_GL_EXT_coordinate_frame();
+#endif /* GL_EXT_coordinate_frame */
+#ifdef GL_EXT_copy_image
+ _glewInfo_GL_EXT_copy_image();
+#endif /* GL_EXT_copy_image */
+#ifdef GL_EXT_copy_texture
+ _glewInfo_GL_EXT_copy_texture();
+#endif /* GL_EXT_copy_texture */
+#ifdef GL_EXT_cull_vertex
+ _glewInfo_GL_EXT_cull_vertex();
+#endif /* GL_EXT_cull_vertex */
+#ifdef GL_EXT_debug_label
+ _glewInfo_GL_EXT_debug_label();
+#endif /* GL_EXT_debug_label */
+#ifdef GL_EXT_debug_marker
+ _glewInfo_GL_EXT_debug_marker();
+#endif /* GL_EXT_debug_marker */
+#ifdef GL_EXT_depth_bounds_test
+ _glewInfo_GL_EXT_depth_bounds_test();
+#endif /* GL_EXT_depth_bounds_test */
+#ifdef GL_EXT_depth_clamp
+ _glewInfo_GL_EXT_depth_clamp();
+#endif /* GL_EXT_depth_clamp */
+#ifdef GL_EXT_direct_state_access
+ _glewInfo_GL_EXT_direct_state_access();
+#endif /* GL_EXT_direct_state_access */
+#ifdef GL_EXT_discard_framebuffer
+ _glewInfo_GL_EXT_discard_framebuffer();
+#endif /* GL_EXT_discard_framebuffer */
+#ifdef GL_EXT_disjoint_timer_query
+ _glewInfo_GL_EXT_disjoint_timer_query();
+#endif /* GL_EXT_disjoint_timer_query */
+#ifdef GL_EXT_draw_buffers
+ _glewInfo_GL_EXT_draw_buffers();
+#endif /* GL_EXT_draw_buffers */
+#ifdef GL_EXT_draw_buffers2
+ _glewInfo_GL_EXT_draw_buffers2();
+#endif /* GL_EXT_draw_buffers2 */
+#ifdef GL_EXT_draw_buffers_indexed
+ _glewInfo_GL_EXT_draw_buffers_indexed();
+#endif /* GL_EXT_draw_buffers_indexed */
+#ifdef GL_EXT_draw_elements_base_vertex
+ _glewInfo_GL_EXT_draw_elements_base_vertex();
+#endif /* GL_EXT_draw_elements_base_vertex */
+#ifdef GL_EXT_draw_instanced
+ _glewInfo_GL_EXT_draw_instanced();
+#endif /* GL_EXT_draw_instanced */
+#ifdef GL_EXT_draw_range_elements
+ _glewInfo_GL_EXT_draw_range_elements();
+#endif /* GL_EXT_draw_range_elements */
+#ifdef GL_EXT_draw_transform_feedback
+ _glewInfo_GL_EXT_draw_transform_feedback();
+#endif /* GL_EXT_draw_transform_feedback */
+#ifdef GL_EXT_external_buffer
+ _glewInfo_GL_EXT_external_buffer();
+#endif /* GL_EXT_external_buffer */
+#ifdef GL_EXT_float_blend
+ _glewInfo_GL_EXT_float_blend();
+#endif /* GL_EXT_float_blend */
+#ifdef GL_EXT_fog_coord
+ _glewInfo_GL_EXT_fog_coord();
+#endif /* GL_EXT_fog_coord */
+#ifdef GL_EXT_frag_depth
+ _glewInfo_GL_EXT_frag_depth();
+#endif /* GL_EXT_frag_depth */
+#ifdef GL_EXT_fragment_lighting
+ _glewInfo_GL_EXT_fragment_lighting();
+#endif /* GL_EXT_fragment_lighting */
+#ifdef GL_EXT_framebuffer_blit
+ _glewInfo_GL_EXT_framebuffer_blit();
+#endif /* GL_EXT_framebuffer_blit */
+#ifdef GL_EXT_framebuffer_multisample
+ _glewInfo_GL_EXT_framebuffer_multisample();
+#endif /* GL_EXT_framebuffer_multisample */
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled();
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+#ifdef GL_EXT_framebuffer_object
+ _glewInfo_GL_EXT_framebuffer_object();
+#endif /* GL_EXT_framebuffer_object */
+#ifdef GL_EXT_framebuffer_sRGB
+ _glewInfo_GL_EXT_framebuffer_sRGB();
+#endif /* GL_EXT_framebuffer_sRGB */
+#ifdef GL_EXT_geometry_point_size
+ _glewInfo_GL_EXT_geometry_point_size();
+#endif /* GL_EXT_geometry_point_size */
+#ifdef GL_EXT_geometry_shader
+ _glewInfo_GL_EXT_geometry_shader();
+#endif /* GL_EXT_geometry_shader */
+#ifdef GL_EXT_geometry_shader4
+ _glewInfo_GL_EXT_geometry_shader4();
+#endif /* GL_EXT_geometry_shader4 */
+#ifdef GL_EXT_gpu_program_parameters
+ _glewInfo_GL_EXT_gpu_program_parameters();
+#endif /* GL_EXT_gpu_program_parameters */
+#ifdef GL_EXT_gpu_shader4
+ _glewInfo_GL_EXT_gpu_shader4();
+#endif /* GL_EXT_gpu_shader4 */
+#ifdef GL_EXT_gpu_shader5
+ _glewInfo_GL_EXT_gpu_shader5();
+#endif /* GL_EXT_gpu_shader5 */
+#ifdef GL_EXT_histogram
+ _glewInfo_GL_EXT_histogram();
+#endif /* GL_EXT_histogram */
+#ifdef GL_EXT_index_array_formats
+ _glewInfo_GL_EXT_index_array_formats();
+#endif /* GL_EXT_index_array_formats */
+#ifdef GL_EXT_index_func
+ _glewInfo_GL_EXT_index_func();
+#endif /* GL_EXT_index_func */
+#ifdef GL_EXT_index_material
+ _glewInfo_GL_EXT_index_material();
+#endif /* GL_EXT_index_material */
+#ifdef GL_EXT_index_texture
+ _glewInfo_GL_EXT_index_texture();
+#endif /* GL_EXT_index_texture */
+#ifdef GL_EXT_instanced_arrays
+ _glewInfo_GL_EXT_instanced_arrays();
+#endif /* GL_EXT_instanced_arrays */
+#ifdef GL_EXT_light_texture
+ _glewInfo_GL_EXT_light_texture();
+#endif /* GL_EXT_light_texture */
+#ifdef GL_EXT_map_buffer_range
+ _glewInfo_GL_EXT_map_buffer_range();
+#endif /* GL_EXT_map_buffer_range */
+#ifdef GL_EXT_memory_object
+ _glewInfo_GL_EXT_memory_object();
+#endif /* GL_EXT_memory_object */
+#ifdef GL_EXT_memory_object_fd
+ _glewInfo_GL_EXT_memory_object_fd();
+#endif /* GL_EXT_memory_object_fd */
+#ifdef GL_EXT_memory_object_win32
+ _glewInfo_GL_EXT_memory_object_win32();
+#endif /* GL_EXT_memory_object_win32 */
+#ifdef GL_EXT_misc_attribute
+ _glewInfo_GL_EXT_misc_attribute();
+#endif /* GL_EXT_misc_attribute */
+#ifdef GL_EXT_multi_draw_arrays
+ _glewInfo_GL_EXT_multi_draw_arrays();
+#endif /* GL_EXT_multi_draw_arrays */
+#ifdef GL_EXT_multi_draw_indirect
+ _glewInfo_GL_EXT_multi_draw_indirect();
+#endif /* GL_EXT_multi_draw_indirect */
+#ifdef GL_EXT_multiple_textures
+ _glewInfo_GL_EXT_multiple_textures();
+#endif /* GL_EXT_multiple_textures */
+#ifdef GL_EXT_multisample
+ _glewInfo_GL_EXT_multisample();
+#endif /* GL_EXT_multisample */
+#ifdef GL_EXT_multisample_compatibility
+ _glewInfo_GL_EXT_multisample_compatibility();
+#endif /* GL_EXT_multisample_compatibility */
+#ifdef GL_EXT_multisampled_render_to_texture
+ _glewInfo_GL_EXT_multisampled_render_to_texture();
+#endif /* GL_EXT_multisampled_render_to_texture */
+#ifdef GL_EXT_multisampled_render_to_texture2
+ _glewInfo_GL_EXT_multisampled_render_to_texture2();
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+#ifdef GL_EXT_multiview_draw_buffers
+ _glewInfo_GL_EXT_multiview_draw_buffers();
+#endif /* GL_EXT_multiview_draw_buffers */
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ _glewInfo_GL_EXT_multiview_tessellation_geometry_shader();
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+#ifdef GL_EXT_multiview_texture_multisample
+ _glewInfo_GL_EXT_multiview_texture_multisample();
+#endif /* GL_EXT_multiview_texture_multisample */
+#ifdef GL_EXT_multiview_timer_query
+ _glewInfo_GL_EXT_multiview_timer_query();
+#endif /* GL_EXT_multiview_timer_query */
+#ifdef GL_EXT_occlusion_query_boolean
+ _glewInfo_GL_EXT_occlusion_query_boolean();
+#endif /* GL_EXT_occlusion_query_boolean */
+#ifdef GL_EXT_packed_depth_stencil
+ _glewInfo_GL_EXT_packed_depth_stencil();
+#endif /* GL_EXT_packed_depth_stencil */
+#ifdef GL_EXT_packed_float
+ _glewInfo_GL_EXT_packed_float();
+#endif /* GL_EXT_packed_float */
+#ifdef GL_EXT_packed_pixels
+ _glewInfo_GL_EXT_packed_pixels();
+#endif /* GL_EXT_packed_pixels */
+#ifdef GL_EXT_paletted_texture
+ _glewInfo_GL_EXT_paletted_texture();
+#endif /* GL_EXT_paletted_texture */
+#ifdef GL_EXT_pixel_buffer_object
+ _glewInfo_GL_EXT_pixel_buffer_object();
+#endif /* GL_EXT_pixel_buffer_object */
+#ifdef GL_EXT_pixel_transform
+ _glewInfo_GL_EXT_pixel_transform();
+#endif /* GL_EXT_pixel_transform */
+#ifdef GL_EXT_pixel_transform_color_table
+ _glewInfo_GL_EXT_pixel_transform_color_table();
+#endif /* GL_EXT_pixel_transform_color_table */
+#ifdef GL_EXT_point_parameters
+ _glewInfo_GL_EXT_point_parameters();
+#endif /* GL_EXT_point_parameters */
+#ifdef GL_EXT_polygon_offset
+ _glewInfo_GL_EXT_polygon_offset();
+#endif /* GL_EXT_polygon_offset */
+#ifdef GL_EXT_polygon_offset_clamp
+ _glewInfo_GL_EXT_polygon_offset_clamp();
+#endif /* GL_EXT_polygon_offset_clamp */
+#ifdef GL_EXT_post_depth_coverage
+ _glewInfo_GL_EXT_post_depth_coverage();
+#endif /* GL_EXT_post_depth_coverage */
+#ifdef GL_EXT_primitive_bounding_box
+ _glewInfo_GL_EXT_primitive_bounding_box();
+#endif /* GL_EXT_primitive_bounding_box */
+#ifdef GL_EXT_protected_textures
+ _glewInfo_GL_EXT_protected_textures();
+#endif /* GL_EXT_protected_textures */
+#ifdef GL_EXT_provoking_vertex
+ _glewInfo_GL_EXT_provoking_vertex();
+#endif /* GL_EXT_provoking_vertex */
+#ifdef GL_EXT_pvrtc_sRGB
+ _glewInfo_GL_EXT_pvrtc_sRGB();
+#endif /* GL_EXT_pvrtc_sRGB */
+#ifdef GL_EXT_raster_multisample
+ _glewInfo_GL_EXT_raster_multisample();
+#endif /* GL_EXT_raster_multisample */
+#ifdef GL_EXT_read_format_bgra
+ _glewInfo_GL_EXT_read_format_bgra();
+#endif /* GL_EXT_read_format_bgra */
+#ifdef GL_EXT_render_snorm
+ _glewInfo_GL_EXT_render_snorm();
+#endif /* GL_EXT_render_snorm */
+#ifdef GL_EXT_rescale_normal
+ _glewInfo_GL_EXT_rescale_normal();
+#endif /* GL_EXT_rescale_normal */
+#ifdef GL_EXT_robustness
+ _glewInfo_GL_EXT_robustness();
+#endif /* GL_EXT_robustness */
+#ifdef GL_EXT_sRGB
+ _glewInfo_GL_EXT_sRGB();
+#endif /* GL_EXT_sRGB */
+#ifdef GL_EXT_sRGB_write_control
+ _glewInfo_GL_EXT_sRGB_write_control();
+#endif /* GL_EXT_sRGB_write_control */
+#ifdef GL_EXT_scene_marker
+ _glewInfo_GL_EXT_scene_marker();
+#endif /* GL_EXT_scene_marker */
+#ifdef GL_EXT_secondary_color
+ _glewInfo_GL_EXT_secondary_color();
+#endif /* GL_EXT_secondary_color */
+#ifdef GL_EXT_semaphore
+ _glewInfo_GL_EXT_semaphore();
+#endif /* GL_EXT_semaphore */
+#ifdef GL_EXT_semaphore_fd
+ _glewInfo_GL_EXT_semaphore_fd();
+#endif /* GL_EXT_semaphore_fd */
+#ifdef GL_EXT_semaphore_win32
+ _glewInfo_GL_EXT_semaphore_win32();
+#endif /* GL_EXT_semaphore_win32 */
+#ifdef GL_EXT_separate_depth_stencil
+ _glewInfo_GL_EXT_separate_depth_stencil();
+#endif /* GL_EXT_separate_depth_stencil */
+#ifdef GL_EXT_separate_shader_objects
+ _glewInfo_GL_EXT_separate_shader_objects();
+#endif /* GL_EXT_separate_shader_objects */
+#ifdef GL_EXT_separate_specular_color
+ _glewInfo_GL_EXT_separate_specular_color();
+#endif /* GL_EXT_separate_specular_color */
+#ifdef GL_EXT_shader_framebuffer_fetch
+ _glewInfo_GL_EXT_shader_framebuffer_fetch();
+#endif /* GL_EXT_shader_framebuffer_fetch */
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ _glewInfo_GL_EXT_shader_framebuffer_fetch_non_coherent();
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+#ifdef GL_EXT_shader_group_vote
+ _glewInfo_GL_EXT_shader_group_vote();
+#endif /* GL_EXT_shader_group_vote */
+#ifdef GL_EXT_shader_image_load_formatted
+ _glewInfo_GL_EXT_shader_image_load_formatted();
+#endif /* GL_EXT_shader_image_load_formatted */
+#ifdef GL_EXT_shader_image_load_store
+ _glewInfo_GL_EXT_shader_image_load_store();
+#endif /* GL_EXT_shader_image_load_store */
+#ifdef GL_EXT_shader_implicit_conversions
+ _glewInfo_GL_EXT_shader_implicit_conversions();
+#endif /* GL_EXT_shader_implicit_conversions */
+#ifdef GL_EXT_shader_integer_mix
+ _glewInfo_GL_EXT_shader_integer_mix();
+#endif /* GL_EXT_shader_integer_mix */
+#ifdef GL_EXT_shader_io_blocks
+ _glewInfo_GL_EXT_shader_io_blocks();
+#endif /* GL_EXT_shader_io_blocks */
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ _glewInfo_GL_EXT_shader_non_constant_global_initializers();
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+#ifdef GL_EXT_shader_pixel_local_storage
+ _glewInfo_GL_EXT_shader_pixel_local_storage();
+#endif /* GL_EXT_shader_pixel_local_storage */
+#ifdef GL_EXT_shader_pixel_local_storage2
+ _glewInfo_GL_EXT_shader_pixel_local_storage2();
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+#ifdef GL_EXT_shader_samples_identical
+ _glewInfo_GL_EXT_shader_samples_identical();
+#endif /* GL_EXT_shader_samples_identical */
+#ifdef GL_EXT_shader_texture_lod
+ _glewInfo_GL_EXT_shader_texture_lod();
+#endif /* GL_EXT_shader_texture_lod */
+#ifdef GL_EXT_shadow_funcs
+ _glewInfo_GL_EXT_shadow_funcs();
+#endif /* GL_EXT_shadow_funcs */
+#ifdef GL_EXT_shadow_samplers
+ _glewInfo_GL_EXT_shadow_samplers();
+#endif /* GL_EXT_shadow_samplers */
+#ifdef GL_EXT_shared_texture_palette
+ _glewInfo_GL_EXT_shared_texture_palette();
+#endif /* GL_EXT_shared_texture_palette */
+#ifdef GL_EXT_sparse_texture
+ _glewInfo_GL_EXT_sparse_texture();
+#endif /* GL_EXT_sparse_texture */
+#ifdef GL_EXT_sparse_texture2
+ _glewInfo_GL_EXT_sparse_texture2();
+#endif /* GL_EXT_sparse_texture2 */
+#ifdef GL_EXT_static_vertex_array
+ _glewInfo_GL_EXT_static_vertex_array();
+#endif /* GL_EXT_static_vertex_array */
+#ifdef GL_EXT_stencil_clear_tag
+ _glewInfo_GL_EXT_stencil_clear_tag();
+#endif /* GL_EXT_stencil_clear_tag */
+#ifdef GL_EXT_stencil_two_side
+ _glewInfo_GL_EXT_stencil_two_side();
+#endif /* GL_EXT_stencil_two_side */
+#ifdef GL_EXT_stencil_wrap
+ _glewInfo_GL_EXT_stencil_wrap();
+#endif /* GL_EXT_stencil_wrap */
+#ifdef GL_EXT_subtexture
+ _glewInfo_GL_EXT_subtexture();
+#endif /* GL_EXT_subtexture */
+#ifdef GL_EXT_tessellation_point_size
+ _glewInfo_GL_EXT_tessellation_point_size();
+#endif /* GL_EXT_tessellation_point_size */
+#ifdef GL_EXT_tessellation_shader
+ _glewInfo_GL_EXT_tessellation_shader();
+#endif /* GL_EXT_tessellation_shader */
+#ifdef GL_EXT_texture
+ _glewInfo_GL_EXT_texture();
+#endif /* GL_EXT_texture */
+#ifdef GL_EXT_texture3D
+ _glewInfo_GL_EXT_texture3D();
+#endif /* GL_EXT_texture3D */
+#ifdef GL_EXT_texture_array
+ _glewInfo_GL_EXT_texture_array();
+#endif /* GL_EXT_texture_array */
+#ifdef GL_EXT_texture_border_clamp
+ _glewInfo_GL_EXT_texture_border_clamp();
+#endif /* GL_EXT_texture_border_clamp */
+#ifdef GL_EXT_texture_buffer
+ _glewInfo_GL_EXT_texture_buffer();
+#endif /* GL_EXT_texture_buffer */
+#ifdef GL_EXT_texture_buffer_object
+ _glewInfo_GL_EXT_texture_buffer_object();
+#endif /* GL_EXT_texture_buffer_object */
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ _glewInfo_GL_EXT_texture_compression_astc_decode_mode();
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5();
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+#ifdef GL_EXT_texture_compression_bptc
+ _glewInfo_GL_EXT_texture_compression_bptc();
+#endif /* GL_EXT_texture_compression_bptc */
+#ifdef GL_EXT_texture_compression_dxt1
+ _glewInfo_GL_EXT_texture_compression_dxt1();
+#endif /* GL_EXT_texture_compression_dxt1 */
+#ifdef GL_EXT_texture_compression_latc
+ _glewInfo_GL_EXT_texture_compression_latc();
+#endif /* GL_EXT_texture_compression_latc */
+#ifdef GL_EXT_texture_compression_rgtc
+ _glewInfo_GL_EXT_texture_compression_rgtc();
+#endif /* GL_EXT_texture_compression_rgtc */
+#ifdef GL_EXT_texture_compression_s3tc
+ _glewInfo_GL_EXT_texture_compression_s3tc();
+#endif /* GL_EXT_texture_compression_s3tc */
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ _glewInfo_GL_EXT_texture_compression_s3tc_srgb();
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+#ifdef GL_EXT_texture_cube_map
+ _glewInfo_GL_EXT_texture_cube_map();
+#endif /* GL_EXT_texture_cube_map */
+#ifdef GL_EXT_texture_cube_map_array
+ _glewInfo_GL_EXT_texture_cube_map_array();
+#endif /* GL_EXT_texture_cube_map_array */
+#ifdef GL_EXT_texture_edge_clamp
+ _glewInfo_GL_EXT_texture_edge_clamp();
+#endif /* GL_EXT_texture_edge_clamp */
+#ifdef GL_EXT_texture_env
+ _glewInfo_GL_EXT_texture_env();
+#endif /* GL_EXT_texture_env */
+#ifdef GL_EXT_texture_env_add
+ _glewInfo_GL_EXT_texture_env_add();
+#endif /* GL_EXT_texture_env_add */
+#ifdef GL_EXT_texture_env_combine
+ _glewInfo_GL_EXT_texture_env_combine();
+#endif /* GL_EXT_texture_env_combine */
+#ifdef GL_EXT_texture_env_dot3
+ _glewInfo_GL_EXT_texture_env_dot3();
+#endif /* GL_EXT_texture_env_dot3 */
+#ifdef GL_EXT_texture_filter_anisotropic
+ _glewInfo_GL_EXT_texture_filter_anisotropic();
+#endif /* GL_EXT_texture_filter_anisotropic */
+#ifdef GL_EXT_texture_filter_minmax
+ _glewInfo_GL_EXT_texture_filter_minmax();
+#endif /* GL_EXT_texture_filter_minmax */
+#ifdef GL_EXT_texture_format_BGRA8888
+ _glewInfo_GL_EXT_texture_format_BGRA8888();
+#endif /* GL_EXT_texture_format_BGRA8888 */
+#ifdef GL_EXT_texture_format_sRGB_override
+ _glewInfo_GL_EXT_texture_format_sRGB_override();
+#endif /* GL_EXT_texture_format_sRGB_override */
+#ifdef GL_EXT_texture_integer
+ _glewInfo_GL_EXT_texture_integer();
+#endif /* GL_EXT_texture_integer */
+#ifdef GL_EXT_texture_lod_bias
+ _glewInfo_GL_EXT_texture_lod_bias();
+#endif /* GL_EXT_texture_lod_bias */
+#ifdef GL_EXT_texture_mirror_clamp
+ _glewInfo_GL_EXT_texture_mirror_clamp();
+#endif /* GL_EXT_texture_mirror_clamp */
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ _glewInfo_GL_EXT_texture_mirror_clamp_to_edge();
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+#ifdef GL_EXT_texture_norm16
+ _glewInfo_GL_EXT_texture_norm16();
+#endif /* GL_EXT_texture_norm16 */
+#ifdef GL_EXT_texture_object
+ _glewInfo_GL_EXT_texture_object();
+#endif /* GL_EXT_texture_object */
+#ifdef GL_EXT_texture_perturb_normal
+ _glewInfo_GL_EXT_texture_perturb_normal();
+#endif /* GL_EXT_texture_perturb_normal */
+#ifdef GL_EXT_texture_query_lod
+ _glewInfo_GL_EXT_texture_query_lod();
+#endif /* GL_EXT_texture_query_lod */
+#ifdef GL_EXT_texture_rectangle
+ _glewInfo_GL_EXT_texture_rectangle();
+#endif /* GL_EXT_texture_rectangle */
+#ifdef GL_EXT_texture_rg
+ _glewInfo_GL_EXT_texture_rg();
+#endif /* GL_EXT_texture_rg */
+#ifdef GL_EXT_texture_sRGB
+ _glewInfo_GL_EXT_texture_sRGB();
+#endif /* GL_EXT_texture_sRGB */
+#ifdef GL_EXT_texture_sRGB_R8
+ _glewInfo_GL_EXT_texture_sRGB_R8();
+#endif /* GL_EXT_texture_sRGB_R8 */
+#ifdef GL_EXT_texture_sRGB_RG8
+ _glewInfo_GL_EXT_texture_sRGB_RG8();
+#endif /* GL_EXT_texture_sRGB_RG8 */
+#ifdef GL_EXT_texture_sRGB_decode
+ _glewInfo_GL_EXT_texture_sRGB_decode();
+#endif /* GL_EXT_texture_sRGB_decode */
+#ifdef GL_EXT_texture_shadow_lod
+ _glewInfo_GL_EXT_texture_shadow_lod();
+#endif /* GL_EXT_texture_shadow_lod */
+#ifdef GL_EXT_texture_shared_exponent
+ _glewInfo_GL_EXT_texture_shared_exponent();
+#endif /* GL_EXT_texture_shared_exponent */
+#ifdef GL_EXT_texture_snorm
+ _glewInfo_GL_EXT_texture_snorm();
+#endif /* GL_EXT_texture_snorm */
+#ifdef GL_EXT_texture_storage
+ _glewInfo_GL_EXT_texture_storage();
+#endif /* GL_EXT_texture_storage */
+#ifdef GL_EXT_texture_storage_compression
+ _glewInfo_GL_EXT_texture_storage_compression();
+#endif /* GL_EXT_texture_storage_compression */
+#ifdef GL_EXT_texture_swizzle
+ _glewInfo_GL_EXT_texture_swizzle();
+#endif /* GL_EXT_texture_swizzle */
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ _glewInfo_GL_EXT_texture_type_2_10_10_10_REV();
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+#ifdef GL_EXT_texture_view
+ _glewInfo_GL_EXT_texture_view();
+#endif /* GL_EXT_texture_view */
+#ifdef GL_EXT_timer_query
+ _glewInfo_GL_EXT_timer_query();
+#endif /* GL_EXT_timer_query */
+#ifdef GL_EXT_transform_feedback
+ _glewInfo_GL_EXT_transform_feedback();
+#endif /* GL_EXT_transform_feedback */
+#ifdef GL_EXT_unpack_subimage
+ _glewInfo_GL_EXT_unpack_subimage();
+#endif /* GL_EXT_unpack_subimage */
+#ifdef GL_EXT_vertex_array
+ _glewInfo_GL_EXT_vertex_array();
+#endif /* GL_EXT_vertex_array */
+#ifdef GL_EXT_vertex_array_bgra
+ _glewInfo_GL_EXT_vertex_array_bgra();
+#endif /* GL_EXT_vertex_array_bgra */
+#ifdef GL_EXT_vertex_array_setXXX
+ _glewInfo_GL_EXT_vertex_array_setXXX();
+#endif /* GL_EXT_vertex_array_setXXX */
+#ifdef GL_EXT_vertex_attrib_64bit
+ _glewInfo_GL_EXT_vertex_attrib_64bit();
+#endif /* GL_EXT_vertex_attrib_64bit */
+#ifdef GL_EXT_vertex_shader
+ _glewInfo_GL_EXT_vertex_shader();
+#endif /* GL_EXT_vertex_shader */
+#ifdef GL_EXT_vertex_weighting
+ _glewInfo_GL_EXT_vertex_weighting();
+#endif /* GL_EXT_vertex_weighting */
+#ifdef GL_EXT_win32_keyed_mutex
+ _glewInfo_GL_EXT_win32_keyed_mutex();
+#endif /* GL_EXT_win32_keyed_mutex */
+#ifdef GL_EXT_window_rectangles
+ _glewInfo_GL_EXT_window_rectangles();
+#endif /* GL_EXT_window_rectangles */
+#ifdef GL_EXT_x11_sync_object
+ _glewInfo_GL_EXT_x11_sync_object();
+#endif /* GL_EXT_x11_sync_object */
+#ifdef GL_FJ_shader_binary_GCCSO
+ _glewInfo_GL_FJ_shader_binary_GCCSO();
+#endif /* GL_FJ_shader_binary_GCCSO */
+#ifdef GL_GREMEDY_frame_terminator
+ _glewInfo_GL_GREMEDY_frame_terminator();
+#endif /* GL_GREMEDY_frame_terminator */
+#ifdef GL_GREMEDY_string_marker
+ _glewInfo_GL_GREMEDY_string_marker();
+#endif /* GL_GREMEDY_string_marker */
+#ifdef GL_HP_convolution_border_modes
+ _glewInfo_GL_HP_convolution_border_modes();
+#endif /* GL_HP_convolution_border_modes */
+#ifdef GL_HP_image_transform
+ _glewInfo_GL_HP_image_transform();
+#endif /* GL_HP_image_transform */
+#ifdef GL_HP_occlusion_test
+ _glewInfo_GL_HP_occlusion_test();
+#endif /* GL_HP_occlusion_test */
+#ifdef GL_HP_texture_lighting
+ _glewInfo_GL_HP_texture_lighting();
+#endif /* GL_HP_texture_lighting */
+#ifdef GL_IBM_cull_vertex
+ _glewInfo_GL_IBM_cull_vertex();
+#endif /* GL_IBM_cull_vertex */
+#ifdef GL_IBM_multimode_draw_arrays
+ _glewInfo_GL_IBM_multimode_draw_arrays();
+#endif /* GL_IBM_multimode_draw_arrays */
+#ifdef GL_IBM_rasterpos_clip
+ _glewInfo_GL_IBM_rasterpos_clip();
+#endif /* GL_IBM_rasterpos_clip */
+#ifdef GL_IBM_static_data
+ _glewInfo_GL_IBM_static_data();
+#endif /* GL_IBM_static_data */
+#ifdef GL_IBM_texture_mirrored_repeat
+ _glewInfo_GL_IBM_texture_mirrored_repeat();
+#endif /* GL_IBM_texture_mirrored_repeat */
+#ifdef GL_IBM_vertex_array_lists
+ _glewInfo_GL_IBM_vertex_array_lists();
+#endif /* GL_IBM_vertex_array_lists */
+#ifdef GL_IMG_bindless_texture
+ _glewInfo_GL_IMG_bindless_texture();
+#endif /* GL_IMG_bindless_texture */
+#ifdef GL_IMG_framebuffer_downsample
+ _glewInfo_GL_IMG_framebuffer_downsample();
+#endif /* GL_IMG_framebuffer_downsample */
+#ifdef GL_IMG_multisampled_render_to_texture
+ _glewInfo_GL_IMG_multisampled_render_to_texture();
+#endif /* GL_IMG_multisampled_render_to_texture */
+#ifdef GL_IMG_program_binary
+ _glewInfo_GL_IMG_program_binary();
+#endif /* GL_IMG_program_binary */
+#ifdef GL_IMG_read_format
+ _glewInfo_GL_IMG_read_format();
+#endif /* GL_IMG_read_format */
+#ifdef GL_IMG_shader_binary
+ _glewInfo_GL_IMG_shader_binary();
+#endif /* GL_IMG_shader_binary */
+#ifdef GL_IMG_texture_compression_pvrtc
+ _glewInfo_GL_IMG_texture_compression_pvrtc();
+#endif /* GL_IMG_texture_compression_pvrtc */
+#ifdef GL_IMG_texture_compression_pvrtc2
+ _glewInfo_GL_IMG_texture_compression_pvrtc2();
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ _glewInfo_GL_IMG_texture_env_enhanced_fixed_function();
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+#ifdef GL_IMG_texture_filter_cubic
+ _glewInfo_GL_IMG_texture_filter_cubic();
+#endif /* GL_IMG_texture_filter_cubic */
+#ifdef GL_IMG_tile_region_protection
+ _glewInfo_GL_IMG_tile_region_protection();
+#endif /* GL_IMG_tile_region_protection */
+#ifdef GL_INGR_color_clamp
+ _glewInfo_GL_INGR_color_clamp();
+#endif /* GL_INGR_color_clamp */
+#ifdef GL_INGR_interlace_read
+ _glewInfo_GL_INGR_interlace_read();
+#endif /* GL_INGR_interlace_read */
+#ifdef GL_INTEL_blackhole_render
+ _glewInfo_GL_INTEL_blackhole_render();
+#endif /* GL_INTEL_blackhole_render */
+#ifdef GL_INTEL_conservative_rasterization
+ _glewInfo_GL_INTEL_conservative_rasterization();
+#endif /* GL_INTEL_conservative_rasterization */
+#ifdef GL_INTEL_fragment_shader_ordering
+ _glewInfo_GL_INTEL_fragment_shader_ordering();
+#endif /* GL_INTEL_fragment_shader_ordering */
+#ifdef GL_INTEL_framebuffer_CMAA
+ _glewInfo_GL_INTEL_framebuffer_CMAA();
+#endif /* GL_INTEL_framebuffer_CMAA */
+#ifdef GL_INTEL_map_texture
+ _glewInfo_GL_INTEL_map_texture();
+#endif /* GL_INTEL_map_texture */
+#ifdef GL_INTEL_parallel_arrays
+ _glewInfo_GL_INTEL_parallel_arrays();
+#endif /* GL_INTEL_parallel_arrays */
+#ifdef GL_INTEL_performance_query
+ _glewInfo_GL_INTEL_performance_query();
+#endif /* GL_INTEL_performance_query */
+#ifdef GL_INTEL_shader_integer_functions2
+ _glewInfo_GL_INTEL_shader_integer_functions2();
+#endif /* GL_INTEL_shader_integer_functions2 */
+#ifdef GL_INTEL_texture_scissor
+ _glewInfo_GL_INTEL_texture_scissor();
+#endif /* GL_INTEL_texture_scissor */
+#ifdef GL_KHR_blend_equation_advanced
+ _glewInfo_GL_KHR_blend_equation_advanced();
+#endif /* GL_KHR_blend_equation_advanced */
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ _glewInfo_GL_KHR_blend_equation_advanced_coherent();
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+#ifdef GL_KHR_context_flush_control
+ _glewInfo_GL_KHR_context_flush_control();
+#endif /* GL_KHR_context_flush_control */
+#ifdef GL_KHR_debug
+ _glewInfo_GL_KHR_debug();
+#endif /* GL_KHR_debug */
+#ifdef GL_KHR_no_error
+ _glewInfo_GL_KHR_no_error();
+#endif /* GL_KHR_no_error */
+#ifdef GL_KHR_parallel_shader_compile
+ _glewInfo_GL_KHR_parallel_shader_compile();
+#endif /* GL_KHR_parallel_shader_compile */
+#ifdef GL_KHR_robust_buffer_access_behavior
+ _glewInfo_GL_KHR_robust_buffer_access_behavior();
+#endif /* GL_KHR_robust_buffer_access_behavior */
+#ifdef GL_KHR_robustness
+ _glewInfo_GL_KHR_robustness();
+#endif /* GL_KHR_robustness */
+#ifdef GL_KHR_shader_subgroup
+ _glewInfo_GL_KHR_shader_subgroup();
+#endif /* GL_KHR_shader_subgroup */
+#ifdef GL_KHR_texture_compression_astc_hdr
+ _glewInfo_GL_KHR_texture_compression_astc_hdr();
+#endif /* GL_KHR_texture_compression_astc_hdr */
+#ifdef GL_KHR_texture_compression_astc_ldr
+ _glewInfo_GL_KHR_texture_compression_astc_ldr();
+#endif /* GL_KHR_texture_compression_astc_ldr */
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ _glewInfo_GL_KHR_texture_compression_astc_sliced_3d();
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+#ifdef GL_KTX_buffer_region
+ _glewInfo_GL_KTX_buffer_region();
+#endif /* GL_KTX_buffer_region */
+#ifdef GL_MESAX_texture_stack
+ _glewInfo_GL_MESAX_texture_stack();
+#endif /* GL_MESAX_texture_stack */
+#ifdef GL_MESA_bgra
+ _glewInfo_GL_MESA_bgra();
+#endif /* GL_MESA_bgra */
+#ifdef GL_MESA_framebuffer_flip_x
+ _glewInfo_GL_MESA_framebuffer_flip_x();
+#endif /* GL_MESA_framebuffer_flip_x */
+#ifdef GL_MESA_framebuffer_flip_y
+ _glewInfo_GL_MESA_framebuffer_flip_y();
+#endif /* GL_MESA_framebuffer_flip_y */
+#ifdef GL_MESA_framebuffer_swap_xy
+ _glewInfo_GL_MESA_framebuffer_swap_xy();
+#endif /* GL_MESA_framebuffer_swap_xy */
+#ifdef GL_MESA_pack_invert
+ _glewInfo_GL_MESA_pack_invert();
+#endif /* GL_MESA_pack_invert */
+#ifdef GL_MESA_program_binary_formats
+ _glewInfo_GL_MESA_program_binary_formats();
+#endif /* GL_MESA_program_binary_formats */
+#ifdef GL_MESA_resize_buffers
+ _glewInfo_GL_MESA_resize_buffers();
+#endif /* GL_MESA_resize_buffers */
+#ifdef GL_MESA_shader_integer_functions
+ _glewInfo_GL_MESA_shader_integer_functions();
+#endif /* GL_MESA_shader_integer_functions */
+#ifdef GL_MESA_tile_raster_order
+ _glewInfo_GL_MESA_tile_raster_order();
+#endif /* GL_MESA_tile_raster_order */
+#ifdef GL_MESA_window_pos
+ _glewInfo_GL_MESA_window_pos();
+#endif /* GL_MESA_window_pos */
+#ifdef GL_MESA_ycbcr_texture
+ _glewInfo_GL_MESA_ycbcr_texture();
+#endif /* GL_MESA_ycbcr_texture */
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers();
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+#ifdef GL_NVX_conditional_render
+ _glewInfo_GL_NVX_conditional_render();
+#endif /* GL_NVX_conditional_render */
+#ifdef GL_NVX_gpu_memory_info
+ _glewInfo_GL_NVX_gpu_memory_info();
+#endif /* GL_NVX_gpu_memory_info */
+#ifdef GL_NVX_gpu_multicast2
+ _glewInfo_GL_NVX_gpu_multicast2();
+#endif /* GL_NVX_gpu_multicast2 */
+#ifdef GL_NVX_linked_gpu_multicast
+ _glewInfo_GL_NVX_linked_gpu_multicast();
+#endif /* GL_NVX_linked_gpu_multicast */
+#ifdef GL_NVX_progress_fence
+ _glewInfo_GL_NVX_progress_fence();
+#endif /* GL_NVX_progress_fence */
+#ifdef GL_NV_3dvision_settings
+ _glewInfo_GL_NV_3dvision_settings();
+#endif /* GL_NV_3dvision_settings */
+#ifdef GL_NV_EGL_stream_consumer_external
+ _glewInfo_GL_NV_EGL_stream_consumer_external();
+#endif /* GL_NV_EGL_stream_consumer_external */
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ _glewInfo_GL_NV_alpha_to_coverage_dither_control();
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+#ifdef GL_NV_bgr
+ _glewInfo_GL_NV_bgr();
+#endif /* GL_NV_bgr */
+#ifdef GL_NV_bindless_multi_draw_indirect
+ _glewInfo_GL_NV_bindless_multi_draw_indirect();
+#endif /* GL_NV_bindless_multi_draw_indirect */
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ _glewInfo_GL_NV_bindless_multi_draw_indirect_count();
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+#ifdef GL_NV_bindless_texture
+ _glewInfo_GL_NV_bindless_texture();
+#endif /* GL_NV_bindless_texture */
+#ifdef GL_NV_blend_equation_advanced
+ _glewInfo_GL_NV_blend_equation_advanced();
+#endif /* GL_NV_blend_equation_advanced */
+#ifdef GL_NV_blend_equation_advanced_coherent
+ _glewInfo_GL_NV_blend_equation_advanced_coherent();
+#endif /* GL_NV_blend_equation_advanced_coherent */
+#ifdef GL_NV_blend_minmax_factor
+ _glewInfo_GL_NV_blend_minmax_factor();
+#endif /* GL_NV_blend_minmax_factor */
+#ifdef GL_NV_blend_square
+ _glewInfo_GL_NV_blend_square();
+#endif /* GL_NV_blend_square */
+#ifdef GL_NV_clip_space_w_scaling
+ _glewInfo_GL_NV_clip_space_w_scaling();
+#endif /* GL_NV_clip_space_w_scaling */
+#ifdef GL_NV_command_list
+ _glewInfo_GL_NV_command_list();
+#endif /* GL_NV_command_list */
+#ifdef GL_NV_compute_program5
+ _glewInfo_GL_NV_compute_program5();
+#endif /* GL_NV_compute_program5 */
+#ifdef GL_NV_compute_shader_derivatives
+ _glewInfo_GL_NV_compute_shader_derivatives();
+#endif /* GL_NV_compute_shader_derivatives */
+#ifdef GL_NV_conditional_render
+ _glewInfo_GL_NV_conditional_render();
+#endif /* GL_NV_conditional_render */
+#ifdef GL_NV_conservative_raster
+ _glewInfo_GL_NV_conservative_raster();
+#endif /* GL_NV_conservative_raster */
+#ifdef GL_NV_conservative_raster_dilate
+ _glewInfo_GL_NV_conservative_raster_dilate();
+#endif /* GL_NV_conservative_raster_dilate */
+#ifdef GL_NV_conservative_raster_pre_snap
+ _glewInfo_GL_NV_conservative_raster_pre_snap();
+#endif /* GL_NV_conservative_raster_pre_snap */
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ _glewInfo_GL_NV_conservative_raster_pre_snap_triangles();
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+#ifdef GL_NV_conservative_raster_underestimation
+ _glewInfo_GL_NV_conservative_raster_underestimation();
+#endif /* GL_NV_conservative_raster_underestimation */
+#ifdef GL_NV_copy_buffer
+ _glewInfo_GL_NV_copy_buffer();
+#endif /* GL_NV_copy_buffer */
+#ifdef GL_NV_copy_depth_to_color
+ _glewInfo_GL_NV_copy_depth_to_color();
+#endif /* GL_NV_copy_depth_to_color */
+#ifdef GL_NV_copy_image
+ _glewInfo_GL_NV_copy_image();
+#endif /* GL_NV_copy_image */
+#ifdef GL_NV_deep_texture3D
+ _glewInfo_GL_NV_deep_texture3D();
+#endif /* GL_NV_deep_texture3D */
+#ifdef GL_NV_depth_buffer_float
+ _glewInfo_GL_NV_depth_buffer_float();
+#endif /* GL_NV_depth_buffer_float */
+#ifdef GL_NV_depth_clamp
+ _glewInfo_GL_NV_depth_clamp();
+#endif /* GL_NV_depth_clamp */
+#ifdef GL_NV_depth_nonlinear
+ _glewInfo_GL_NV_depth_nonlinear();
+#endif /* GL_NV_depth_nonlinear */
+#ifdef GL_NV_depth_range_unclamped
+ _glewInfo_GL_NV_depth_range_unclamped();
+#endif /* GL_NV_depth_range_unclamped */
+#ifdef GL_NV_draw_buffers
+ _glewInfo_GL_NV_draw_buffers();
+#endif /* GL_NV_draw_buffers */
+#ifdef GL_NV_draw_instanced
+ _glewInfo_GL_NV_draw_instanced();
+#endif /* GL_NV_draw_instanced */
+#ifdef GL_NV_draw_texture
+ _glewInfo_GL_NV_draw_texture();
+#endif /* GL_NV_draw_texture */
+#ifdef GL_NV_draw_vulkan_image
+ _glewInfo_GL_NV_draw_vulkan_image();
+#endif /* GL_NV_draw_vulkan_image */
+#ifdef GL_NV_evaluators
+ _glewInfo_GL_NV_evaluators();
+#endif /* GL_NV_evaluators */
+#ifdef GL_NV_explicit_attrib_location
+ _glewInfo_GL_NV_explicit_attrib_location();
+#endif /* GL_NV_explicit_attrib_location */
+#ifdef GL_NV_explicit_multisample
+ _glewInfo_GL_NV_explicit_multisample();
+#endif /* GL_NV_explicit_multisample */
+#ifdef GL_NV_fbo_color_attachments
+ _glewInfo_GL_NV_fbo_color_attachments();
+#endif /* GL_NV_fbo_color_attachments */
+#ifdef GL_NV_fence
+ _glewInfo_GL_NV_fence();
+#endif /* GL_NV_fence */
+#ifdef GL_NV_fill_rectangle
+ _glewInfo_GL_NV_fill_rectangle();
+#endif /* GL_NV_fill_rectangle */
+#ifdef GL_NV_float_buffer
+ _glewInfo_GL_NV_float_buffer();
+#endif /* GL_NV_float_buffer */
+#ifdef GL_NV_fog_distance
+ _glewInfo_GL_NV_fog_distance();
+#endif /* GL_NV_fog_distance */
+#ifdef GL_NV_fragment_coverage_to_color
+ _glewInfo_GL_NV_fragment_coverage_to_color();
+#endif /* GL_NV_fragment_coverage_to_color */
+#ifdef GL_NV_fragment_program
+ _glewInfo_GL_NV_fragment_program();
+#endif /* GL_NV_fragment_program */
+#ifdef GL_NV_fragment_program2
+ _glewInfo_GL_NV_fragment_program2();
+#endif /* GL_NV_fragment_program2 */
+#ifdef GL_NV_fragment_program4
+ _glewInfo_GL_NV_fragment_program4();
+#endif /* GL_NV_fragment_program4 */
+#ifdef GL_NV_fragment_program_option
+ _glewInfo_GL_NV_fragment_program_option();
+#endif /* GL_NV_fragment_program_option */
+#ifdef GL_NV_fragment_shader_barycentric
+ _glewInfo_GL_NV_fragment_shader_barycentric();
+#endif /* GL_NV_fragment_shader_barycentric */
+#ifdef GL_NV_fragment_shader_interlock
+ _glewInfo_GL_NV_fragment_shader_interlock();
+#endif /* GL_NV_fragment_shader_interlock */
+#ifdef GL_NV_framebuffer_blit
+ _glewInfo_GL_NV_framebuffer_blit();
+#endif /* GL_NV_framebuffer_blit */
+#ifdef GL_NV_framebuffer_mixed_samples
+ _glewInfo_GL_NV_framebuffer_mixed_samples();
+#endif /* GL_NV_framebuffer_mixed_samples */
+#ifdef GL_NV_framebuffer_multisample
+ _glewInfo_GL_NV_framebuffer_multisample();
+#endif /* GL_NV_framebuffer_multisample */
+#ifdef GL_NV_framebuffer_multisample_coverage
+ _glewInfo_GL_NV_framebuffer_multisample_coverage();
+#endif /* GL_NV_framebuffer_multisample_coverage */
+#ifdef GL_NV_generate_mipmap_sRGB
+ _glewInfo_GL_NV_generate_mipmap_sRGB();
+#endif /* GL_NV_generate_mipmap_sRGB */
+#ifdef GL_NV_geometry_program4
+ _glewInfo_GL_NV_geometry_program4();
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_geometry_shader4
+ _glewInfo_GL_NV_geometry_shader4();
+#endif /* GL_NV_geometry_shader4 */
+#ifdef GL_NV_geometry_shader_passthrough
+ _glewInfo_GL_NV_geometry_shader_passthrough();
+#endif /* GL_NV_geometry_shader_passthrough */
+#ifdef GL_NV_gpu_multicast
+ _glewInfo_GL_NV_gpu_multicast();
+#endif /* GL_NV_gpu_multicast */
+#ifdef GL_NV_gpu_program4
+ _glewInfo_GL_NV_gpu_program4();
+#endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_program5
+ _glewInfo_GL_NV_gpu_program5();
+#endif /* GL_NV_gpu_program5 */
+#ifdef GL_NV_gpu_program5_mem_extended
+ _glewInfo_GL_NV_gpu_program5_mem_extended();
+#endif /* GL_NV_gpu_program5_mem_extended */
+#ifdef GL_NV_gpu_program_fp64
+ _glewInfo_GL_NV_gpu_program_fp64();
+#endif /* GL_NV_gpu_program_fp64 */
+#ifdef GL_NV_gpu_shader5
+ _glewInfo_GL_NV_gpu_shader5();
+#endif /* GL_NV_gpu_shader5 */
+#ifdef GL_NV_half_float
+ _glewInfo_GL_NV_half_float();
+#endif /* GL_NV_half_float */
+#ifdef GL_NV_image_formats
+ _glewInfo_GL_NV_image_formats();
+#endif /* GL_NV_image_formats */
+#ifdef GL_NV_instanced_arrays
+ _glewInfo_GL_NV_instanced_arrays();
+#endif /* GL_NV_instanced_arrays */
+#ifdef GL_NV_internalformat_sample_query
+ _glewInfo_GL_NV_internalformat_sample_query();
+#endif /* GL_NV_internalformat_sample_query */
+#ifdef GL_NV_light_max_exponent
+ _glewInfo_GL_NV_light_max_exponent();
+#endif /* GL_NV_light_max_exponent */
+#ifdef GL_NV_memory_attachment
+ _glewInfo_GL_NV_memory_attachment();
+#endif /* GL_NV_memory_attachment */
+#ifdef GL_NV_memory_object_sparse
+ _glewInfo_GL_NV_memory_object_sparse();
+#endif /* GL_NV_memory_object_sparse */
+#ifdef GL_NV_mesh_shader
+ _glewInfo_GL_NV_mesh_shader();
+#endif /* GL_NV_mesh_shader */
+#ifdef GL_NV_multisample_coverage
+ _glewInfo_GL_NV_multisample_coverage();
+#endif /* GL_NV_multisample_coverage */
+#ifdef GL_NV_multisample_filter_hint
+ _glewInfo_GL_NV_multisample_filter_hint();
+#endif /* GL_NV_multisample_filter_hint */
+#ifdef GL_NV_non_square_matrices
+ _glewInfo_GL_NV_non_square_matrices();
+#endif /* GL_NV_non_square_matrices */
+#ifdef GL_NV_occlusion_query
+ _glewInfo_GL_NV_occlusion_query();
+#endif /* GL_NV_occlusion_query */
+#ifdef GL_NV_pack_subimage
+ _glewInfo_GL_NV_pack_subimage();
+#endif /* GL_NV_pack_subimage */
+#ifdef GL_NV_packed_depth_stencil
+ _glewInfo_GL_NV_packed_depth_stencil();
+#endif /* GL_NV_packed_depth_stencil */
+#ifdef GL_NV_packed_float
+ _glewInfo_GL_NV_packed_float();
+#endif /* GL_NV_packed_float */
+#ifdef GL_NV_packed_float_linear
+ _glewInfo_GL_NV_packed_float_linear();
+#endif /* GL_NV_packed_float_linear */
+#ifdef GL_NV_parameter_buffer_object
+ _glewInfo_GL_NV_parameter_buffer_object();
+#endif /* GL_NV_parameter_buffer_object */
+#ifdef GL_NV_parameter_buffer_object2
+ _glewInfo_GL_NV_parameter_buffer_object2();
+#endif /* GL_NV_parameter_buffer_object2 */
+#ifdef GL_NV_path_rendering
+ _glewInfo_GL_NV_path_rendering();
+#endif /* GL_NV_path_rendering */
+#ifdef GL_NV_path_rendering_shared_edge
+ _glewInfo_GL_NV_path_rendering_shared_edge();
+#endif /* GL_NV_path_rendering_shared_edge */
+#ifdef GL_NV_pixel_buffer_object
+ _glewInfo_GL_NV_pixel_buffer_object();
+#endif /* GL_NV_pixel_buffer_object */
+#ifdef GL_NV_pixel_data_range
+ _glewInfo_GL_NV_pixel_data_range();
+#endif /* GL_NV_pixel_data_range */
+#ifdef GL_NV_platform_binary
+ _glewInfo_GL_NV_platform_binary();
+#endif /* GL_NV_platform_binary */
+#ifdef GL_NV_point_sprite
+ _glewInfo_GL_NV_point_sprite();
+#endif /* GL_NV_point_sprite */
+#ifdef GL_NV_polygon_mode
+ _glewInfo_GL_NV_polygon_mode();
+#endif /* GL_NV_polygon_mode */
+#ifdef GL_NV_present_video
+ _glewInfo_GL_NV_present_video();
+#endif /* GL_NV_present_video */
+#ifdef GL_NV_primitive_restart
+ _glewInfo_GL_NV_primitive_restart();
+#endif /* GL_NV_primitive_restart */
+#ifdef GL_NV_primitive_shading_rate
+ _glewInfo_GL_NV_primitive_shading_rate();
+#endif /* GL_NV_primitive_shading_rate */
+#ifdef GL_NV_query_resource_tag
+ _glewInfo_GL_NV_query_resource_tag();
+#endif /* GL_NV_query_resource_tag */
+#ifdef GL_NV_read_buffer
+ _glewInfo_GL_NV_read_buffer();
+#endif /* GL_NV_read_buffer */
+#ifdef GL_NV_read_buffer_front
+ _glewInfo_GL_NV_read_buffer_front();
+#endif /* GL_NV_read_buffer_front */
+#ifdef GL_NV_read_depth
+ _glewInfo_GL_NV_read_depth();
+#endif /* GL_NV_read_depth */
+#ifdef GL_NV_read_depth_stencil
+ _glewInfo_GL_NV_read_depth_stencil();
+#endif /* GL_NV_read_depth_stencil */
+#ifdef GL_NV_read_stencil
+ _glewInfo_GL_NV_read_stencil();
+#endif /* GL_NV_read_stencil */
+#ifdef GL_NV_register_combiners
+ _glewInfo_GL_NV_register_combiners();
+#endif /* GL_NV_register_combiners */
+#ifdef GL_NV_register_combiners2
+ _glewInfo_GL_NV_register_combiners2();
+#endif /* GL_NV_register_combiners2 */
+#ifdef GL_NV_representative_fragment_test
+ _glewInfo_GL_NV_representative_fragment_test();
+#endif /* GL_NV_representative_fragment_test */
+#ifdef GL_NV_robustness_video_memory_purge
+ _glewInfo_GL_NV_robustness_video_memory_purge();
+#endif /* GL_NV_robustness_video_memory_purge */
+#ifdef GL_NV_sRGB_formats
+ _glewInfo_GL_NV_sRGB_formats();
+#endif /* GL_NV_sRGB_formats */
+#ifdef GL_NV_sample_locations
+ _glewInfo_GL_NV_sample_locations();
+#endif /* GL_NV_sample_locations */
+#ifdef GL_NV_sample_mask_override_coverage
+ _glewInfo_GL_NV_sample_mask_override_coverage();
+#endif /* GL_NV_sample_mask_override_coverage */
+#ifdef GL_NV_scissor_exclusive
+ _glewInfo_GL_NV_scissor_exclusive();
+#endif /* GL_NV_scissor_exclusive */
+#ifdef GL_NV_shader_atomic_counters
+ _glewInfo_GL_NV_shader_atomic_counters();
+#endif /* GL_NV_shader_atomic_counters */
+#ifdef GL_NV_shader_atomic_float
+ _glewInfo_GL_NV_shader_atomic_float();
+#endif /* GL_NV_shader_atomic_float */
+#ifdef GL_NV_shader_atomic_float64
+ _glewInfo_GL_NV_shader_atomic_float64();
+#endif /* GL_NV_shader_atomic_float64 */
+#ifdef GL_NV_shader_atomic_fp16_vector
+ _glewInfo_GL_NV_shader_atomic_fp16_vector();
+#endif /* GL_NV_shader_atomic_fp16_vector */
+#ifdef GL_NV_shader_atomic_int64
+ _glewInfo_GL_NV_shader_atomic_int64();
+#endif /* GL_NV_shader_atomic_int64 */
+#ifdef GL_NV_shader_buffer_load
+ _glewInfo_GL_NV_shader_buffer_load();
+#endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_shader_noperspective_interpolation
+ _glewInfo_GL_NV_shader_noperspective_interpolation();
+#endif /* GL_NV_shader_noperspective_interpolation */
+#ifdef GL_NV_shader_storage_buffer_object
+ _glewInfo_GL_NV_shader_storage_buffer_object();
+#endif /* GL_NV_shader_storage_buffer_object */
+#ifdef GL_NV_shader_subgroup_partitioned
+ _glewInfo_GL_NV_shader_subgroup_partitioned();
+#endif /* GL_NV_shader_subgroup_partitioned */
+#ifdef GL_NV_shader_texture_footprint
+ _glewInfo_GL_NV_shader_texture_footprint();
+#endif /* GL_NV_shader_texture_footprint */
+#ifdef GL_NV_shader_thread_group
+ _glewInfo_GL_NV_shader_thread_group();
+#endif /* GL_NV_shader_thread_group */
+#ifdef GL_NV_shader_thread_shuffle
+ _glewInfo_GL_NV_shader_thread_shuffle();
+#endif /* GL_NV_shader_thread_shuffle */
+#ifdef GL_NV_shading_rate_image
+ _glewInfo_GL_NV_shading_rate_image();
+#endif /* GL_NV_shading_rate_image */
+#ifdef GL_NV_shadow_samplers_array
+ _glewInfo_GL_NV_shadow_samplers_array();
+#endif /* GL_NV_shadow_samplers_array */
+#ifdef GL_NV_shadow_samplers_cube
+ _glewInfo_GL_NV_shadow_samplers_cube();
+#endif /* GL_NV_shadow_samplers_cube */
+#ifdef GL_NV_stereo_view_rendering
+ _glewInfo_GL_NV_stereo_view_rendering();
+#endif /* GL_NV_stereo_view_rendering */
+#ifdef GL_NV_tessellation_program5
+ _glewInfo_GL_NV_tessellation_program5();
+#endif /* GL_NV_tessellation_program5 */
+#ifdef GL_NV_texgen_emboss
+ _glewInfo_GL_NV_texgen_emboss();
+#endif /* GL_NV_texgen_emboss */
+#ifdef GL_NV_texgen_reflection
+ _glewInfo_GL_NV_texgen_reflection();
+#endif /* GL_NV_texgen_reflection */
+#ifdef GL_NV_texture_array
+ _glewInfo_GL_NV_texture_array();
+#endif /* GL_NV_texture_array */
+#ifdef GL_NV_texture_barrier
+ _glewInfo_GL_NV_texture_barrier();
+#endif /* GL_NV_texture_barrier */
+#ifdef GL_NV_texture_border_clamp
+ _glewInfo_GL_NV_texture_border_clamp();
+#endif /* GL_NV_texture_border_clamp */
+#ifdef GL_NV_texture_compression_latc
+ _glewInfo_GL_NV_texture_compression_latc();
+#endif /* GL_NV_texture_compression_latc */
+#ifdef GL_NV_texture_compression_s3tc
+ _glewInfo_GL_NV_texture_compression_s3tc();
+#endif /* GL_NV_texture_compression_s3tc */
+#ifdef GL_NV_texture_compression_s3tc_update
+ _glewInfo_GL_NV_texture_compression_s3tc_update();
+#endif /* GL_NV_texture_compression_s3tc_update */
+#ifdef GL_NV_texture_compression_vtc
+ _glewInfo_GL_NV_texture_compression_vtc();
+#endif /* GL_NV_texture_compression_vtc */
+#ifdef GL_NV_texture_env_combine4
+ _glewInfo_GL_NV_texture_env_combine4();
+#endif /* GL_NV_texture_env_combine4 */
+#ifdef GL_NV_texture_expand_normal
+ _glewInfo_GL_NV_texture_expand_normal();
+#endif /* GL_NV_texture_expand_normal */
+#ifdef GL_NV_texture_multisample
+ _glewInfo_GL_NV_texture_multisample();
+#endif /* GL_NV_texture_multisample */
+#ifdef GL_NV_texture_npot_2D_mipmap
+ _glewInfo_GL_NV_texture_npot_2D_mipmap();
+#endif /* GL_NV_texture_npot_2D_mipmap */
+#ifdef GL_NV_texture_rectangle
+ _glewInfo_GL_NV_texture_rectangle();
+#endif /* GL_NV_texture_rectangle */
+#ifdef GL_NV_texture_rectangle_compressed
+ _glewInfo_GL_NV_texture_rectangle_compressed();
+#endif /* GL_NV_texture_rectangle_compressed */
+#ifdef GL_NV_texture_shader
+ _glewInfo_GL_NV_texture_shader();
+#endif /* GL_NV_texture_shader */
+#ifdef GL_NV_texture_shader2
+ _glewInfo_GL_NV_texture_shader2();
+#endif /* GL_NV_texture_shader2 */
+#ifdef GL_NV_texture_shader3
+ _glewInfo_GL_NV_texture_shader3();
+#endif /* GL_NV_texture_shader3 */
+#ifdef GL_NV_timeline_semaphore
+ _glewInfo_GL_NV_timeline_semaphore();
+#endif /* GL_NV_timeline_semaphore */
+#ifdef GL_NV_transform_feedback
+ _glewInfo_GL_NV_transform_feedback();
+#endif /* GL_NV_transform_feedback */
+#ifdef GL_NV_transform_feedback2
+ _glewInfo_GL_NV_transform_feedback2();
+#endif /* GL_NV_transform_feedback2 */
+#ifdef GL_NV_uniform_buffer_unified_memory
+ _glewInfo_GL_NV_uniform_buffer_unified_memory();
+#endif /* GL_NV_uniform_buffer_unified_memory */
+#ifdef GL_NV_vdpau_interop
+ _glewInfo_GL_NV_vdpau_interop();
+#endif /* GL_NV_vdpau_interop */
+#ifdef GL_NV_vdpau_interop2
+ _glewInfo_GL_NV_vdpau_interop2();
+#endif /* GL_NV_vdpau_interop2 */
+#ifdef GL_NV_vertex_array_range
+ _glewInfo_GL_NV_vertex_array_range();
+#endif /* GL_NV_vertex_array_range */
+#ifdef GL_NV_vertex_array_range2
+ _glewInfo_GL_NV_vertex_array_range2();
+#endif /* GL_NV_vertex_array_range2 */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ _glewInfo_GL_NV_vertex_attrib_integer_64bit();
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+#ifdef GL_NV_vertex_buffer_unified_memory
+ _glewInfo_GL_NV_vertex_buffer_unified_memory();
+#endif /* GL_NV_vertex_buffer_unified_memory */
+#ifdef GL_NV_vertex_program
+ _glewInfo_GL_NV_vertex_program();
+#endif /* GL_NV_vertex_program */
+#ifdef GL_NV_vertex_program1_1
+ _glewInfo_GL_NV_vertex_program1_1();
+#endif /* GL_NV_vertex_program1_1 */
+#ifdef GL_NV_vertex_program2
+ _glewInfo_GL_NV_vertex_program2();
+#endif /* GL_NV_vertex_program2 */
+#ifdef GL_NV_vertex_program2_option
+ _glewInfo_GL_NV_vertex_program2_option();
+#endif /* GL_NV_vertex_program2_option */
+#ifdef GL_NV_vertex_program3
+ _glewInfo_GL_NV_vertex_program3();
+#endif /* GL_NV_vertex_program3 */
+#ifdef GL_NV_vertex_program4
+ _glewInfo_GL_NV_vertex_program4();
+#endif /* GL_NV_vertex_program4 */
+#ifdef GL_NV_video_capture
+ _glewInfo_GL_NV_video_capture();
+#endif /* GL_NV_video_capture */
+#ifdef GL_NV_viewport_array
+ _glewInfo_GL_NV_viewport_array();
+#endif /* GL_NV_viewport_array */
+#ifdef GL_NV_viewport_array2
+ _glewInfo_GL_NV_viewport_array2();
+#endif /* GL_NV_viewport_array2 */
+#ifdef GL_NV_viewport_swizzle
+ _glewInfo_GL_NV_viewport_swizzle();
+#endif /* GL_NV_viewport_swizzle */
+#ifdef GL_OES_EGL_image
+ _glewInfo_GL_OES_EGL_image();
+#endif /* GL_OES_EGL_image */
+#ifdef GL_OES_EGL_image_external
+ _glewInfo_GL_OES_EGL_image_external();
+#endif /* GL_OES_EGL_image_external */
+#ifdef GL_OES_EGL_image_external_essl3
+ _glewInfo_GL_OES_EGL_image_external_essl3();
+#endif /* GL_OES_EGL_image_external_essl3 */
+#ifdef GL_OES_blend_equation_separate
+ _glewInfo_GL_OES_blend_equation_separate();
+#endif /* GL_OES_blend_equation_separate */
+#ifdef GL_OES_blend_func_separate
+ _glewInfo_GL_OES_blend_func_separate();
+#endif /* GL_OES_blend_func_separate */
+#ifdef GL_OES_blend_subtract
+ _glewInfo_GL_OES_blend_subtract();
+#endif /* GL_OES_blend_subtract */
+#ifdef GL_OES_byte_coordinates
+ _glewInfo_GL_OES_byte_coordinates();
+#endif /* GL_OES_byte_coordinates */
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ _glewInfo_GL_OES_compressed_ETC1_RGB8_texture();
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+#ifdef GL_OES_compressed_paletted_texture
+ _glewInfo_GL_OES_compressed_paletted_texture();
+#endif /* GL_OES_compressed_paletted_texture */
+#ifdef GL_OES_copy_image
+ _glewInfo_GL_OES_copy_image();
+#endif /* GL_OES_copy_image */
+#ifdef GL_OES_depth24
+ _glewInfo_GL_OES_depth24();
+#endif /* GL_OES_depth24 */
+#ifdef GL_OES_depth32
+ _glewInfo_GL_OES_depth32();
+#endif /* GL_OES_depth32 */
+#ifdef GL_OES_depth_texture
+ _glewInfo_GL_OES_depth_texture();
+#endif /* GL_OES_depth_texture */
+#ifdef GL_OES_depth_texture_cube_map
+ _glewInfo_GL_OES_depth_texture_cube_map();
+#endif /* GL_OES_depth_texture_cube_map */
+#ifdef GL_OES_draw_buffers_indexed
+ _glewInfo_GL_OES_draw_buffers_indexed();
+#endif /* GL_OES_draw_buffers_indexed */
+#ifdef GL_OES_draw_texture
+ _glewInfo_GL_OES_draw_texture();
+#endif /* GL_OES_draw_texture */
+#ifdef GL_OES_element_index_uint
+ _glewInfo_GL_OES_element_index_uint();
+#endif /* GL_OES_element_index_uint */
+#ifdef GL_OES_extended_matrix_palette
+ _glewInfo_GL_OES_extended_matrix_palette();
+#endif /* GL_OES_extended_matrix_palette */
+#ifdef GL_OES_fbo_render_mipmap
+ _glewInfo_GL_OES_fbo_render_mipmap();
+#endif /* GL_OES_fbo_render_mipmap */
+#ifdef GL_OES_fragment_precision_high
+ _glewInfo_GL_OES_fragment_precision_high();
+#endif /* GL_OES_fragment_precision_high */
+#ifdef GL_OES_framebuffer_object
+ _glewInfo_GL_OES_framebuffer_object();
+#endif /* GL_OES_framebuffer_object */
+#ifdef GL_OES_geometry_point_size
+ _glewInfo_GL_OES_geometry_point_size();
+#endif /* GL_OES_geometry_point_size */
+#ifdef GL_OES_geometry_shader
+ _glewInfo_GL_OES_geometry_shader();
+#endif /* GL_OES_geometry_shader */
+#ifdef GL_OES_get_program_binary
+ _glewInfo_GL_OES_get_program_binary();
+#endif /* GL_OES_get_program_binary */
+#ifdef GL_OES_gpu_shader5
+ _glewInfo_GL_OES_gpu_shader5();
+#endif /* GL_OES_gpu_shader5 */
+#ifdef GL_OES_mapbuffer
+ _glewInfo_GL_OES_mapbuffer();
+#endif /* GL_OES_mapbuffer */
+#ifdef GL_OES_matrix_get
+ _glewInfo_GL_OES_matrix_get();
+#endif /* GL_OES_matrix_get */
+#ifdef GL_OES_matrix_palette
+ _glewInfo_GL_OES_matrix_palette();
+#endif /* GL_OES_matrix_palette */
+#ifdef GL_OES_packed_depth_stencil
+ _glewInfo_GL_OES_packed_depth_stencil();
+#endif /* GL_OES_packed_depth_stencil */
+#ifdef GL_OES_point_size_array
+ _glewInfo_GL_OES_point_size_array();
+#endif /* GL_OES_point_size_array */
+#ifdef GL_OES_point_sprite
+ _glewInfo_GL_OES_point_sprite();
+#endif /* GL_OES_point_sprite */
+#ifdef GL_OES_read_format
+ _glewInfo_GL_OES_read_format();
+#endif /* GL_OES_read_format */
+#ifdef GL_OES_required_internalformat
+ _glewInfo_GL_OES_required_internalformat();
+#endif /* GL_OES_required_internalformat */
+#ifdef GL_OES_rgb8_rgba8
+ _glewInfo_GL_OES_rgb8_rgba8();
+#endif /* GL_OES_rgb8_rgba8 */
+#ifdef GL_OES_sample_shading
+ _glewInfo_GL_OES_sample_shading();
+#endif /* GL_OES_sample_shading */
+#ifdef GL_OES_sample_variables
+ _glewInfo_GL_OES_sample_variables();
+#endif /* GL_OES_sample_variables */
+#ifdef GL_OES_shader_image_atomic
+ _glewInfo_GL_OES_shader_image_atomic();
+#endif /* GL_OES_shader_image_atomic */
+#ifdef GL_OES_shader_io_blocks
+ _glewInfo_GL_OES_shader_io_blocks();
+#endif /* GL_OES_shader_io_blocks */
+#ifdef GL_OES_shader_multisample_interpolation
+ _glewInfo_GL_OES_shader_multisample_interpolation();
+#endif /* GL_OES_shader_multisample_interpolation */
+#ifdef GL_OES_single_precision
+ _glewInfo_GL_OES_single_precision();
+#endif /* GL_OES_single_precision */
+#ifdef GL_OES_standard_derivatives
+ _glewInfo_GL_OES_standard_derivatives();
+#endif /* GL_OES_standard_derivatives */
+#ifdef GL_OES_stencil1
+ _glewInfo_GL_OES_stencil1();
+#endif /* GL_OES_stencil1 */
+#ifdef GL_OES_stencil4
+ _glewInfo_GL_OES_stencil4();
+#endif /* GL_OES_stencil4 */
+#ifdef GL_OES_stencil8
+ _glewInfo_GL_OES_stencil8();
+#endif /* GL_OES_stencil8 */
+#ifdef GL_OES_surfaceless_context
+ _glewInfo_GL_OES_surfaceless_context();
+#endif /* GL_OES_surfaceless_context */
+#ifdef GL_OES_tessellation_point_size
+ _glewInfo_GL_OES_tessellation_point_size();
+#endif /* GL_OES_tessellation_point_size */
+#ifdef GL_OES_tessellation_shader
+ _glewInfo_GL_OES_tessellation_shader();
+#endif /* GL_OES_tessellation_shader */
+#ifdef GL_OES_texture_3D
+ _glewInfo_GL_OES_texture_3D();
+#endif /* GL_OES_texture_3D */
+#ifdef GL_OES_texture_border_clamp
+ _glewInfo_GL_OES_texture_border_clamp();
+#endif /* GL_OES_texture_border_clamp */
+#ifdef GL_OES_texture_buffer
+ _glewInfo_GL_OES_texture_buffer();
+#endif /* GL_OES_texture_buffer */
+#ifdef GL_OES_texture_compression_astc
+ _glewInfo_GL_OES_texture_compression_astc();
+#endif /* GL_OES_texture_compression_astc */
+#ifdef GL_OES_texture_cube_map
+ _glewInfo_GL_OES_texture_cube_map();
+#endif /* GL_OES_texture_cube_map */
+#ifdef GL_OES_texture_cube_map_array
+ _glewInfo_GL_OES_texture_cube_map_array();
+#endif /* GL_OES_texture_cube_map_array */
+#ifdef GL_OES_texture_env_crossbar
+ _glewInfo_GL_OES_texture_env_crossbar();
+#endif /* GL_OES_texture_env_crossbar */
+#ifdef GL_OES_texture_mirrored_repeat
+ _glewInfo_GL_OES_texture_mirrored_repeat();
+#endif /* GL_OES_texture_mirrored_repeat */
+#ifdef GL_OES_texture_npot
+ _glewInfo_GL_OES_texture_npot();
+#endif /* GL_OES_texture_npot */
+#ifdef GL_OES_texture_stencil8
+ _glewInfo_GL_OES_texture_stencil8();
+#endif /* GL_OES_texture_stencil8 */
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ _glewInfo_GL_OES_texture_storage_multisample_2d_array();
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+#ifdef GL_OES_texture_view
+ _glewInfo_GL_OES_texture_view();
+#endif /* GL_OES_texture_view */
+#ifdef GL_OES_vertex_array_object
+ _glewInfo_GL_OES_vertex_array_object();
+#endif /* GL_OES_vertex_array_object */
+#ifdef GL_OES_vertex_half_float
+ _glewInfo_GL_OES_vertex_half_float();
+#endif /* GL_OES_vertex_half_float */
+#ifdef GL_OES_vertex_type_10_10_10_2
+ _glewInfo_GL_OES_vertex_type_10_10_10_2();
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+#ifdef GL_OML_interlace
+ _glewInfo_GL_OML_interlace();
+#endif /* GL_OML_interlace */
+#ifdef GL_OML_resample
+ _glewInfo_GL_OML_resample();
+#endif /* GL_OML_resample */
+#ifdef GL_OML_subsample
+ _glewInfo_GL_OML_subsample();
+#endif /* GL_OML_subsample */
+#ifdef GL_OVR_multiview
+ _glewInfo_GL_OVR_multiview();
+#endif /* GL_OVR_multiview */
+#ifdef GL_OVR_multiview2
+ _glewInfo_GL_OVR_multiview2();
+#endif /* GL_OVR_multiview2 */
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ _glewInfo_GL_OVR_multiview_multisampled_render_to_texture();
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+#ifdef GL_PGI_misc_hints
+ _glewInfo_GL_PGI_misc_hints();
+#endif /* GL_PGI_misc_hints */
+#ifdef GL_PGI_vertex_hints
+ _glewInfo_GL_PGI_vertex_hints();
+#endif /* GL_PGI_vertex_hints */
+#ifdef GL_QCOM_YUV_texture_gather
+ _glewInfo_GL_QCOM_YUV_texture_gather();
+#endif /* GL_QCOM_YUV_texture_gather */
+#ifdef GL_QCOM_alpha_test
+ _glewInfo_GL_QCOM_alpha_test();
+#endif /* GL_QCOM_alpha_test */
+#ifdef GL_QCOM_binning_control
+ _glewInfo_GL_QCOM_binning_control();
+#endif /* GL_QCOM_binning_control */
+#ifdef GL_QCOM_driver_control
+ _glewInfo_GL_QCOM_driver_control();
+#endif /* GL_QCOM_driver_control */
+#ifdef GL_QCOM_extended_get
+ _glewInfo_GL_QCOM_extended_get();
+#endif /* GL_QCOM_extended_get */
+#ifdef GL_QCOM_extended_get2
+ _glewInfo_GL_QCOM_extended_get2();
+#endif /* GL_QCOM_extended_get2 */
+#ifdef GL_QCOM_frame_extrapolation
+ _glewInfo_GL_QCOM_frame_extrapolation();
+#endif /* GL_QCOM_frame_extrapolation */
+#ifdef GL_QCOM_framebuffer_foveated
+ _glewInfo_GL_QCOM_framebuffer_foveated();
+#endif /* GL_QCOM_framebuffer_foveated */
+#ifdef GL_QCOM_motion_estimation
+ _glewInfo_GL_QCOM_motion_estimation();
+#endif /* GL_QCOM_motion_estimation */
+#ifdef GL_QCOM_perfmon_global_mode
+ _glewInfo_GL_QCOM_perfmon_global_mode();
+#endif /* GL_QCOM_perfmon_global_mode */
+#ifdef GL_QCOM_render_shared_exponent
+ _glewInfo_GL_QCOM_render_shared_exponent();
+#endif /* GL_QCOM_render_shared_exponent */
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent();
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ _glewInfo_GL_QCOM_shader_framebuffer_fetch_rate();
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+#ifdef GL_QCOM_shading_rate
+ _glewInfo_GL_QCOM_shading_rate();
+#endif /* GL_QCOM_shading_rate */
+#ifdef GL_QCOM_texture_foveated
+ _glewInfo_GL_QCOM_texture_foveated();
+#endif /* GL_QCOM_texture_foveated */
+#ifdef GL_QCOM_texture_foveated2
+ _glewInfo_GL_QCOM_texture_foveated2();
+#endif /* GL_QCOM_texture_foveated2 */
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ _glewInfo_GL_QCOM_texture_foveated_subsampled_layout();
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+#ifdef GL_QCOM_tiled_rendering
+ _glewInfo_GL_QCOM_tiled_rendering();
+#endif /* GL_QCOM_tiled_rendering */
+#ifdef GL_QCOM_writeonly_rendering
+ _glewInfo_GL_QCOM_writeonly_rendering();
+#endif /* GL_QCOM_writeonly_rendering */
+#ifdef GL_REGAL_ES1_0_compatibility
+ _glewInfo_GL_REGAL_ES1_0_compatibility();
+#endif /* GL_REGAL_ES1_0_compatibility */
+#ifdef GL_REGAL_ES1_1_compatibility
+ _glewInfo_GL_REGAL_ES1_1_compatibility();
+#endif /* GL_REGAL_ES1_1_compatibility */
+#ifdef GL_REGAL_enable
+ _glewInfo_GL_REGAL_enable();
+#endif /* GL_REGAL_enable */
+#ifdef GL_REGAL_error_string
+ _glewInfo_GL_REGAL_error_string();
+#endif /* GL_REGAL_error_string */
+#ifdef GL_REGAL_extension_query
+ _glewInfo_GL_REGAL_extension_query();
+#endif /* GL_REGAL_extension_query */
+#ifdef GL_REGAL_log
+ _glewInfo_GL_REGAL_log();
+#endif /* GL_REGAL_log */
+#ifdef GL_REGAL_proc_address
+ _glewInfo_GL_REGAL_proc_address();
+#endif /* GL_REGAL_proc_address */
+#ifdef GL_REND_screen_coordinates
+ _glewInfo_GL_REND_screen_coordinates();
+#endif /* GL_REND_screen_coordinates */
+#ifdef GL_S3_s3tc
+ _glewInfo_GL_S3_s3tc();
+#endif /* GL_S3_s3tc */
+#ifdef GL_SGIS_clip_band_hint
+ _glewInfo_GL_SGIS_clip_band_hint();
+#endif /* GL_SGIS_clip_band_hint */
+#ifdef GL_SGIS_color_range
+ _glewInfo_GL_SGIS_color_range();
+#endif /* GL_SGIS_color_range */
+#ifdef GL_SGIS_detail_texture
+ _glewInfo_GL_SGIS_detail_texture();
+#endif /* GL_SGIS_detail_texture */
+#ifdef GL_SGIS_fog_function
+ _glewInfo_GL_SGIS_fog_function();
+#endif /* GL_SGIS_fog_function */
+#ifdef GL_SGIS_generate_mipmap
+ _glewInfo_GL_SGIS_generate_mipmap();
+#endif /* GL_SGIS_generate_mipmap */
+#ifdef GL_SGIS_line_texgen
+ _glewInfo_GL_SGIS_line_texgen();
+#endif /* GL_SGIS_line_texgen */
+#ifdef GL_SGIS_multisample
+ _glewInfo_GL_SGIS_multisample();
+#endif /* GL_SGIS_multisample */
+#ifdef GL_SGIS_multitexture
+ _glewInfo_GL_SGIS_multitexture();
+#endif /* GL_SGIS_multitexture */
+#ifdef GL_SGIS_pixel_texture
+ _glewInfo_GL_SGIS_pixel_texture();
+#endif /* GL_SGIS_pixel_texture */
+#ifdef GL_SGIS_point_line_texgen
+ _glewInfo_GL_SGIS_point_line_texgen();
+#endif /* GL_SGIS_point_line_texgen */
+#ifdef GL_SGIS_shared_multisample
+ _glewInfo_GL_SGIS_shared_multisample();
+#endif /* GL_SGIS_shared_multisample */
+#ifdef GL_SGIS_sharpen_texture
+ _glewInfo_GL_SGIS_sharpen_texture();
+#endif /* GL_SGIS_sharpen_texture */
+#ifdef GL_SGIS_texture4D
+ _glewInfo_GL_SGIS_texture4D();
+#endif /* GL_SGIS_texture4D */
+#ifdef GL_SGIS_texture_border_clamp
+ _glewInfo_GL_SGIS_texture_border_clamp();
+#endif /* GL_SGIS_texture_border_clamp */
+#ifdef GL_SGIS_texture_edge_clamp
+ _glewInfo_GL_SGIS_texture_edge_clamp();
+#endif /* GL_SGIS_texture_edge_clamp */
+#ifdef GL_SGIS_texture_filter4
+ _glewInfo_GL_SGIS_texture_filter4();
+#endif /* GL_SGIS_texture_filter4 */
+#ifdef GL_SGIS_texture_lod
+ _glewInfo_GL_SGIS_texture_lod();
+#endif /* GL_SGIS_texture_lod */
+#ifdef GL_SGIS_texture_select
+ _glewInfo_GL_SGIS_texture_select();
+#endif /* GL_SGIS_texture_select */
+#ifdef GL_SGIX_async
+ _glewInfo_GL_SGIX_async();
+#endif /* GL_SGIX_async */
+#ifdef GL_SGIX_async_histogram
+ _glewInfo_GL_SGIX_async_histogram();
+#endif /* GL_SGIX_async_histogram */
+#ifdef GL_SGIX_async_pixel
+ _glewInfo_GL_SGIX_async_pixel();
+#endif /* GL_SGIX_async_pixel */
+#ifdef GL_SGIX_bali_g_instruments
+ _glewInfo_GL_SGIX_bali_g_instruments();
+#endif /* GL_SGIX_bali_g_instruments */
+#ifdef GL_SGIX_bali_r_instruments
+ _glewInfo_GL_SGIX_bali_r_instruments();
+#endif /* GL_SGIX_bali_r_instruments */
+#ifdef GL_SGIX_bali_timer_instruments
+ _glewInfo_GL_SGIX_bali_timer_instruments();
+#endif /* GL_SGIX_bali_timer_instruments */
+#ifdef GL_SGIX_blend_alpha_minmax
+ _glewInfo_GL_SGIX_blend_alpha_minmax();
+#endif /* GL_SGIX_blend_alpha_minmax */
+#ifdef GL_SGIX_blend_cadd
+ _glewInfo_GL_SGIX_blend_cadd();
+#endif /* GL_SGIX_blend_cadd */
+#ifdef GL_SGIX_blend_cmultiply
+ _glewInfo_GL_SGIX_blend_cmultiply();
+#endif /* GL_SGIX_blend_cmultiply */
+#ifdef GL_SGIX_calligraphic_fragment
+ _glewInfo_GL_SGIX_calligraphic_fragment();
+#endif /* GL_SGIX_calligraphic_fragment */
+#ifdef GL_SGIX_clipmap
+ _glewInfo_GL_SGIX_clipmap();
+#endif /* GL_SGIX_clipmap */
+#ifdef GL_SGIX_color_matrix_accuracy
+ _glewInfo_GL_SGIX_color_matrix_accuracy();
+#endif /* GL_SGIX_color_matrix_accuracy */
+#ifdef GL_SGIX_color_table_index_mode
+ _glewInfo_GL_SGIX_color_table_index_mode();
+#endif /* GL_SGIX_color_table_index_mode */
+#ifdef GL_SGIX_complex_polar
+ _glewInfo_GL_SGIX_complex_polar();
+#endif /* GL_SGIX_complex_polar */
+#ifdef GL_SGIX_convolution_accuracy
+ _glewInfo_GL_SGIX_convolution_accuracy();
+#endif /* GL_SGIX_convolution_accuracy */
+#ifdef GL_SGIX_cube_map
+ _glewInfo_GL_SGIX_cube_map();
+#endif /* GL_SGIX_cube_map */
+#ifdef GL_SGIX_cylinder_texgen
+ _glewInfo_GL_SGIX_cylinder_texgen();
+#endif /* GL_SGIX_cylinder_texgen */
+#ifdef GL_SGIX_datapipe
+ _glewInfo_GL_SGIX_datapipe();
+#endif /* GL_SGIX_datapipe */
+#ifdef GL_SGIX_decimation
+ _glewInfo_GL_SGIX_decimation();
+#endif /* GL_SGIX_decimation */
+#ifdef GL_SGIX_depth_pass_instrument
+ _glewInfo_GL_SGIX_depth_pass_instrument();
+#endif /* GL_SGIX_depth_pass_instrument */
+#ifdef GL_SGIX_depth_texture
+ _glewInfo_GL_SGIX_depth_texture();
+#endif /* GL_SGIX_depth_texture */
+#ifdef GL_SGIX_dvc
+ _glewInfo_GL_SGIX_dvc();
+#endif /* GL_SGIX_dvc */
+#ifdef GL_SGIX_flush_raster
+ _glewInfo_GL_SGIX_flush_raster();
+#endif /* GL_SGIX_flush_raster */
+#ifdef GL_SGIX_fog_blend
+ _glewInfo_GL_SGIX_fog_blend();
+#endif /* GL_SGIX_fog_blend */
+#ifdef GL_SGIX_fog_factor_to_alpha
+ _glewInfo_GL_SGIX_fog_factor_to_alpha();
+#endif /* GL_SGIX_fog_factor_to_alpha */
+#ifdef GL_SGIX_fog_layers
+ _glewInfo_GL_SGIX_fog_layers();
+#endif /* GL_SGIX_fog_layers */
+#ifdef GL_SGIX_fog_offset
+ _glewInfo_GL_SGIX_fog_offset();
+#endif /* GL_SGIX_fog_offset */
+#ifdef GL_SGIX_fog_patchy
+ _glewInfo_GL_SGIX_fog_patchy();
+#endif /* GL_SGIX_fog_patchy */
+#ifdef GL_SGIX_fog_scale
+ _glewInfo_GL_SGIX_fog_scale();
+#endif /* GL_SGIX_fog_scale */
+#ifdef GL_SGIX_fog_texture
+ _glewInfo_GL_SGIX_fog_texture();
+#endif /* GL_SGIX_fog_texture */
+#ifdef GL_SGIX_fragment_lighting_space
+ _glewInfo_GL_SGIX_fragment_lighting_space();
+#endif /* GL_SGIX_fragment_lighting_space */
+#ifdef GL_SGIX_fragment_specular_lighting
+ _glewInfo_GL_SGIX_fragment_specular_lighting();
+#endif /* GL_SGIX_fragment_specular_lighting */
+#ifdef GL_SGIX_fragments_instrument
+ _glewInfo_GL_SGIX_fragments_instrument();
+#endif /* GL_SGIX_fragments_instrument */
+#ifdef GL_SGIX_framezoom
+ _glewInfo_GL_SGIX_framezoom();
+#endif /* GL_SGIX_framezoom */
+#ifdef GL_SGIX_icc_texture
+ _glewInfo_GL_SGIX_icc_texture();
+#endif /* GL_SGIX_icc_texture */
+#ifdef GL_SGIX_igloo_interface
+ _glewInfo_GL_SGIX_igloo_interface();
+#endif /* GL_SGIX_igloo_interface */
+#ifdef GL_SGIX_image_compression
+ _glewInfo_GL_SGIX_image_compression();
+#endif /* GL_SGIX_image_compression */
+#ifdef GL_SGIX_impact_pixel_texture
+ _glewInfo_GL_SGIX_impact_pixel_texture();
+#endif /* GL_SGIX_impact_pixel_texture */
+#ifdef GL_SGIX_instrument_error
+ _glewInfo_GL_SGIX_instrument_error();
+#endif /* GL_SGIX_instrument_error */
+#ifdef GL_SGIX_interlace
+ _glewInfo_GL_SGIX_interlace();
+#endif /* GL_SGIX_interlace */
+#ifdef GL_SGIX_ir_instrument1
+ _glewInfo_GL_SGIX_ir_instrument1();
+#endif /* GL_SGIX_ir_instrument1 */
+#ifdef GL_SGIX_line_quality_hint
+ _glewInfo_GL_SGIX_line_quality_hint();
+#endif /* GL_SGIX_line_quality_hint */
+#ifdef GL_SGIX_list_priority
+ _glewInfo_GL_SGIX_list_priority();
+#endif /* GL_SGIX_list_priority */
+#ifdef GL_SGIX_mpeg1
+ _glewInfo_GL_SGIX_mpeg1();
+#endif /* GL_SGIX_mpeg1 */
+#ifdef GL_SGIX_mpeg2
+ _glewInfo_GL_SGIX_mpeg2();
+#endif /* GL_SGIX_mpeg2 */
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ _glewInfo_GL_SGIX_nonlinear_lighting_pervertex();
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+#ifdef GL_SGIX_nurbs_eval
+ _glewInfo_GL_SGIX_nurbs_eval();
+#endif /* GL_SGIX_nurbs_eval */
+#ifdef GL_SGIX_occlusion_instrument
+ _glewInfo_GL_SGIX_occlusion_instrument();
+#endif /* GL_SGIX_occlusion_instrument */
+#ifdef GL_SGIX_packed_6bytes
+ _glewInfo_GL_SGIX_packed_6bytes();
+#endif /* GL_SGIX_packed_6bytes */
+#ifdef GL_SGIX_pixel_texture
+ _glewInfo_GL_SGIX_pixel_texture();
+#endif /* GL_SGIX_pixel_texture */
+#ifdef GL_SGIX_pixel_texture_bits
+ _glewInfo_GL_SGIX_pixel_texture_bits();
+#endif /* GL_SGIX_pixel_texture_bits */
+#ifdef GL_SGIX_pixel_texture_lod
+ _glewInfo_GL_SGIX_pixel_texture_lod();
+#endif /* GL_SGIX_pixel_texture_lod */
+#ifdef GL_SGIX_pixel_tiles
+ _glewInfo_GL_SGIX_pixel_tiles();
+#endif /* GL_SGIX_pixel_tiles */
+#ifdef GL_SGIX_polynomial_ffd
+ _glewInfo_GL_SGIX_polynomial_ffd();
+#endif /* GL_SGIX_polynomial_ffd */
+#ifdef GL_SGIX_quad_mesh
+ _glewInfo_GL_SGIX_quad_mesh();
+#endif /* GL_SGIX_quad_mesh */
+#ifdef GL_SGIX_reference_plane
+ _glewInfo_GL_SGIX_reference_plane();
+#endif /* GL_SGIX_reference_plane */
+#ifdef GL_SGIX_resample
+ _glewInfo_GL_SGIX_resample();
+#endif /* GL_SGIX_resample */
+#ifdef GL_SGIX_scalebias_hint
+ _glewInfo_GL_SGIX_scalebias_hint();
+#endif /* GL_SGIX_scalebias_hint */
+#ifdef GL_SGIX_shadow
+ _glewInfo_GL_SGIX_shadow();
+#endif /* GL_SGIX_shadow */
+#ifdef GL_SGIX_shadow_ambient
+ _glewInfo_GL_SGIX_shadow_ambient();
+#endif /* GL_SGIX_shadow_ambient */
+#ifdef GL_SGIX_slim
+ _glewInfo_GL_SGIX_slim();
+#endif /* GL_SGIX_slim */
+#ifdef GL_SGIX_spotlight_cutoff
+ _glewInfo_GL_SGIX_spotlight_cutoff();
+#endif /* GL_SGIX_spotlight_cutoff */
+#ifdef GL_SGIX_sprite
+ _glewInfo_GL_SGIX_sprite();
+#endif /* GL_SGIX_sprite */
+#ifdef GL_SGIX_subdiv_patch
+ _glewInfo_GL_SGIX_subdiv_patch();
+#endif /* GL_SGIX_subdiv_patch */
+#ifdef GL_SGIX_subsample
+ _glewInfo_GL_SGIX_subsample();
+#endif /* GL_SGIX_subsample */
+#ifdef GL_SGIX_tag_sample_buffer
+ _glewInfo_GL_SGIX_tag_sample_buffer();
+#endif /* GL_SGIX_tag_sample_buffer */
+#ifdef GL_SGIX_texture_add_env
+ _glewInfo_GL_SGIX_texture_add_env();
+#endif /* GL_SGIX_texture_add_env */
+#ifdef GL_SGIX_texture_coordinate_clamp
+ _glewInfo_GL_SGIX_texture_coordinate_clamp();
+#endif /* GL_SGIX_texture_coordinate_clamp */
+#ifdef GL_SGIX_texture_lod_bias
+ _glewInfo_GL_SGIX_texture_lod_bias();
+#endif /* GL_SGIX_texture_lod_bias */
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ _glewInfo_GL_SGIX_texture_mipmap_anisotropic();
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+#ifdef GL_SGIX_texture_multi_buffer
+ _glewInfo_GL_SGIX_texture_multi_buffer();
+#endif /* GL_SGIX_texture_multi_buffer */
+#ifdef GL_SGIX_texture_phase
+ _glewInfo_GL_SGIX_texture_phase();
+#endif /* GL_SGIX_texture_phase */
+#ifdef GL_SGIX_texture_range
+ _glewInfo_GL_SGIX_texture_range();
+#endif /* GL_SGIX_texture_range */
+#ifdef GL_SGIX_texture_scale_bias
+ _glewInfo_GL_SGIX_texture_scale_bias();
+#endif /* GL_SGIX_texture_scale_bias */
+#ifdef GL_SGIX_texture_supersample
+ _glewInfo_GL_SGIX_texture_supersample();
+#endif /* GL_SGIX_texture_supersample */
+#ifdef GL_SGIX_vector_ops
+ _glewInfo_GL_SGIX_vector_ops();
+#endif /* GL_SGIX_vector_ops */
+#ifdef GL_SGIX_vertex_array_object
+ _glewInfo_GL_SGIX_vertex_array_object();
+#endif /* GL_SGIX_vertex_array_object */
+#ifdef GL_SGIX_vertex_preclip
+ _glewInfo_GL_SGIX_vertex_preclip();
+#endif /* GL_SGIX_vertex_preclip */
+#ifdef GL_SGIX_vertex_preclip_hint
+ _glewInfo_GL_SGIX_vertex_preclip_hint();
+#endif /* GL_SGIX_vertex_preclip_hint */
+#ifdef GL_SGIX_ycrcb
+ _glewInfo_GL_SGIX_ycrcb();
+#endif /* GL_SGIX_ycrcb */
+#ifdef GL_SGIX_ycrcb_subsample
+ _glewInfo_GL_SGIX_ycrcb_subsample();
+#endif /* GL_SGIX_ycrcb_subsample */
+#ifdef GL_SGIX_ycrcba
+ _glewInfo_GL_SGIX_ycrcba();
+#endif /* GL_SGIX_ycrcba */
+#ifdef GL_SGI_color_matrix
+ _glewInfo_GL_SGI_color_matrix();
+#endif /* GL_SGI_color_matrix */
+#ifdef GL_SGI_color_table
+ _glewInfo_GL_SGI_color_table();
+#endif /* GL_SGI_color_table */
+#ifdef GL_SGI_complex
+ _glewInfo_GL_SGI_complex();
+#endif /* GL_SGI_complex */
+#ifdef GL_SGI_complex_type
+ _glewInfo_GL_SGI_complex_type();
+#endif /* GL_SGI_complex_type */
+#ifdef GL_SGI_fft
+ _glewInfo_GL_SGI_fft();
+#endif /* GL_SGI_fft */
+#ifdef GL_SGI_texture_color_table
+ _glewInfo_GL_SGI_texture_color_table();
+#endif /* GL_SGI_texture_color_table */
+#ifdef GL_SUNX_constant_data
+ _glewInfo_GL_SUNX_constant_data();
+#endif /* GL_SUNX_constant_data */
+#ifdef GL_SUN_convolution_border_modes
+ _glewInfo_GL_SUN_convolution_border_modes();
+#endif /* GL_SUN_convolution_border_modes */
+#ifdef GL_SUN_global_alpha
+ _glewInfo_GL_SUN_global_alpha();
+#endif /* GL_SUN_global_alpha */
+#ifdef GL_SUN_mesh_array
+ _glewInfo_GL_SUN_mesh_array();
+#endif /* GL_SUN_mesh_array */
+#ifdef GL_SUN_read_video_pixels
+ _glewInfo_GL_SUN_read_video_pixels();
+#endif /* GL_SUN_read_video_pixels */
+#ifdef GL_SUN_slice_accum
+ _glewInfo_GL_SUN_slice_accum();
+#endif /* GL_SUN_slice_accum */
+#ifdef GL_SUN_triangle_list
+ _glewInfo_GL_SUN_triangle_list();
+#endif /* GL_SUN_triangle_list */
+#ifdef GL_SUN_vertex
+ _glewInfo_GL_SUN_vertex();
+#endif /* GL_SUN_vertex */
+#ifdef GL_VIV_shader_binary
+ _glewInfo_GL_VIV_shader_binary();
+#endif /* GL_VIV_shader_binary */
+#ifdef GL_WIN_phong_shading
+ _glewInfo_GL_WIN_phong_shading();
+#endif /* GL_WIN_phong_shading */
+#ifdef GL_WIN_scene_markerXXX
+ _glewInfo_GL_WIN_scene_markerXXX();
+#endif /* GL_WIN_scene_markerXXX */
+#ifdef GL_WIN_specular_fog
+ _glewInfo_GL_WIN_specular_fog();
+#endif /* GL_WIN_specular_fog */
+#ifdef GL_WIN_swap_hint
+ _glewInfo_GL_WIN_swap_hint();
+#endif /* GL_WIN_swap_hint */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+static void wglewInfo ()
+{
+#ifdef WGL_3DFX_multisample
+ _glewInfo_WGL_3DFX_multisample();
+#endif /* WGL_3DFX_multisample */
+#ifdef WGL_3DL_stereo_control
+ _glewInfo_WGL_3DL_stereo_control();
+#endif /* WGL_3DL_stereo_control */
+#ifdef WGL_AMD_gpu_association
+ _glewInfo_WGL_AMD_gpu_association();
+#endif /* WGL_AMD_gpu_association */
+#ifdef WGL_ARB_buffer_region
+ _glewInfo_WGL_ARB_buffer_region();
+#endif /* WGL_ARB_buffer_region */
+#ifdef WGL_ARB_context_flush_control
+ _glewInfo_WGL_ARB_context_flush_control();
+#endif /* WGL_ARB_context_flush_control */
+#ifdef WGL_ARB_create_context
+ _glewInfo_WGL_ARB_create_context();
+#endif /* WGL_ARB_create_context */
+#ifdef WGL_ARB_create_context_no_error
+ _glewInfo_WGL_ARB_create_context_no_error();
+#endif /* WGL_ARB_create_context_no_error */
+#ifdef WGL_ARB_create_context_profile
+ _glewInfo_WGL_ARB_create_context_profile();
+#endif /* WGL_ARB_create_context_profile */
+#ifdef WGL_ARB_create_context_robustness
+ _glewInfo_WGL_ARB_create_context_robustness();
+#endif /* WGL_ARB_create_context_robustness */
+#ifdef WGL_ARB_extensions_string
+ _glewInfo_WGL_ARB_extensions_string();
+#endif /* WGL_ARB_extensions_string */
+#ifdef WGL_ARB_framebuffer_sRGB
+ _glewInfo_WGL_ARB_framebuffer_sRGB();
+#endif /* WGL_ARB_framebuffer_sRGB */
+#ifdef WGL_ARB_make_current_read
+ _glewInfo_WGL_ARB_make_current_read();
+#endif /* WGL_ARB_make_current_read */
+#ifdef WGL_ARB_multisample
+ _glewInfo_WGL_ARB_multisample();
+#endif /* WGL_ARB_multisample */
+#ifdef WGL_ARB_pbuffer
+ _glewInfo_WGL_ARB_pbuffer();
+#endif /* WGL_ARB_pbuffer */
+#ifdef WGL_ARB_pixel_format
+ _glewInfo_WGL_ARB_pixel_format();
+#endif /* WGL_ARB_pixel_format */
+#ifdef WGL_ARB_pixel_format_float
+ _glewInfo_WGL_ARB_pixel_format_float();
+#endif /* WGL_ARB_pixel_format_float */
+#ifdef WGL_ARB_render_texture
+ _glewInfo_WGL_ARB_render_texture();
+#endif /* WGL_ARB_render_texture */
+#ifdef WGL_ARB_robustness_application_isolation
+ _glewInfo_WGL_ARB_robustness_application_isolation();
+#endif /* WGL_ARB_robustness_application_isolation */
+#ifdef WGL_ARB_robustness_share_group_isolation
+ _glewInfo_WGL_ARB_robustness_share_group_isolation();
+#endif /* WGL_ARB_robustness_share_group_isolation */
+#ifdef WGL_ATI_pixel_format_float
+ _glewInfo_WGL_ATI_pixel_format_float();
+#endif /* WGL_ATI_pixel_format_float */
+#ifdef WGL_ATI_render_texture_rectangle
+ _glewInfo_WGL_ATI_render_texture_rectangle();
+#endif /* WGL_ATI_render_texture_rectangle */
+#ifdef WGL_EXT_colorspace
+ _glewInfo_WGL_EXT_colorspace();
+#endif /* WGL_EXT_colorspace */
+#ifdef WGL_EXT_create_context_es2_profile
+ _glewInfo_WGL_EXT_create_context_es2_profile();
+#endif /* WGL_EXT_create_context_es2_profile */
+#ifdef WGL_EXT_create_context_es_profile
+ _glewInfo_WGL_EXT_create_context_es_profile();
+#endif /* WGL_EXT_create_context_es_profile */
+#ifdef WGL_EXT_depth_float
+ _glewInfo_WGL_EXT_depth_float();
+#endif /* WGL_EXT_depth_float */
+#ifdef WGL_EXT_display_color_table
+ _glewInfo_WGL_EXT_display_color_table();
+#endif /* WGL_EXT_display_color_table */
+#ifdef WGL_EXT_extensions_string
+ _glewInfo_WGL_EXT_extensions_string();
+#endif /* WGL_EXT_extensions_string */
+#ifdef WGL_EXT_framebuffer_sRGB
+ _glewInfo_WGL_EXT_framebuffer_sRGB();
+#endif /* WGL_EXT_framebuffer_sRGB */
+#ifdef WGL_EXT_make_current_read
+ _glewInfo_WGL_EXT_make_current_read();
+#endif /* WGL_EXT_make_current_read */
+#ifdef WGL_EXT_multisample
+ _glewInfo_WGL_EXT_multisample();
+#endif /* WGL_EXT_multisample */
+#ifdef WGL_EXT_pbuffer
+ _glewInfo_WGL_EXT_pbuffer();
+#endif /* WGL_EXT_pbuffer */
+#ifdef WGL_EXT_pixel_format
+ _glewInfo_WGL_EXT_pixel_format();
+#endif /* WGL_EXT_pixel_format */
+#ifdef WGL_EXT_pixel_format_packed_float
+ _glewInfo_WGL_EXT_pixel_format_packed_float();
+#endif /* WGL_EXT_pixel_format_packed_float */
+#ifdef WGL_EXT_swap_control
+ _glewInfo_WGL_EXT_swap_control();
+#endif /* WGL_EXT_swap_control */
+#ifdef WGL_EXT_swap_control_tear
+ _glewInfo_WGL_EXT_swap_control_tear();
+#endif /* WGL_EXT_swap_control_tear */
+#ifdef WGL_I3D_digital_video_control
+ _glewInfo_WGL_I3D_digital_video_control();
+#endif /* WGL_I3D_digital_video_control */
+#ifdef WGL_I3D_gamma
+ _glewInfo_WGL_I3D_gamma();
+#endif /* WGL_I3D_gamma */
+#ifdef WGL_I3D_genlock
+ _glewInfo_WGL_I3D_genlock();
+#endif /* WGL_I3D_genlock */
+#ifdef WGL_I3D_image_buffer
+ _glewInfo_WGL_I3D_image_buffer();
+#endif /* WGL_I3D_image_buffer */
+#ifdef WGL_I3D_swap_frame_lock
+ _glewInfo_WGL_I3D_swap_frame_lock();
+#endif /* WGL_I3D_swap_frame_lock */
+#ifdef WGL_I3D_swap_frame_usage
+ _glewInfo_WGL_I3D_swap_frame_usage();
+#endif /* WGL_I3D_swap_frame_usage */
+#ifdef WGL_NV_DX_interop
+ _glewInfo_WGL_NV_DX_interop();
+#endif /* WGL_NV_DX_interop */
+#ifdef WGL_NV_DX_interop2
+ _glewInfo_WGL_NV_DX_interop2();
+#endif /* WGL_NV_DX_interop2 */
+#ifdef WGL_NV_copy_image
+ _glewInfo_WGL_NV_copy_image();
+#endif /* WGL_NV_copy_image */
+#ifdef WGL_NV_delay_before_swap
+ _glewInfo_WGL_NV_delay_before_swap();
+#endif /* WGL_NV_delay_before_swap */
+#ifdef WGL_NV_float_buffer
+ _glewInfo_WGL_NV_float_buffer();
+#endif /* WGL_NV_float_buffer */
+#ifdef WGL_NV_gpu_affinity
+ _glewInfo_WGL_NV_gpu_affinity();
+#endif /* WGL_NV_gpu_affinity */
+#ifdef WGL_NV_multigpu_context
+ _glewInfo_WGL_NV_multigpu_context();
+#endif /* WGL_NV_multigpu_context */
+#ifdef WGL_NV_multisample_coverage
+ _glewInfo_WGL_NV_multisample_coverage();
+#endif /* WGL_NV_multisample_coverage */
+#ifdef WGL_NV_present_video
+ _glewInfo_WGL_NV_present_video();
+#endif /* WGL_NV_present_video */
+#ifdef WGL_NV_render_depth_texture
+ _glewInfo_WGL_NV_render_depth_texture();
+#endif /* WGL_NV_render_depth_texture */
+#ifdef WGL_NV_render_texture_rectangle
+ _glewInfo_WGL_NV_render_texture_rectangle();
+#endif /* WGL_NV_render_texture_rectangle */
+#ifdef WGL_NV_swap_group
+ _glewInfo_WGL_NV_swap_group();
+#endif /* WGL_NV_swap_group */
+#ifdef WGL_NV_vertex_array_range
+ _glewInfo_WGL_NV_vertex_array_range();
+#endif /* WGL_NV_vertex_array_range */
+#ifdef WGL_NV_video_capture
+ _glewInfo_WGL_NV_video_capture();
+#endif /* WGL_NV_video_capture */
+#ifdef WGL_NV_video_output
+ _glewInfo_WGL_NV_video_output();
+#endif /* WGL_NV_video_output */
+#ifdef WGL_OML_sync_control
+ _glewInfo_WGL_OML_sync_control();
+#endif /* WGL_OML_sync_control */
+}
+
+#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */
+
+static void glxewInfo ()
+{
+#ifdef GLX_VERSION_1_2
+ _glewInfo_GLX_VERSION_1_2();
+#endif /* GLX_VERSION_1_2 */
+#ifdef GLX_VERSION_1_3
+ _glewInfo_GLX_VERSION_1_3();
+#endif /* GLX_VERSION_1_3 */
+#ifdef GLX_VERSION_1_4
+ _glewInfo_GLX_VERSION_1_4();
+#endif /* GLX_VERSION_1_4 */
+#ifdef GLX_3DFX_multisample
+ _glewInfo_GLX_3DFX_multisample();
+#endif /* GLX_3DFX_multisample */
+#ifdef GLX_AMD_gpu_association
+ _glewInfo_GLX_AMD_gpu_association();
+#endif /* GLX_AMD_gpu_association */
+#ifdef GLX_ARB_context_flush_control
+ _glewInfo_GLX_ARB_context_flush_control();
+#endif /* GLX_ARB_context_flush_control */
+#ifdef GLX_ARB_create_context
+ _glewInfo_GLX_ARB_create_context();
+#endif /* GLX_ARB_create_context */
+#ifdef GLX_ARB_create_context_no_error
+ _glewInfo_GLX_ARB_create_context_no_error();
+#endif /* GLX_ARB_create_context_no_error */
+#ifdef GLX_ARB_create_context_profile
+ _glewInfo_GLX_ARB_create_context_profile();
+#endif /* GLX_ARB_create_context_profile */
+#ifdef GLX_ARB_create_context_robustness
+ _glewInfo_GLX_ARB_create_context_robustness();
+#endif /* GLX_ARB_create_context_robustness */
+#ifdef GLX_ARB_fbconfig_float
+ _glewInfo_GLX_ARB_fbconfig_float();
+#endif /* GLX_ARB_fbconfig_float */
+#ifdef GLX_ARB_framebuffer_sRGB
+ _glewInfo_GLX_ARB_framebuffer_sRGB();
+#endif /* GLX_ARB_framebuffer_sRGB */
+#ifdef GLX_ARB_get_proc_address
+ _glewInfo_GLX_ARB_get_proc_address();
+#endif /* GLX_ARB_get_proc_address */
+#ifdef GLX_ARB_multisample
+ _glewInfo_GLX_ARB_multisample();
+#endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_robustness_application_isolation
+ _glewInfo_GLX_ARB_robustness_application_isolation();
+#endif /* GLX_ARB_robustness_application_isolation */
+#ifdef GLX_ARB_robustness_share_group_isolation
+ _glewInfo_GLX_ARB_robustness_share_group_isolation();
+#endif /* GLX_ARB_robustness_share_group_isolation */
+#ifdef GLX_ARB_vertex_buffer_object
+ _glewInfo_GLX_ARB_vertex_buffer_object();
+#endif /* GLX_ARB_vertex_buffer_object */
+#ifdef GLX_ATI_pixel_format_float
+ _glewInfo_GLX_ATI_pixel_format_float();
+#endif /* GLX_ATI_pixel_format_float */
+#ifdef GLX_ATI_render_texture
+ _glewInfo_GLX_ATI_render_texture();
+#endif /* GLX_ATI_render_texture */
+#ifdef GLX_EXT_buffer_age
+ _glewInfo_GLX_EXT_buffer_age();
+#endif /* GLX_EXT_buffer_age */
+#ifdef GLX_EXT_context_priority
+ _glewInfo_GLX_EXT_context_priority();
+#endif /* GLX_EXT_context_priority */
+#ifdef GLX_EXT_create_context_es2_profile
+ _glewInfo_GLX_EXT_create_context_es2_profile();
+#endif /* GLX_EXT_create_context_es2_profile */
+#ifdef GLX_EXT_create_context_es_profile
+ _glewInfo_GLX_EXT_create_context_es_profile();
+#endif /* GLX_EXT_create_context_es_profile */
+#ifdef GLX_EXT_fbconfig_packed_float
+ _glewInfo_GLX_EXT_fbconfig_packed_float();
+#endif /* GLX_EXT_fbconfig_packed_float */
+#ifdef GLX_EXT_framebuffer_sRGB
+ _glewInfo_GLX_EXT_framebuffer_sRGB();
+#endif /* GLX_EXT_framebuffer_sRGB */
+#ifdef GLX_EXT_get_drawable_type
+ _glewInfo_GLX_EXT_get_drawable_type();
+#endif /* GLX_EXT_get_drawable_type */
+#ifdef GLX_EXT_import_context
+ _glewInfo_GLX_EXT_import_context();
+#endif /* GLX_EXT_import_context */
+#ifdef GLX_EXT_libglvnd
+ _glewInfo_GLX_EXT_libglvnd();
+#endif /* GLX_EXT_libglvnd */
+#ifdef GLX_EXT_no_config_context
+ _glewInfo_GLX_EXT_no_config_context();
+#endif /* GLX_EXT_no_config_context */
+#ifdef GLX_EXT_scene_marker
+ _glewInfo_GLX_EXT_scene_marker();
+#endif /* GLX_EXT_scene_marker */
+#ifdef GLX_EXT_stereo_tree
+ _glewInfo_GLX_EXT_stereo_tree();
+#endif /* GLX_EXT_stereo_tree */
+#ifdef GLX_EXT_swap_control
+ _glewInfo_GLX_EXT_swap_control();
+#endif /* GLX_EXT_swap_control */
+#ifdef GLX_EXT_swap_control_tear
+ _glewInfo_GLX_EXT_swap_control_tear();
+#endif /* GLX_EXT_swap_control_tear */
+#ifdef GLX_EXT_texture_from_pixmap
+ _glewInfo_GLX_EXT_texture_from_pixmap();
+#endif /* GLX_EXT_texture_from_pixmap */
+#ifdef GLX_EXT_visual_info
+ _glewInfo_GLX_EXT_visual_info();
+#endif /* GLX_EXT_visual_info */
+#ifdef GLX_EXT_visual_rating
+ _glewInfo_GLX_EXT_visual_rating();
+#endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+ _glewInfo_GLX_INTEL_swap_event();
+#endif /* GLX_INTEL_swap_event */
+#ifdef GLX_MESA_agp_offset
+ _glewInfo_GLX_MESA_agp_offset();
+#endif /* GLX_MESA_agp_offset */
+#ifdef GLX_MESA_copy_sub_buffer
+ _glewInfo_GLX_MESA_copy_sub_buffer();
+#endif /* GLX_MESA_copy_sub_buffer */
+#ifdef GLX_MESA_pixmap_colormap
+ _glewInfo_GLX_MESA_pixmap_colormap();
+#endif /* GLX_MESA_pixmap_colormap */
+#ifdef GLX_MESA_query_renderer
+ _glewInfo_GLX_MESA_query_renderer();
+#endif /* GLX_MESA_query_renderer */
+#ifdef GLX_MESA_release_buffers
+ _glewInfo_GLX_MESA_release_buffers();
+#endif /* GLX_MESA_release_buffers */
+#ifdef GLX_MESA_set_3dfx_mode
+ _glewInfo_GLX_MESA_set_3dfx_mode();
+#endif /* GLX_MESA_set_3dfx_mode */
+#ifdef GLX_MESA_swap_control
+ _glewInfo_GLX_MESA_swap_control();
+#endif /* GLX_MESA_swap_control */
+#ifdef GLX_NV_copy_buffer
+ _glewInfo_GLX_NV_copy_buffer();
+#endif /* GLX_NV_copy_buffer */
+#ifdef GLX_NV_copy_image
+ _glewInfo_GLX_NV_copy_image();
+#endif /* GLX_NV_copy_image */
+#ifdef GLX_NV_delay_before_swap
+ _glewInfo_GLX_NV_delay_before_swap();
+#endif /* GLX_NV_delay_before_swap */
+#ifdef GLX_NV_float_buffer
+ _glewInfo_GLX_NV_float_buffer();
+#endif /* GLX_NV_float_buffer */
+#ifdef GLX_NV_multigpu_context
+ _glewInfo_GLX_NV_multigpu_context();
+#endif /* GLX_NV_multigpu_context */
+#ifdef GLX_NV_multisample_coverage
+ _glewInfo_GLX_NV_multisample_coverage();
+#endif /* GLX_NV_multisample_coverage */
+#ifdef GLX_NV_present_video
+ _glewInfo_GLX_NV_present_video();
+#endif /* GLX_NV_present_video */
+#ifdef GLX_NV_robustness_video_memory_purge
+ _glewInfo_GLX_NV_robustness_video_memory_purge();
+#endif /* GLX_NV_robustness_video_memory_purge */
+#ifdef GLX_NV_swap_group
+ _glewInfo_GLX_NV_swap_group();
+#endif /* GLX_NV_swap_group */
+#ifdef GLX_NV_vertex_array_range
+ _glewInfo_GLX_NV_vertex_array_range();
+#endif /* GLX_NV_vertex_array_range */
+#ifdef GLX_NV_video_capture
+ _glewInfo_GLX_NV_video_capture();
+#endif /* GLX_NV_video_capture */
+#ifdef GLX_NV_video_out
+ _glewInfo_GLX_NV_video_out();
+#endif /* GLX_NV_video_out */
+#ifdef GLX_OML_swap_method
+ _glewInfo_GLX_OML_swap_method();
+#endif /* GLX_OML_swap_method */
+#ifdef GLX_OML_sync_control
+ _glewInfo_GLX_OML_sync_control();
+#endif /* GLX_OML_sync_control */
+#ifdef GLX_SGIS_blended_overlay
+ _glewInfo_GLX_SGIS_blended_overlay();
+#endif /* GLX_SGIS_blended_overlay */
+#ifdef GLX_SGIS_color_range
+ _glewInfo_GLX_SGIS_color_range();
+#endif /* GLX_SGIS_color_range */
+#ifdef GLX_SGIS_multisample
+ _glewInfo_GLX_SGIS_multisample();
+#endif /* GLX_SGIS_multisample */
+#ifdef GLX_SGIS_shared_multisample
+ _glewInfo_GLX_SGIS_shared_multisample();
+#endif /* GLX_SGIS_shared_multisample */
+#ifdef GLX_SGIX_fbconfig
+ _glewInfo_GLX_SGIX_fbconfig();
+#endif /* GLX_SGIX_fbconfig */
+#ifdef GLX_SGIX_hyperpipe
+ _glewInfo_GLX_SGIX_hyperpipe();
+#endif /* GLX_SGIX_hyperpipe */
+#ifdef GLX_SGIX_pbuffer
+ _glewInfo_GLX_SGIX_pbuffer();
+#endif /* GLX_SGIX_pbuffer */
+#ifdef GLX_SGIX_swap_barrier
+ _glewInfo_GLX_SGIX_swap_barrier();
+#endif /* GLX_SGIX_swap_barrier */
+#ifdef GLX_SGIX_swap_group
+ _glewInfo_GLX_SGIX_swap_group();
+#endif /* GLX_SGIX_swap_group */
+#ifdef GLX_SGIX_video_resize
+ _glewInfo_GLX_SGIX_video_resize();
+#endif /* GLX_SGIX_video_resize */
+#ifdef GLX_SGIX_visual_select_group
+ _glewInfo_GLX_SGIX_visual_select_group();
+#endif /* GLX_SGIX_visual_select_group */
+#ifdef GLX_SGI_cushion
+ _glewInfo_GLX_SGI_cushion();
+#endif /* GLX_SGI_cushion */
+#ifdef GLX_SGI_make_current_read
+ _glewInfo_GLX_SGI_make_current_read();
+#endif /* GLX_SGI_make_current_read */
+#ifdef GLX_SGI_swap_control
+ _glewInfo_GLX_SGI_swap_control();
+#endif /* GLX_SGI_swap_control */
+#ifdef GLX_SGI_video_sync
+ _glewInfo_GLX_SGI_video_sync();
+#endif /* GLX_SGI_video_sync */
+#ifdef GLX_SUN_get_transparent_index
+ _glewInfo_GLX_SUN_get_transparent_index();
+#endif /* GLX_SUN_get_transparent_index */
+#ifdef GLX_SUN_video_resize
+ _glewInfo_GLX_SUN_video_resize();
+#endif /* GLX_SUN_video_resize */
+}
+
+#elif defined(GLEW_EGL)
+
+static void eglewInfo ()
+{
+#ifdef EGL_VERSION_1_0
+ _glewInfo_EGL_VERSION_1_0();
+#endif /* EGL_VERSION_1_0 */
+#ifdef EGL_VERSION_1_1
+ _glewInfo_EGL_VERSION_1_1();
+#endif /* EGL_VERSION_1_1 */
+#ifdef EGL_VERSION_1_2
+ _glewInfo_EGL_VERSION_1_2();
+#endif /* EGL_VERSION_1_2 */
+#ifdef EGL_VERSION_1_3
+ _glewInfo_EGL_VERSION_1_3();
+#endif /* EGL_VERSION_1_3 */
+#ifdef EGL_VERSION_1_4
+ _glewInfo_EGL_VERSION_1_4();
+#endif /* EGL_VERSION_1_4 */
+#ifdef EGL_VERSION_1_5
+ _glewInfo_EGL_VERSION_1_5();
+#endif /* EGL_VERSION_1_5 */
+#ifdef EGL_ANDROID_GLES_layers
+ _glewInfo_EGL_ANDROID_GLES_layers();
+#endif /* EGL_ANDROID_GLES_layers */
+#ifdef EGL_ANDROID_blob_cache
+ _glewInfo_EGL_ANDROID_blob_cache();
+#endif /* EGL_ANDROID_blob_cache */
+#ifdef EGL_ANDROID_create_native_client_buffer
+ _glewInfo_EGL_ANDROID_create_native_client_buffer();
+#endif /* EGL_ANDROID_create_native_client_buffer */
+#ifdef EGL_ANDROID_framebuffer_target
+ _glewInfo_EGL_ANDROID_framebuffer_target();
+#endif /* EGL_ANDROID_framebuffer_target */
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ _glewInfo_EGL_ANDROID_front_buffer_auto_refresh();
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+#ifdef EGL_ANDROID_get_frame_timestamps
+ _glewInfo_EGL_ANDROID_get_frame_timestamps();
+#endif /* EGL_ANDROID_get_frame_timestamps */
+#ifdef EGL_ANDROID_get_native_client_buffer
+ _glewInfo_EGL_ANDROID_get_native_client_buffer();
+#endif /* EGL_ANDROID_get_native_client_buffer */
+#ifdef EGL_ANDROID_image_native_buffer
+ _glewInfo_EGL_ANDROID_image_native_buffer();
+#endif /* EGL_ANDROID_image_native_buffer */
+#ifdef EGL_ANDROID_native_fence_sync
+ _glewInfo_EGL_ANDROID_native_fence_sync();
+#endif /* EGL_ANDROID_native_fence_sync */
+#ifdef EGL_ANDROID_presentation_time
+ _glewInfo_EGL_ANDROID_presentation_time();
+#endif /* EGL_ANDROID_presentation_time */
+#ifdef EGL_ANDROID_recordable
+ _glewInfo_EGL_ANDROID_recordable();
+#endif /* EGL_ANDROID_recordable */
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer();
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+#ifdef EGL_ANGLE_device_d3d
+ _glewInfo_EGL_ANGLE_device_d3d();
+#endif /* EGL_ANGLE_device_d3d */
+#ifdef EGL_ANGLE_query_surface_pointer
+ _glewInfo_EGL_ANGLE_query_surface_pointer();
+#endif /* EGL_ANGLE_query_surface_pointer */
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle();
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+#ifdef EGL_ANGLE_sync_control_rate
+ _glewInfo_EGL_ANGLE_sync_control_rate();
+#endif /* EGL_ANGLE_sync_control_rate */
+#ifdef EGL_ANGLE_window_fixed_size
+ _glewInfo_EGL_ANGLE_window_fixed_size();
+#endif /* EGL_ANGLE_window_fixed_size */
+#ifdef EGL_ARM_image_format
+ _glewInfo_EGL_ARM_image_format();
+#endif /* EGL_ARM_image_format */
+#ifdef EGL_ARM_implicit_external_sync
+ _glewInfo_EGL_ARM_implicit_external_sync();
+#endif /* EGL_ARM_implicit_external_sync */
+#ifdef EGL_ARM_pixmap_multisample_discard
+ _glewInfo_EGL_ARM_pixmap_multisample_discard();
+#endif /* EGL_ARM_pixmap_multisample_discard */
+#ifdef EGL_EXT_bind_to_front
+ _glewInfo_EGL_EXT_bind_to_front();
+#endif /* EGL_EXT_bind_to_front */
+#ifdef EGL_EXT_buffer_age
+ _glewInfo_EGL_EXT_buffer_age();
+#endif /* EGL_EXT_buffer_age */
+#ifdef EGL_EXT_client_extensions
+ _glewInfo_EGL_EXT_client_extensions();
+#endif /* EGL_EXT_client_extensions */
+#ifdef EGL_EXT_client_sync
+ _glewInfo_EGL_EXT_client_sync();
+#endif /* EGL_EXT_client_sync */
+#ifdef EGL_EXT_compositor
+ _glewInfo_EGL_EXT_compositor();
+#endif /* EGL_EXT_compositor */
+#ifdef EGL_EXT_config_select_group
+ _glewInfo_EGL_EXT_config_select_group();
+#endif /* EGL_EXT_config_select_group */
+#ifdef EGL_EXT_create_context_robustness
+ _glewInfo_EGL_EXT_create_context_robustness();
+#endif /* EGL_EXT_create_context_robustness */
+#ifdef EGL_EXT_device_base
+ _glewInfo_EGL_EXT_device_base();
+#endif /* EGL_EXT_device_base */
+#ifdef EGL_EXT_device_drm
+ _glewInfo_EGL_EXT_device_drm();
+#endif /* EGL_EXT_device_drm */
+#ifdef EGL_EXT_device_drm_render_node
+ _glewInfo_EGL_EXT_device_drm_render_node();
+#endif /* EGL_EXT_device_drm_render_node */
+#ifdef EGL_EXT_device_enumeration
+ _glewInfo_EGL_EXT_device_enumeration();
+#endif /* EGL_EXT_device_enumeration */
+#ifdef EGL_EXT_device_openwf
+ _glewInfo_EGL_EXT_device_openwf();
+#endif /* EGL_EXT_device_openwf */
+#ifdef EGL_EXT_device_persistent_id
+ _glewInfo_EGL_EXT_device_persistent_id();
+#endif /* EGL_EXT_device_persistent_id */
+#ifdef EGL_EXT_device_query
+ _glewInfo_EGL_EXT_device_query();
+#endif /* EGL_EXT_device_query */
+#ifdef EGL_EXT_device_query_name
+ _glewInfo_EGL_EXT_device_query_name();
+#endif /* EGL_EXT_device_query_name */
+#ifdef EGL_EXT_explicit_device
+ _glewInfo_EGL_EXT_explicit_device();
+#endif /* EGL_EXT_explicit_device */
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear();
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq();
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3();
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3_linear();
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3_passthrough();
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ _glewInfo_EGL_EXT_gl_colorspace_scrgb();
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear();
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+#ifdef EGL_EXT_image_dma_buf_import
+ _glewInfo_EGL_EXT_image_dma_buf_import();
+#endif /* EGL_EXT_image_dma_buf_import */
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ _glewInfo_EGL_EXT_image_dma_buf_import_modifiers();
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+#ifdef EGL_EXT_image_gl_colorspace
+ _glewInfo_EGL_EXT_image_gl_colorspace();
+#endif /* EGL_EXT_image_gl_colorspace */
+#ifdef EGL_EXT_image_implicit_sync_control
+ _glewInfo_EGL_EXT_image_implicit_sync_control();
+#endif /* EGL_EXT_image_implicit_sync_control */
+#ifdef EGL_EXT_multiview_window
+ _glewInfo_EGL_EXT_multiview_window();
+#endif /* EGL_EXT_multiview_window */
+#ifdef EGL_EXT_output_base
+ _glewInfo_EGL_EXT_output_base();
+#endif /* EGL_EXT_output_base */
+#ifdef EGL_EXT_output_drm
+ _glewInfo_EGL_EXT_output_drm();
+#endif /* EGL_EXT_output_drm */
+#ifdef EGL_EXT_output_openwf
+ _glewInfo_EGL_EXT_output_openwf();
+#endif /* EGL_EXT_output_openwf */
+#ifdef EGL_EXT_pixel_format_float
+ _glewInfo_EGL_EXT_pixel_format_float();
+#endif /* EGL_EXT_pixel_format_float */
+#ifdef EGL_EXT_platform_base
+ _glewInfo_EGL_EXT_platform_base();
+#endif /* EGL_EXT_platform_base */
+#ifdef EGL_EXT_platform_device
+ _glewInfo_EGL_EXT_platform_device();
+#endif /* EGL_EXT_platform_device */
+#ifdef EGL_EXT_platform_wayland
+ _glewInfo_EGL_EXT_platform_wayland();
+#endif /* EGL_EXT_platform_wayland */
+#ifdef EGL_EXT_platform_x11
+ _glewInfo_EGL_EXT_platform_x11();
+#endif /* EGL_EXT_platform_x11 */
+#ifdef EGL_EXT_platform_xcb
+ _glewInfo_EGL_EXT_platform_xcb();
+#endif /* EGL_EXT_platform_xcb */
+#ifdef EGL_EXT_present_opaque
+ _glewInfo_EGL_EXT_present_opaque();
+#endif /* EGL_EXT_present_opaque */
+#ifdef EGL_EXT_protected_content
+ _glewInfo_EGL_EXT_protected_content();
+#endif /* EGL_EXT_protected_content */
+#ifdef EGL_EXT_protected_surface
+ _glewInfo_EGL_EXT_protected_surface();
+#endif /* EGL_EXT_protected_surface */
+#ifdef EGL_EXT_stream_consumer_egloutput
+ _glewInfo_EGL_EXT_stream_consumer_egloutput();
+#endif /* EGL_EXT_stream_consumer_egloutput */
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ _glewInfo_EGL_EXT_surface_CTA861_3_metadata();
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ _glewInfo_EGL_EXT_surface_SMPTE2086_metadata();
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+#ifdef EGL_EXT_surface_compression
+ _glewInfo_EGL_EXT_surface_compression();
+#endif /* EGL_EXT_surface_compression */
+#ifdef EGL_EXT_swap_buffers_with_damage
+ _glewInfo_EGL_EXT_swap_buffers_with_damage();
+#endif /* EGL_EXT_swap_buffers_with_damage */
+#ifdef EGL_EXT_sync_reuse
+ _glewInfo_EGL_EXT_sync_reuse();
+#endif /* EGL_EXT_sync_reuse */
+#ifdef EGL_EXT_yuv_surface
+ _glewInfo_EGL_EXT_yuv_surface();
+#endif /* EGL_EXT_yuv_surface */
+#ifdef EGL_HI_clientpixmap
+ _glewInfo_EGL_HI_clientpixmap();
+#endif /* EGL_HI_clientpixmap */
+#ifdef EGL_HI_colorformats
+ _glewInfo_EGL_HI_colorformats();
+#endif /* EGL_HI_colorformats */
+#ifdef EGL_IMG_context_priority
+ _glewInfo_EGL_IMG_context_priority();
+#endif /* EGL_IMG_context_priority */
+#ifdef EGL_IMG_image_plane_attribs
+ _glewInfo_EGL_IMG_image_plane_attribs();
+#endif /* EGL_IMG_image_plane_attribs */
+#ifdef EGL_KHR_cl_event
+ _glewInfo_EGL_KHR_cl_event();
+#endif /* EGL_KHR_cl_event */
+#ifdef EGL_KHR_cl_event2
+ _glewInfo_EGL_KHR_cl_event2();
+#endif /* EGL_KHR_cl_event2 */
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ _glewInfo_EGL_KHR_client_get_all_proc_addresses();
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+#ifdef EGL_KHR_config_attribs
+ _glewInfo_EGL_KHR_config_attribs();
+#endif /* EGL_KHR_config_attribs */
+#ifdef EGL_KHR_context_flush_control
+ _glewInfo_EGL_KHR_context_flush_control();
+#endif /* EGL_KHR_context_flush_control */
+#ifdef EGL_KHR_create_context
+ _glewInfo_EGL_KHR_create_context();
+#endif /* EGL_KHR_create_context */
+#ifdef EGL_KHR_create_context_no_error
+ _glewInfo_EGL_KHR_create_context_no_error();
+#endif /* EGL_KHR_create_context_no_error */
+#ifdef EGL_KHR_debug
+ _glewInfo_EGL_KHR_debug();
+#endif /* EGL_KHR_debug */
+#ifdef EGL_KHR_display_reference
+ _glewInfo_EGL_KHR_display_reference();
+#endif /* EGL_KHR_display_reference */
+#ifdef EGL_KHR_fence_sync
+ _glewInfo_EGL_KHR_fence_sync();
+#endif /* EGL_KHR_fence_sync */
+#ifdef EGL_KHR_get_all_proc_addresses
+ _glewInfo_EGL_KHR_get_all_proc_addresses();
+#endif /* EGL_KHR_get_all_proc_addresses */
+#ifdef EGL_KHR_gl_colorspace
+ _glewInfo_EGL_KHR_gl_colorspace();
+#endif /* EGL_KHR_gl_colorspace */
+#ifdef EGL_KHR_gl_renderbuffer_image
+ _glewInfo_EGL_KHR_gl_renderbuffer_image();
+#endif /* EGL_KHR_gl_renderbuffer_image */
+#ifdef EGL_KHR_gl_texture_2D_image
+ _glewInfo_EGL_KHR_gl_texture_2D_image();
+#endif /* EGL_KHR_gl_texture_2D_image */
+#ifdef EGL_KHR_gl_texture_3D_image
+ _glewInfo_EGL_KHR_gl_texture_3D_image();
+#endif /* EGL_KHR_gl_texture_3D_image */
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ _glewInfo_EGL_KHR_gl_texture_cubemap_image();
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+#ifdef EGL_KHR_image
+ _glewInfo_EGL_KHR_image();
+#endif /* EGL_KHR_image */
+#ifdef EGL_KHR_image_base
+ _glewInfo_EGL_KHR_image_base();
+#endif /* EGL_KHR_image_base */
+#ifdef EGL_KHR_image_pixmap
+ _glewInfo_EGL_KHR_image_pixmap();
+#endif /* EGL_KHR_image_pixmap */
+#ifdef EGL_KHR_lock_surface
+ _glewInfo_EGL_KHR_lock_surface();
+#endif /* EGL_KHR_lock_surface */
+#ifdef EGL_KHR_lock_surface2
+ _glewInfo_EGL_KHR_lock_surface2();
+#endif /* EGL_KHR_lock_surface2 */
+#ifdef EGL_KHR_lock_surface3
+ _glewInfo_EGL_KHR_lock_surface3();
+#endif /* EGL_KHR_lock_surface3 */
+#ifdef EGL_KHR_mutable_render_buffer
+ _glewInfo_EGL_KHR_mutable_render_buffer();
+#endif /* EGL_KHR_mutable_render_buffer */
+#ifdef EGL_KHR_no_config_context
+ _glewInfo_EGL_KHR_no_config_context();
+#endif /* EGL_KHR_no_config_context */
+#ifdef EGL_KHR_partial_update
+ _glewInfo_EGL_KHR_partial_update();
+#endif /* EGL_KHR_partial_update */
+#ifdef EGL_KHR_platform_android
+ _glewInfo_EGL_KHR_platform_android();
+#endif /* EGL_KHR_platform_android */
+#ifdef EGL_KHR_platform_gbm
+ _glewInfo_EGL_KHR_platform_gbm();
+#endif /* EGL_KHR_platform_gbm */
+#ifdef EGL_KHR_platform_wayland
+ _glewInfo_EGL_KHR_platform_wayland();
+#endif /* EGL_KHR_platform_wayland */
+#ifdef EGL_KHR_platform_x11
+ _glewInfo_EGL_KHR_platform_x11();
+#endif /* EGL_KHR_platform_x11 */
+#ifdef EGL_KHR_reusable_sync
+ _glewInfo_EGL_KHR_reusable_sync();
+#endif /* EGL_KHR_reusable_sync */
+#ifdef EGL_KHR_stream
+ _glewInfo_EGL_KHR_stream();
+#endif /* EGL_KHR_stream */
+#ifdef EGL_KHR_stream_attrib
+ _glewInfo_EGL_KHR_stream_attrib();
+#endif /* EGL_KHR_stream_attrib */
+#ifdef EGL_KHR_stream_consumer_gltexture
+ _glewInfo_EGL_KHR_stream_consumer_gltexture();
+#endif /* EGL_KHR_stream_consumer_gltexture */
+#ifdef EGL_KHR_stream_cross_process_fd
+ _glewInfo_EGL_KHR_stream_cross_process_fd();
+#endif /* EGL_KHR_stream_cross_process_fd */
+#ifdef EGL_KHR_stream_fifo
+ _glewInfo_EGL_KHR_stream_fifo();
+#endif /* EGL_KHR_stream_fifo */
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ _glewInfo_EGL_KHR_stream_producer_aldatalocator();
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+#ifdef EGL_KHR_stream_producer_eglsurface
+ _glewInfo_EGL_KHR_stream_producer_eglsurface();
+#endif /* EGL_KHR_stream_producer_eglsurface */
+#ifdef EGL_KHR_surfaceless_context
+ _glewInfo_EGL_KHR_surfaceless_context();
+#endif /* EGL_KHR_surfaceless_context */
+#ifdef EGL_KHR_swap_buffers_with_damage
+ _glewInfo_EGL_KHR_swap_buffers_with_damage();
+#endif /* EGL_KHR_swap_buffers_with_damage */
+#ifdef EGL_KHR_vg_parent_image
+ _glewInfo_EGL_KHR_vg_parent_image();
+#endif /* EGL_KHR_vg_parent_image */
+#ifdef EGL_KHR_wait_sync
+ _glewInfo_EGL_KHR_wait_sync();
+#endif /* EGL_KHR_wait_sync */
+#ifdef EGL_MESA_drm_image
+ _glewInfo_EGL_MESA_drm_image();
+#endif /* EGL_MESA_drm_image */
+#ifdef EGL_MESA_image_dma_buf_export
+ _glewInfo_EGL_MESA_image_dma_buf_export();
+#endif /* EGL_MESA_image_dma_buf_export */
+#ifdef EGL_MESA_platform_gbm
+ _glewInfo_EGL_MESA_platform_gbm();
+#endif /* EGL_MESA_platform_gbm */
+#ifdef EGL_MESA_platform_surfaceless
+ _glewInfo_EGL_MESA_platform_surfaceless();
+#endif /* EGL_MESA_platform_surfaceless */
+#ifdef EGL_MESA_query_driver
+ _glewInfo_EGL_MESA_query_driver();
+#endif /* EGL_MESA_query_driver */
+#ifdef EGL_NOK_swap_region
+ _glewInfo_EGL_NOK_swap_region();
+#endif /* EGL_NOK_swap_region */
+#ifdef EGL_NOK_swap_region2
+ _glewInfo_EGL_NOK_swap_region2();
+#endif /* EGL_NOK_swap_region2 */
+#ifdef EGL_NOK_texture_from_pixmap
+ _glewInfo_EGL_NOK_texture_from_pixmap();
+#endif /* EGL_NOK_texture_from_pixmap */
+#ifdef EGL_NV_3dvision_surface
+ _glewInfo_EGL_NV_3dvision_surface();
+#endif /* EGL_NV_3dvision_surface */
+#ifdef EGL_NV_context_priority_realtime
+ _glewInfo_EGL_NV_context_priority_realtime();
+#endif /* EGL_NV_context_priority_realtime */
+#ifdef EGL_NV_coverage_sample
+ _glewInfo_EGL_NV_coverage_sample();
+#endif /* EGL_NV_coverage_sample */
+#ifdef EGL_NV_coverage_sample_resolve
+ _glewInfo_EGL_NV_coverage_sample_resolve();
+#endif /* EGL_NV_coverage_sample_resolve */
+#ifdef EGL_NV_cuda_event
+ _glewInfo_EGL_NV_cuda_event();
+#endif /* EGL_NV_cuda_event */
+#ifdef EGL_NV_depth_nonlinear
+ _glewInfo_EGL_NV_depth_nonlinear();
+#endif /* EGL_NV_depth_nonlinear */
+#ifdef EGL_NV_device_cuda
+ _glewInfo_EGL_NV_device_cuda();
+#endif /* EGL_NV_device_cuda */
+#ifdef EGL_NV_native_query
+ _glewInfo_EGL_NV_native_query();
+#endif /* EGL_NV_native_query */
+#ifdef EGL_NV_post_convert_rounding
+ _glewInfo_EGL_NV_post_convert_rounding();
+#endif /* EGL_NV_post_convert_rounding */
+#ifdef EGL_NV_post_sub_buffer
+ _glewInfo_EGL_NV_post_sub_buffer();
+#endif /* EGL_NV_post_sub_buffer */
+#ifdef EGL_NV_quadruple_buffer
+ _glewInfo_EGL_NV_quadruple_buffer();
+#endif /* EGL_NV_quadruple_buffer */
+#ifdef EGL_NV_robustness_video_memory_purge
+ _glewInfo_EGL_NV_robustness_video_memory_purge();
+#endif /* EGL_NV_robustness_video_memory_purge */
+#ifdef EGL_NV_stream_consumer_eglimage
+ _glewInfo_EGL_NV_stream_consumer_eglimage();
+#endif /* EGL_NV_stream_consumer_eglimage */
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ _glewInfo_EGL_NV_stream_consumer_gltexture_yuv();
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+#ifdef EGL_NV_stream_cross_display
+ _glewInfo_EGL_NV_stream_cross_display();
+#endif /* EGL_NV_stream_cross_display */
+#ifdef EGL_NV_stream_cross_object
+ _glewInfo_EGL_NV_stream_cross_object();
+#endif /* EGL_NV_stream_cross_object */
+#ifdef EGL_NV_stream_cross_partition
+ _glewInfo_EGL_NV_stream_cross_partition();
+#endif /* EGL_NV_stream_cross_partition */
+#ifdef EGL_NV_stream_cross_process
+ _glewInfo_EGL_NV_stream_cross_process();
+#endif /* EGL_NV_stream_cross_process */
+#ifdef EGL_NV_stream_cross_system
+ _glewInfo_EGL_NV_stream_cross_system();
+#endif /* EGL_NV_stream_cross_system */
+#ifdef EGL_NV_stream_dma
+ _glewInfo_EGL_NV_stream_dma();
+#endif /* EGL_NV_stream_dma */
+#ifdef EGL_NV_stream_fifo_next
+ _glewInfo_EGL_NV_stream_fifo_next();
+#endif /* EGL_NV_stream_fifo_next */
+#ifdef EGL_NV_stream_fifo_synchronous
+ _glewInfo_EGL_NV_stream_fifo_synchronous();
+#endif /* EGL_NV_stream_fifo_synchronous */
+#ifdef EGL_NV_stream_flush
+ _glewInfo_EGL_NV_stream_flush();
+#endif /* EGL_NV_stream_flush */
+#ifdef EGL_NV_stream_frame_limits
+ _glewInfo_EGL_NV_stream_frame_limits();
+#endif /* EGL_NV_stream_frame_limits */
+#ifdef EGL_NV_stream_metadata
+ _glewInfo_EGL_NV_stream_metadata();
+#endif /* EGL_NV_stream_metadata */
+#ifdef EGL_NV_stream_origin
+ _glewInfo_EGL_NV_stream_origin();
+#endif /* EGL_NV_stream_origin */
+#ifdef EGL_NV_stream_remote
+ _glewInfo_EGL_NV_stream_remote();
+#endif /* EGL_NV_stream_remote */
+#ifdef EGL_NV_stream_reset
+ _glewInfo_EGL_NV_stream_reset();
+#endif /* EGL_NV_stream_reset */
+#ifdef EGL_NV_stream_socket
+ _glewInfo_EGL_NV_stream_socket();
+#endif /* EGL_NV_stream_socket */
+#ifdef EGL_NV_stream_socket_inet
+ _glewInfo_EGL_NV_stream_socket_inet();
+#endif /* EGL_NV_stream_socket_inet */
+#ifdef EGL_NV_stream_socket_unix
+ _glewInfo_EGL_NV_stream_socket_unix();
+#endif /* EGL_NV_stream_socket_unix */
+#ifdef EGL_NV_stream_sync
+ _glewInfo_EGL_NV_stream_sync();
+#endif /* EGL_NV_stream_sync */
+#ifdef EGL_NV_sync
+ _glewInfo_EGL_NV_sync();
+#endif /* EGL_NV_sync */
+#ifdef EGL_NV_system_time
+ _glewInfo_EGL_NV_system_time();
+#endif /* EGL_NV_system_time */
+#ifdef EGL_NV_triple_buffer
+ _glewInfo_EGL_NV_triple_buffer();
+#endif /* EGL_NV_triple_buffer */
+#ifdef EGL_TIZEN_image_native_buffer
+ _glewInfo_EGL_TIZEN_image_native_buffer();
+#endif /* EGL_TIZEN_image_native_buffer */
+#ifdef EGL_TIZEN_image_native_surface
+ _glewInfo_EGL_TIZEN_image_native_surface();
+#endif /* EGL_TIZEN_image_native_surface */
+#ifdef EGL_WL_bind_wayland_display
+ _glewInfo_EGL_WL_bind_wayland_display();
+#endif /* EGL_WL_bind_wayland_display */
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ _glewInfo_EGL_WL_create_wayland_buffer_from_image();
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+}
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+int main (int argc, char** argv)
+{
+ GLuint err;
+ struct createParams params =
+ {
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ -1, /* pixelformat */
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "", /* display */
+ -1, /* visual */
+#endif
+ 0, /* major */
+ 0, /* minor */
+ 0, /* profile mask */
+ 0, /* flags */
+ 0 /* experimental */
+ };
+
+#if defined(GLEW_EGL)
+ typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+ PFNGLGETSTRINGPROC getString;
+#endif
+
+ if (glewParseArgs(argc-1, argv+1, &params))
+ {
+ fprintf(stderr, "Usage: glewinfo "
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ "[-pf <pixelformat>] "
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "[-display <display>] "
+ "[-visual <visual id>] "
+#endif
+ "[-version <OpenGL version>] "
+ "[-profile core|compatibility] "
+ "[-flag debug|forward] "
+ "[-experimental]"
+ "\n");
+ return 1;
+ }
+
+ if (GL_TRUE == glewCreateContext(&params))
+ {
+ fprintf(stderr, "Error: glewCreateContext failed\n");
+ glewDestroyContext();
+ return 1;
+ }
+ glewExperimental = params.experimental ? GL_TRUE : GL_FALSE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ glewDestroyContext();
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ getString = (PFNGLGETSTRINGPROC) eglGetProcAddress("glGetString");
+ if (!getString)
+ {
+ fprintf(stderr, "Error: eglGetProcAddress failed to fetch glGetString\n");
+ glewDestroyContext();
+ return 1;
+ }
+#endif
+
+#if defined(_WIN32)
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&f, "glewinfo.txt", "w") != 0)
+ f = stdout;
+#else
+ f = fopen("glewinfo.txt", "w");
+#endif
+ if (f == NULL) f = stdout;
+#else
+ f = stdout;
+#endif
+ fprintf(f, "---------------------------\n");
+ fprintf(f, " GLEW Extension Info\n");
+ fprintf(f, "---------------------------\n\n");
+ fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n",
+ params.display == NULL ? getenv("DISPLAY") : params.display, params.visual);
+#endif
+#if defined(GLEW_EGL)
+ fprintf(f, "Running on a %s from %s\n",
+ getString(GL_RENDERER), getString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", getString(GL_VERSION));
+#else
+ fprintf(f, "Running on a %s from %s\n",
+ glGetString(GL_RENDERER), glGetString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION));
+#endif
+ glewInfo();
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+ eglewInfo();
+#elif defined(_WIN32)
+ wglewInfo();
+#else
+ glxewInfo();
+#endif
+ if (f != stdout) fclose(f);
+ glewDestroyContext();
+ return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *params)
+{
+ int p = 0;
+ while (p < argc)
+ {
+ if (!strcmp(argv[p], "-version"))
+ {
+ if (++p >= argc) return GL_TRUE;
+#if defined(__STDC_LIB_EXT1__) || (defined(_MSC_VER) && (_MSC_VER >= 1400))
+ if (sscanf_s(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#else
+ if (sscanf(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#endif
+ }
+ else if (!strcmp(argv[p], "-profile"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("core", argv[p]) == 0) params->profile |= 1;
+ else if (strcmp("compatibility",argv[p]) == 0) params->profile |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+ else if (!strcmp(argv[p], "-flag"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("debug", argv[p]) == 0) params->flags |= 1;
+ else if (strcmp("forward",argv[p]) == 0) params->flags |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->pixelformat = strtol(argv[p++], NULL, 0);
+ }
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ else if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->display = argv[p++];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->visual = (int)strtol(argv[p++], NULL, 0);
+ }
+#endif
+ else if (!strcmp(argv[p], "-experimental"))
+ {
+ params->experimental = 1;
+ ++p;
+ }
+ else
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_EGL)
+EGLDisplay display;
+EGLContext ctx;
+
+/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ EGLDeviceEXT devices[1];
+ EGLint numDevices;
+ EGLSurface surface;
+ EGLint majorVersion, minorVersion;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
+ EGL_NONE
+ };
+ static const EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ static const EGLint pBufferAttribs[] = {
+ EGL_WIDTH, 128,
+ EGL_HEIGHT, 128,
+ EGL_NONE
+ };
+ EGLConfig config;
+ EGLint numConfig;
+ EGLBoolean pBuffer;
+
+ PFNEGLQUERYDEVICESEXTPROC queryDevices = NULL;
+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL;
+ PFNEGLGETERRORPROC getError = NULL;
+ PFNEGLGETDISPLAYPROC getDisplay = NULL;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLBINDAPIPROC bindAPI = NULL;
+ PFNEGLCHOOSECONFIGPROC chooseConfig = NULL;
+ PFNEGLCREATEWINDOWSURFACEPROC createWindowSurface = NULL;
+ PFNEGLCREATECONTEXTPROC createContext = NULL;
+ PFNEGLMAKECURRENTPROC makeCurrent = NULL;
+ PFNEGLCREATEPBUFFERSURFACEPROC createPbufferSurface = NULL;
+
+ /* Load necessary entry points */
+ queryDevices = (PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT");
+ getPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress("eglGetPlatformDisplayEXT");
+ getError = (PFNEGLGETERRORPROC) eglGetProcAddress("eglGetError");
+ getDisplay = (PFNEGLGETDISPLAYPROC) eglGetProcAddress("eglGetDisplay");
+ initialize = (PFNEGLINITIALIZEPROC) eglGetProcAddress("eglInitialize");
+ bindAPI = (PFNEGLBINDAPIPROC) eglGetProcAddress("eglBindAPI");
+ chooseConfig = (PFNEGLCHOOSECONFIGPROC) eglGetProcAddress("eglChooseConfig");
+ createWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) eglGetProcAddress("eglCreateWindowSurface");
+ createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) eglGetProcAddress("eglCreatePbufferSurface");
+ createContext = (PFNEGLCREATECONTEXTPROC) eglGetProcAddress("eglCreateContext");
+ makeCurrent = (PFNEGLMAKECURRENTPROC) eglGetProcAddress("eglMakeCurrent");
+ if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent)
+ return GL_TRUE;
+
+ pBuffer = 0;
+ display = EGL_NO_DISPLAY;
+ if (queryDevices && getPlatformDisplay)
+ {
+ queryDevices(1, devices, &numDevices);
+ if (numDevices==1)
+ {
+ /* Nvidia EGL doesn't need X11 for p-buffer surface */
+ display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0);
+ configAttribs[1] = EGL_PBUFFER_BIT;
+ pBuffer = 1;
+ }
+ }
+ if (display==EGL_NO_DISPLAY)
+ {
+ /* Fall-back to X11 surface, works on Mesa */
+ display = getDisplay(EGL_DEFAULT_DISPLAY);
+ }
+ if (display == EGL_NO_DISPLAY)
+ return GL_TRUE;
+
+ eglewInit(display);
+
+ if (bindAPI(EGL_OPENGL_API) != EGL_TRUE)
+ return GL_TRUE;
+
+ if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1))
+ return GL_TRUE;
+
+ ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL);
+ if (NULL == ctx)
+ return GL_TRUE;
+
+ surface = EGL_NO_SURFACE;
+ /* Create a p-buffer surface if possible */
+ if (pBuffer && createPbufferSurface)
+ {
+ surface = createPbufferSurface(display, config, pBufferAttribs);
+ }
+ /* Create a generic surface without a native window, if necessary */
+ if (surface==EGL_NO_SURFACE)
+ {
+ surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL);
+ }
+#if 0
+ if (surface == EGL_NO_SURFACE)
+ return GL_TRUE;
+#endif
+
+ if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE)
+ return GL_TRUE;
+
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) eglDestroyContext(display, ctx);
+}
+
+#elif defined(GLEW_OSMESA)
+OSMesaContext ctx;
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) OSMesaDestroyContext(ctx);
+}
+
+#elif defined(_WIN32)
+
+HWND wnd = NULL;
+HDC dc = NULL;
+HGLRC rc = NULL;
+
+GLboolean glewCreateContext (struct createParams* params)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL);
+ if (NULL == wnd) return GL_TRUE;
+ /* get the device context */
+ dc = GetDC(wnd);
+ if (NULL == dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (params->pixelformat == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ params->pixelformat = ChoosePixelFormat(dc, &pfd);
+ if (params->pixelformat == 0) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(dc, params->pixelformat, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ rc = wglCreateContext(dc);
+ if (NULL == rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(dc, rc)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ HGLRC oldRC = rc;
+ int contextAttrs[20];
+ int i;
+
+ wglewInit();
+
+ /* Intel HD 3000 has WGL_ARB_create_context, but not WGL_ARB_create_context_profile */
+ if (!wglewGetExtension("WGL_ARB_create_context"))
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = WGL_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = 0;
+ rc = wglCreateContextAttribsARB(dc, 0, contextAttrs);
+
+ if (NULL == rc) return GL_TRUE;
+ if (!wglMakeCurrent(dc, rc)) return GL_TRUE;
+
+ wglDeleteContext(oldRC);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != rc) wglDeleteContext(rc);
+ if (NULL != wnd && NULL != dc) ReleaseDC(wnd, dc);
+ if (NULL != wnd) DestroyWindow(wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+
+CGLContextObj ctx, octx;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ CGLPixelFormatAttribute contextAttrs[20];
+ int i;
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+
+ i = 0;
+ contextAttrs[i++] = kCGLPFAAccelerated; /* No software rendering */
+
+ /* MAC_OS_X_VERSION_10_7 == 1070 */
+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ if (params->profile & GL_CONTEXT_CORE_PROFILE_BIT)
+ {
+ if ((params->major==3 && params->minor>=2) || params->major>3)
+ {
+ contextAttrs[i++] = kCGLPFAOpenGLProfile; /* OSX 10.7 Lion onwards */
+ contextAttrs[i++] = (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core; /* 3.2 Core Context */
+ }
+ }
+ #endif
+
+ contextAttrs[i++] = 0;
+
+ error = CGLChoosePixelFormat(contextAttrs, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx);
+ if (error) return GL_TRUE;
+ /* Needed for Regal on the Mac */
+ #if defined(GLEW_REGAL) && defined(__APPLE__)
+ RegalMakeCurrent(ctx);
+ #endif
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ CGLSetCurrentContext(octx);
+ CGLReleaseContext(ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ /* TODO: Haiku: We need to call C++ code here */
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ /* TODO: Haiku: We need to call C++ code here */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+Display* dpy = NULL;
+XVisualInfo* vi = NULL;
+XVisualInfo* vis = NULL;
+GLXContext ctx = NULL;
+Window wnd = 0;
+Colormap cmap = 0;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* open display */
+ dpy = XOpenDisplay(params->display);
+ if (NULL == dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ if (params->visual == -1)
+ {
+ vi = glXChooseVisual(dpy, DefaultScreen(dpy), attrib);
+ if (NULL == vi) return GL_TRUE;
+ params->visual = (int)XVisualIDFromVisual(vi->visual);
+ }
+ else
+ {
+ int n_vis, i;
+ vis = XGetVisualInfo(dpy, 0, NULL, &n_vis);
+ for (i=0; i<n_vis; i++)
+ {
+ if ((int)XVisualIDFromVisual(vis[i].visual) == params->visual)
+ vi = &vis[i];
+ }
+ if (vi == NULL) return GL_TRUE;
+ }
+ /* create context */
+ ctx = glXCreateContext(dpy, vi, None, True);
+ if (NULL == ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = cmap;
+ wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen),
+ 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ GLXContext oldCtx = ctx;
+ GLXFBConfig *FBConfigs;
+ int FBConfigAttrs[] = { GLX_FBCONFIG_ID, 0, None };
+ int contextAttrs[20];
+ int nelems, i;
+
+ glxewInit();
+
+ if (!glxewGetExtension("GLX_ARB_create_context"))
+ return GL_TRUE;
+
+ if (glXQueryContext(dpy, oldCtx, GLX_FBCONFIG_ID, &FBConfigAttrs[1]))
+ return GL_TRUE;
+ FBConfigs = glXChooseFBConfig(dpy, vi->screen, FBConfigAttrs, &nelems);
+
+ if (nelems < 1)
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = GLX_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = None;
+ ctx = glXCreateContextAttribsARB(dpy, *FBConfigs, NULL, True, contextAttrs);
+
+ if (NULL == ctx) return GL_TRUE;
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+
+ glXDestroyContext(dpy, oldCtx);
+
+ XFree(FBConfigs);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != dpy && NULL != ctx) glXDestroyContext(dpy, ctx);
+ if (NULL != dpy && 0 != wnd) XDestroyWindow(dpy, wnd);
+ if (NULL != dpy && 0 != cmap) XFreeColormap(dpy, cmap);
+ if (NULL != vis)
+ XFree(vis);
+ else if (NULL != vi)
+ XFree(vi);
+ if (NULL != dpy) XCloseDisplay(dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
diff --git a/glew/src/visualinfo.c b/glew/src/visualinfo.c
new file mode 100644
index 0000000..1de1fa7
--- /dev/null
+++ b/glew/src/visualinfo.c
@@ -0,0 +1,1283 @@
+/*
+** visualinfo.c
+**
+** Copyright (C) Nate Robins, 1997
+** Michael Wimmer, 1999
+** Milan Ikits, 2002-2008
+** Nigel Stewart, 2008-2021
+**
+** visualinfo is a small utility that displays all available visuals,
+** aka. pixelformats, in an OpenGL system along with renderer version
+** information. It shows a table of all the visuals that support OpenGL
+** along with their capabilities. The format of the table is similar to
+** that of glxinfo on Unix systems:
+**
+** visual ~= pixel format descriptor
+** id = visual id (integer from 1 - max visuals)
+** tp = type (wn: window, pb: pbuffer, wp: window & pbuffer, bm: bitmap)
+** ac = acceleration (ge: generic, fu: full, no: none)
+** fm = format (i: integer, f: float, c: color index)
+** db = double buffer (y = yes)
+** sw = swap method (x: exchange, c: copy, u: undefined)
+** st = stereo (y = yes)
+** sz = total # bits
+** r = # bits of red
+** g = # bits of green
+** b = # bits of blue
+** a = # bits of alpha
+** axbf = # aux buffers
+** dpth = # bits of depth
+** stcl = # bits of stencil
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+#elif !defined(__HAIKU__)
+#include <GL/glxew.h>
+#endif
+
+typedef struct GLContextStruct
+{
+#if defined(GLEW_OSMESA)
+ OSMesaContext ctx;
+#elif defined(GLEW_EGL)
+ EGLContext ctx;
+#elif defined(_WIN32)
+ HWND wnd;
+ HDC dc;
+ HGLRC rc;
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+ CGLContextObj ctx, octx;
+#elif !defined(__HAIKU__)
+ Display* dpy;
+ XVisualInfo* vi;
+ GLXContext ctx;
+ Window wnd;
+ Colormap cmap;
+#endif
+} GLContext;
+
+void InitContext (GLContext* ctx);
+GLboolean CreateContext (GLContext* ctx);
+void DestroyContext (GLContext* ctx);
+void VisualInfo (GLContext* ctx);
+void PrintExtensions (const char* s);
+GLboolean ParseArgs (int argc, char** argv);
+
+int showall = 0;
+int displaystdout = 0;
+int verbose = 0;
+int drawableonly = 0;
+
+char* display = NULL;
+int visual = -1;
+
+FILE* file = 0;
+
+int
+main (int argc, char** argv)
+{
+ GLenum err;
+ GLContext ctx;
+
+ /* ---------------------------------------------------------------------- */
+ /* parse arguments */
+ if (GL_TRUE == ParseArgs(argc-1, argv+1))
+ {
+#if defined(_WIN32)
+ fprintf(stderr, "Usage: visualinfo [-a] [-s] [-h] [-pf <id>]\n");
+ fprintf(stderr, " -a: show all visuals\n");
+ fprintf(stderr, " -s: display to stdout instead of visualinfo.txt\n");
+ fprintf(stderr, " -pf <id>: use given pixelformat\n");
+ fprintf(stderr, " -h: this screen\n");
+#else
+ fprintf(stderr, "Usage: visualinfo [-h] [-display <display>] [-visual <id>]\n");
+ fprintf(stderr, " -h: this screen\n");
+ fprintf(stderr, " -display <display>: use given display\n");
+ fprintf(stderr, " -visual <id>: use given visual\n");
+#endif
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ {
+ fprintf(stderr, "Error [main]: EGL not supported by visualinfo.\n");
+ return 1;
+ }
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* create OpenGL rendering context */
+ InitContext(&ctx);
+ if (GL_TRUE == CreateContext(&ctx))
+ {
+ fprintf(stderr, "Error: CreateContext failed\n");
+ DestroyContext(&ctx);
+ return 1;
+ }
+
+ /* ---------------------------------------------------------------------- */
+ /* initialize GLEW */
+ glewExperimental = GL_TRUE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ DestroyContext(&ctx);
+ return 1;
+ }
+
+ /* ---------------------------------------------------------------------- */
+ /* open file */
+#if defined(_WIN32)
+ if (!displaystdout)
+ {
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&file, "visualinfo.txt", "w") != 0)
+ file = stdout;
+#else
+ file = fopen("visualinfo.txt", "w");
+#endif
+ }
+ if (file == NULL)
+ file = stdout;
+#else
+ file = stdout;
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* output header information */
+ /* OpenGL extensions */
+ fprintf(file, "OpenGL vendor string: %s\n", glGetString(GL_VENDOR));
+ fprintf(file, "OpenGL renderer string: %s\n", glGetString(GL_RENDERER));
+ fprintf(file, "OpenGL version string: %s\n", glGetString(GL_VERSION));
+ fprintf(file, "OpenGL extensions (GL_): \n");
+ PrintExtensions((const char*)glGetString(GL_EXTENSIONS));
+
+#ifndef GLEW_NO_GLU
+ /* GLU extensions */
+ fprintf(file, "GLU version string: %s\n", gluGetString(GLU_VERSION));
+ fprintf(file, "GLU extensions (GLU_): \n");
+ PrintExtensions((const char*)gluGetString(GLU_EXTENSIONS));
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* extensions string */
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ /* WGL extensions */
+ if (WGLEW_ARB_extensions_string || WGLEW_EXT_extensions_string)
+ {
+ fprintf(file, "WGL extensions (WGL_): \n");
+ PrintExtensions(wglGetExtensionsStringARB ?
+ (const char*)wglGetExtensionsStringARB(ctx.dc) :
+ (const char*)wglGetExtensionsStringEXT());
+ }
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#elif defined(__HAIKU__)
+
+ /* TODO */
+
+#else
+ /* GLX extensions */
+ fprintf(file, "GLX extensions (GLX_): \n");
+ PrintExtensions(glXQueryExtensionsString(glXGetCurrentDisplay(),
+ DefaultScreen(glXGetCurrentDisplay())));
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* enumerate all the formats */
+ VisualInfo(&ctx);
+
+ /* ---------------------------------------------------------------------- */
+ /* release resources */
+ DestroyContext(&ctx);
+ if (file != stdout)
+ fclose(file);
+ return 0;
+}
+
+/* do the magic to separate all extensions with comma's, except
+ for the last one that _may_ terminate in a space. */
+void PrintExtensions (const char* s)
+{
+ char t[80];
+ int i=0;
+ char* p=0;
+
+ t[79] = '\0';
+ while (*s)
+ {
+ t[i++] = *s;
+ if(*s == ' ')
+ {
+ if (*(s+1) != '\0') {
+ t[i-1] = ',';
+ t[i] = ' ';
+ p = &t[i++];
+ }
+ else /* zoinks! last one terminated in a space! */
+ {
+ t[i-1] = '\0';
+ }
+ }
+ if(i > 80 - 5)
+ {
+ *p = t[i] = '\0';
+ fprintf(file, " %s\n", t);
+ p++;
+ i = (int)strlen(p);
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ strcpy_s(t, sizeof(t), p);
+#else
+ strcpy(t, p);
+#endif
+ }
+ s++;
+ }
+ t[i] = '\0';
+ fprintf(file, " %s.\n", t);
+}
+
+/* ---------------------------------------------------------------------- */
+
+#if defined(GLEW_OSMESA) || defined(GLEW_EGL)
+
+void
+VisualInfo (GLContext* ctx)
+{
+}
+
+#elif defined(_WIN32)
+
+void
+VisualInfoARB (GLContext* ctx)
+{
+ int attrib[32], value[32], n_attrib, n_pbuffer=0, n_float=0;
+ int i, pf, maxpf;
+ unsigned int c;
+
+ /* to get pbuffer capable pixel formats */
+ attrib[0] = WGL_DRAW_TO_PBUFFER_ARB;
+ attrib[1] = GL_TRUE;
+ attrib[2] = 0;
+ wglChoosePixelFormatARB(ctx->dc, attrib, 0, 1, &pf, &c);
+ /* query number of pixel formats */
+ attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;
+ wglGetPixelFormatAttribivARB(ctx->dc, 0, 0, 1, attrib, value);
+ maxpf = value[0];
+ for (i=0; i<32; i++)
+ value[i] = 0;
+
+ attrib[0] = WGL_SUPPORT_OPENGL_ARB;
+ attrib[1] = WGL_DRAW_TO_WINDOW_ARB;
+ attrib[2] = WGL_DRAW_TO_BITMAP_ARB;
+ attrib[3] = WGL_ACCELERATION_ARB;
+ /* WGL_NO_ACCELERATION_ARB, WGL_GENERIC_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB */
+ attrib[4] = WGL_SWAP_METHOD_ARB;
+ /* WGL_SWAP_EXCHANGE_ARB, WGL_SWAP_COPY_ARB, WGL_SWAP_UNDEFINED_ARB */
+ attrib[5] = WGL_DOUBLE_BUFFER_ARB;
+ attrib[6] = WGL_STEREO_ARB;
+ attrib[7] = WGL_PIXEL_TYPE_ARB;
+ /* WGL_TYPE_RGBA_ARB, WGL_TYPE_COLORINDEX_ARB,
+ WGL_TYPE_RGBA_FLOAT_ATI (WGL_ATI_pixel_format_float) */
+ /* Color buffer information */
+ attrib[8] = WGL_COLOR_BITS_ARB;
+ attrib[9] = WGL_RED_BITS_ARB;
+ attrib[10] = WGL_GREEN_BITS_ARB;
+ attrib[11] = WGL_BLUE_BITS_ARB;
+ attrib[12] = WGL_ALPHA_BITS_ARB;
+ /* Accumulation buffer information */
+ attrib[13] = WGL_ACCUM_BITS_ARB;
+ attrib[14] = WGL_ACCUM_RED_BITS_ARB;
+ attrib[15] = WGL_ACCUM_GREEN_BITS_ARB;
+ attrib[16] = WGL_ACCUM_BLUE_BITS_ARB;
+ attrib[17] = WGL_ACCUM_ALPHA_BITS_ARB;
+ /* Depth, stencil, and aux buffer information */
+ attrib[18] = WGL_DEPTH_BITS_ARB;
+ attrib[19] = WGL_STENCIL_BITS_ARB;
+ attrib[20] = WGL_AUX_BUFFERS_ARB;
+ /* Layer information */
+ attrib[21] = WGL_NUMBER_OVERLAYS_ARB;
+ attrib[22] = WGL_NUMBER_UNDERLAYS_ARB;
+ attrib[23] = WGL_SWAP_LAYER_BUFFERS_ARB;
+ attrib[24] = WGL_SAMPLES_ARB;
+ attrib[25] = WGL_SUPPORT_GDI_ARB;
+ n_attrib = 26;
+ if (WGLEW_ARB_pbuffer)
+ {
+ attrib[n_attrib] = WGL_DRAW_TO_PBUFFER_ARB;
+ n_pbuffer = n_attrib;
+ n_attrib++;
+ }
+ if (WGLEW_NV_float_buffer)
+ {
+ attrib[n_attrib] = WGL_FLOAT_COMPONENTS_NV;
+ n_float = n_attrib;
+ n_attrib++;
+ }
+
+ if (!verbose)
+ {
+ /* print table header */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | layer |\n");
+ fprintf(file, " | id | tp ac gd fm db sw st ms | sz r g b a | bf th cl | sz r g b a | ov un sw |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ wglGetPixelFormatAttribivARB(ctx->dc, i, 0, n_attrib, attrib, value);
+ /* only describe this format if it supports OpenGL */
+ if (!value[0]) continue;
+ /* by default show only fully accelerated window or pbuffer capable visuals */
+ if (!showall
+ && ((value[2] && !value[1])
+ || (!WGLEW_ARB_pbuffer || !value[n_pbuffer])
+ || (value[3] != WGL_FULL_ACCELERATION_ARB))) continue;
+ /* print out the information for this visual */
+ /* visual id */
+ fprintf(file, " |% 4d | ", i);
+ /* visual type */
+ if (value[1])
+ {
+ if (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, "wp ");
+ else fprintf(file, "wn ");
+ }
+ else
+ {
+ if (value[2]) fprintf(file, "bm ");
+ else if (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, "pb ");
+ }
+ /* acceleration */
+ fprintf(file, "%s ", value[3] == WGL_FULL_ACCELERATION_ARB ? "fu" :
+ value[3] == WGL_GENERIC_ACCELERATION_ARB ? "ge" :
+ value[3] == WGL_NO_ACCELERATION_ARB ? "no" : ". ");
+ /* gdi support */
+ fprintf(file, " %c ", value[25] ? 'y' : '.');
+ /* format */
+ if (WGLEW_NV_float_buffer && value[n_float]) fprintf(file, " f ");
+ else if (WGLEW_ATI_pixel_format_float && value[7] == WGL_TYPE_RGBA_FLOAT_ATI) fprintf(file, " f ");
+ else if (value[7] == WGL_TYPE_RGBA_ARB) fprintf(file, " i ");
+ else if (value[7] == WGL_TYPE_COLORINDEX_ARB) fprintf(file, " c ");
+ else if (value[7] == WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT) fprintf(file," p ");
+ else fprintf(file," ? ");
+ /* double buffer */
+ fprintf(file, " %c ", value[5] ? 'y' : '.');
+ /* swap method */
+ if (value[4] == WGL_SWAP_EXCHANGE_ARB) fprintf(file, " x ");
+ else if (value[4] == WGL_SWAP_COPY_ARB) fprintf(file, " c ");
+ else if (value[4] == WGL_SWAP_UNDEFINED_ARB) fprintf(file, " . ");
+ else fprintf(file, " . ");
+ /* stereo */
+ fprintf(file, " %c ", value[6] ? 'y' : '.');
+ /* multisample */
+ if (value[24] > 0)
+ fprintf(file, "%2d | ", value[24]);
+ else
+ fprintf(file, " . | ");
+ /* color size */
+ if (value[8]) fprintf(file, "%3d ", value[8]);
+ else fprintf(file, " . ");
+ /* red */
+ if (value[9]) fprintf(file, "%2d ", value[9]);
+ else fprintf(file, " . ");
+ /* green */
+ if (value[10]) fprintf(file, "%2d ", value[10]);
+ else fprintf(file, " . ");
+ /* blue */
+ if (value[11]) fprintf(file, "%2d ", value[11]);
+ else fprintf(file, " . ");
+ /* alpha */
+ if (value[12]) fprintf(file, "%2d | ", value[12]);
+ else fprintf(file, " . | ");
+ /* aux buffers */
+ if (value[20]) fprintf(file, "%2d ", value[20]);
+ else fprintf(file, " . ");
+ /* depth */
+ if (value[18]) fprintf(file, "%2d ", value[18]);
+ else fprintf(file, " . ");
+ /* stencil */
+ if (value[19]) fprintf(file, "%2d | ", value[19]);
+ else fprintf(file, " . | ");
+ /* accum size */
+ if (value[13]) fprintf(file, "%3d ", value[13]);
+ else fprintf(file, " . ");
+ /* accum red */
+ if (value[14]) fprintf(file, "%2d ", value[14]);
+ else fprintf(file, " . ");
+ /* accum green */
+ if (value[15]) fprintf(file, "%2d ", value[15]);
+ else fprintf(file, " . ");
+ /* accum blue */
+ if (value[16]) fprintf(file, "%2d ", value[16]);
+ else fprintf(file, " . ");
+ /* accum alpha */
+ if (value[17]) fprintf(file, "%2d | ", value[17]);
+ else fprintf(file, " . | ");
+ /* overlay */
+ if (value[21]) fprintf(file, "%2d ", value[21]);
+ else fprintf(file, " . ");
+ /* underlay */
+ if (value[22]) fprintf(file, "%2d ", value[22]);
+ else fprintf(file, " . ");
+ /* layer swap */
+ if (value[23]) fprintf(file, "y ");
+ else fprintf(file, " . ");
+ fprintf(file, "|\n");
+ }
+ /* print table footer */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | layer |\n");
+ fprintf(file, " | id | tp ac gd fm db sw st ms | sz r g b a | bf th cl | sz r g b a | ov un sw |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ }
+ else /* verbose */
+ {
+#if 0
+ fprintf(file, "\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;
+ fprintf(file, "Visual ID: %2d depth=%d class=%s\n", i, pfd.cDepthBits,
+ pfd.cColorBits <= 8 ? "PseudoColor" : "TrueColor");
+ fprintf(file, " bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\n", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? "rgba" : "ci", pfd.dwFlags & PFD_DOUBLEBUFFER, pfd.dwFlags & PFD_STEREO);
+ fprintf(file, " generic=%d generic accelerated=%d\n", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);
+ fprintf(file, " rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);
+ fprintf(file, " auxBuffers=%d depthSize=%d stencilSize=%d\n", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);
+ fprintf(file, " accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);
+ fprintf(file, " multiSample=%d multisampleBuffers=%d\n", 0, 0);
+ fprintf(file, " Opaque.\n");
+ }
+#endif
+ }
+}
+
+void
+VisualInfoGDI (GLContext* ctx)
+{
+ int i, maxpf;
+ PIXELFORMATDESCRIPTOR pfd;
+
+ /* calling DescribePixelFormat() with NULL pfd (!!!) return maximum
+ number of pixel formats */
+ maxpf = DescribePixelFormat(ctx->dc, 1, 0, NULL);
+
+ if (!verbose)
+ {
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ fprintf(file, " visual x bf lv rg d st ge ge r g b a ax dp st accum buffs ms \n");
+ fprintf(file, " id dep tp sp sz l ci b ro ne ac sz sz sz sz bf th cl sz r g b a ns b\n");
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && (pfd.dwFlags & PFD_DRAW_TO_BITMAP))) continue;
+ /* other criteria could be tested here for actual pixel format
+ choosing in an application:
+
+ for (...each pixel format...) {
+ if (pfd.dwFlags & PFD_SUPPORT_OPENGL &&
+ pfd.dwFlags & PFD_DOUBLEBUFFER &&
+ pfd.cDepthBits >= 24 &&
+ pfd.cColorBits >= 24)
+ {
+ goto found;
+ }
+ }
+ ... not found so exit ...
+ found:
+ ... found so use it ...
+ */
+ /* print out the information for this pixel format */
+ fprintf(file, "0x%02x ", i);
+ fprintf(file, "%3d ", pfd.cColorBits);
+ if(pfd.dwFlags & PFD_DRAW_TO_WINDOW) fprintf(file, "wn ");
+ else if(pfd.dwFlags & PFD_DRAW_TO_BITMAP) fprintf(file, "bm ");
+ else fprintf(file, "pb ");
+ /* should find transparent pixel from LAYERPLANEDESCRIPTOR */
+ fprintf(file, " . ");
+ fprintf(file, "%3d ", pfd.cColorBits);
+ /* bReserved field indicates number of over/underlays */
+ if(pfd.bReserved) fprintf(file, " %d ", pfd.bReserved);
+ else fprintf(file, " . ");
+ fprintf(file, " %c ", pfd.iPixelType == PFD_TYPE_RGBA ? 'r' : 'c');
+ fprintf(file, "%c ", pfd.dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.');
+ fprintf(file, " %c ", pfd.dwFlags & PFD_STEREO ? 'y' : '.');
+ /* added: */
+ fprintf(file, " %c ", pfd.dwFlags & PFD_GENERIC_FORMAT ? 'y' : '.');
+ fprintf(file, " %c ", pfd.dwFlags & PFD_GENERIC_ACCELERATED ? 'y' : '.');
+ if(pfd.cRedBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cRedBits);
+ else fprintf(file, " . ");
+ if(pfd.cGreenBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cGreenBits);
+ else fprintf(file, " . ");
+ if(pfd.cBlueBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cBlueBits);
+ else fprintf(file, " . ");
+ if(pfd.cAlphaBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cAlphaBits);
+ else fprintf(file, " . ");
+ if(pfd.cAuxBuffers) fprintf(file, "%2d ", pfd.cAuxBuffers);
+ else fprintf(file, " . ");
+ if(pfd.cDepthBits) fprintf(file, "%2d ", pfd.cDepthBits);
+ else fprintf(file, " . ");
+ if(pfd.cStencilBits) fprintf(file, "%2d ", pfd.cStencilBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumBits) fprintf(file, "%3d ", pfd.cAccumBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumRedBits) fprintf(file, "%2d ", pfd.cAccumRedBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumGreenBits) fprintf(file, "%2d ", pfd.cAccumGreenBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumBlueBits) fprintf(file, "%2d ", pfd.cAccumBlueBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumAlphaBits) fprintf(file, "%2d ", pfd.cAccumAlphaBits);
+ else fprintf(file, " . ");
+ /* no multisample in win32 */
+ fprintf(file, " . .\n");
+ }
+ /* print table footer */
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ fprintf(file, " visual x bf lv rg d st ge ge r g b a ax dp st accum buffs ms \n");
+ fprintf(file, " id dep tp sp sz l ci b ro ne ac sz sz sz sz bf th cl sz r g b a ns b\n");
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ }
+ else /* verbose */
+ {
+ fprintf(file, "\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;
+ fprintf(file, "Visual ID: %2d depth=%d class=%s\n", i, pfd.cDepthBits,
+ pfd.cColorBits <= 8 ? "PseudoColor" : "TrueColor");
+ fprintf(file, " bufferSize=%d level=%d renderType=%s doubleBuffer=%ld stereo=%ld\n", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? "rgba" : "ci", (long) (pfd.dwFlags & PFD_DOUBLEBUFFER), (long) (pfd.dwFlags & PFD_STEREO));
+ fprintf(file, " generic=%d generic accelerated=%d\n", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);
+ fprintf(file, " rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);
+ fprintf(file, " auxBuffers=%d depthSize=%d stencilSize=%d\n", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);
+ fprintf(file, " accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);
+ fprintf(file, " multiSample=%d multisampleBuffers=%d\n", 0, 0);
+ fprintf(file, " Opaque.\n");
+ }
+ }
+}
+
+void
+VisualInfo (GLContext* ctx)
+{
+ if (WGLEW_ARB_pixel_format)
+ VisualInfoARB(ctx);
+ else
+ VisualInfoGDI(ctx);
+}
+
+/* ---------------------------------------------------------------------- */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+void
+VisualInfo (__attribute__((unused)) GLContext* ctx)
+{
+/*
+ int attrib[] = { AGL_RGBA, AGL_NONE };
+ AGLPixelFormat pf;
+ GLint value;
+ pf = aglChoosePixelFormat(NULL, 0, attrib);
+ while (pf != NULL)
+ {
+ aglDescribePixelFormat(pf, GL_RGBA, &value);
+ fprintf(stderr, "%d\n", value);
+ pf = aglNextPixelFormat(pf);
+ }
+*/
+}
+
+/* ---------------------------------------------------------------------- */
+
+#elif defined(__HAIKU__)
+
+void
+VisualInfo (GLContext* ctx)
+{
+ /* TODO */
+}
+
+#else /* GLX */
+
+void
+VisualInfo (GLContext* ctx)
+{
+ int n_fbc;
+ GLXFBConfig* fbc;
+ int value, ret, i;
+
+ fbc = glXGetFBConfigs(ctx->dpy, DefaultScreen(ctx->dpy), &n_fbc);
+
+ if (fbc)
+ {
+ if (!verbose)
+ {
+ /* print table header */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | ms | cav |\n");
+ fprintf(file, " | id | tp xr cl fm db st lv xp | sz r g b a | bf th cl | r g b a | ns b | eat |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ /* loop through all the fbcs */
+ for (i=0; i<n_fbc; i++)
+ {
+ /* print out the information for this fbc */
+ /* visual id */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FBCONFIG_ID, &value);
+ if (ret != Success)
+ {
+ fprintf(file, "| ? |");
+ }
+ else
+ {
+ fprintf(file, " |% 4d | ", value);
+ }
+ /* visual type */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DRAWABLE_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value & GLX_WINDOW_BIT)
+ {
+ if (value & GLX_PBUFFER_BIT)
+ {
+ fprintf(file, "wp ");
+ }
+ else
+ {
+ fprintf(file, "wn ");
+ }
+ }
+ else
+ {
+ if (value & GLX_PBUFFER_BIT)
+ {
+ fprintf(file, "pb ");
+ }
+ else if (value & GLX_PIXMAP_BIT)
+ {
+ fprintf(file, "pm ");
+ }
+ else
+ {
+ fprintf(file, " ? ");
+ }
+ }
+ }
+ /* x renderable */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_RENDERABLE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, value ? " y " : " n ");
+ }
+ /* class */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_VISUAL_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (GLX_TRUE_COLOR == value)
+ fprintf(file, "tc ");
+ else if (GLX_DIRECT_COLOR == value)
+ fprintf(file, "dc ");
+ else if (GLX_PSEUDO_COLOR == value)
+ fprintf(file, "pc ");
+ else if (GLX_STATIC_COLOR == value)
+ fprintf(file, "sc ");
+ else if (GLX_GRAY_SCALE == value)
+ fprintf(file, "gs ");
+ else if (GLX_STATIC_GRAY == value)
+ fprintf(file, "sg ");
+ else if (GLX_X_VISUAL_TYPE == value)
+ fprintf(file, " . ");
+ else
+ fprintf(file, " ? ");
+ }
+ /* format */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RENDER_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (GLXEW_NV_float_buffer)
+ {
+ int ret2, value2;
+ ret2 = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FLOAT_COMPONENTS_NV, &value2);
+ if (Success == ret2 && GL_TRUE == value2)
+ {
+ fprintf(file, " f ");
+ }
+ else if (value & GLX_RGBA_BIT)
+ fprintf(file, " i ");
+ else if (value & GLX_COLOR_INDEX_BIT)
+ fprintf(file, " c ");
+ else
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value & GLX_RGBA_FLOAT_ATI_BIT)
+ fprintf(file, " f ");
+ else if (value & GLX_RGBA_BIT)
+ fprintf(file, " i ");
+ else if (value & GLX_COLOR_INDEX_BIT)
+ fprintf(file, " c ");
+ else
+ fprintf(file, " ? ");
+ }
+ }
+ /* double buffer */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DOUBLEBUFFER, &value);
+ fprintf(file, " %c ", Success != ret ? '?' : (value ? 'y' : '.'));
+ /* stereo */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STEREO, &value);
+ fprintf(file, " %c ", Success != ret ? '?' : (value ? 'y' : '.'));
+ /* level */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_LEVEL, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, "%2d ", value);
+ }
+ /* transparency */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_TRANSPARENT_TYPE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (GLX_TRANSPARENT_RGB == value)
+ fprintf(file, " r | ");
+ else if (GLX_TRANSPARENT_INDEX == value)
+ fprintf(file, " i | ");
+ else if (GLX_NONE == value)
+ fprintf(file, " . | ");
+ else
+ fprintf(file, " ? | ");
+ }
+ /* color size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BUFFER_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%3d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* red size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RED_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* green size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_GREEN_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* blue size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BLUE_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* alpha size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ALPHA_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* aux buffers */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_AUX_BUFFERS, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* depth size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DEPTH_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* stencil size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STENCIL_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* accum red size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_RED_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum green size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_GREEN_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum blue size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_BLUE_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum alpha size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_ALPHA_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* multisample */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLES, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, "%2d ", value);
+ }
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLE_BUFFERS, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ fprintf(file, "%2d | ", value);
+ }
+ /* caveat */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_CONFIG_CAVEAT, &value);
+ if (Success != ret)
+ {
+ fprintf(file, "???? |");
+ }
+ else
+ {
+ if (GLX_NONE == value)
+ fprintf(file, "none |\n");
+ else if (GLX_SLOW_CONFIG == value)
+ fprintf(file, "slow |\n");
+ else if (GLX_NON_CONFORMANT_CONFIG == value)
+ fprintf(file, "ncft |\n");
+ else
+ fprintf(file, "???? |\n");
+ }
+ }
+ /* print table footer */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ fprintf(file, " | id | tp xr cl fm db st lv xp | sz r g b a | bf th cl | r g b a | ns b | eat |\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | ms | cav |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ }
+ }
+}
+
+#endif
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_OSMESA)
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+}
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ if (NULL == ctx) return GL_TRUE;
+ ctx->ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx->ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx->ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ if (NULL != ctx->ctx) OSMesaDestroyContext(ctx->ctx);
+}
+/* ------------------------------------------------------------------------ */
+
+#elif defined(GLEW_EGL)
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ return;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(_WIN32)
+
+void InitContext (GLContext* ctx)
+{
+ ctx->wnd = NULL;
+ ctx->dc = NULL;
+ ctx->rc = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* check for input */
+ if (NULL == ctx) return GL_TRUE;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ ctx->wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
+ GetModuleHandle(NULL), NULL);
+ if (NULL == ctx->wnd) return GL_TRUE;
+ /* get the device context */
+ ctx->dc = GetDC(ctx->wnd);
+ if (NULL == ctx->dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (visual == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ visual = ChoosePixelFormat(ctx->dc, &pfd);
+ if (0 == visual) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(ctx->dc, visual, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ ctx->rc = wglCreateContext(ctx->dc);
+ if (NULL == ctx->rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(ctx->dc, ctx->rc)) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ if (NULL != ctx->rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != ctx->rc) wglDeleteContext(wglGetCurrentContext());
+ if (NULL != ctx->wnd && NULL != ctx->dc) ReleaseDC(ctx->wnd, ctx->dc);
+ if (NULL != ctx->wnd) DestroyWindow(ctx->wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+ ctx->octx = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ CGLPixelFormatAttribute attrib[] = { kCGLPFAAccelerated, 0 };
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+ /* check input */
+ if (NULL == ctx) return GL_TRUE;
+ error = CGLChoosePixelFormat(attrib, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx->ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ ctx->octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx->ctx);
+ if (error) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ CGLSetCurrentContext(ctx->octx);
+ if (NULL != ctx->ctx) CGLReleaseContext(ctx->ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+void
+InitContext (GLContext* ctx)
+{
+ /* TODO */
+}
+
+GLboolean
+CreateContext (GLContext* ctx)
+{
+ /* TODO */
+ return GL_FALSE;
+}
+
+void
+DestroyContext (GLContext* ctx)
+{
+ /* TODO */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+void InitContext (GLContext* ctx)
+{
+ ctx->dpy = NULL;
+ ctx->vi = NULL;
+ ctx->ctx = NULL;
+ ctx->wnd = 0;
+ ctx->cmap = 0;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* check input */
+ if (NULL == ctx) return GL_TRUE;
+ /* open display */
+ ctx->dpy = XOpenDisplay(display);
+ if (NULL == ctx->dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(ctx->dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ ctx->vi = glXChooseVisual(ctx->dpy, DefaultScreen(ctx->dpy), attrib);
+ if (NULL == ctx->vi) return GL_TRUE;
+ /* create context */
+ ctx->ctx = glXCreateContext(ctx->dpy, ctx->vi, None, True);
+ if (NULL == ctx->ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ ctx->cmap = XCreateColormap(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen),
+ ctx->vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = ctx->cmap;
+ ctx->wnd = XCreateWindow(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen),
+ 0, 0, 1, 1, 0, ctx->vi->depth, InputOutput, ctx->vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(ctx->dpy, ctx->wnd, ctx->ctx)) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL != ctx->dpy && NULL != ctx->ctx) glXDestroyContext(ctx->dpy, ctx->ctx);
+ if (NULL != ctx->dpy && 0 != ctx->wnd) XDestroyWindow(ctx->dpy, ctx->wnd);
+ if (NULL != ctx->dpy && 0 != ctx->cmap) XFreeColormap(ctx->dpy, ctx->cmap);
+ if (NULL != ctx->vi) XFree(ctx->vi);
+ if (NULL != ctx->dpy) XCloseDisplay(ctx->dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+GLboolean ParseArgs (int argc, char** argv)
+{
+ int p = 0;
+ while (p < argc)
+ {
+#if defined(_WIN32)
+ if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ display = NULL;
+ visual = strtol(argv[p], NULL, 0);
+ }
+ else if (!strcmp(argv[p], "-a"))
+ {
+ showall = 1;
+ }
+ else if (!strcmp(argv[p], "-s"))
+ {
+ displaystdout = 1;
+ }
+ else if (!strcmp(argv[p], "-h"))
+ {
+ return GL_TRUE;
+ }
+ else
+ return GL_TRUE;
+#else
+ if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ display = argv[p];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ visual = (int)strtol(argv[p], NULL, 0);
+ }
+ else if (!strcmp(argv[p], "-h"))
+ {
+ return GL_TRUE;
+ }
+ else
+ return GL_TRUE;
+#endif
+ p++;
+ }
+ return GL_FALSE;
+}