| /* NOTE: Do not edit this file, it is generated by a script: |
| Export.py --api gl 4.4 --api wgl 4.4 --api glx 4.4 --api cgl 1.4 --api egl 1.0 --outdir . |
| */ |
| |
| /* |
| Copyright (c) 2011-2013 NVIDIA Corporation |
| Copyright (c) 2011-2013 Cass Everitt |
| Copyright (c) 2012-2013 Scott Nations |
| Copyright (c) 2012 Mathias Schott |
| Copyright (c) 2012-2013 Nigel Stewart |
| Copyright (c) 2012-2013 Google Inc. |
| 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. |
| |
| 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 HOLDER 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. |
| */ |
| |
| /* |
| Intended formatting conventions: |
| $ astyle --style=allman --indent=spaces=2 --indent-switches |
| */ |
| |
| #include "pch.h" /* For MS precompiled header support */ |
| |
| #include "RegalUtil.h" |
| |
| REGAL_GLOBAL_BEGIN |
| |
| #include <GL/Regal.h> |
| |
| #include <string> |
| #include <set> |
| using namespace std; |
| |
| #include <boost/print/string_list.hpp> |
| using namespace boost::print; |
| |
| #include "RegalEmu.h" |
| #include "RegalToken.h" |
| #include "RegalContext.h" |
| #include "RegalContextInfo.h" |
| |
| REGAL_GLOBAL_END |
| |
| REGAL_NAMESPACE_BEGIN |
| |
| using namespace ::REGAL_NAMESPACE_INTERNAL::Logging; |
| using namespace ::REGAL_NAMESPACE_INTERNAL::Token; |
| |
| ContextInfo::ContextInfo() |
| : |
| compat(false), |
| core(false), |
| es1(false), |
| es2(false), |
| webgl(false), |
| gl_version_major(-1), |
| gl_version_minor(-1), |
| gl_version_1_0(false), |
| gl_version_1_1(false), |
| gl_version_1_2(false), |
| gl_version_1_3(false), |
| gl_version_1_4(false), |
| gl_version_1_5(false), |
| gl_version_2_0(false), |
| gl_version_2_1(false), |
| gl_version_3_0(false), |
| gl_version_3_1(false), |
| gl_version_3_2(false), |
| gl_version_3_3(false), |
| gl_version_4_0(false), |
| gl_version_4_1(false), |
| gl_version_4_2(false), |
| gl_version_4_3(false), |
| gl_version_4_4(false), |
| gles_version_major(-1), |
| gles_version_minor(-1), |
| glsl_version_major(-1), |
| glsl_version_minor(-1), |
| glx_version_major(-1), |
| glx_version_minor(-1), |
| glx_version_1_0(false), |
| glx_version_1_1(false), |
| glx_version_1_2(false), |
| glx_version_1_3(false), |
| glx_version_1_4(false), |
| egl_version_major(-1), |
| egl_version_minor(-1), |
| egl_version_1_0(false), |
| egl_version_1_1(false), |
| egl_version_1_2(false), |
| gl_3dfx_multisample(false), |
| gl_3dfx_tbuffer(false), |
| gl_3dfx_texture_compression_fxt1(false), |
| gl_amd_blend_minmax_factor(false), |
| gl_amd_compressed_3dc_texture(false), |
| gl_amd_compressed_atc_texture(false), |
| gl_amd_debug_output(false), |
| gl_amd_depth_clamp_separate(false), |
| gl_amd_draw_buffers_blend(false), |
| gl_amd_interleaved_elements(false), |
| gl_amd_multi_draw_indirect(false), |
| gl_amd_name_gen_delete(false), |
| gl_amd_performance_monitor(false), |
| gl_amd_pinned_memory(false), |
| gl_amd_program_binary_z400(false), |
| gl_amd_query_buffer_object(false), |
| gl_amd_sample_positions(false), |
| gl_amd_seamless_cubemap_per_texture(false), |
| gl_amd_sparse_texture(false), |
| gl_amd_stencil_operation_extended(false), |
| gl_amd_vertex_shader_tessellator(false), |
| gl_angle_framebuffer_blit(false), |
| gl_angle_framebuffer_multisample(false), |
| gl_angle_instanced_arrays(false), |
| gl_angle_pack_reverse_row_order(false), |
| gl_angle_program_binary(false), |
| gl_angle_texture_compression_dxt1(false), |
| gl_angle_texture_compression_dxt3(false), |
| gl_angle_texture_compression_dxt5(false), |
| gl_angle_texture_usage(false), |
| gl_angle_timer_query(false), |
| gl_angle_translated_shader_source(false), |
| gl_apple_aux_depth_stencil(false), |
| gl_apple_client_storage(false), |
| gl_apple_copy_texture_levels(false), |
| gl_apple_element_array(false), |
| gl_apple_fence(false), |
| gl_apple_float_pixels(false), |
| gl_apple_flush_buffer_range(false), |
| gl_apple_flush_render(false), |
| gl_apple_framebuffer_multisample(false), |
| gl_apple_object_purgeable(false), |
| gl_apple_pixel_buffer(false), |
| gl_apple_rgb_422(false), |
| gl_apple_row_bytes(false), |
| gl_apple_specular_vector(false), |
| gl_apple_sync(false), |
| gl_apple_texture_max_level(false), |
| gl_apple_texture_range(false), |
| gl_apple_transform_hint(false), |
| gl_apple_vertex_array_object(false), |
| gl_apple_vertex_array_range(false), |
| gl_apple_vertex_program_evaluators(false), |
| gl_apple_ycbcr_422(false), |
| gl_arb_es2_compatibility(false), |
| gl_arb_es3_compatibility(false), |
| gl_arb_base_instance(false), |
| gl_arb_bindless_texture(false), |
| gl_arb_blend_func_extended(false), |
| gl_arb_buffer_storage(false), |
| gl_arb_cl_event(false), |
| gl_arb_clear_buffer_object(false), |
| gl_arb_clear_texture(false), |
| gl_arb_color_buffer_float(false), |
| gl_arb_compressed_texture_pixel_storage(false), |
| gl_arb_compute_shader(false), |
| gl_arb_compute_variable_group_size(false), |
| gl_arb_copy_buffer(false), |
| gl_arb_copy_image(false), |
| gl_arb_debug_output(false), |
| gl_arb_depth_buffer_float(false), |
| gl_arb_depth_clamp(false), |
| gl_arb_depth_texture(false), |
| gl_arb_draw_buffers(false), |
| gl_arb_draw_buffers_blend(false), |
| gl_arb_draw_elements_base_vertex(false), |
| gl_arb_draw_indirect(false), |
| gl_arb_draw_instanced(false), |
| gl_arb_enhanced_layouts(false), |
| gl_arb_explicit_uniform_location(false), |
| gl_arb_fragment_program(false), |
| gl_arb_fragment_shader(false), |
| gl_arb_framebuffer_no_attachments(false), |
| gl_arb_framebuffer_object(false), |
| gl_arb_framebuffer_srgb(false), |
| gl_arb_geometry_shader4(false), |
| gl_arb_get_program_binary(false), |
| gl_arb_gpu_shader5(false), |
| gl_arb_gpu_shader_fp64(false), |
| gl_arb_half_float_pixel(false), |
| gl_arb_half_float_vertex(false), |
| gl_arb_imaging(false), |
| gl_arb_indirect_parameters(false), |
| gl_arb_instanced_arrays(false), |
| gl_arb_internalformat_query(false), |
| gl_arb_internalformat_query2(false), |
| gl_arb_invalidate_subdata(false), |
| gl_arb_map_buffer_alignment(false), |
| gl_arb_map_buffer_range(false), |
| gl_arb_matrix_palette(false), |
| gl_arb_multi_bind(false), |
| gl_arb_multi_draw_indirect(false), |
| gl_arb_multisample(false), |
| gl_arb_multitexture(false), |
| gl_arb_occlusion_query(false), |
| gl_arb_occlusion_query2(false), |
| gl_arb_pixel_buffer_object(false), |
| gl_arb_point_parameters(false), |
| gl_arb_point_sprite(false), |
| gl_arb_program_interface_query(false), |
| gl_arb_provoking_vertex(false), |
| gl_arb_query_buffer_object(false), |
| gl_arb_robustness(false), |
| gl_arb_sample_shading(false), |
| gl_arb_sampler_objects(false), |
| gl_arb_seamless_cube_map(false), |
| gl_arb_separate_shader_objects(false), |
| gl_arb_shader_atomic_counters(false), |
| gl_arb_shader_image_load_store(false), |
| gl_arb_shader_objects(false), |
| gl_arb_shader_storage_buffer_object(false), |
| gl_arb_shader_subroutine(false), |
| gl_arb_shading_language_100(false), |
| gl_arb_shading_language_include(false), |
| gl_arb_shadow(false), |
| gl_arb_shadow_ambient(false), |
| gl_arb_sparse_texture(false), |
| gl_arb_stencil_texturing(false), |
| gl_arb_sync(false), |
| gl_arb_tessellation_shader(false), |
| gl_arb_texture_border_clamp(false), |
| gl_arb_texture_buffer_object(false), |
| gl_arb_texture_buffer_range(false), |
| gl_arb_texture_compression(false), |
| gl_arb_texture_compression_bptc(false), |
| gl_arb_texture_compression_rgtc(false), |
| gl_arb_texture_cube_map(false), |
| gl_arb_texture_cube_map_array(false), |
| gl_arb_texture_env_combine(false), |
| gl_arb_texture_env_dot3(false), |
| gl_arb_texture_float(false), |
| gl_arb_texture_gather(false), |
| gl_arb_texture_mirror_clamp_to_edge(false), |
| gl_arb_texture_mirrored_repeat(false), |
| gl_arb_texture_multisample(false), |
| gl_arb_texture_rectangle(false), |
| gl_arb_texture_rg(false), |
| gl_arb_texture_rgb10_a2ui(false), |
| gl_arb_texture_storage(false), |
| gl_arb_texture_storage_multisample(false), |
| gl_arb_texture_swizzle(false), |
| gl_arb_texture_view(false), |
| gl_arb_timer_query(false), |
| gl_arb_transform_feedback2(false), |
| gl_arb_transform_feedback3(false), |
| gl_arb_transform_feedback_instanced(false), |
| gl_arb_transpose_matrix(false), |
| gl_arb_uniform_buffer_object(false), |
| gl_arb_vertex_array_object(false), |
| gl_arb_vertex_attrib_64bit(false), |
| gl_arb_vertex_attrib_binding(false), |
| gl_arb_vertex_blend(false), |
| gl_arb_vertex_buffer_object(false), |
| gl_arb_vertex_program(false), |
| gl_arb_vertex_shader(false), |
| gl_arb_vertex_type_2_10_10_10_rev(false), |
| gl_arb_viewport_array(false), |
| gl_arb_window_pos(false), |
| gl_arm_mali_program_binary(false), |
| gl_arm_mali_shader_binary(false), |
| gl_ati_draw_buffers(false), |
| gl_ati_element_array(false), |
| gl_ati_envmap_bumpmap(false), |
| gl_ati_fragment_shader(false), |
| gl_ati_map_object_buffer(false), |
| gl_ati_meminfo(false), |
| gl_ati_pn_triangles(false), |
| gl_ati_separate_stencil(false), |
| gl_ati_text_fragment_shader(false), |
| gl_ati_texture_compression_3dc(false), |
| gl_ati_texture_env_combine3(false), |
| gl_ati_texture_float(false), |
| gl_ati_texture_mirror_once(false), |
| gl_ati_vertex_array_object(false), |
| gl_ati_vertex_attrib_array_object(false), |
| gl_ati_vertex_streams(false), |
| gl_dmp_shader_binary(false), |
| gl_ext_422_pixels(false), |
| gl_ext_cg_shader(false), |
| gl_ext_abgr(false), |
| gl_ext_bgra(false), |
| gl_ext_bindable_uniform(false), |
| gl_ext_blend_color(false), |
| gl_ext_blend_equation_separate(false), |
| gl_ext_blend_func_separate(false), |
| gl_ext_blend_minmax(false), |
| gl_ext_blend_subtract(false), |
| gl_ext_clip_volume_hint(false), |
| gl_ext_cmyka(false), |
| gl_ext_color_buffer_half_float(false), |
| gl_ext_color_subtable(false), |
| gl_ext_compiled_vertex_array(false), |
| gl_ext_convolution(false), |
| gl_ext_coordinate_frame(false), |
| gl_ext_copy_texture(false), |
| gl_ext_cull_vertex(false), |
| gl_ext_debug_label(false), |
| gl_ext_debug_marker(false), |
| gl_ext_depth_bounds_test(false), |
| gl_ext_direct_state_access(false), |
| gl_ext_discard_framebuffer(false), |
| gl_ext_disjoint_timer_query(false), |
| gl_ext_draw_buffers2(false), |
| gl_ext_draw_instanced(false), |
| gl_ext_draw_range_elements(false), |
| gl_ext_fog_coord(false), |
| gl_ext_fragment_lighting(false), |
| gl_ext_framebuffer_blit(false), |
| gl_ext_framebuffer_multisample(false), |
| gl_ext_framebuffer_multisample_blit_scaled(false), |
| gl_ext_framebuffer_object(false), |
| gl_ext_framebuffer_srgb(false), |
| gl_ext_geometry_shader4(false), |
| gl_ext_gpu_program_parameters(false), |
| gl_ext_gpu_shader4(false), |
| gl_ext_histogram(false), |
| gl_ext_index_func(false), |
| gl_ext_index_material(false), |
| gl_ext_light_texture(false), |
| gl_ext_map_buffer_range(false), |
| gl_ext_multi_draw_arrays(false), |
| gl_ext_multisample(false), |
| gl_ext_multisampled_render_to_texture(false), |
| gl_ext_multiview_draw_buffers(false), |
| gl_ext_occlusion_query_boolean(false), |
| gl_ext_packed_depth_stencil(false), |
| gl_ext_packed_float(false), |
| gl_ext_packed_pixels(false), |
| gl_ext_paletted_texture(false), |
| gl_ext_pixel_buffer_object(false), |
| gl_ext_pixel_transform(false), |
| gl_ext_point_parameters(false), |
| gl_ext_polygon_offset(false), |
| gl_ext_provoking_vertex(false), |
| gl_ext_read_format_bgra(false), |
| gl_ext_rescale_normal(false), |
| gl_ext_robustness(false), |
| gl_ext_srgb(false), |
| gl_ext_scene_marker(false), |
| gl_ext_secondary_color(false), |
| gl_ext_separate_shader_objects(false), |
| gl_ext_separate_specular_color(false), |
| gl_ext_shader_framebuffer_fetch(false), |
| gl_ext_shader_image_load_store(false), |
| gl_ext_shadow_samplers(false), |
| gl_ext_shared_texture_palette(false), |
| gl_ext_stencil_clear_tag(false), |
| gl_ext_stencil_two_side(false), |
| gl_ext_stencil_wrap(false), |
| gl_ext_subtexture(false), |
| gl_ext_texture(false), |
| gl_ext_texture3d(false), |
| gl_ext_texture_array(false), |
| gl_ext_texture_buffer_object(false), |
| gl_ext_texture_compression_latc(false), |
| gl_ext_texture_compression_rgtc(false), |
| gl_ext_texture_compression_s3tc(false), |
| gl_ext_texture_cube_map(false), |
| gl_ext_texture_edge_clamp(false), |
| gl_ext_texture_env_combine(false), |
| gl_ext_texture_env_dot3(false), |
| gl_ext_texture_filter_anisotropic(false), |
| gl_ext_texture_format_bgra8888(false), |
| gl_ext_texture_integer(false), |
| gl_ext_texture_lod_bias(false), |
| gl_ext_texture_mirror_clamp(false), |
| gl_ext_texture_object(false), |
| gl_ext_texture_perturb_normal(false), |
| gl_ext_texture_rectangle(false), |
| gl_ext_texture_rg(false), |
| gl_ext_texture_srgb(false), |
| gl_ext_texture_srgb_decode(false), |
| gl_ext_texture_shared_exponent(false), |
| gl_ext_texture_snorm(false), |
| gl_ext_texture_storage(false), |
| gl_ext_texture_swizzle(false), |
| gl_ext_texture_type_2_10_10_10_rev(false), |
| gl_ext_timer_query(false), |
| gl_ext_transform_feedback(false), |
| gl_ext_unpack_subimage(false), |
| gl_ext_vertex_array(false), |
| gl_ext_vertex_attrib_64bit(false), |
| gl_ext_vertex_shader(false), |
| gl_ext_vertex_weighting(false), |
| gl_ext_x11_sync_object(false), |
| gl_fj_shader_binary_gccso(false), |
| gl_gremedy_frame_terminator(false), |
| gl_gremedy_string_marker(false), |
| gl_hp_image_transform(false), |
| gl_hp_occlusion_test(false), |
| gl_ibm_cull_vertex(false), |
| gl_ibm_multimode_draw_arrays(false), |
| gl_ibm_rasterpos_clip(false), |
| gl_ibm_static_data(false), |
| gl_ibm_texture_mirrored_repeat(false), |
| gl_ibm_vertex_array_lists(false), |
| gl_img_multisampled_render_to_texture(false), |
| gl_img_program_binary(false), |
| gl_img_read_format(false), |
| gl_img_shader_binary(false), |
| gl_img_texture_compression_pvrtc(false), |
| gl_img_texture_compression_pvrtc2(false), |
| gl_img_texture_env_enhanced_fixed_function(false), |
| gl_img_user_clip_plane(false), |
| gl_ingr_blend_func_separate(false), |
| gl_ingr_color_clamp(false), |
| gl_ingr_interlace_read(false), |
| gl_intel_map_texture(false), |
| gl_intel_parallel_arrays(false), |
| gl_intel_texture_scissor(false), |
| gl_khr_debug(false), |
| gl_khr_texture_compression_astc_ldr(false), |
| gl_ktx_buffer_region(false), |
| gl_mesax_texture_stack(false), |
| gl_mesa_pack_invert(false), |
| gl_mesa_resize_buffers(false), |
| gl_mesa_window_pos(false), |
| gl_mesa_ycbcr_texture(false), |
| gl_nvx_conditional_render(false), |
| gl_nvx_gpu_memory_info(false), |
| gl_nv_3dvision_settings(false), |
| gl_nv_bgr(false), |
| gl_nv_bindless_texture(false), |
| gl_nv_blend_equation_advanced(false), |
| gl_nv_blend_square(false), |
| gl_nv_compute_program5(false), |
| gl_nv_conditional_render(false), |
| gl_nv_copy_buffer(false), |
| gl_nv_copy_depth_to_color(false), |
| gl_nv_copy_image(false), |
| gl_nv_coverage_sample(false), |
| gl_nv_deep_texture3d(false), |
| gl_nv_depth_buffer_float(false), |
| gl_nv_depth_clamp(false), |
| gl_nv_depth_nonlinear(false), |
| gl_nv_depth_range_unclamped(false), |
| gl_nv_draw_buffers(false), |
| gl_nv_draw_texture(false), |
| gl_nv_evaluators(false), |
| gl_nv_explicit_multisample(false), |
| gl_nv_fbo_color_attachments(false), |
| gl_nv_fence(false), |
| gl_nv_float_buffer(false), |
| gl_nv_fog_distance(false), |
| gl_nv_fragment_program(false), |
| gl_nv_fragment_program2(false), |
| gl_nv_framebuffer_blit(false), |
| gl_nv_framebuffer_multisample(false), |
| gl_nv_framebuffer_multisample_coverage(false), |
| gl_nv_geometry_program4(false), |
| gl_nv_gpu_program4(false), |
| gl_nv_gpu_program5(false), |
| gl_nv_gpu_shader5(false), |
| gl_nv_half_float(false), |
| gl_nv_instanced_arrays(false), |
| gl_nv_light_max_exponent(false), |
| gl_nv_multisample_coverage(false), |
| gl_nv_multisample_filter_hint(false), |
| gl_nv_non_square_matrices(false), |
| gl_nv_occlusion_query(false), |
| gl_nv_pack_subimage(false), |
| gl_nv_packed_depth_stencil(false), |
| gl_nv_packed_float_linear(false), |
| gl_nv_parameter_buffer_object(false), |
| gl_nv_path_rendering(false), |
| gl_nv_pixel_buffer_object(false), |
| gl_nv_pixel_data_range(false), |
| gl_nv_platform_binary(false), |
| gl_nv_point_sprite(false), |
| gl_nv_present_video(false), |
| gl_nv_primitive_restart(false), |
| gl_nv_read_buffer(false), |
| gl_nv_read_buffer_front(false), |
| gl_nv_register_combiners(false), |
| gl_nv_register_combiners2(false), |
| gl_nv_srgb_formats(false), |
| gl_nv_shader_buffer_load(false), |
| gl_nv_shadow_samplers_array(false), |
| gl_nv_shadow_samplers_cube(false), |
| gl_nv_tessellation_program5(false), |
| gl_nv_texgen_emboss(false), |
| gl_nv_texgen_reflection(false), |
| gl_nv_texture_array(false), |
| gl_nv_texture_barrier(false), |
| gl_nv_texture_border_clamp(false), |
| gl_nv_texture_compression_latc(false), |
| gl_nv_texture_compression_s3tc(false), |
| gl_nv_texture_env_combine4(false), |
| gl_nv_texture_expand_normal(false), |
| gl_nv_texture_multisample(false), |
| gl_nv_texture_rectangle(false), |
| gl_nv_texture_shader(false), |
| gl_nv_texture_shader2(false), |
| gl_nv_texture_shader3(false), |
| gl_nv_transform_feedback(false), |
| gl_nv_transform_feedback2(false), |
| gl_nv_vdpau_interop(false), |
| gl_nv_vertex_array_range(false), |
| gl_nv_vertex_array_range2(false), |
| gl_nv_vertex_attrib_integer_64bit(false), |
| gl_nv_vertex_buffer_unified_memory(false), |
| gl_nv_vertex_program(false), |
| gl_nv_vertex_program2_option(false), |
| gl_nv_vertex_program3(false), |
| gl_nv_vertex_program4(false), |
| gl_nv_video_capture(false), |
| gl_oes_egl_image_external(false), |
| gl_oes_blend_equation_separate(false), |
| gl_oes_blend_func_separate(false), |
| gl_oes_blend_subtract(false), |
| gl_oes_compressed_etc1_rgb8_texture(false), |
| gl_oes_compressed_paletted_texture(false), |
| gl_oes_depth_texture(false), |
| gl_oes_draw_texture(false), |
| gl_oes_element_index_uint(false), |
| gl_oes_fbo_render_mipmap(false), |
| gl_oes_framebuffer_object(false), |
| gl_oes_get_program_binary(false), |
| gl_oes_mapbuffer(false), |
| gl_oes_matrix_get(false), |
| gl_oes_matrix_palette(false), |
| gl_oes_packed_depth_stencil(false), |
| gl_oes_point_size_array(false), |
| gl_oes_point_sprite(false), |
| gl_oes_read_format(false), |
| gl_oes_required_internalformat(false), |
| gl_oes_rgb8_rgba8(false), |
| gl_oes_single_precision(false), |
| gl_oes_standard_derivatives(false), |
| gl_oes_stencil1(false), |
| gl_oes_stencil4(false), |
| gl_oes_stencil8(false), |
| gl_oes_surfaceless_context(false), |
| gl_oes_texture_3d(false), |
| gl_oes_texture_cube_map(false), |
| gl_oes_texture_mirrored_repeat(false), |
| gl_oes_vertex_array_object(false), |
| gl_oes_vertex_half_float(false), |
| gl_oes_vertex_type_10_10_10_2(false), |
| gl_oml_interlace(false), |
| gl_oml_resample(false), |
| gl_oml_subsample(false), |
| gl_pgi_misc_hints(false), |
| gl_pgi_vertex_hints(false), |
| gl_qcom_alpha_test(false), |
| gl_qcom_binning_control(false), |
| gl_qcom_driver_control(false), |
| gl_qcom_extended_get(false), |
| gl_qcom_extended_get2(false), |
| gl_qcom_perfmon_global_mode(false), |
| gl_qcom_tiled_rendering(false), |
| gl_qcom_writeonly_rendering(false), |
| gl_regal_es1_0_compatibility(false), |
| gl_regal_es1_1_compatibility(false), |
| gl_regal_enable(false), |
| gl_regal_error_string(false), |
| gl_regal_extension_query(false), |
| gl_regal_log(false), |
| gl_rend_screen_coordinates(false), |
| gl_s3_s3tc(false), |
| gl_sgis_color_range(false), |
| gl_sgis_detail_texture(false), |
| gl_sgis_fog_function(false), |
| gl_sgis_generate_mipmap(false), |
| gl_sgis_multisample(false), |
| gl_sgis_pixel_texture(false), |
| gl_sgis_point_line_texgen(false), |
| gl_sgis_point_parameters(false), |
| gl_sgis_sharpen_texture(false), |
| gl_sgis_texture4d(false), |
| gl_sgis_texture_border_clamp(false), |
| gl_sgis_texture_color_mask(false), |
| gl_sgis_texture_edge_clamp(false), |
| gl_sgis_texture_filter4(false), |
| gl_sgis_texture_lod(false), |
| gl_sgix_async(false), |
| gl_sgix_async_histogram(false), |
| gl_sgix_async_pixel(false), |
| gl_sgix_blend_alpha_minmax(false), |
| gl_sgix_convolution_accuracy(false), |
| gl_sgix_depth_texture(false), |
| gl_sgix_flush_raster(false), |
| gl_sgix_fog_offset(false), |
| gl_sgix_fog_texture(false), |
| gl_sgix_fragment_lighting(false), |
| gl_sgix_fragment_specular_lighting(false), |
| gl_sgix_framezoom(false), |
| gl_sgix_igloo_interface(false), |
| gl_sgix_instruments(false), |
| gl_sgix_interlace(false), |
| gl_sgix_list_priority(false), |
| gl_sgix_pixel_texture(false), |
| gl_sgix_polynomial_ffd(false), |
| gl_sgix_reference_plane(false), |
| gl_sgix_resample(false), |
| gl_sgix_shadow(false), |
| gl_sgix_shadow_ambient(false), |
| gl_sgix_sprite(false), |
| gl_sgix_tag_sample_buffer(false), |
| gl_sgix_texture_coordinate_clamp(false), |
| gl_sgix_texture_multi_buffer(false), |
| gl_sgix_texture_range(false), |
| gl_sgix_texture_scale_bias(false), |
| gl_sgix_vertex_preclip_hint(false), |
| gl_sgix_ycrcb(false), |
| gl_sgi_color_matrix(false), |
| gl_sgi_color_table(false), |
| gl_sgi_texture_color_table(false), |
| gl_sunx_constant_data(false), |
| gl_sun_convolution_border_modes(false), |
| gl_sun_global_alpha(false), |
| gl_sun_mesh_array(false), |
| gl_sun_read_video_pixels(false), |
| gl_sun_slice_accum(false), |
| gl_sun_triangle_list(false), |
| gl_sun_vertex(false), |
| gl_viv_shader_binary(false), |
| gl_win_phong_shading(false), |
| gl_win_specular_fog(false), |
| gl_win_swap_hint(false), |
| #if REGAL_SYS_WGL |
| wgl_3dl_stereo_control(false), |
| wgl_amd_gpu_association(false), |
| wgl_arb_buffer_region(false), |
| wgl_arb_create_context(false), |
| wgl_arb_create_context_profile(false), |
| wgl_arb_create_context_robustness(false), |
| wgl_arb_extensions_string(false), |
| wgl_arb_framebuffer_srgb(false), |
| wgl_arb_make_current_read(false), |
| wgl_arb_multisample(false), |
| wgl_arb_pbuffer(false), |
| wgl_arb_pixel_format(false), |
| wgl_arb_pixel_format_float(false), |
| wgl_arb_render_texture(false), |
| wgl_arb_robustness_share_group_isolation(false), |
| wgl_ati_pixel_format_float(false), |
| wgl_ati_render_texture_rectangle(false), |
| wgl_ext_create_context_es2_profile(false), |
| wgl_ext_create_context_es_profile(false), |
| wgl_ext_depth_float(false), |
| wgl_ext_display_color_table(false), |
| wgl_ext_extensions_string(false), |
| wgl_ext_framebuffer_srgb(false), |
| wgl_ext_make_current_read(false), |
| wgl_ext_multisample(false), |
| wgl_ext_pbuffer(false), |
| wgl_ext_pixel_format(false), |
| wgl_ext_pixel_format_packed_float(false), |
| wgl_ext_swap_control(false), |
| wgl_gdi(false), |
| wgl_i3d_digital_video_control(false), |
| wgl_i3d_gamma(false), |
| wgl_i3d_genlock(false), |
| wgl_i3d_image_buffer(false), |
| wgl_i3d_swap_frame_lock(false), |
| wgl_i3d_swap_frame_usage(false), |
| wgl_nv_dx_interop(false), |
| wgl_nv_copy_image(false), |
| wgl_nv_float_buffer(false), |
| wgl_nv_gpu_affinity(false), |
| wgl_nv_multisample_coverage(false), |
| wgl_nv_present_video(false), |
| wgl_nv_render_depth_texture(false), |
| wgl_nv_render_texture_rectangle(false), |
| wgl_nv_swap_group(false), |
| wgl_nv_vertex_array_range(false), |
| wgl_nv_video_capture(false), |
| wgl_nv_video_output(false), |
| wgl_oml_sync_control(false), |
| #endif /* REGAL_SYS_WGL */ |
| #if REGAL_SYS_GLX |
| glx_3dfx_multisample(false), |
| glx_amd_gpu_association(false), |
| glx_arb_create_context(false), |
| glx_arb_create_context_profile(false), |
| glx_arb_create_context_robustness(false), |
| glx_arb_fbconfig_float(false), |
| glx_arb_framebuffer_srgb(false), |
| glx_arb_get_proc_address(false), |
| glx_arb_multisample(false), |
| glx_arb_robustness_share_group_isolation(false), |
| glx_arb_vertex_buffer_object(false), |
| glx_ati_pixel_format_float(false), |
| glx_ati_render_texture(false), |
| glx_ext_create_context_es2_profile(false), |
| glx_ext_create_context_es_profile(false), |
| glx_ext_fbconfig_packed_float(false), |
| glx_ext_framebuffer_srgb(false), |
| glx_ext_import_context(false), |
| glx_ext_swap_control(false), |
| glx_ext_swap_control_tear(false), |
| glx_ext_texture_from_pixmap(false), |
| glx_ext_visual_info(false), |
| glx_ext_visual_rating(false), |
| glx_intel_swap_event(false), |
| glx_mesa_agp_offset(false), |
| glx_mesa_copy_sub_buffer(false), |
| glx_mesa_pixmap_colormap(false), |
| glx_mesa_release_buffers(false), |
| glx_mesa_set_3dfx_mode(false), |
| glx_mesa_swap_control(false), |
| glx_nv_copy_image(false), |
| glx_nv_float_buffer(false), |
| glx_nv_multisample_coverage(false), |
| glx_nv_present_video(false), |
| glx_nv_swap_group(false), |
| glx_nv_vertex_array_range(false), |
| glx_nv_video_capture(false), |
| glx_nv_video_output(false), |
| glx_oml_swap_method(false), |
| glx_oml_sync_control(false), |
| glx_sgis_blended_overlay(false), |
| glx_sgis_color_range(false), |
| glx_sgis_multisample(false), |
| glx_sgis_shared_multisample(false), |
| glx_sgix_fbconfig(false), |
| glx_sgix_hyperpipe(false), |
| glx_sgix_pbuffer(false), |
| glx_sgix_swap_barrier(false), |
| glx_sgix_swap_group(false), |
| glx_sgix_video_resize(false), |
| glx_sgix_visual_select_group(false), |
| glx_sgi_cushion(false), |
| glx_sgi_make_current_read(false), |
| glx_sgi_swap_control(false), |
| glx_sgi_video_sync(false), |
| glx_sun_get_transparent_index(false), |
| glx_sun_video_resize(false), |
| #endif /* REGAL_SYS_GLX */ |
| #if REGAL_SYS_EGL |
| egl_angle_query_surface_pointer(false), |
| egl_angle_surface_d3d_texture_2d_share_handle(false), |
| egl_ext_create_context_robustness(false), |
| egl_ext_multiview_window(false), |
| egl_hi_colorformats(false), |
| egl_img_context_priority(false), |
| egl_khr_config_attribs(false), |
| egl_khr_create_context(false), |
| egl_khr_fence_sync(false), |
| egl_khr_gl_texture_cubemap_image(false), |
| egl_khr_image_base(false), |
| egl_khr_image_pixmap(false), |
| egl_khr_lock_surface(false), |
| egl_khr_lock_surface2(false), |
| egl_khr_reusable_sync(false), |
| egl_khr_stream(false), |
| egl_khr_stream_consumer_gltexture(false), |
| egl_khr_stream_cross_process_fd(false), |
| egl_khr_stream_fifo(false), |
| egl_khr_stream_producer_eglsurface(false), |
| egl_khr_vg_parent_image(false), |
| egl_khr_wait_sync(false), |
| egl_mesa_drm_image(false), |
| egl_nv_coverage_sample(false), |
| egl_nv_coverage_sample_resolve(false), |
| egl_nv_post_sub_buffer(false), |
| egl_nv_sync(false), |
| egl_nv_system_time(false), |
| #endif /* REGAL_SYS_EGL */ |
| |
| gl_max_attrib_stack_depth(0), |
| gl_max_client_attrib_stack_depth(0), |
| gl_max_combined_texture_image_units(0), |
| gl_max_debug_message_length(0), |
| gl_max_draw_buffers(0), |
| gl_max_texture_coords(0), |
| gl_max_texture_units(0), |
| gl_max_vertex_attrib_bindings(0), |
| gl_max_vertex_attribs(0), |
| gl_max_viewports(0), |
| gl_max_varying_floats(0), |
| gl_quads_follow_provoking_vertex_convention(GL_FALSE) |
| |
| { |
| Internal("ContextInfo::ContextInfo","()"); |
| } |
| |
| ContextInfo::~ContextInfo() |
| { |
| Internal("ContextInfo::~ContextInfo","()"); |
| } |
| |
| inline string getString(const RegalContext &context, const GLenum e) |
| { |
| Internal("getString ",toString(e)); |
| RegalAssert(context.dispatcher.driver.glGetString); |
| const GLubyte *str = context.dispatcher.driver.glGetString(e); |
| return str ? string(reinterpret_cast<const char *>(str)) : string(); |
| } |
| |
| inline void warnGLError(const RegalContext &context, const char *message) |
| { |
| Internal("warnGLError ",message ? message : NULL); |
| RegalAssert(context.dispatcher.driver.glGetError); |
| GLenum err = context.dispatcher.driver.glGetError(); |
| if (err!=GL_NO_ERROR) |
| Warning("glGetError returned ",GLerrorToString(err)," ",message ? message : NULL); |
| } |
| |
| void |
| ContextInfo::init(const RegalContext &context) |
| { |
| warnGLError(context,"before Regal context initialization."); |
| |
| // OpenGL Version. |
| |
| vendor = getString(context, GL_VENDOR); |
| renderer = getString(context, GL_RENDERER); |
| version = getString(context, GL_VERSION); |
| |
| Info("OpenGL vendor : ",vendor); |
| Info("OpenGL renderer : ",renderer); |
| Info("OpenGL version : ",version); |
| |
| gl_version_major = 0; |
| gl_version_minor = 0; |
| |
| gles_version_major = 0; |
| gles_version_minor = 0; |
| |
| // Detect GL context version |
| // |
| // Note: We need to detect desktop ES contexts even if REGAL_SYS_ES1 or REGAL_SYS_ES2 |
| // are disabled. |
| |
| es1 = starts_with(version, "OpenGL ES-CM"); |
| if (es1) |
| { |
| sscanf(version.c_str(), "OpenGL ES-CM %d.%d", &gles_version_major, &gles_version_minor); |
| } |
| else |
| { |
| es2 = starts_with(version,"OpenGL ES "); |
| if (es2) |
| { |
| sscanf(version.c_str(), "OpenGL ES %d.%d", &gles_version_major, &gles_version_minor); |
| } |
| else |
| { |
| sscanf(version.c_str(), "%d.%d", &gl_version_major, &gl_version_minor); |
| } |
| } |
| |
| // We could get either form of the OpenGL ES string, so confirm version |
| |
| #if REGAL_SYS_ES1 || REGAL_SYS_ES2 |
| if (!es1 && (gles_version_major == 1)) |
| { |
| es1 = GL_TRUE; |
| es2 = GL_FALSE; |
| } |
| else if (!es2 && (gles_version_major == 2)) |
| { |
| es1 = GL_FALSE; |
| es2 = GL_TRUE; |
| } |
| #endif |
| |
| #if REGAL_SYS_EMSCRIPTEN |
| webgl = starts_with(version, "WebGL"); |
| #endif |
| |
| // For Mesa3D EGL/ES 2.0 on desktop Linux the version string doesn't start with |
| // "OpenGL ES" Is that a Mesa3D bug? Perhaps... |
| |
| #if REGAL_SYS_ES2 && REGAL_SYS_EGL && !REGAL_SYS_ANDROID && !REGAL_SYS_EMSCRIPTEN |
| if (Regal::Config::sysEGL) |
| { |
| es1 = false; |
| es2 = true; |
| webgl = false; |
| gles_version_major = 2; |
| gles_version_minor = 0; |
| } |
| #endif |
| |
| #if REGAL_SYS_ES2 && REGAL_SYS_EGL && REGAL_SYS_EMSCRIPTEN |
| { |
| es1 = false; |
| es2 = true; |
| webgl = true; |
| gles_version_major = 2; |
| gles_version_minor = 0; |
| } |
| #endif |
| |
| // Detect core context for GL 3.2 onwards |
| |
| if (!es1 && !es2 && (gl_version_major>3 || (gl_version_major==3 && gl_version_minor>=2))) |
| { |
| GLint flags = 0; |
| RegalAssert(context.dispatcher.driver.glGetIntegerv); |
| context.dispatcher.driver.glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &flags); |
| core = flags & GL_CONTEXT_CORE_PROFILE_BIT ? GL_TRUE : GL_FALSE; |
| } |
| |
| compat = !core && !es1 && !es2 && !webgl; |
| |
| if (REGAL_FORCE_CORE_PROFILE || Config::forceCoreProfile) |
| { |
| compat = false; |
| core = true; |
| es1 = false; |
| es2 = false; |
| } |
| |
| #if REGAL_SYS_ES1 |
| if (REGAL_FORCE_ES1_PROFILE || Config::forceES1Profile) |
| { |
| compat = false; |
| core = false; |
| es1 = true; |
| es2 = false; |
| } |
| #endif |
| |
| #if REGAL_SYS_ES2 |
| if (REGAL_FORCE_ES2_PROFILE || Config::forceES2Profile) |
| { |
| compat = false; |
| core = false; |
| es1 = false; |
| es2 = true; |
| } |
| #endif |
| |
| // Detect driver extensions |
| |
| string_list<string> driverExtensions; |
| |
| if (core) |
| { |
| RegalAssert(context.dispatcher.driver.glGetStringi); |
| RegalAssert(context.dispatcher.driver.glGetIntegerv); |
| |
| GLint n = 0; |
| context.dispatcher.driver.glGetIntegerv(GL_NUM_EXTENSIONS, &n); |
| |
| for (GLint i=0; i<n; ++i) |
| driverExtensions.push_back(reinterpret_cast<const char *>(context.dispatcher.driver.glGetStringi(GL_EXTENSIONS,i))); |
| extensions = driverExtensions.join(" "); |
| } |
| else |
| { |
| extensions = getString(context, GL_EXTENSIONS); |
| driverExtensions.split(extensions,' '); |
| } |
| |
| extensionsSet.insert(driverExtensions.begin(),driverExtensions.end()); |
| |
| Info("OpenGL extensions: ",extensions); |
| |
| if (!es1 && !es2) |
| { |
| gl_version_4_4 = gl_version_major > 4 || (gl_version_major == 4 && gl_version_minor >= 4); |
| gl_version_4_3 = gl_version_4_4 || (gl_version_major == 4 && gl_version_minor == 3); |
| gl_version_4_2 = gl_version_4_3 || (gl_version_major == 4 && gl_version_minor == 2); |
| gl_version_4_1 = gl_version_4_2 || (gl_version_major == 4 && gl_version_minor == 1); |
| gl_version_4_0 = gl_version_4_1 || gl_version_major == 4; |
| gl_version_3_3 = gl_version_4_0 || (gl_version_major == 3 && gl_version_minor == 3); |
| gl_version_3_2 = gl_version_3_3 || (gl_version_major == 3 && gl_version_minor == 2); |
| gl_version_3_1 = gl_version_3_2 || (gl_version_major == 3 && gl_version_minor == 1); |
| gl_version_3_0 = gl_version_3_1 || gl_version_major == 3; |
| gl_version_2_1 = gl_version_3_0 || (gl_version_major == 2 && gl_version_minor == 1); |
| gl_version_2_0 = gl_version_2_1 || gl_version_major == 2; |
| gl_version_1_5 = gl_version_2_0 || (gl_version_major == 1 && gl_version_minor == 5); |
| gl_version_1_4 = gl_version_1_5 || (gl_version_major == 1 && gl_version_minor == 4); |
| gl_version_1_3 = gl_version_1_4 || (gl_version_major == 1 && gl_version_minor == 3); |
| gl_version_1_2 = gl_version_1_3 || (gl_version_major == 1 && gl_version_minor == 2); |
| gl_version_1_1 = gl_version_1_2 || (gl_version_major == 1 && gl_version_minor == 1); |
| gl_version_1_0 = gl_version_1_1 || gl_version_major == 1; |
| } |
| |
| glx_version_1_4 = glx_version_major > 1 || (glx_version_major == 1 && glx_version_minor >= 4); |
| glx_version_1_3 = glx_version_1_4 || (glx_version_major == 1 && glx_version_minor == 3); |
| glx_version_1_2 = glx_version_1_3 || (glx_version_major == 1 && glx_version_minor == 2); |
| glx_version_1_1 = glx_version_1_2 || (glx_version_major == 1 && glx_version_minor == 1); |
| glx_version_1_0 = glx_version_1_1 || glx_version_major == 1; |
| |
| egl_version_1_2 = egl_version_major > 1 || (egl_version_major == 1 && egl_version_minor >= 2); |
| egl_version_1_1 = egl_version_1_2 || (egl_version_major == 1 && egl_version_minor == 1); |
| egl_version_1_0 = egl_version_1_1 || egl_version_major == 1; |
| |
| // Driver extensions, etc detected by Regal |
| |
| set<string> e; |
| e.insert(driverExtensions.begin(),driverExtensions.end()); |
| |
| gl_3dfx_multisample = stringSetFind(e,"GL_3DFX_multisample"); |
| gl_3dfx_tbuffer = stringSetFind(e,"GL_3DFX_tbuffer"); |
| gl_3dfx_texture_compression_fxt1 = stringSetFind(e,"GL_3DFX_texture_compression_FXT1"); |
| gl_amd_blend_minmax_factor = stringSetFind(e,"GL_AMD_blend_minmax_factor"); |
| gl_amd_compressed_3dc_texture = stringSetFind(e,"GL_AMD_compressed_3DC_texture"); |
| gl_amd_compressed_atc_texture = stringSetFind(e,"GL_AMD_compressed_ATC_texture"); |
| gl_amd_debug_output = stringSetFind(e,"GL_AMD_debug_output"); |
| gl_amd_depth_clamp_separate = stringSetFind(e,"GL_AMD_depth_clamp_separate"); |
| gl_amd_draw_buffers_blend = stringSetFind(e,"GL_AMD_draw_buffers_blend"); |
| gl_amd_interleaved_elements = stringSetFind(e,"GL_AMD_interleaved_elements"); |
| gl_amd_multi_draw_indirect = stringSetFind(e,"GL_AMD_multi_draw_indirect"); |
| gl_amd_name_gen_delete = stringSetFind(e,"GL_AMD_name_gen_delete"); |
| gl_amd_performance_monitor = stringSetFind(e,"GL_AMD_performance_monitor"); |
| gl_amd_pinned_memory = stringSetFind(e,"GL_AMD_pinned_memory"); |
| gl_amd_program_binary_z400 = stringSetFind(e,"GL_AMD_program_binary_Z400"); |
| gl_amd_query_buffer_object = stringSetFind(e,"GL_AMD_query_buffer_object"); |
| gl_amd_sample_positions = stringSetFind(e,"GL_AMD_sample_positions"); |
| gl_amd_seamless_cubemap_per_texture = stringSetFind(e,"GL_AMD_seamless_cubemap_per_texture"); |
| gl_amd_sparse_texture = stringSetFind(e,"GL_AMD_sparse_texture"); |
| gl_amd_stencil_operation_extended = stringSetFind(e,"GL_AMD_stencil_operation_extended"); |
| gl_amd_vertex_shader_tessellator = stringSetFind(e,"GL_AMD_vertex_shader_tessellator"); |
| gl_angle_framebuffer_blit = stringSetFind(e,"GL_ANGLE_framebuffer_blit"); |
| gl_angle_framebuffer_multisample = stringSetFind(e,"GL_ANGLE_framebuffer_multisample"); |
| gl_angle_instanced_arrays = stringSetFind(e,"GL_ANGLE_instanced_arrays"); |
| gl_angle_pack_reverse_row_order = stringSetFind(e,"GL_ANGLE_pack_reverse_row_order"); |
| gl_angle_program_binary = stringSetFind(e,"GL_ANGLE_program_binary"); |
| gl_angle_texture_compression_dxt1 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt1"); |
| gl_angle_texture_compression_dxt3 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt3"); |
| gl_angle_texture_compression_dxt5 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt5"); |
| gl_angle_texture_usage = stringSetFind(e,"GL_ANGLE_texture_usage"); |
| gl_angle_timer_query = stringSetFind(e,"GL_ANGLE_timer_query"); |
| gl_angle_translated_shader_source = stringSetFind(e,"GL_ANGLE_translated_shader_source"); |
| gl_apple_aux_depth_stencil = stringSetFind(e,"GL_APPLE_aux_depth_stencil"); |
| gl_apple_client_storage = stringSetFind(e,"GL_APPLE_client_storage"); |
| gl_apple_copy_texture_levels = stringSetFind(e,"GL_APPLE_copy_texture_levels"); |
| gl_apple_element_array = stringSetFind(e,"GL_APPLE_element_array"); |
| gl_apple_fence = stringSetFind(e,"GL_APPLE_fence"); |
| gl_apple_float_pixels = stringSetFind(e,"GL_APPLE_float_pixels"); |
| gl_apple_flush_buffer_range = stringSetFind(e,"GL_APPLE_flush_buffer_range"); |
| gl_apple_flush_render = stringSetFind(e,"GL_APPLE_flush_render"); |
| gl_apple_framebuffer_multisample = stringSetFind(e,"GL_APPLE_framebuffer_multisample"); |
| gl_apple_object_purgeable = stringSetFind(e,"GL_APPLE_object_purgeable"); |
| gl_apple_pixel_buffer = stringSetFind(e,"GL_APPLE_pixel_buffer"); |
| gl_apple_rgb_422 = stringSetFind(e,"GL_APPLE_rgb_422"); |
| gl_apple_row_bytes = stringSetFind(e,"GL_APPLE_row_bytes"); |
| gl_apple_specular_vector = stringSetFind(e,"GL_APPLE_specular_vector"); |
| gl_apple_sync = stringSetFind(e,"GL_APPLE_sync"); |
| gl_apple_texture_max_level = stringSetFind(e,"GL_APPLE_texture_max_level"); |
| gl_apple_texture_range = stringSetFind(e,"GL_APPLE_texture_range"); |
| gl_apple_transform_hint = stringSetFind(e,"GL_APPLE_transform_hint"); |
| gl_apple_vertex_array_object = stringSetFind(e,"GL_APPLE_vertex_array_object"); |
| gl_apple_vertex_array_range = stringSetFind(e,"GL_APPLE_vertex_array_range"); |
| gl_apple_vertex_program_evaluators = stringSetFind(e,"GL_APPLE_vertex_program_evaluators"); |
| gl_apple_ycbcr_422 = stringSetFind(e,"GL_APPLE_ycbcr_422"); |
| gl_arb_es2_compatibility = stringSetFind(e,"GL_ARB_ES2_compatibility"); |
| gl_arb_es3_compatibility = stringSetFind(e,"GL_ARB_ES3_compatibility"); |
| gl_arb_base_instance = stringSetFind(e,"GL_ARB_base_instance"); |
| gl_arb_bindless_texture = stringSetFind(e,"GL_ARB_bindless_texture"); |
| gl_arb_blend_func_extended = stringSetFind(e,"GL_ARB_blend_func_extended"); |
| gl_arb_buffer_storage = stringSetFind(e,"GL_ARB_buffer_storage"); |
| gl_arb_cl_event = stringSetFind(e,"GL_ARB_cl_event"); |
| gl_arb_clear_buffer_object = stringSetFind(e,"GL_ARB_clear_buffer_object"); |
| gl_arb_clear_texture = stringSetFind(e,"GL_ARB_clear_texture"); |
| gl_arb_color_buffer_float = stringSetFind(e,"GL_ARB_color_buffer_float"); |
| gl_arb_compressed_texture_pixel_storage = stringSetFind(e,"GL_ARB_compressed_texture_pixel_storage"); |
| gl_arb_compute_shader = stringSetFind(e,"GL_ARB_compute_shader"); |
| gl_arb_compute_variable_group_size = stringSetFind(e,"GL_ARB_compute_variable_group_size"); |
| gl_arb_copy_buffer = stringSetFind(e,"GL_ARB_copy_buffer"); |
| gl_arb_copy_image = stringSetFind(e,"GL_ARB_copy_image"); |
| gl_arb_debug_output = stringSetFind(e,"GL_ARB_debug_output"); |
| gl_arb_depth_buffer_float = stringSetFind(e,"GL_ARB_depth_buffer_float"); |
| gl_arb_depth_clamp = stringSetFind(e,"GL_ARB_depth_clamp"); |
| gl_arb_depth_texture = stringSetFind(e,"GL_ARB_depth_texture"); |
| gl_arb_draw_buffers = stringSetFind(e,"GL_ARB_draw_buffers"); |
| gl_arb_draw_buffers_blend = stringSetFind(e,"GL_ARB_draw_buffers_blend"); |
| gl_arb_draw_elements_base_vertex = stringSetFind(e,"GL_ARB_draw_elements_base_vertex"); |
| gl_arb_draw_indirect = stringSetFind(e,"GL_ARB_draw_indirect"); |
| gl_arb_draw_instanced = stringSetFind(e,"GL_ARB_draw_instanced"); |
| gl_arb_enhanced_layouts = stringSetFind(e,"GL_ARB_enhanced_layouts"); |
| gl_arb_explicit_uniform_location = stringSetFind(e,"GL_ARB_explicit_uniform_location"); |
| gl_arb_fragment_program = stringSetFind(e,"GL_ARB_fragment_program"); |
| gl_arb_fragment_shader = stringSetFind(e,"GL_ARB_fragment_shader"); |
| gl_arb_framebuffer_no_attachments = stringSetFind(e,"GL_ARB_framebuffer_no_attachments"); |
| gl_arb_framebuffer_object = stringSetFind(e,"GL_ARB_framebuffer_object"); |
| gl_arb_framebuffer_srgb = stringSetFind(e,"GL_ARB_framebuffer_sRGB"); |
| gl_arb_geometry_shader4 = stringSetFind(e,"GL_ARB_geometry_shader4"); |
| gl_arb_get_program_binary = stringSetFind(e,"GL_ARB_get_program_binary"); |
| gl_arb_gpu_shader5 = stringSetFind(e,"GL_ARB_gpu_shader5"); |
| gl_arb_gpu_shader_fp64 = stringSetFind(e,"GL_ARB_gpu_shader_fp64"); |
| gl_arb_half_float_pixel = stringSetFind(e,"GL_ARB_half_float_pixel"); |
| gl_arb_half_float_vertex = stringSetFind(e,"GL_ARB_half_float_vertex"); |
| gl_arb_imaging = stringSetFind(e,"GL_ARB_imaging"); |
| gl_arb_indirect_parameters = stringSetFind(e,"GL_ARB_indirect_parameters"); |
| gl_arb_instanced_arrays = stringSetFind(e,"GL_ARB_instanced_arrays"); |
| gl_arb_internalformat_query = stringSetFind(e,"GL_ARB_internalformat_query"); |
| gl_arb_internalformat_query2 = stringSetFind(e,"GL_ARB_internalformat_query2"); |
| gl_arb_invalidate_subdata = stringSetFind(e,"GL_ARB_invalidate_subdata"); |
| gl_arb_map_buffer_alignment = stringSetFind(e,"GL_ARB_map_buffer_alignment"); |
| gl_arb_map_buffer_range = stringSetFind(e,"GL_ARB_map_buffer_range"); |
| gl_arb_matrix_palette = stringSetFind(e,"GL_ARB_matrix_palette"); |
| gl_arb_multi_bind = stringSetFind(e,"GL_ARB_multi_bind"); |
| gl_arb_multi_draw_indirect = stringSetFind(e,"GL_ARB_multi_draw_indirect"); |
| gl_arb_multisample = stringSetFind(e,"GL_ARB_multisample"); |
| gl_arb_multitexture = stringSetFind(e,"GL_ARB_multitexture"); |
| gl_arb_occlusion_query = stringSetFind(e,"GL_ARB_occlusion_query"); |
| gl_arb_occlusion_query2 = stringSetFind(e,"GL_ARB_occlusion_query2"); |
| gl_arb_pixel_buffer_object = stringSetFind(e,"GL_ARB_pixel_buffer_object"); |
| gl_arb_point_parameters = stringSetFind(e,"GL_ARB_point_parameters"); |
| gl_arb_point_sprite = stringSetFind(e,"GL_ARB_point_sprite"); |
| gl_arb_program_interface_query = stringSetFind(e,"GL_ARB_program_interface_query"); |
| gl_arb_provoking_vertex = stringSetFind(e,"GL_ARB_provoking_vertex"); |
| gl_arb_query_buffer_object = stringSetFind(e,"GL_ARB_query_buffer_object"); |
| gl_arb_robustness = stringSetFind(e,"GL_ARB_robustness"); |
| gl_arb_sample_shading = stringSetFind(e,"GL_ARB_sample_shading"); |
| gl_arb_sampler_objects = stringSetFind(e,"GL_ARB_sampler_objects"); |
| gl_arb_seamless_cube_map = stringSetFind(e,"GL_ARB_seamless_cube_map"); |
| gl_arb_separate_shader_objects = stringSetFind(e,"GL_ARB_separate_shader_objects"); |
| gl_arb_shader_atomic_counters = stringSetFind(e,"GL_ARB_shader_atomic_counters"); |
| gl_arb_shader_image_load_store = stringSetFind(e,"GL_ARB_shader_image_load_store"); |
| gl_arb_shader_objects = stringSetFind(e,"GL_ARB_shader_objects"); |
| gl_arb_shader_storage_buffer_object = stringSetFind(e,"GL_ARB_shader_storage_buffer_object"); |
| gl_arb_shader_subroutine = stringSetFind(e,"GL_ARB_shader_subroutine"); |
| gl_arb_shading_language_100 = stringSetFind(e,"GL_ARB_shading_language_100"); |
| gl_arb_shading_language_include = stringSetFind(e,"GL_ARB_shading_language_include"); |
| gl_arb_shadow = stringSetFind(e,"GL_ARB_shadow"); |
| gl_arb_shadow_ambient = stringSetFind(e,"GL_ARB_shadow_ambient"); |
| gl_arb_sparse_texture = stringSetFind(e,"GL_ARB_sparse_texture"); |
| gl_arb_stencil_texturing = stringSetFind(e,"GL_ARB_stencil_texturing"); |
| gl_arb_sync = stringSetFind(e,"GL_ARB_sync"); |
| gl_arb_tessellation_shader = stringSetFind(e,"GL_ARB_tessellation_shader"); |
| gl_arb_texture_border_clamp = stringSetFind(e,"GL_ARB_texture_border_clamp"); |
| gl_arb_texture_buffer_object = stringSetFind(e,"GL_ARB_texture_buffer_object"); |
| gl_arb_texture_buffer_range = stringSetFind(e,"GL_ARB_texture_buffer_range"); |
| gl_arb_texture_compression = stringSetFind(e,"GL_ARB_texture_compression"); |
| gl_arb_texture_compression_bptc = stringSetFind(e,"GL_ARB_texture_compression_bptc"); |
| gl_arb_texture_compression_rgtc = stringSetFind(e,"GL_ARB_texture_compression_rgtc"); |
| gl_arb_texture_cube_map = stringSetFind(e,"GL_ARB_texture_cube_map"); |
| gl_arb_texture_cube_map_array = stringSetFind(e,"GL_ARB_texture_cube_map_array"); |
| gl_arb_texture_env_combine = stringSetFind(e,"GL_ARB_texture_env_combine"); |
| gl_arb_texture_env_dot3 = stringSetFind(e,"GL_ARB_texture_env_dot3"); |
| gl_arb_texture_float = stringSetFind(e,"GL_ARB_texture_float"); |
| gl_arb_texture_gather = stringSetFind(e,"GL_ARB_texture_gather"); |
| gl_arb_texture_mirror_clamp_to_edge = stringSetFind(e,"GL_ARB_texture_mirror_clamp_to_edge"); |
| gl_arb_texture_mirrored_repeat = stringSetFind(e,"GL_ARB_texture_mirrored_repeat"); |
| gl_arb_texture_multisample = stringSetFind(e,"GL_ARB_texture_multisample"); |
| gl_arb_texture_rectangle = stringSetFind(e,"GL_ARB_texture_rectangle"); |
| gl_arb_texture_rg = stringSetFind(e,"GL_ARB_texture_rg"); |
| gl_arb_texture_rgb10_a2ui = stringSetFind(e,"GL_ARB_texture_rgb10_a2ui"); |
| gl_arb_texture_storage = stringSetFind(e,"GL_ARB_texture_storage"); |
| gl_arb_texture_storage_multisample = stringSetFind(e,"GL_ARB_texture_storage_multisample"); |
| gl_arb_texture_swizzle = stringSetFind(e,"GL_ARB_texture_swizzle"); |
| gl_arb_texture_view = stringSetFind(e,"GL_ARB_texture_view"); |
| gl_arb_timer_query = stringSetFind(e,"GL_ARB_timer_query"); |
| gl_arb_transform_feedback2 = stringSetFind(e,"GL_ARB_transform_feedback2"); |
| gl_arb_transform_feedback3 = stringSetFind(e,"GL_ARB_transform_feedback3"); |
| gl_arb_transform_feedback_instanced = stringSetFind(e,"GL_ARB_transform_feedback_instanced"); |
| gl_arb_transpose_matrix = stringSetFind(e,"GL_ARB_transpose_matrix"); |
| gl_arb_uniform_buffer_object = stringSetFind(e,"GL_ARB_uniform_buffer_object"); |
| gl_arb_vertex_array_object = stringSetFind(e,"GL_ARB_vertex_array_object"); |
| gl_arb_vertex_attrib_64bit = stringSetFind(e,"GL_ARB_vertex_attrib_64bit"); |
| gl_arb_vertex_attrib_binding = stringSetFind(e,"GL_ARB_vertex_attrib_binding"); |
| gl_arb_vertex_blend = stringSetFind(e,"GL_ARB_vertex_blend"); |
| gl_arb_vertex_buffer_object = stringSetFind(e,"GL_ARB_vertex_buffer_object"); |
| gl_arb_vertex_program = stringSetFind(e,"GL_ARB_vertex_program"); |
| gl_arb_vertex_shader = stringSetFind(e,"GL_ARB_vertex_shader"); |
| gl_arb_vertex_type_2_10_10_10_rev = stringSetFind(e,"GL_ARB_vertex_type_2_10_10_10_rev"); |
| gl_arb_viewport_array = stringSetFind(e,"GL_ARB_viewport_array"); |
| gl_arb_window_pos = stringSetFind(e,"GL_ARB_window_pos"); |
| gl_arm_mali_program_binary = stringSetFind(e,"GL_ARM_mali_program_binary"); |
| gl_arm_mali_shader_binary = stringSetFind(e,"GL_ARM_mali_shader_binary"); |
| gl_ati_draw_buffers = stringSetFind(e,"GL_ATI_draw_buffers"); |
| gl_ati_element_array = stringSetFind(e,"GL_ATI_element_array"); |
| gl_ati_envmap_bumpmap = stringSetFind(e,"GL_ATI_envmap_bumpmap"); |
| gl_ati_fragment_shader = stringSetFind(e,"GL_ATI_fragment_shader"); |
| gl_ati_map_object_buffer = stringSetFind(e,"GL_ATI_map_object_buffer"); |
| gl_ati_meminfo = stringSetFind(e,"GL_ATI_meminfo"); |
| gl_ati_pn_triangles = stringSetFind(e,"GL_ATI_pn_triangles"); |
| gl_ati_separate_stencil = stringSetFind(e,"GL_ATI_separate_stencil"); |
| gl_ati_text_fragment_shader = stringSetFind(e,"GL_ATI_text_fragment_shader"); |
| gl_ati_texture_compression_3dc = stringSetFind(e,"GL_ATI_texture_compression_3dc"); |
| gl_ati_texture_env_combine3 = stringSetFind(e,"GL_ATI_texture_env_combine3"); |
| gl_ati_texture_float = stringSetFind(e,"GL_ATI_texture_float"); |
| gl_ati_texture_mirror_once = stringSetFind(e,"GL_ATI_texture_mirror_once"); |
| gl_ati_vertex_array_object = stringSetFind(e,"GL_ATI_vertex_array_object"); |
| gl_ati_vertex_attrib_array_object = stringSetFind(e,"GL_ATI_vertex_attrib_array_object"); |
| gl_ati_vertex_streams = stringSetFind(e,"GL_ATI_vertex_streams"); |
| gl_dmp_shader_binary = stringSetFind(e,"GL_DMP_shader_binary"); |
| gl_ext_422_pixels = stringSetFind(e,"GL_EXT_422_pixels"); |
| gl_ext_cg_shader = stringSetFind(e,"GL_EXT_Cg_shader"); |
| gl_ext_abgr = stringSetFind(e,"GL_EXT_abgr"); |
| gl_ext_bgra = stringSetFind(e,"GL_EXT_bgra"); |
| gl_ext_bindable_uniform = stringSetFind(e,"GL_EXT_bindable_uniform"); |
| gl_ext_blend_color = stringSetFind(e,"GL_EXT_blend_color"); |
| gl_ext_blend_equation_separate = stringSetFind(e,"GL_EXT_blend_equation_separate"); |
| gl_ext_blend_func_separate = stringSetFind(e,"GL_EXT_blend_func_separate"); |
| gl_ext_blend_minmax = stringSetFind(e,"GL_EXT_blend_minmax"); |
| gl_ext_blend_subtract = stringSetFind(e,"GL_EXT_blend_subtract"); |
| gl_ext_clip_volume_hint = stringSetFind(e,"GL_EXT_clip_volume_hint"); |
| gl_ext_cmyka = stringSetFind(e,"GL_EXT_cmyka"); |
| gl_ext_color_buffer_half_float = stringSetFind(e,"GL_EXT_color_buffer_half_float"); |
| gl_ext_color_subtable = stringSetFind(e,"GL_EXT_color_subtable"); |
| gl_ext_compiled_vertex_array = stringSetFind(e,"GL_EXT_compiled_vertex_array"); |
| gl_ext_convolution = stringSetFind(e,"GL_EXT_convolution"); |
| gl_ext_coordinate_frame = stringSetFind(e,"GL_EXT_coordinate_frame"); |
| gl_ext_copy_texture = stringSetFind(e,"GL_EXT_copy_texture"); |
| gl_ext_cull_vertex = stringSetFind(e,"GL_EXT_cull_vertex"); |
| gl_ext_debug_label = stringSetFind(e,"GL_EXT_debug_label"); |
| gl_ext_debug_marker = stringSetFind(e,"GL_EXT_debug_marker"); |
| gl_ext_depth_bounds_test = stringSetFind(e,"GL_EXT_depth_bounds_test"); |
| gl_ext_direct_state_access = stringSetFind(e,"GL_EXT_direct_state_access"); |
| gl_ext_discard_framebuffer = stringSetFind(e,"GL_EXT_discard_framebuffer"); |
| gl_ext_disjoint_timer_query = stringSetFind(e,"GL_EXT_disjoint_timer_query"); |
| gl_ext_draw_buffers2 = stringSetFind(e,"GL_EXT_draw_buffers2"); |
| gl_ext_draw_instanced = stringSetFind(e,"GL_EXT_draw_instanced"); |
| gl_ext_draw_range_elements = stringSetFind(e,"GL_EXT_draw_range_elements"); |
| gl_ext_fog_coord = stringSetFind(e,"GL_EXT_fog_coord"); |
| gl_ext_fragment_lighting = stringSetFind(e,"GL_EXT_fragment_lighting"); |
| gl_ext_framebuffer_blit = stringSetFind(e,"GL_EXT_framebuffer_blit"); |
| gl_ext_framebuffer_multisample = stringSetFind(e,"GL_EXT_framebuffer_multisample"); |
| gl_ext_framebuffer_multisample_blit_scaled = stringSetFind(e,"GL_EXT_framebuffer_multisample_blit_scaled"); |
| gl_ext_framebuffer_object = stringSetFind(e,"GL_EXT_framebuffer_object"); |
| gl_ext_framebuffer_srgb = stringSetFind(e,"GL_EXT_framebuffer_sRGB"); |
| gl_ext_geometry_shader4 = stringSetFind(e,"GL_EXT_geometry_shader4"); |
| gl_ext_gpu_program_parameters = stringSetFind(e,"GL_EXT_gpu_program_parameters"); |
| gl_ext_gpu_shader4 = stringSetFind(e,"GL_EXT_gpu_shader4"); |
| gl_ext_histogram = stringSetFind(e,"GL_EXT_histogram"); |
| gl_ext_index_func = stringSetFind(e,"GL_EXT_index_func"); |
| gl_ext_index_material = stringSetFind(e,"GL_EXT_index_material"); |
| gl_ext_light_texture = stringSetFind(e,"GL_EXT_light_texture"); |
| gl_ext_map_buffer_range = stringSetFind(e,"GL_EXT_map_buffer_range"); |
| gl_ext_multi_draw_arrays = stringSetFind(e,"GL_EXT_multi_draw_arrays"); |
| gl_ext_multisample = stringSetFind(e,"GL_EXT_multisample"); |
| gl_ext_multisampled_render_to_texture = stringSetFind(e,"GL_EXT_multisampled_render_to_texture"); |
| gl_ext_multiview_draw_buffers = stringSetFind(e,"GL_EXT_multiview_draw_buffers"); |
| gl_ext_occlusion_query_boolean = stringSetFind(e,"GL_EXT_occlusion_query_boolean"); |
| gl_ext_packed_depth_stencil = stringSetFind(e,"GL_EXT_packed_depth_stencil"); |
| gl_ext_packed_float = stringSetFind(e,"GL_EXT_packed_float"); |
| gl_ext_packed_pixels = stringSetFind(e,"GL_EXT_packed_pixels"); |
| gl_ext_paletted_texture = stringSetFind(e,"GL_EXT_paletted_texture"); |
| gl_ext_pixel_buffer_object = stringSetFind(e,"GL_EXT_pixel_buffer_object"); |
| gl_ext_pixel_transform = stringSetFind(e,"GL_EXT_pixel_transform"); |
| gl_ext_point_parameters = stringSetFind(e,"GL_EXT_point_parameters"); |
| gl_ext_polygon_offset = stringSetFind(e,"GL_EXT_polygon_offset"); |
| gl_ext_provoking_vertex = stringSetFind(e,"GL_EXT_provoking_vertex"); |
| gl_ext_read_format_bgra = stringSetFind(e,"GL_EXT_read_format_bgra"); |
| gl_ext_rescale_normal = stringSetFind(e,"GL_EXT_rescale_normal"); |
| gl_ext_robustness = stringSetFind(e,"GL_EXT_robustness"); |
| gl_ext_srgb = stringSetFind(e,"GL_EXT_sRGB"); |
| gl_ext_scene_marker = stringSetFind(e,"GL_EXT_scene_marker"); |
| gl_ext_secondary_color = stringSetFind(e,"GL_EXT_secondary_color"); |
| gl_ext_separate_shader_objects = stringSetFind(e,"GL_EXT_separate_shader_objects"); |
| gl_ext_separate_specular_color = stringSetFind(e,"GL_EXT_separate_specular_color"); |
| gl_ext_shader_framebuffer_fetch = stringSetFind(e,"GL_EXT_shader_framebuffer_fetch"); |
| gl_ext_shader_image_load_store = stringSetFind(e,"GL_EXT_shader_image_load_store"); |
| gl_ext_shadow_samplers = stringSetFind(e,"GL_EXT_shadow_samplers"); |
| gl_ext_shared_texture_palette = stringSetFind(e,"GL_EXT_shared_texture_palette"); |
| gl_ext_stencil_clear_tag = stringSetFind(e,"GL_EXT_stencil_clear_tag"); |
| gl_ext_stencil_two_side = stringSetFind(e,"GL_EXT_stencil_two_side"); |
| gl_ext_stencil_wrap = stringSetFind(e,"GL_EXT_stencil_wrap"); |
| gl_ext_subtexture = stringSetFind(e,"GL_EXT_subtexture"); |
| gl_ext_texture = stringSetFind(e,"GL_EXT_texture"); |
| gl_ext_texture3d = stringSetFind(e,"GL_EXT_texture3D"); |
| gl_ext_texture_array = stringSetFind(e,"GL_EXT_texture_array"); |
| gl_ext_texture_buffer_object = stringSetFind(e,"GL_EXT_texture_buffer_object"); |
| gl_ext_texture_compression_latc = stringSetFind(e,"GL_EXT_texture_compression_latc"); |
| gl_ext_texture_compression_rgtc = stringSetFind(e,"GL_EXT_texture_compression_rgtc"); |
| gl_ext_texture_compression_s3tc = stringSetFind(e,"GL_EXT_texture_compression_s3tc"); |
| gl_ext_texture_cube_map = stringSetFind(e,"GL_EXT_texture_cube_map"); |
| gl_ext_texture_edge_clamp = stringSetFind(e,"GL_EXT_texture_edge_clamp"); |
| gl_ext_texture_env_combine = stringSetFind(e,"GL_EXT_texture_env_combine"); |
| gl_ext_texture_env_dot3 = stringSetFind(e,"GL_EXT_texture_env_dot3"); |
| gl_ext_texture_filter_anisotropic = stringSetFind(e,"GL_EXT_texture_filter_anisotropic"); |
| gl_ext_texture_format_bgra8888 = stringSetFind(e,"GL_EXT_texture_format_BGRA8888"); |
| gl_ext_texture_integer = stringSetFind(e,"GL_EXT_texture_integer"); |
| gl_ext_texture_lod_bias = stringSetFind(e,"GL_EXT_texture_lod_bias"); |
| gl_ext_texture_mirror_clamp = stringSetFind(e,"GL_EXT_texture_mirror_clamp"); |
| gl_ext_texture_object = stringSetFind(e,"GL_EXT_texture_object"); |
| gl_ext_texture_perturb_normal = stringSetFind(e,"GL_EXT_texture_perturb_normal"); |
| gl_ext_texture_rectangle = stringSetFind(e,"GL_EXT_texture_rectangle"); |
| gl_ext_texture_rg = stringSetFind(e,"GL_EXT_texture_rg"); |
| gl_ext_texture_srgb = stringSetFind(e,"GL_EXT_texture_sRGB"); |
| gl_ext_texture_srgb_decode = stringSetFind(e,"GL_EXT_texture_sRGB_decode"); |
| gl_ext_texture_shared_exponent = stringSetFind(e,"GL_EXT_texture_shared_exponent"); |
| gl_ext_texture_snorm = stringSetFind(e,"GL_EXT_texture_snorm"); |
| gl_ext_texture_storage = stringSetFind(e,"GL_EXT_texture_storage"); |
| gl_ext_texture_swizzle = stringSetFind(e,"GL_EXT_texture_swizzle"); |
| gl_ext_texture_type_2_10_10_10_rev = stringSetFind(e,"GL_EXT_texture_type_2_10_10_10_REV"); |
| gl_ext_timer_query = stringSetFind(e,"GL_EXT_timer_query"); |
| gl_ext_transform_feedback = stringSetFind(e,"GL_EXT_transform_feedback"); |
| gl_ext_unpack_subimage = stringSetFind(e,"GL_EXT_unpack_subimage"); |
| gl_ext_vertex_array = stringSetFind(e,"GL_EXT_vertex_array"); |
| gl_ext_vertex_attrib_64bit = stringSetFind(e,"GL_EXT_vertex_attrib_64bit"); |
| gl_ext_vertex_shader = stringSetFind(e,"GL_EXT_vertex_shader"); |
| gl_ext_vertex_weighting = stringSetFind(e,"GL_EXT_vertex_weighting"); |
| gl_ext_x11_sync_object = stringSetFind(e,"GL_EXT_x11_sync_object"); |
| gl_fj_shader_binary_gccso = stringSetFind(e,"GL_FJ_shader_binary_GCCSO"); |
| gl_gremedy_frame_terminator = stringSetFind(e,"GL_GREMEDY_frame_terminator"); |
| gl_gremedy_string_marker = stringSetFind(e,"GL_GREMEDY_string_marker"); |
| gl_hp_image_transform = stringSetFind(e,"GL_HP_image_transform"); |
| gl_hp_occlusion_test = stringSetFind(e,"GL_HP_occlusion_test"); |
| gl_ibm_cull_vertex = stringSetFind(e,"GL_IBM_cull_vertex"); |
| gl_ibm_multimode_draw_arrays = stringSetFind(e,"GL_IBM_multimode_draw_arrays"); |
| gl_ibm_rasterpos_clip = stringSetFind(e,"GL_IBM_rasterpos_clip"); |
| gl_ibm_static_data = stringSetFind(e,"GL_IBM_static_data"); |
| gl_ibm_texture_mirrored_repeat = stringSetFind(e,"GL_IBM_texture_mirrored_repeat"); |
| gl_ibm_vertex_array_lists = stringSetFind(e,"GL_IBM_vertex_array_lists"); |
| gl_img_multisampled_render_to_texture = stringSetFind(e,"GL_IMG_multisampled_render_to_texture"); |
| gl_img_program_binary = stringSetFind(e,"GL_IMG_program_binary"); |
| gl_img_read_format = stringSetFind(e,"GL_IMG_read_format"); |
| gl_img_shader_binary = stringSetFind(e,"GL_IMG_shader_binary"); |
| gl_img_texture_compression_pvrtc = stringSetFind(e,"GL_IMG_texture_compression_pvrtc"); |
| gl_img_texture_compression_pvrtc2 = stringSetFind(e,"GL_IMG_texture_compression_pvrtc2"); |
| gl_img_texture_env_enhanced_fixed_function = stringSetFind(e,"GL_IMG_texture_env_enhanced_fixed_function"); |
| gl_img_user_clip_plane = stringSetFind(e,"GL_IMG_user_clip_plane"); |
| gl_ingr_blend_func_separate = stringSetFind(e,"GL_INGR_blend_func_separate"); |
| gl_ingr_color_clamp = stringSetFind(e,"GL_INGR_color_clamp"); |
| gl_ingr_interlace_read = stringSetFind(e,"GL_INGR_interlace_read"); |
| gl_intel_map_texture = stringSetFind(e,"GL_INTEL_map_texture"); |
| gl_intel_parallel_arrays = stringSetFind(e,"GL_INTEL_parallel_arrays"); |
| gl_intel_texture_scissor = stringSetFind(e,"GL_INTEL_texture_scissor"); |
| gl_khr_debug = stringSetFind(e,"GL_KHR_debug"); |
| gl_khr_texture_compression_astc_ldr = stringSetFind(e,"GL_KHR_texture_compression_astc_ldr"); |
| gl_ktx_buffer_region = stringSetFind(e,"GL_KTX_buffer_region"); |
| gl_mesax_texture_stack = stringSetFind(e,"GL_MESAX_texture_stack"); |
| gl_mesa_pack_invert = stringSetFind(e,"GL_MESA_pack_invert"); |
| gl_mesa_resize_buffers = stringSetFind(e,"GL_MESA_resize_buffers"); |
| gl_mesa_window_pos = stringSetFind(e,"GL_MESA_window_pos"); |
| gl_mesa_ycbcr_texture = stringSetFind(e,"GL_MESA_ycbcr_texture"); |
| gl_nvx_conditional_render = stringSetFind(e,"GL_NVX_conditional_render"); |
| gl_nvx_gpu_memory_info = stringSetFind(e,"GL_NVX_gpu_memory_info"); |
| gl_nv_3dvision_settings = stringSetFind(e,"GL_NV_3dvision_settings"); |
| gl_nv_bgr = stringSetFind(e,"GL_NV_bgr"); |
| gl_nv_bindless_texture = stringSetFind(e,"GL_NV_bindless_texture"); |
| gl_nv_blend_equation_advanced = stringSetFind(e,"GL_NV_blend_equation_advanced"); |
| gl_nv_blend_square = stringSetFind(e,"GL_NV_blend_square"); |
| gl_nv_compute_program5 = stringSetFind(e,"GL_NV_compute_program5"); |
| gl_nv_conditional_render = stringSetFind(e,"GL_NV_conditional_render"); |
| gl_nv_copy_buffer = stringSetFind(e,"GL_NV_copy_buffer"); |
| gl_nv_copy_depth_to_color = stringSetFind(e,"GL_NV_copy_depth_to_color"); |
| gl_nv_copy_image = stringSetFind(e,"GL_NV_copy_image"); |
| gl_nv_coverage_sample = stringSetFind(e,"GL_NV_coverage_sample"); |
| gl_nv_deep_texture3d = stringSetFind(e,"GL_NV_deep_texture3D"); |
| gl_nv_depth_buffer_float = stringSetFind(e,"GL_NV_depth_buffer_float"); |
| gl_nv_depth_clamp = stringSetFind(e,"GL_NV_depth_clamp"); |
| gl_nv_depth_nonlinear = stringSetFind(e,"GL_NV_depth_nonlinear"); |
| gl_nv_depth_range_unclamped = stringSetFind(e,"GL_NV_depth_range_unclamped"); |
| gl_nv_draw_buffers = stringSetFind(e,"GL_NV_draw_buffers"); |
| gl_nv_draw_texture = stringSetFind(e,"GL_NV_draw_texture"); |
| gl_nv_evaluators = stringSetFind(e,"GL_NV_evaluators"); |
| gl_nv_explicit_multisample = stringSetFind(e,"GL_NV_explicit_multisample"); |
| gl_nv_fbo_color_attachments = stringSetFind(e,"GL_NV_fbo_color_attachments"); |
| gl_nv_fence = stringSetFind(e,"GL_NV_fence"); |
| gl_nv_float_buffer = stringSetFind(e,"GL_NV_float_buffer"); |
| gl_nv_fog_distance = stringSetFind(e,"GL_NV_fog_distance"); |
| gl_nv_fragment_program = stringSetFind(e,"GL_NV_fragment_program"); |
| gl_nv_fragment_program2 = stringSetFind(e,"GL_NV_fragment_program2"); |
| gl_nv_framebuffer_blit = stringSetFind(e,"GL_NV_framebuffer_blit"); |
| gl_nv_framebuffer_multisample = stringSetFind(e,"GL_NV_framebuffer_multisample"); |
| gl_nv_framebuffer_multisample_coverage = stringSetFind(e,"GL_NV_framebuffer_multisample_coverage"); |
| gl_nv_geometry_program4 = stringSetFind(e,"GL_NV_geometry_program4"); |
| gl_nv_gpu_program4 = stringSetFind(e,"GL_NV_gpu_program4"); |
| gl_nv_gpu_program5 = stringSetFind(e,"GL_NV_gpu_program5"); |
| gl_nv_gpu_shader5 = stringSetFind(e,"GL_NV_gpu_shader5"); |
| gl_nv_half_float = stringSetFind(e,"GL_NV_half_float"); |
| gl_nv_instanced_arrays = stringSetFind(e,"GL_NV_instanced_arrays"); |
| gl_nv_light_max_exponent = stringSetFind(e,"GL_NV_light_max_exponent"); |
| gl_nv_multisample_coverage = stringSetFind(e,"GL_NV_multisample_coverage"); |
| gl_nv_multisample_filter_hint = stringSetFind(e,"GL_NV_multisample_filter_hint"); |
| gl_nv_non_square_matrices = stringSetFind(e,"GL_NV_non_square_matrices"); |
| gl_nv_occlusion_query = stringSetFind(e,"GL_NV_occlusion_query"); |
| gl_nv_pack_subimage = stringSetFind(e,"GL_NV_pack_subimage"); |
| gl_nv_packed_depth_stencil = stringSetFind(e,"GL_NV_packed_depth_stencil"); |
| gl_nv_packed_float_linear = stringSetFind(e,"GL_NV_packed_float_linear"); |
| gl_nv_parameter_buffer_object = stringSetFind(e,"GL_NV_parameter_buffer_object"); |
| gl_nv_path_rendering = stringSetFind(e,"GL_NV_path_rendering"); |
| gl_nv_pixel_buffer_object = stringSetFind(e,"GL_NV_pixel_buffer_object"); |
| gl_nv_pixel_data_range = stringSetFind(e,"GL_NV_pixel_data_range"); |
| gl_nv_platform_binary = stringSetFind(e,"GL_NV_platform_binary"); |
| gl_nv_point_sprite = stringSetFind(e,"GL_NV_point_sprite"); |
| gl_nv_present_video = stringSetFind(e,"GL_NV_present_video"); |
| gl_nv_primitive_restart = stringSetFind(e,"GL_NV_primitive_restart"); |
| gl_nv_read_buffer = stringSetFind(e,"GL_NV_read_buffer"); |
| gl_nv_read_buffer_front = stringSetFind(e,"GL_NV_read_buffer_front"); |
| gl_nv_register_combiners = stringSetFind(e,"GL_NV_register_combiners"); |
| gl_nv_register_combiners2 = stringSetFind(e,"GL_NV_register_combiners2"); |
| gl_nv_srgb_formats = stringSetFind(e,"GL_NV_sRGB_formats"); |
| gl_nv_shader_buffer_load = stringSetFind(e,"GL_NV_shader_buffer_load"); |
| gl_nv_shadow_samplers_array = stringSetFind(e,"GL_NV_shadow_samplers_array"); |
| gl_nv_shadow_samplers_cube = stringSetFind(e,"GL_NV_shadow_samplers_cube"); |
| gl_nv_tessellation_program5 = stringSetFind(e,"GL_NV_tessellation_program5"); |
| gl_nv_texgen_emboss = stringSetFind(e,"GL_NV_texgen_emboss"); |
| gl_nv_texgen_reflection = stringSetFind(e,"GL_NV_texgen_reflection"); |
| gl_nv_texture_array = stringSetFind(e,"GL_NV_texture_array"); |
| gl_nv_texture_barrier = stringSetFind(e,"GL_NV_texture_barrier"); |
| gl_nv_texture_border_clamp = stringSetFind(e,"GL_NV_texture_border_clamp"); |
| gl_nv_texture_compression_latc = stringSetFind(e,"GL_NV_texture_compression_latc"); |
| gl_nv_texture_compression_s3tc = stringSetFind(e,"GL_NV_texture_compression_s3tc"); |
| gl_nv_texture_env_combine4 = stringSetFind(e,"GL_NV_texture_env_combine4"); |
| gl_nv_texture_expand_normal = stringSetFind(e,"GL_NV_texture_expand_normal"); |
| gl_nv_texture_multisample = stringSetFind(e,"GL_NV_texture_multisample"); |
| gl_nv_texture_rectangle = stringSetFind(e,"GL_NV_texture_rectangle"); |
| gl_nv_texture_shader = stringSetFind(e,"GL_NV_texture_shader"); |
| gl_nv_texture_shader2 = stringSetFind(e,"GL_NV_texture_shader2"); |
| gl_nv_texture_shader3 = stringSetFind(e,"GL_NV_texture_shader3"); |
| gl_nv_transform_feedback = stringSetFind(e,"GL_NV_transform_feedback"); |
| gl_nv_transform_feedback2 = stringSetFind(e,"GL_NV_transform_feedback2"); |
| gl_nv_vdpau_interop = stringSetFind(e,"GL_NV_vdpau_interop"); |
| gl_nv_vertex_array_range = stringSetFind(e,"GL_NV_vertex_array_range"); |
| gl_nv_vertex_array_range2 = stringSetFind(e,"GL_NV_vertex_array_range2"); |
| gl_nv_vertex_attrib_integer_64bit = stringSetFind(e,"GL_NV_vertex_attrib_integer_64bit"); |
| gl_nv_vertex_buffer_unified_memory = stringSetFind(e,"GL_NV_vertex_buffer_unified_memory"); |
| gl_nv_vertex_program = stringSetFind(e,"GL_NV_vertex_program"); |
| gl_nv_vertex_program2_option = stringSetFind(e,"GL_NV_vertex_program2_option"); |
| gl_nv_vertex_program3 = stringSetFind(e,"GL_NV_vertex_program3"); |
| gl_nv_vertex_program4 = stringSetFind(e,"GL_NV_vertex_program4"); |
| gl_nv_video_capture = stringSetFind(e,"GL_NV_video_capture"); |
| gl_oes_egl_image_external = stringSetFind(e,"GL_OES_EGL_image_external"); |
| gl_oes_blend_equation_separate = stringSetFind(e,"GL_OES_blend_equation_separate"); |
| gl_oes_blend_func_separate = stringSetFind(e,"GL_OES_blend_func_separate"); |
| gl_oes_blend_subtract = stringSetFind(e,"GL_OES_blend_subtract"); |
| gl_oes_compressed_etc1_rgb8_texture = stringSetFind(e,"GL_OES_compressed_ETC1_RGB8_texture"); |
| gl_oes_compressed_paletted_texture = stringSetFind(e,"GL_OES_compressed_paletted_texture"); |
| gl_oes_depth_texture = stringSetFind(e,"GL_OES_depth_texture"); |
| gl_oes_draw_texture = stringSetFind(e,"GL_OES_draw_texture"); |
| gl_oes_element_index_uint = stringSetFind(e,"GL_OES_element_index_uint"); |
| gl_oes_fbo_render_mipmap = stringSetFind(e,"GL_OES_fbo_render_mipmap"); |
| gl_oes_framebuffer_object = stringSetFind(e,"GL_OES_framebuffer_object"); |
| gl_oes_get_program_binary = stringSetFind(e,"GL_OES_get_program_binary"); |
| gl_oes_mapbuffer = stringSetFind(e,"GL_OES_mapbuffer"); |
| gl_oes_matrix_get = stringSetFind(e,"GL_OES_matrix_get"); |
| gl_oes_matrix_palette = stringSetFind(e,"GL_OES_matrix_palette"); |
| gl_oes_packed_depth_stencil = stringSetFind(e,"GL_OES_packed_depth_stencil"); |
| gl_oes_point_size_array = stringSetFind(e,"GL_OES_point_size_array"); |
| gl_oes_point_sprite = stringSetFind(e,"GL_OES_point_sprite"); |
| gl_oes_read_format = stringSetFind(e,"GL_OES_read_format"); |
| gl_oes_required_internalformat = stringSetFind(e,"GL_OES_required_internalformat"); |
| gl_oes_rgb8_rgba8 = stringSetFind(e,"GL_OES_rgb8_rgba8"); |
| gl_oes_single_precision = stringSetFind(e,"GL_OES_single_precision"); |
| gl_oes_standard_derivatives = stringSetFind(e,"GL_OES_standard_derivatives"); |
| gl_oes_stencil1 = stringSetFind(e,"GL_OES_stencil1"); |
| gl_oes_stencil4 = stringSetFind(e,"GL_OES_stencil4"); |
| gl_oes_stencil8 = stringSetFind(e,"GL_OES_stencil8"); |
| gl_oes_surfaceless_context = stringSetFind(e,"GL_OES_surfaceless_context"); |
| gl_oes_texture_3d = stringSetFind(e,"GL_OES_texture_3D"); |
| gl_oes_texture_cube_map = stringSetFind(e,"GL_OES_texture_cube_map"); |
| gl_oes_texture_mirrored_repeat = stringSetFind(e,"GL_OES_texture_mirrored_repeat"); |
| gl_oes_vertex_array_object = stringSetFind(e,"GL_OES_vertex_array_object"); |
| gl_oes_vertex_half_float = stringSetFind(e,"GL_OES_vertex_half_float"); |
| gl_oes_vertex_type_10_10_10_2 = stringSetFind(e,"GL_OES_vertex_type_10_10_10_2"); |
| gl_oml_interlace = stringSetFind(e,"GL_OML_interlace"); |
| gl_oml_resample = stringSetFind(e,"GL_OML_resample"); |
| gl_oml_subsample = stringSetFind(e,"GL_OML_subsample"); |
| gl_pgi_misc_hints = stringSetFind(e,"GL_PGI_misc_hints"); |
| gl_pgi_vertex_hints = stringSetFind(e,"GL_PGI_vertex_hints"); |
| gl_qcom_alpha_test = stringSetFind(e,"GL_QCOM_alpha_test"); |
| gl_qcom_binning_control = stringSetFind(e,"GL_QCOM_binning_control"); |
| gl_qcom_driver_control = stringSetFind(e,"GL_QCOM_driver_control"); |
| gl_qcom_extended_get = stringSetFind(e,"GL_QCOM_extended_get"); |
| gl_qcom_extended_get2 = stringSetFind(e,"GL_QCOM_extended_get2"); |
| gl_qcom_perfmon_global_mode = stringSetFind(e,"GL_QCOM_perfmon_global_mode"); |
| gl_qcom_tiled_rendering = stringSetFind(e,"GL_QCOM_tiled_rendering"); |
| gl_qcom_writeonly_rendering = stringSetFind(e,"GL_QCOM_writeonly_rendering"); |
| gl_regal_es1_0_compatibility = stringSetFind(e,"GL_REGAL_ES1_0_compatibility"); |
| gl_regal_es1_1_compatibility = stringSetFind(e,"GL_REGAL_ES1_1_compatibility"); |
| gl_regal_enable = stringSetFind(e,"GL_REGAL_enable"); |
| gl_regal_error_string = stringSetFind(e,"GL_REGAL_error_string"); |
| gl_regal_extension_query = stringSetFind(e,"GL_REGAL_extension_query"); |
| gl_regal_log = stringSetFind(e,"GL_REGAL_log"); |
| gl_rend_screen_coordinates = stringSetFind(e,"GL_REND_screen_coordinates"); |
| gl_s3_s3tc = stringSetFind(e,"GL_S3_s3tc"); |
| gl_sgis_color_range = stringSetFind(e,"GL_SGIS_color_range"); |
| gl_sgis_detail_texture = stringSetFind(e,"GL_SGIS_detail_texture"); |
| gl_sgis_fog_function = stringSetFind(e,"GL_SGIS_fog_function"); |
| gl_sgis_generate_mipmap = stringSetFind(e,"GL_SGIS_generate_mipmap"); |
| gl_sgis_multisample = stringSetFind(e,"GL_SGIS_multisample"); |
| gl_sgis_pixel_texture = stringSetFind(e,"GL_SGIS_pixel_texture"); |
| gl_sgis_point_line_texgen = stringSetFind(e,"GL_SGIS_point_line_texgen"); |
| gl_sgis_point_parameters = stringSetFind(e,"GL_SGIS_point_parameters"); |
| gl_sgis_sharpen_texture = stringSetFind(e,"GL_SGIS_sharpen_texture"); |
| gl_sgis_texture4d = stringSetFind(e,"GL_SGIS_texture4D"); |
| gl_sgis_texture_border_clamp = stringSetFind(e,"GL_SGIS_texture_border_clamp"); |
| gl_sgis_texture_color_mask = stringSetFind(e,"GL_SGIS_texture_color_mask"); |
| gl_sgis_texture_edge_clamp = stringSetFind(e,"GL_SGIS_texture_edge_clamp"); |
| gl_sgis_texture_filter4 = stringSetFind(e,"GL_SGIS_texture_filter4"); |
| gl_sgis_texture_lod = stringSetFind(e,"GL_SGIS_texture_lod"); |
| gl_sgix_async = stringSetFind(e,"GL_SGIX_async"); |
| gl_sgix_async_histogram = stringSetFind(e,"GL_SGIX_async_histogram"); |
| gl_sgix_async_pixel = stringSetFind(e,"GL_SGIX_async_pixel"); |
| gl_sgix_blend_alpha_minmax = stringSetFind(e,"GL_SGIX_blend_alpha_minmax"); |
| gl_sgix_convolution_accuracy = stringSetFind(e,"GL_SGIX_convolution_accuracy"); |
| gl_sgix_depth_texture = stringSetFind(e,"GL_SGIX_depth_texture"); |
| gl_sgix_flush_raster = stringSetFind(e,"GL_SGIX_flush_raster"); |
| gl_sgix_fog_offset = stringSetFind(e,"GL_SGIX_fog_offset"); |
| gl_sgix_fog_texture = stringSetFind(e,"GL_SGIX_fog_texture"); |
| gl_sgix_fragment_lighting = stringSetFind(e,"GL_SGIX_fragment_lighting"); |
| gl_sgix_fragment_specular_lighting = stringSetFind(e,"GL_SGIX_fragment_specular_lighting"); |
| gl_sgix_framezoom = stringSetFind(e,"GL_SGIX_framezoom"); |
| gl_sgix_igloo_interface = stringSetFind(e,"GL_SGIX_igloo_interface"); |
| gl_sgix_instruments = stringSetFind(e,"GL_SGIX_instruments"); |
| gl_sgix_interlace = stringSetFind(e,"GL_SGIX_interlace"); |
| gl_sgix_list_priority = stringSetFind(e,"GL_SGIX_list_priority"); |
| gl_sgix_pixel_texture = stringSetFind(e,"GL_SGIX_pixel_texture"); |
| gl_sgix_polynomial_ffd = stringSetFind(e,"GL_SGIX_polynomial_ffd"); |
| gl_sgix_reference_plane = stringSetFind(e,"GL_SGIX_reference_plane"); |
| gl_sgix_resample = stringSetFind(e,"GL_SGIX_resample"); |
| gl_sgix_shadow = stringSetFind(e,"GL_SGIX_shadow"); |
| gl_sgix_shadow_ambient = stringSetFind(e,"GL_SGIX_shadow_ambient"); |
| gl_sgix_sprite = stringSetFind(e,"GL_SGIX_sprite"); |
| gl_sgix_tag_sample_buffer = stringSetFind(e,"GL_SGIX_tag_sample_buffer"); |
| gl_sgix_texture_coordinate_clamp = stringSetFind(e,"GL_SGIX_texture_coordinate_clamp"); |
| gl_sgix_texture_multi_buffer = stringSetFind(e,"GL_SGIX_texture_multi_buffer"); |
| gl_sgix_texture_range = stringSetFind(e,"GL_SGIX_texture_range"); |
| gl_sgix_texture_scale_bias = stringSetFind(e,"GL_SGIX_texture_scale_bias"); |
| gl_sgix_vertex_preclip_hint = stringSetFind(e,"GL_SGIX_vertex_preclip_hint"); |
| gl_sgix_ycrcb = stringSetFind(e,"GL_SGIX_ycrcb"); |
| gl_sgi_color_matrix = stringSetFind(e,"GL_SGI_color_matrix"); |
| gl_sgi_color_table = stringSetFind(e,"GL_SGI_color_table"); |
| gl_sgi_texture_color_table = stringSetFind(e,"GL_SGI_texture_color_table"); |
| gl_sunx_constant_data = stringSetFind(e,"GL_SUNX_constant_data"); |
| gl_sun_convolution_border_modes = stringSetFind(e,"GL_SUN_convolution_border_modes"); |
| gl_sun_global_alpha = stringSetFind(e,"GL_SUN_global_alpha"); |
| gl_sun_mesh_array = stringSetFind(e,"GL_SUN_mesh_array"); |
| gl_sun_read_video_pixels = stringSetFind(e,"GL_SUN_read_video_pixels"); |
| gl_sun_slice_accum = stringSetFind(e,"GL_SUN_slice_accum"); |
| gl_sun_triangle_list = stringSetFind(e,"GL_SUN_triangle_list"); |
| gl_sun_vertex = stringSetFind(e,"GL_SUN_vertex"); |
| gl_viv_shader_binary = stringSetFind(e,"GL_VIV_shader_binary"); |
| gl_win_phong_shading = stringSetFind(e,"GL_WIN_phong_shading"); |
| gl_win_specular_fog = stringSetFind(e,"GL_WIN_specular_fog"); |
| gl_win_swap_hint = stringSetFind(e,"GL_WIN_swap_hint"); |
| |
| #if REGAL_SYS_WGL |
| wgl_3dl_stereo_control = stringSetFind(e,"WGL_3DL_stereo_control"); |
| wgl_amd_gpu_association = stringSetFind(e,"WGL_AMD_gpu_association"); |
| wgl_arb_buffer_region = stringSetFind(e,"WGL_ARB_buffer_region"); |
| wgl_arb_create_context = stringSetFind(e,"WGL_ARB_create_context"); |
| wgl_arb_create_context_profile = stringSetFind(e,"WGL_ARB_create_context_profile"); |
| wgl_arb_create_context_robustness = stringSetFind(e,"WGL_ARB_create_context_robustness"); |
| wgl_arb_extensions_string = stringSetFind(e,"WGL_ARB_extensions_string"); |
| wgl_arb_framebuffer_srgb = stringSetFind(e,"WGL_ARB_framebuffer_sRGB"); |
| wgl_arb_make_current_read = stringSetFind(e,"WGL_ARB_make_current_read"); |
| wgl_arb_multisample = stringSetFind(e,"WGL_ARB_multisample"); |
| wgl_arb_pbuffer = stringSetFind(e,"WGL_ARB_pbuffer"); |
| wgl_arb_pixel_format = stringSetFind(e,"WGL_ARB_pixel_format"); |
| wgl_arb_pixel_format_float = stringSetFind(e,"WGL_ARB_pixel_format_float"); |
| wgl_arb_render_texture = stringSetFind(e,"WGL_ARB_render_texture"); |
| wgl_arb_robustness_share_group_isolation = stringSetFind(e,"WGL_ARB_robustness_share_group_isolation"); |
| wgl_ati_pixel_format_float = stringSetFind(e,"WGL_ATI_pixel_format_float"); |
| wgl_ati_render_texture_rectangle = stringSetFind(e,"WGL_ATI_render_texture_rectangle"); |
| wgl_ext_create_context_es2_profile = stringSetFind(e,"WGL_EXT_create_context_es2_profile"); |
| wgl_ext_create_context_es_profile = stringSetFind(e,"WGL_EXT_create_context_es_profile"); |
| wgl_ext_depth_float = stringSetFind(e,"WGL_EXT_depth_float"); |
| wgl_ext_display_color_table = stringSetFind(e,"WGL_EXT_display_color_table"); |
| wgl_ext_extensions_string = stringSetFind(e,"WGL_EXT_extensions_string"); |
| wgl_ext_framebuffer_srgb = stringSetFind(e,"WGL_EXT_framebuffer_sRGB"); |
| wgl_ext_make_current_read = stringSetFind(e,"WGL_EXT_make_current_read"); |
| wgl_ext_multisample = stringSetFind(e,"WGL_EXT_multisample"); |
| wgl_ext_pbuffer = stringSetFind(e,"WGL_EXT_pbuffer"); |
| wgl_ext_pixel_format = stringSetFind(e,"WGL_EXT_pixel_format"); |
| wgl_ext_pixel_format_packed_float = stringSetFind(e,"WGL_EXT_pixel_format_packed_float"); |
| wgl_ext_swap_control = stringSetFind(e,"WGL_EXT_swap_control"); |
| wgl_gdi = stringSetFind(e,"WGL_GDI"); |
| wgl_i3d_digital_video_control = stringSetFind(e,"WGL_I3D_digital_video_control"); |
| wgl_i3d_gamma = stringSetFind(e,"WGL_I3D_gamma"); |
| wgl_i3d_genlock = stringSetFind(e,"WGL_I3D_genlock"); |
| wgl_i3d_image_buffer = stringSetFind(e,"WGL_I3D_image_buffer"); |
| wgl_i3d_swap_frame_lock = stringSetFind(e,"WGL_I3D_swap_frame_lock"); |
| wgl_i3d_swap_frame_usage = stringSetFind(e,"WGL_I3D_swap_frame_usage"); |
| wgl_nv_dx_interop = stringSetFind(e,"WGL_NV_DX_interop"); |
| wgl_nv_copy_image = stringSetFind(e,"WGL_NV_copy_image"); |
| wgl_nv_float_buffer = stringSetFind(e,"WGL_NV_float_buffer"); |
| wgl_nv_gpu_affinity = stringSetFind(e,"WGL_NV_gpu_affinity"); |
| wgl_nv_multisample_coverage = stringSetFind(e,"WGL_NV_multisample_coverage"); |
| wgl_nv_present_video = stringSetFind(e,"WGL_NV_present_video"); |
| wgl_nv_render_depth_texture = stringSetFind(e,"WGL_NV_render_depth_texture"); |
| wgl_nv_render_texture_rectangle = stringSetFind(e,"WGL_NV_render_texture_rectangle"); |
| wgl_nv_swap_group = stringSetFind(e,"WGL_NV_swap_group"); |
| wgl_nv_vertex_array_range = stringSetFind(e,"WGL_NV_vertex_array_range"); |
| wgl_nv_video_capture = stringSetFind(e,"WGL_NV_video_capture"); |
| wgl_nv_video_output = stringSetFind(e,"WGL_NV_video_output"); |
| wgl_oml_sync_control = stringSetFind(e,"WGL_OML_sync_control"); |
| #endif /* REGAL_SYS_WGL */ |
| |
| #if REGAL_SYS_GLX |
| glx_3dfx_multisample = stringSetFind(e,"GLX_3DFX_multisample"); |
| glx_amd_gpu_association = stringSetFind(e,"GLX_AMD_gpu_association"); |
| glx_arb_create_context = stringSetFind(e,"GLX_ARB_create_context"); |
| glx_arb_create_context_profile = stringSetFind(e,"GLX_ARB_create_context_profile"); |
| glx_arb_create_context_robustness = stringSetFind(e,"GLX_ARB_create_context_robustness"); |
| glx_arb_fbconfig_float = stringSetFind(e,"GLX_ARB_fbconfig_float"); |
| glx_arb_framebuffer_srgb = stringSetFind(e,"GLX_ARB_framebuffer_sRGB"); |
| glx_arb_get_proc_address = stringSetFind(e,"GLX_ARB_get_proc_address"); |
| glx_arb_multisample = stringSetFind(e,"GLX_ARB_multisample"); |
| glx_arb_robustness_share_group_isolation = stringSetFind(e,"GLX_ARB_robustness_share_group_isolation"); |
| glx_arb_vertex_buffer_object = stringSetFind(e,"GLX_ARB_vertex_buffer_object"); |
| glx_ati_pixel_format_float = stringSetFind(e,"GLX_ATI_pixel_format_float"); |
| glx_ati_render_texture = stringSetFind(e,"GLX_ATI_render_texture"); |
| glx_ext_create_context_es2_profile = stringSetFind(e,"GLX_EXT_create_context_es2_profile"); |
| glx_ext_create_context_es_profile = stringSetFind(e,"GLX_EXT_create_context_es_profile"); |
| glx_ext_fbconfig_packed_float = stringSetFind(e,"GLX_EXT_fbconfig_packed_float"); |
| glx_ext_framebuffer_srgb = stringSetFind(e,"GLX_EXT_framebuffer_sRGB"); |
| glx_ext_import_context = stringSetFind(e,"GLX_EXT_import_context"); |
| glx_ext_swap_control = stringSetFind(e,"GLX_EXT_swap_control"); |
| glx_ext_swap_control_tear = stringSetFind(e,"GLX_EXT_swap_control_tear"); |
| glx_ext_texture_from_pixmap = stringSetFind(e,"GLX_EXT_texture_from_pixmap"); |
| glx_ext_visual_info = stringSetFind(e,"GLX_EXT_visual_info"); |
| glx_ext_visual_rating = stringSetFind(e,"GLX_EXT_visual_rating"); |
| glx_intel_swap_event = stringSetFind(e,"GLX_INTEL_swap_event"); |
| glx_mesa_agp_offset = stringSetFind(e,"GLX_MESA_agp_offset"); |
| glx_mesa_copy_sub_buffer = stringSetFind(e,"GLX_MESA_copy_sub_buffer"); |
| glx_mesa_pixmap_colormap = stringSetFind(e,"GLX_MESA_pixmap_colormap"); |
| glx_mesa_release_buffers = stringSetFind(e,"GLX_MESA_release_buffers"); |
| glx_mesa_set_3dfx_mode = stringSetFind(e,"GLX_MESA_set_3dfx_mode"); |
| glx_mesa_swap_control = stringSetFind(e,"GLX_MESA_swap_control"); |
| glx_nv_copy_image = stringSetFind(e,"GLX_NV_copy_image"); |
| glx_nv_float_buffer = stringSetFind(e,"GLX_NV_float_buffer"); |
| glx_nv_multisample_coverage = stringSetFind(e,"GLX_NV_multisample_coverage"); |
| glx_nv_present_video = stringSetFind(e,"GLX_NV_present_video"); |
| glx_nv_swap_group = stringSetFind(e,"GLX_NV_swap_group"); |
| glx_nv_vertex_array_range = stringSetFind(e,"GLX_NV_vertex_array_range"); |
| glx_nv_video_capture = stringSetFind(e,"GLX_NV_video_capture"); |
| glx_nv_video_output = stringSetFind(e,"GLX_NV_video_output"); |
| glx_oml_swap_method = stringSetFind(e,"GLX_OML_swap_method"); |
| glx_oml_sync_control = stringSetFind(e,"GLX_OML_sync_control"); |
| glx_sgis_blended_overlay = stringSetFind(e,"GLX_SGIS_blended_overlay"); |
| glx_sgis_color_range = stringSetFind(e,"GLX_SGIS_color_range"); |
| glx_sgis_multisample = stringSetFind(e,"GLX_SGIS_multisample"); |
| glx_sgis_shared_multisample = stringSetFind(e,"GLX_SGIS_shared_multisample"); |
| glx_sgix_fbconfig = stringSetFind(e,"GLX_SGIX_fbconfig"); |
| glx_sgix_hyperpipe = stringSetFind(e,"GLX_SGIX_hyperpipe"); |
| glx_sgix_pbuffer = stringSetFind(e,"GLX_SGIX_pbuffer"); |
| glx_sgix_swap_barrier = stringSetFind(e,"GLX_SGIX_swap_barrier"); |
| glx_sgix_swap_group = stringSetFind(e,"GLX_SGIX_swap_group"); |
| glx_sgix_video_resize = stringSetFind(e,"GLX_SGIX_video_resize"); |
| glx_sgix_visual_select_group = stringSetFind(e,"GLX_SGIX_visual_select_group"); |
| glx_sgi_cushion = stringSetFind(e,"GLX_SGI_cushion"); |
| glx_sgi_make_current_read = stringSetFind(e,"GLX_SGI_make_current_read"); |
| glx_sgi_swap_control = stringSetFind(e,"GLX_SGI_swap_control"); |
| glx_sgi_video_sync = stringSetFind(e,"GLX_SGI_video_sync"); |
| glx_sun_get_transparent_index = stringSetFind(e,"GLX_SUN_get_transparent_index"); |
| glx_sun_video_resize = stringSetFind(e,"GLX_SUN_video_resize"); |
| #endif /* REGAL_SYS_GLX */ |
| |
| #if REGAL_SYS_EGL |
| egl_angle_query_surface_pointer = stringSetFind(e,"EGL_ANGLE_query_surface_pointer"); |
| egl_angle_surface_d3d_texture_2d_share_handle = stringSetFind(e,"EGL_ANGLE_surface_d3d_texture_2d_share_handle"); |
| egl_ext_create_context_robustness = stringSetFind(e,"EGL_EXT_create_context_robustness"); |
| egl_ext_multiview_window = stringSetFind(e,"EGL_EXT_multiview_window"); |
| egl_hi_colorformats = stringSetFind(e,"EGL_HI_colorformats"); |
| egl_img_context_priority = stringSetFind(e,"EGL_IMG_context_priority"); |
| egl_khr_config_attribs = stringSetFind(e,"EGL_KHR_config_attribs"); |
| egl_khr_create_context = stringSetFind(e,"EGL_KHR_create_context"); |
| egl_khr_fence_sync = stringSetFind(e,"EGL_KHR_fence_sync"); |
| egl_khr_gl_texture_cubemap_image = stringSetFind(e,"EGL_KHR_gl_texture_cubemap_image"); |
| egl_khr_image_base = stringSetFind(e,"EGL_KHR_image_base"); |
| egl_khr_image_pixmap = stringSetFind(e,"EGL_KHR_image_pixmap"); |
| egl_khr_lock_surface = stringSetFind(e,"EGL_KHR_lock_surface"); |
| egl_khr_lock_surface2 = stringSetFind(e,"EGL_KHR_lock_surface2"); |
| egl_khr_reusable_sync = stringSetFind(e,"EGL_KHR_reusable_sync"); |
| egl_khr_stream = stringSetFind(e,"EGL_KHR_stream"); |
| egl_khr_stream_consumer_gltexture = stringSetFind(e,"EGL_KHR_stream_consumer_gltexture"); |
| egl_khr_stream_cross_process_fd = stringSetFind(e,"EGL_KHR_stream_cross_process_fd"); |
| egl_khr_stream_fifo = stringSetFind(e,"EGL_KHR_stream_fifo"); |
| egl_khr_stream_producer_eglsurface = stringSetFind(e,"EGL_KHR_stream_producer_eglsurface"); |
| egl_khr_vg_parent_image = stringSetFind(e,"EGL_KHR_vg_parent_image"); |
| egl_khr_wait_sync = stringSetFind(e,"EGL_KHR_wait_sync"); |
| egl_mesa_drm_image = stringSetFind(e,"EGL_MESA_drm_image"); |
| egl_nv_coverage_sample = stringSetFind(e,"EGL_NV_coverage_sample"); |
| egl_nv_coverage_sample_resolve = stringSetFind(e,"EGL_NV_coverage_sample_resolve"); |
| egl_nv_post_sub_buffer = stringSetFind(e,"EGL_NV_post_sub_buffer"); |
| egl_nv_sync = stringSetFind(e,"EGL_NV_sync"); |
| egl_nv_system_time = stringSetFind(e,"EGL_NV_system_time"); |
| #endif /* REGAL_SYS_EGL */ |
| |
| RegalAssert(context.dispatcher.driver.glGetIntegerv); |
| RegalAssert(context.dispatcher.driver.glGetBooleanv); |
| |
| gl_max_attrib_stack_depth = 0; |
| gl_max_client_attrib_stack_depth = 0; |
| gl_max_combined_texture_image_units = 0; |
| gl_max_debug_message_length = 1024; |
| gl_max_draw_buffers = 0; |
| gl_max_texture_coords = 0; |
| gl_max_texture_units = 0; |
| gl_max_vertex_attrib_bindings = 0; |
| gl_max_vertex_attribs = 0; |
| gl_max_viewports = 0; |
| gl_max_varying_floats = 0; |
| |
| // Looking at the various specs and RegalEmu.h I came up with this table: |
| // |
| // GL Core ES1 ES2 ES3 Regal |
| // GL_MAX_ATTRIB_STACK_DEPTH 16 rem n/a n/a n/a 16 |
| // GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 16 rem n/a n/a n/a 16 |
| // GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 96 96 - 8 32 96 |
| // GL_MAX_DRAW_BUFFERS 8 8 - - 4 8 |
| // GL_MAX_TEXTURE_COORDS 8 rem - - - 16 |
| // GL_MAX_TEXTURE_UNITS 2 rem + - - 4 |
| // GL_MAX_VARYING_VECTORS 15 15 - 8 15 - |
| // GL_MAX_VARYING_FLOATS 32 (2.0) dep - - - - |
| // GL_MAX_VERTEX_ATTRIBS 16 16 - 8 16 16 |
| // GL_MAX_VERTEX_ATTRIB_BINDINGS 16 16 - - - 16 |
| // GL_MAX_VIEWPORTS 16 16 - - - 16 |
| |
| if (compat) |
| { |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_ATTRIB_STACK_DEPTH, reinterpret_cast<GLint *>(&gl_max_attrib_stack_depth)); |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, reinterpret_cast<GLint *>(&gl_max_client_attrib_stack_depth)); |
| } |
| |
| if (!es1) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, reinterpret_cast<GLint *>(&gl_max_combined_texture_image_units)); |
| |
| if (core || compat) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_DRAW_BUFFERS, reinterpret_cast<GLint *>(&gl_max_draw_buffers)); |
| |
| if (compat) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_TEXTURE_COORDS, reinterpret_cast<GLint *>(&gl_max_texture_coords)); |
| |
| if (es1 || compat) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_TEXTURE_UNITS, reinterpret_cast<GLint *>(&gl_max_texture_units)); |
| |
| if (es2 || core) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_VARYING_VECTORS, reinterpret_cast<GLint *>(&gl_max_varying_floats)); |
| else if (compat) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_VARYING_FLOATS, reinterpret_cast<GLint *>(&gl_max_varying_floats)); |
| |
| if (es1) |
| gl_max_vertex_attribs = 8; //<> one of these things is not like the other... |
| else |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_VERTEX_ATTRIBS, reinterpret_cast<GLint *>(&gl_max_vertex_attribs)); |
| |
| if ((core || compat) && (gl_version_4_3 || gl_arb_vertex_attrib_binding)) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_VERTEX_ATTRIB_BINDINGS, reinterpret_cast<GLint *>(&gl_max_vertex_attrib_bindings)); |
| |
| if ((core || compat) && (gl_version_4_1 || gl_arb_viewport_array)) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_VIEWPORTS, reinterpret_cast<GLint *>(&gl_max_viewports)); |
| |
| if (gl_arb_debug_output) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_DEBUG_MESSAGE_LENGTH_ARB, reinterpret_cast<GLint *>(&gl_max_debug_message_length)); |
| else if (gl_khr_debug) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_DEBUG_MESSAGE_LENGTH, reinterpret_cast<GLint *>(&gl_max_debug_message_length)); |
| else if (gl_amd_debug_output) |
| context.dispatcher.driver.glGetIntegerv( GL_MAX_DEBUG_MESSAGE_LENGTH_AMD, reinterpret_cast<GLint *>(&gl_max_debug_message_length)); |
| |
| if ((compat) && (gl_version_3_2 || gl_arb_provoking_vertex || gl_ext_provoking_vertex)) |
| context.dispatcher.driver.glGetBooleanv( GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION, &gl_quads_follow_provoking_vertex_convention); |
| |
| Info("OpenGL v attribs : ",gl_max_vertex_attribs); |
| Info("OpenGL varyings : ",gl_max_varying_floats); |
| |
| warnGLError(context,"querying context information."); |
| } |
| |
| bool |
| ContextInfo::stringSetFind(const std::set<std::string> &stringSet, const std::string &val) |
| { |
| return stringSet.find(val)!=stringSet.end(); |
| } |
| |
| bool |
| ContextInfo::getExtension(const char *ext) const |
| { |
| Internal("ContextInfo::getExtension ",boost::print::quote(ext,'"')); |
| |
| if (!strcmp(ext,"GL_3DFX_multisample")) return gl_3dfx_multisample; |
| if (!strcmp(ext,"GL_3DFX_tbuffer")) return gl_3dfx_tbuffer; |
| if (!strcmp(ext,"GL_3DFX_texture_compression_FXT1")) return gl_3dfx_texture_compression_fxt1; |
| if (!strcmp(ext,"GL_AMD_blend_minmax_factor")) return gl_amd_blend_minmax_factor; |
| if (!strcmp(ext,"GL_AMD_compressed_3DC_texture")) return gl_amd_compressed_3dc_texture; |
| if (!strcmp(ext,"GL_AMD_compressed_ATC_texture")) return gl_amd_compressed_atc_texture; |
| if (!strcmp(ext,"GL_AMD_debug_output")) return gl_amd_debug_output; |
| if (!strcmp(ext,"GL_AMD_depth_clamp_separate")) return gl_amd_depth_clamp_separate; |
| if (!strcmp(ext,"GL_AMD_draw_buffers_blend")) return gl_amd_draw_buffers_blend; |
| if (!strcmp(ext,"GL_AMD_interleaved_elements")) return gl_amd_interleaved_elements; |
| if (!strcmp(ext,"GL_AMD_multi_draw_indirect")) return gl_amd_multi_draw_indirect; |
| if (!strcmp(ext,"GL_AMD_name_gen_delete")) return gl_amd_name_gen_delete; |
| if (!strcmp(ext,"GL_AMD_performance_monitor")) return gl_amd_performance_monitor; |
| if (!strcmp(ext,"GL_AMD_pinned_memory")) return gl_amd_pinned_memory; |
| if (!strcmp(ext,"GL_AMD_program_binary_Z400")) return gl_amd_program_binary_z400; |
| if (!strcmp(ext,"GL_AMD_query_buffer_object")) return gl_amd_query_buffer_object; |
| if (!strcmp(ext,"GL_AMD_sample_positions")) return gl_amd_sample_positions; |
| if (!strcmp(ext,"GL_AMD_seamless_cubemap_per_texture")) return gl_amd_seamless_cubemap_per_texture; |
| if (!strcmp(ext,"GL_AMD_sparse_texture")) return gl_amd_sparse_texture; |
| if (!strcmp(ext,"GL_AMD_stencil_operation_extended")) return gl_amd_stencil_operation_extended; |
| if (!strcmp(ext,"GL_AMD_vertex_shader_tessellator")) return gl_amd_vertex_shader_tessellator; |
| if (!strcmp(ext,"GL_ANGLE_framebuffer_blit")) return gl_angle_framebuffer_blit; |
| if (!strcmp(ext,"GL_ANGLE_framebuffer_multisample")) return gl_angle_framebuffer_multisample; |
| if (!strcmp(ext,"GL_ANGLE_instanced_arrays")) return gl_angle_instanced_arrays; |
| if (!strcmp(ext,"GL_ANGLE_pack_reverse_row_order")) return gl_angle_pack_reverse_row_order; |
| if (!strcmp(ext,"GL_ANGLE_program_binary")) return gl_angle_program_binary; |
| if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt1")) return gl_angle_texture_compression_dxt1; |
| if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt3")) return gl_angle_texture_compression_dxt3; |
| if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt5")) return gl_angle_texture_compression_dxt5; |
| if (!strcmp(ext,"GL_ANGLE_texture_usage")) return gl_angle_texture_usage; |
| if (!strcmp(ext,"GL_ANGLE_timer_query")) return gl_angle_timer_query; |
| if (!strcmp(ext,"GL_ANGLE_translated_shader_source")) return gl_angle_translated_shader_source; |
| if (!strcmp(ext,"GL_APPLE_aux_depth_stencil")) return gl_apple_aux_depth_stencil; |
| if (!strcmp(ext,"GL_APPLE_client_storage")) return gl_apple_client_storage; |
| if (!strcmp(ext,"GL_APPLE_copy_texture_levels")) return gl_apple_copy_texture_levels; |
| if (!strcmp(ext,"GL_APPLE_element_array")) return gl_apple_element_array; |
| if (!strcmp(ext,"GL_APPLE_fence")) return gl_apple_fence; |
| if (!strcmp(ext,"GL_APPLE_float_pixels")) return gl_apple_float_pixels; |
| if (!strcmp(ext,"GL_APPLE_flush_buffer_range")) return gl_apple_flush_buffer_range; |
| if (!strcmp(ext,"GL_APPLE_flush_render")) return gl_apple_flush_render; |
| if (!strcmp(ext,"GL_APPLE_framebuffer_multisample")) return gl_apple_framebuffer_multisample; |
| if (!strcmp(ext,"GL_APPLE_object_purgeable")) return gl_apple_object_purgeable; |
| if (!strcmp(ext,"GL_APPLE_pixel_buffer")) return gl_apple_pixel_buffer; |
| if (!strcmp(ext,"GL_APPLE_rgb_422")) return gl_apple_rgb_422; |
| if (!strcmp(ext,"GL_APPLE_row_bytes")) return gl_apple_row_bytes; |
| if (!strcmp(ext,"GL_APPLE_specular_vector")) return gl_apple_specular_vector; |
| if (!strcmp(ext,"GL_APPLE_sync")) return gl_apple_sync; |
| if (!strcmp(ext,"GL_APPLE_texture_max_level")) return gl_apple_texture_max_level; |
| if (!strcmp(ext,"GL_APPLE_texture_range")) return gl_apple_texture_range; |
| if (!strcmp(ext,"GL_APPLE_transform_hint")) return gl_apple_transform_hint; |
| if (!strcmp(ext,"GL_APPLE_vertex_array_object")) return gl_apple_vertex_array_object; |
| if (!strcmp(ext,"GL_APPLE_vertex_array_range")) return gl_apple_vertex_array_range; |
| if (!strcmp(ext,"GL_APPLE_vertex_program_evaluators")) return gl_apple_vertex_program_evaluators; |
| if (!strcmp(ext,"GL_APPLE_ycbcr_422")) return gl_apple_ycbcr_422; |
| if (!strcmp(ext,"GL_ARB_ES2_compatibility")) return gl_arb_es2_compatibility; |
| if (!strcmp(ext,"GL_ARB_ES3_compatibility")) return gl_arb_es3_compatibility; |
| if (!strcmp(ext,"GL_ARB_base_instance")) return gl_arb_base_instance; |
| if (!strcmp(ext,"GL_ARB_bindless_texture")) return gl_arb_bindless_texture; |
| if (!strcmp(ext,"GL_ARB_blend_func_extended")) return gl_arb_blend_func_extended; |
| if (!strcmp(ext,"GL_ARB_buffer_storage")) return gl_arb_buffer_storage; |
| if (!strcmp(ext,"GL_ARB_cl_event")) return gl_arb_cl_event; |
| if (!strcmp(ext,"GL_ARB_clear_buffer_object")) return gl_arb_clear_buffer_object; |
| if (!strcmp(ext,"GL_ARB_clear_texture")) return gl_arb_clear_texture; |
| if (!strcmp(ext,"GL_ARB_color_buffer_float")) return gl_arb_color_buffer_float; |
| if (!strcmp(ext,"GL_ARB_compressed_texture_pixel_storage")) return gl_arb_compressed_texture_pixel_storage; |
| if (!strcmp(ext,"GL_ARB_compute_shader")) return gl_arb_compute_shader; |
| if (!strcmp(ext,"GL_ARB_compute_variable_group_size")) return gl_arb_compute_variable_group_size; |
| if (!strcmp(ext,"GL_ARB_copy_buffer")) return gl_arb_copy_buffer; |
| if (!strcmp(ext,"GL_ARB_copy_image")) return gl_arb_copy_image; |
| if (!strcmp(ext,"GL_ARB_debug_output")) return gl_arb_debug_output; |
| if (!strcmp(ext,"GL_ARB_depth_buffer_float")) return gl_arb_depth_buffer_float; |
| if (!strcmp(ext,"GL_ARB_depth_clamp")) return gl_arb_depth_clamp; |
| if (!strcmp(ext,"GL_ARB_depth_texture")) return gl_arb_depth_texture; |
| if (!strcmp(ext,"GL_ARB_draw_buffers")) return gl_arb_draw_buffers; |
| if (!strcmp(ext,"GL_ARB_draw_buffers_blend")) return gl_arb_draw_buffers_blend; |
| if (!strcmp(ext,"GL_ARB_draw_elements_base_vertex")) return gl_arb_draw_elements_base_vertex; |
| if (!strcmp(ext,"GL_ARB_draw_indirect")) return gl_arb_draw_indirect; |
| if (!strcmp(ext,"GL_ARB_draw_instanced")) return gl_arb_draw_instanced; |
| if (!strcmp(ext,"GL_ARB_enhanced_layouts")) return gl_arb_enhanced_layouts; |
| if (!strcmp(ext,"GL_ARB_explicit_uniform_location")) return gl_arb_explicit_uniform_location; |
| if (!strcmp(ext,"GL_ARB_fragment_program")) return gl_arb_fragment_program; |
| if (!strcmp(ext,"GL_ARB_fragment_shader")) return gl_arb_fragment_shader; |
| if (!strcmp(ext,"GL_ARB_framebuffer_no_attachments")) return gl_arb_framebuffer_no_attachments; |
| if (!strcmp(ext,"GL_ARB_framebuffer_object")) return gl_arb_framebuffer_object; |
| if (!strcmp(ext,"GL_ARB_framebuffer_sRGB")) return gl_arb_framebuffer_srgb; |
| if (!strcmp(ext,"GL_ARB_geometry_shader4")) return gl_arb_geometry_shader4; |
| if (!strcmp(ext,"GL_ARB_get_program_binary")) return gl_arb_get_program_binary; |
| if (!strcmp(ext,"GL_ARB_gpu_shader5")) return gl_arb_gpu_shader5; |
| if (!strcmp(ext,"GL_ARB_gpu_shader_fp64")) return gl_arb_gpu_shader_fp64; |
| if (!strcmp(ext,"GL_ARB_half_float_pixel")) return gl_arb_half_float_pixel; |
| if (!strcmp(ext,"GL_ARB_half_float_vertex")) return gl_arb_half_float_vertex; |
| if (!strcmp(ext,"GL_ARB_imaging")) return gl_arb_imaging; |
| if (!strcmp(ext,"GL_ARB_indirect_parameters")) return gl_arb_indirect_parameters; |
| if (!strcmp(ext,"GL_ARB_instanced_arrays")) return gl_arb_instanced_arrays; |
| if (!strcmp(ext,"GL_ARB_internalformat_query")) return gl_arb_internalformat_query; |
| if (!strcmp(ext,"GL_ARB_internalformat_query2")) return gl_arb_internalformat_query2; |
| if (!strcmp(ext,"GL_ARB_invalidate_subdata")) return gl_arb_invalidate_subdata; |
| if (!strcmp(ext,"GL_ARB_map_buffer_alignment")) return gl_arb_map_buffer_alignment; |
| if (!strcmp(ext,"GL_ARB_map_buffer_range")) return gl_arb_map_buffer_range; |
| if (!strcmp(ext,"GL_ARB_matrix_palette")) return gl_arb_matrix_palette; |
| if (!strcmp(ext,"GL_ARB_multi_bind")) return gl_arb_multi_bind; |
| if (!strcmp(ext,"GL_ARB_multi_draw_indirect")) return gl_arb_multi_draw_indirect; |
| if (!strcmp(ext,"GL_ARB_multisample")) return gl_arb_multisample; |
| if (!strcmp(ext,"GL_ARB_multitexture")) return gl_arb_multitexture; |
| if (!strcmp(ext,"GL_ARB_occlusion_query")) return gl_arb_occlusion_query; |
| if (!strcmp(ext,"GL_ARB_occlusion_query2")) return gl_arb_occlusion_query2; |
| if (!strcmp(ext,"GL_ARB_pixel_buffer_object")) return gl_arb_pixel_buffer_object; |
| if (!strcmp(ext,"GL_ARB_point_parameters")) return gl_arb_point_parameters; |
| if (!strcmp(ext,"GL_ARB_point_sprite")) return gl_arb_point_sprite; |
| if (!strcmp(ext,"GL_ARB_program_interface_query")) return gl_arb_program_interface_query; |
| if (!strcmp(ext,"GL_ARB_provoking_vertex")) return gl_arb_provoking_vertex; |
| if (!strcmp(ext,"GL_ARB_query_buffer_object")) return gl_arb_query_buffer_object; |
| if (!strcmp(ext,"GL_ARB_robustness")) return gl_arb_robustness; |
| if (!strcmp(ext,"GL_ARB_sample_shading")) return gl_arb_sample_shading; |
| if (!strcmp(ext,"GL_ARB_sampler_objects")) return gl_arb_sampler_objects; |
| if (!strcmp(ext,"GL_ARB_seamless_cube_map")) return gl_arb_seamless_cube_map; |
| if (!strcmp(ext,"GL_ARB_separate_shader_objects")) return gl_arb_separate_shader_objects; |
| if (!strcmp(ext,"GL_ARB_shader_atomic_counters")) return gl_arb_shader_atomic_counters; |
| if (!strcmp(ext,"GL_ARB_shader_image_load_store")) return gl_arb_shader_image_load_store; |
| if (!strcmp(ext,"GL_ARB_shader_objects")) return gl_arb_shader_objects; |
| if (!strcmp(ext,"GL_ARB_shader_storage_buffer_object")) return gl_arb_shader_storage_buffer_object; |
| if (!strcmp(ext,"GL_ARB_shader_subroutine")) return gl_arb_shader_subroutine; |
| if (!strcmp(ext,"GL_ARB_shading_language_100")) return gl_arb_shading_language_100; |
| if (!strcmp(ext,"GL_ARB_shading_language_include")) return gl_arb_shading_language_include; |
| if (!strcmp(ext,"GL_ARB_shadow")) return gl_arb_shadow; |
| if (!strcmp(ext,"GL_ARB_shadow_ambient")) return gl_arb_shadow_ambient; |
| if (!strcmp(ext,"GL_ARB_sparse_texture")) return gl_arb_sparse_texture; |
| if (!strcmp(ext,"GL_ARB_stencil_texturing")) return gl_arb_stencil_texturing; |
| if (!strcmp(ext,"GL_ARB_sync")) return gl_arb_sync; |
| if (!strcmp(ext,"GL_ARB_tessellation_shader")) return gl_arb_tessellation_shader; |
| if (!strcmp(ext,"GL_ARB_texture_border_clamp")) return gl_arb_texture_border_clamp; |
| if (!strcmp(ext,"GL_ARB_texture_buffer_object")) return gl_arb_texture_buffer_object; |
| if (!strcmp(ext,"GL_ARB_texture_buffer_range")) return gl_arb_texture_buffer_range; |
| if (!strcmp(ext,"GL_ARB_texture_compression")) return gl_arb_texture_compression; |
| if (!strcmp(ext,"GL_ARB_texture_compression_bptc")) return gl_arb_texture_compression_bptc; |
| if (!strcmp(ext,"GL_ARB_texture_compression_rgtc")) return gl_arb_texture_compression_rgtc; |
| if (!strcmp(ext,"GL_ARB_texture_cube_map")) return gl_arb_texture_cube_map; |
| if (!strcmp(ext,"GL_ARB_texture_cube_map_array")) return gl_arb_texture_cube_map_array; |
| if (!strcmp(ext,"GL_ARB_texture_env_combine")) return gl_arb_texture_env_combine; |
| if (!strcmp(ext,"GL_ARB_texture_env_dot3")) return gl_arb_texture_env_dot3; |
| if (!strcmp(ext,"GL_ARB_texture_float")) return gl_arb_texture_float; |
| if (!strcmp(ext,"GL_ARB_texture_gather")) return gl_arb_texture_gather; |
| if (!strcmp(ext,"GL_ARB_texture_mirror_clamp_to_edge")) return gl_arb_texture_mirror_clamp_to_edge; |
| if (!strcmp(ext,"GL_ARB_texture_mirrored_repeat")) return gl_arb_texture_mirrored_repeat; |
| if (!strcmp(ext,"GL_ARB_texture_multisample")) return gl_arb_texture_multisample; |
| if (!strcmp(ext,"GL_ARB_texture_rectangle")) return gl_arb_texture_rectangle; |
| if (!strcmp(ext,"GL_ARB_texture_rg")) return gl_arb_texture_rg; |
| if (!strcmp(ext,"GL_ARB_texture_rgb10_a2ui")) return gl_arb_texture_rgb10_a2ui; |
| if (!strcmp(ext,"GL_ARB_texture_storage")) return gl_arb_texture_storage; |
| if (!strcmp(ext,"GL_ARB_texture_storage_multisample")) return gl_arb_texture_storage_multisample; |
| if (!strcmp(ext,"GL_ARB_texture_swizzle")) return gl_arb_texture_swizzle; |
| if (!strcmp(ext,"GL_ARB_texture_view")) return gl_arb_texture_view; |
| if (!strcmp(ext,"GL_ARB_timer_query")) return gl_arb_timer_query; |
| if (!strcmp(ext,"GL_ARB_transform_feedback2")) return gl_arb_transform_feedback2; |
| if (!strcmp(ext,"GL_ARB_transform_feedback3")) return gl_arb_transform_feedback3; |
| if (!strcmp(ext,"GL_ARB_transform_feedback_instanced")) return gl_arb_transform_feedback_instanced; |
| if (!strcmp(ext,"GL_ARB_transpose_matrix")) return gl_arb_transpose_matrix; |
| if (!strcmp(ext,"GL_ARB_uniform_buffer_object")) return gl_arb_uniform_buffer_object; |
| if (!strcmp(ext,"GL_ARB_vertex_array_object")) return gl_arb_vertex_array_object; |
| if (!strcmp(ext,"GL_ARB_vertex_attrib_64bit")) return gl_arb_vertex_attrib_64bit; |
| if (!strcmp(ext,"GL_ARB_vertex_attrib_binding")) return gl_arb_vertex_attrib_binding; |
| if (!strcmp(ext,"GL_ARB_vertex_blend")) return gl_arb_vertex_blend; |
| if (!strcmp(ext,"GL_ARB_vertex_buffer_object")) return gl_arb_vertex_buffer_object; |
| if (!strcmp(ext,"GL_ARB_vertex_program")) return gl_arb_vertex_program; |
| if (!strcmp(ext,"GL_ARB_vertex_shader")) return gl_arb_vertex_shader; |
| if (!strcmp(ext,"GL_ARB_vertex_type_2_10_10_10_rev")) return gl_arb_vertex_type_2_10_10_10_rev; |
| if (!strcmp(ext,"GL_ARB_viewport_array")) return gl_arb_viewport_array; |
| if (!strcmp(ext,"GL_ARB_window_pos")) return gl_arb_window_pos; |
| if (!strcmp(ext,"GL_ARM_mali_program_binary")) return gl_arm_mali_program_binary; |
| if (!strcmp(ext,"GL_ARM_mali_shader_binary")) return gl_arm_mali_shader_binary; |
| if (!strcmp(ext,"GL_ATI_draw_buffers")) return gl_ati_draw_buffers; |
| if (!strcmp(ext,"GL_ATI_element_array")) return gl_ati_element_array; |
| if (!strcmp(ext,"GL_ATI_envmap_bumpmap")) return gl_ati_envmap_bumpmap; |
| if (!strcmp(ext,"GL_ATI_fragment_shader")) return gl_ati_fragment_shader; |
| if (!strcmp(ext,"GL_ATI_map_object_buffer")) return gl_ati_map_object_buffer; |
| if (!strcmp(ext,"GL_ATI_meminfo")) return gl_ati_meminfo; |
| if (!strcmp(ext,"GL_ATI_pn_triangles")) return gl_ati_pn_triangles; |
| if (!strcmp(ext,"GL_ATI_separate_stencil")) return gl_ati_separate_stencil; |
| if (!strcmp(ext,"GL_ATI_text_fragment_shader")) return gl_ati_text_fragment_shader; |
| if (!strcmp(ext,"GL_ATI_texture_compression_3dc")) return gl_ati_texture_compression_3dc; |
| if (!strcmp(ext,"GL_ATI_texture_env_combine3")) return gl_ati_texture_env_combine3; |
| if (!strcmp(ext,"GL_ATI_texture_float")) return gl_ati_texture_float; |
| if (!strcmp(ext,"GL_ATI_texture_mirror_once")) return gl_ati_texture_mirror_once; |
| if (!strcmp(ext,"GL_ATI_vertex_array_object")) return gl_ati_vertex_array_object; |
| if (!strcmp(ext,"GL_ATI_vertex_attrib_array_object")) return gl_ati_vertex_attrib_array_object; |
| if (!strcmp(ext,"GL_ATI_vertex_streams")) return gl_ati_vertex_streams; |
| if (!strcmp(ext,"GL_DMP_shader_binary")) return gl_dmp_shader_binary; |
| if (!strcmp(ext,"GL_EXT_422_pixels")) return gl_ext_422_pixels; |
| if (!strcmp(ext,"GL_EXT_Cg_shader")) return gl_ext_cg_shader; |
| if (!strcmp(ext,"GL_EXT_abgr")) return gl_ext_abgr; |
| if (!strcmp(ext,"GL_EXT_bgra")) return gl_ext_bgra; |
| if (!strcmp(ext,"GL_EXT_bindable_uniform")) return gl_ext_bindable_uniform; |
| if (!strcmp(ext,"GL_EXT_blend_color")) return gl_ext_blend_color; |
| if (!strcmp(ext,"GL_EXT_blend_equation_separate")) return gl_ext_blend_equation_separate; |
| if (!strcmp(ext,"GL_EXT_blend_func_separate")) return gl_ext_blend_func_separate; |
| if (!strcmp(ext,"GL_EXT_blend_minmax")) return gl_ext_blend_minmax; |
| if (!strcmp(ext,"GL_EXT_blend_subtract")) return gl_ext_blend_subtract; |
| if (!strcmp(ext,"GL_EXT_clip_volume_hint")) return gl_ext_clip_volume_hint; |
| if (!strcmp(ext,"GL_EXT_cmyka")) return gl_ext_cmyka; |
| if (!strcmp(ext,"GL_EXT_color_buffer_half_float")) return gl_ext_color_buffer_half_float; |
| if (!strcmp(ext,"GL_EXT_color_subtable")) return gl_ext_color_subtable; |
| if (!strcmp(ext,"GL_EXT_compiled_vertex_array")) return gl_ext_compiled_vertex_array; |
| if (!strcmp(ext,"GL_EXT_convolution")) return gl_ext_convolution; |
| if (!strcmp(ext,"GL_EXT_coordinate_frame")) return gl_ext_coordinate_frame; |
| if (!strcmp(ext,"GL_EXT_copy_texture")) return gl_ext_copy_texture; |
| if (!strcmp(ext,"GL_EXT_cull_vertex")) return gl_ext_cull_vertex; |
| if (!strcmp(ext,"GL_EXT_debug_label")) return gl_ext_debug_label; |
| if (!strcmp(ext,"GL_EXT_debug_marker")) return gl_ext_debug_marker; |
| if (!strcmp(ext,"GL_EXT_depth_bounds_test")) return gl_ext_depth_bounds_test; |
| if (!strcmp(ext,"GL_EXT_direct_state_access")) return gl_ext_direct_state_access; |
| if (!strcmp(ext,"GL_EXT_discard_framebuffer")) return gl_ext_discard_framebuffer; |
| if (!strcmp(ext,"GL_EXT_disjoint_timer_query")) return gl_ext_disjoint_timer_query; |
| if (!strcmp(ext,"GL_EXT_draw_buffers2")) return gl_ext_draw_buffers2; |
| if (!strcmp(ext,"GL_EXT_draw_instanced")) return gl_ext_draw_instanced; |
| if (!strcmp(ext,"GL_EXT_draw_range_elements")) return gl_ext_draw_range_elements; |
| if (!strcmp(ext,"GL_EXT_fog_coord")) return gl_ext_fog_coord; |
| if (!strcmp(ext,"GL_EXT_fragment_lighting")) return gl_ext_fragment_lighting; |
| if (!strcmp(ext,"GL_EXT_framebuffer_blit")) return gl_ext_framebuffer_blit; |
| if (!strcmp(ext,"GL_EXT_framebuffer_multisample")) return gl_ext_framebuffer_multisample; |
| if (!strcmp(ext,"GL_EXT_framebuffer_multisample_blit_scaled")) return gl_ext_framebuffer_multisample_blit_scaled; |
| if (!strcmp(ext,"GL_EXT_framebuffer_object")) return gl_ext_framebuffer_object; |
| if (!strcmp(ext,"GL_EXT_framebuffer_sRGB")) return gl_ext_framebuffer_srgb; |
| if (!strcmp(ext,"GL_EXT_geometry_shader4")) return gl_ext_geometry_shader4; |
| if (!strcmp(ext,"GL_EXT_gpu_program_parameters")) return gl_ext_gpu_program_parameters; |
| if (!strcmp(ext,"GL_EXT_gpu_shader4")) return gl_ext_gpu_shader4; |
| if (!strcmp(ext,"GL_EXT_histogram")) return gl_ext_histogram; |
| if (!strcmp(ext,"GL_EXT_index_func")) return gl_ext_index_func; |
| if (!strcmp(ext,"GL_EXT_index_material")) return gl_ext_index_material; |
| if (!strcmp(ext,"GL_EXT_light_texture")) return gl_ext_light_texture; |
| if (!strcmp(ext,"GL_EXT_map_buffer_range")) return gl_ext_map_buffer_range; |
| if (!strcmp(ext,"GL_EXT_multi_draw_arrays")) return gl_ext_multi_draw_arrays; |
| if (!strcmp(ext,"GL_EXT_multisample")) return gl_ext_multisample; |
| if (!strcmp(ext,"GL_EXT_multisampled_render_to_texture")) return gl_ext_multisampled_render_to_texture; |
| if (!strcmp(ext,"GL_EXT_multiview_draw_buffers")) return gl_ext_multiview_draw_buffers; |
| if (!strcmp(ext,"GL_EXT_occlusion_query_boolean")) return gl_ext_occlusion_query_boolean; |
| if (!strcmp(ext,"GL_EXT_packed_depth_stencil")) return gl_ext_packed_depth_stencil; |
| if (!strcmp(ext,"GL_EXT_packed_float")) return gl_ext_packed_float; |
| if (!strcmp(ext,"GL_EXT_packed_pixels")) return gl_ext_packed_pixels; |
| if (!strcmp(ext,"GL_EXT_paletted_texture")) return gl_ext_paletted_texture; |
| if (!strcmp(ext,"GL_EXT_pixel_buffer_object")) return gl_ext_pixel_buffer_object; |
| if (!strcmp(ext,"GL_EXT_pixel_transform")) return gl_ext_pixel_transform; |
| if (!strcmp(ext,"GL_EXT_point_parameters")) return gl_ext_point_parameters; |
| if (!strcmp(ext,"GL_EXT_polygon_offset")) return gl_ext_polygon_offset; |
| if (!strcmp(ext,"GL_EXT_provoking_vertex")) return gl_ext_provoking_vertex; |
| if (!strcmp(ext,"GL_EXT_read_format_bgra")) return gl_ext_read_format_bgra; |
| if (!strcmp(ext,"GL_EXT_rescale_normal")) return gl_ext_rescale_normal; |
| if (!strcmp(ext,"GL_EXT_robustness")) return gl_ext_robustness; |
| if (!strcmp(ext,"GL_EXT_sRGB")) return gl_ext_srgb; |
| if (!strcmp(ext,"GL_EXT_scene_marker")) return gl_ext_scene_marker; |
| if (!strcmp(ext,"GL_EXT_secondary_color")) return gl_ext_secondary_color; |
| if (!strcmp(ext,"GL_EXT_separate_shader_objects")) return gl_ext_separate_shader_objects; |
| if (!strcmp(ext,"GL_EXT_separate_specular_color")) return gl_ext_separate_specular_color; |
| if (!strcmp(ext,"GL_EXT_shader_framebuffer_fetch")) return gl_ext_shader_framebuffer_fetch; |
| if (!strcmp(ext,"GL_EXT_shader_image_load_store")) return gl_ext_shader_image_load_store; |
| if (!strcmp(ext,"GL_EXT_shadow_samplers")) return gl_ext_shadow_samplers; |
| if (!strcmp(ext,"GL_EXT_shared_texture_palette")) return gl_ext_shared_texture_palette; |
| if (!strcmp(ext,"GL_EXT_stencil_clear_tag")) return gl_ext_stencil_clear_tag; |
| if (!strcmp(ext,"GL_EXT_stencil_two_side")) return gl_ext_stencil_two_side; |
| if (!strcmp(ext,"GL_EXT_stencil_wrap")) return gl_ext_stencil_wrap; |
| if (!strcmp(ext,"GL_EXT_subtexture")) return gl_ext_subtexture; |
| if (!strcmp(ext,"GL_EXT_texture")) return gl_ext_texture; |
| if (!strcmp(ext,"GL_EXT_texture3D")) return gl_ext_texture3d; |
| if (!strcmp(ext,"GL_EXT_texture_array")) return gl_ext_texture_array; |
| if (!strcmp(ext,"GL_EXT_texture_buffer_object")) return gl_ext_texture_buffer_object; |
| if (!strcmp(ext,"GL_EXT_texture_compression_latc")) return gl_ext_texture_compression_latc; |
| if (!strcmp(ext,"GL_EXT_texture_compression_rgtc")) return gl_ext_texture_compression_rgtc; |
| if (!strcmp(ext,"GL_EXT_texture_compression_s3tc")) return gl_ext_texture_compression_s3tc; |
| if (!strcmp(ext,"GL_EXT_texture_cube_map")) return gl_ext_texture_cube_map; |
| if (!strcmp(ext,"GL_EXT_texture_edge_clamp")) return gl_ext_texture_edge_clamp; |
| if (!strcmp(ext,"GL_EXT_texture_env_combine")) return gl_ext_texture_env_combine; |
| if (!strcmp(ext,"GL_EXT_texture_env_dot3")) return gl_ext_texture_env_dot3; |
| if (!strcmp(ext,"GL_EXT_texture_filter_anisotropic")) return gl_ext_texture_filter_anisotropic; |
| if (!strcmp(ext,"GL_EXT_texture_format_BGRA8888")) return gl_ext_texture_format_bgra8888; |
| if (!strcmp(ext,"GL_EXT_texture_integer")) return gl_ext_texture_integer; |
| if (!strcmp(ext,"GL_EXT_texture_lod_bias")) return gl_ext_texture_lod_bias; |
| if (!strcmp(ext,"GL_EXT_texture_mirror_clamp")) return gl_ext_texture_mirror_clamp; |
| if (!strcmp(ext,"GL_EXT_texture_object")) return gl_ext_texture_object; |
| if (!strcmp(ext,"GL_EXT_texture_perturb_normal")) return gl_ext_texture_perturb_normal; |
| if (!strcmp(ext,"GL_EXT_texture_rectangle")) return gl_ext_texture_rectangle; |
| if (!strcmp(ext,"GL_EXT_texture_rg")) return gl_ext_texture_rg; |
| if (!strcmp(ext,"GL_EXT_texture_sRGB")) return gl_ext_texture_srgb; |
| if (!strcmp(ext,"GL_EXT_texture_sRGB_decode")) return gl_ext_texture_srgb_decode; |
| if (!strcmp(ext,"GL_EXT_texture_shared_exponent")) return gl_ext_texture_shared_exponent; |
| if (!strcmp(ext,"GL_EXT_texture_snorm")) return gl_ext_texture_snorm; |
| if (!strcmp(ext,"GL_EXT_texture_storage")) return gl_ext_texture_storage; |
| if (!strcmp(ext,"GL_EXT_texture_swizzle")) return gl_ext_texture_swizzle; |
| if (!strcmp(ext,"GL_EXT_texture_type_2_10_10_10_REV")) return gl_ext_texture_type_2_10_10_10_rev; |
| if (!strcmp(ext,"GL_EXT_timer_query")) return gl_ext_timer_query; |
| if (!strcmp(ext,"GL_EXT_transform_feedback")) return gl_ext_transform_feedback; |
| if (!strcmp(ext,"GL_EXT_unpack_subimage")) return gl_ext_unpack_subimage; |
| if (!strcmp(ext,"GL_EXT_vertex_array")) return gl_ext_vertex_array; |
| if (!strcmp(ext,"GL_EXT_vertex_attrib_64bit")) return gl_ext_vertex_attrib_64bit; |
| if (!strcmp(ext,"GL_EXT_vertex_shader")) return gl_ext_vertex_shader; |
| if (!strcmp(ext,"GL_EXT_vertex_weighting")) return gl_ext_vertex_weighting; |
| if (!strcmp(ext,"GL_EXT_x11_sync_object")) return gl_ext_x11_sync_object; |
| if (!strcmp(ext,"GL_FJ_shader_binary_GCCSO")) return gl_fj_shader_binary_gccso; |
| if (!strcmp(ext,"GL_GREMEDY_frame_terminator")) return gl_gremedy_frame_terminator; |
| if (!strcmp(ext,"GL_GREMEDY_string_marker")) return gl_gremedy_string_marker; |
| if (!strcmp(ext,"GL_HP_image_transform")) return gl_hp_image_transform; |
| if (!strcmp(ext,"GL_HP_occlusion_test")) return gl_hp_occlusion_test; |
| if (!strcmp(ext,"GL_IBM_cull_vertex")) return gl_ibm_cull_vertex; |
| if (!strcmp(ext,"GL_IBM_multimode_draw_arrays")) return gl_ibm_multimode_draw_arrays; |
| if (!strcmp(ext,"GL_IBM_rasterpos_clip")) return gl_ibm_rasterpos_clip; |
| if (!strcmp(ext,"GL_IBM_static_data")) return gl_ibm_static_data; |
| if (!strcmp(ext,"GL_IBM_texture_mirrored_repeat")) return gl_ibm_texture_mirrored_repeat; |
| if (!strcmp(ext,"GL_IBM_vertex_array_lists")) return gl_ibm_vertex_array_lists; |
| if (!strcmp(ext,"GL_IMG_multisampled_render_to_texture")) return gl_img_multisampled_render_to_texture; |
| if (!strcmp(ext,"GL_IMG_program_binary")) return gl_img_program_binary; |
| if (!strcmp(ext,"GL_IMG_read_format")) return gl_img_read_format; |
| if (!strcmp(ext,"GL_IMG_shader_binary")) return gl_img_shader_binary; |
| if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc")) return gl_img_texture_compression_pvrtc; |
| if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc2")) return gl_img_texture_compression_pvrtc2; |
| if (!strcmp(ext,"GL_IMG_texture_env_enhanced_fixed_function")) return gl_img_texture_env_enhanced_fixed_function; |
| if (!strcmp(ext,"GL_IMG_user_clip_plane")) return gl_img_user_clip_plane; |
| if (!strcmp(ext,"GL_INGR_blend_func_separate")) return gl_ingr_blend_func_separate; |
| if (!strcmp(ext,"GL_INGR_color_clamp")) return gl_ingr_color_clamp; |
| if (!strcmp(ext,"GL_INGR_interlace_read")) return gl_ingr_interlace_read; |
| if (!strcmp(ext,"GL_INTEL_map_texture")) return gl_intel_map_texture; |
| if (!strcmp(ext,"GL_INTEL_parallel_arrays")) return gl_intel_parallel_arrays; |
| if (!strcmp(ext,"GL_INTEL_texture_scissor")) return gl_intel_texture_scissor; |
| if (!strcmp(ext,"GL_KHR_debug")) return gl_khr_debug; |
| if (!strcmp(ext,"GL_KHR_texture_compression_astc_ldr")) return gl_khr_texture_compression_astc_ldr; |
| if (!strcmp(ext,"GL_KTX_buffer_region")) return gl_ktx_buffer_region; |
| if (!strcmp(ext,"GL_MESAX_texture_stack")) return gl_mesax_texture_stack; |
| if (!strcmp(ext,"GL_MESA_pack_invert")) return gl_mesa_pack_invert; |
| if (!strcmp(ext,"GL_MESA_resize_buffers")) return gl_mesa_resize_buffers; |
| if (!strcmp(ext,"GL_MESA_window_pos")) return gl_mesa_window_pos; |
| if (!strcmp(ext,"GL_MESA_ycbcr_texture")) return gl_mesa_ycbcr_texture; |
| if (!strcmp(ext,"GL_NVX_conditional_render")) return gl_nvx_conditional_render; |
| if (!strcmp(ext,"GL_NVX_gpu_memory_info")) return gl_nvx_gpu_memory_info; |
| if (!strcmp(ext,"GL_NV_3dvision_settings")) return gl_nv_3dvision_settings; |
| if (!strcmp(ext,"GL_NV_bgr")) return gl_nv_bgr; |
| if (!strcmp(ext,"GL_NV_bindless_texture")) return gl_nv_bindless_texture; |
| if (!strcmp(ext,"GL_NV_blend_equation_advanced")) return gl_nv_blend_equation_advanced; |
| if (!strcmp(ext,"GL_NV_blend_square")) return gl_nv_blend_square; |
| if (!strcmp(ext,"GL_NV_compute_program5")) return gl_nv_compute_program5; |
| if (!strcmp(ext,"GL_NV_conditional_render")) return gl_nv_conditional_render; |
| if (!strcmp(ext,"GL_NV_copy_buffer")) return gl_nv_copy_buffer; |
| if (!strcmp(ext,"GL_NV_copy_depth_to_color")) return gl_nv_copy_depth_to_color; |
| if (!strcmp(ext,"GL_NV_copy_image")) return gl_nv_copy_image; |
| if (!strcmp(ext,"GL_NV_coverage_sample")) return gl_nv_coverage_sample; |
| if (!strcmp(ext,"GL_NV_deep_texture3D")) return gl_nv_deep_texture3d; |
| if (!strcmp(ext,"GL_NV_depth_buffer_float")) return gl_nv_depth_buffer_float; |
| if (!strcmp(ext,"GL_NV_depth_clamp")) return gl_nv_depth_clamp; |
| if (!strcmp(ext,"GL_NV_depth_nonlinear")) return gl_nv_depth_nonlinear; |
| if (!strcmp(ext,"GL_NV_depth_range_unclamped")) return gl_nv_depth_range_unclamped; |
| if (!strcmp(ext,"GL_NV_draw_buffers")) return gl_nv_draw_buffers; |
| if (!strcmp(ext,"GL_NV_draw_texture")) return gl_nv_draw_texture; |
| if (!strcmp(ext,"GL_NV_evaluators")) return gl_nv_evaluators; |
| if (!strcmp(ext,"GL_NV_explicit_multisample")) return gl_nv_explicit_multisample; |
| if (!strcmp(ext,"GL_NV_fbo_color_attachments")) return gl_nv_fbo_color_attachments; |
| if (!strcmp(ext,"GL_NV_fence")) return gl_nv_fence; |
| if (!strcmp(ext,"GL_NV_float_buffer")) return gl_nv_float_buffer; |
| if (!strcmp(ext,"GL_NV_fog_distance")) return gl_nv_fog_distance; |
| if (!strcmp(ext,"GL_NV_fragment_program")) return gl_nv_fragment_program; |
| if (!strcmp(ext,"GL_NV_fragment_program2")) return gl_nv_fragment_program2; |
| if (!strcmp(ext,"GL_NV_framebuffer_blit")) return gl_nv_framebuffer_blit; |
| if (!strcmp(ext,"GL_NV_framebuffer_multisample")) return gl_nv_framebuffer_multisample; |
| if (!strcmp(ext,"GL_NV_framebuffer_multisample_coverage")) return gl_nv_framebuffer_multisample_coverage; |
| if (!strcmp(ext,"GL_NV_geometry_program4")) return gl_nv_geometry_program4; |
| if (!strcmp(ext,"GL_NV_gpu_program4")) return gl_nv_gpu_program4; |
| if (!strcmp(ext,"GL_NV_gpu_program5")) return gl_nv_gpu_program5; |
| if (!strcmp(ext,"GL_NV_gpu_shader5")) return gl_nv_gpu_shader5; |
| if (!strcmp(ext,"GL_NV_half_float")) return gl_nv_half_float; |
| if (!strcmp(ext,"GL_NV_instanced_arrays")) return gl_nv_instanced_arrays; |
| if (!strcmp(ext,"GL_NV_light_max_exponent")) return gl_nv_light_max_exponent; |
| if (!strcmp(ext,"GL_NV_multisample_coverage")) return gl_nv_multisample_coverage; |
| if (!strcmp(ext,"GL_NV_multisample_filter_hint")) return gl_nv_multisample_filter_hint; |
| if (!strcmp(ext,"GL_NV_non_square_matrices")) return gl_nv_non_square_matrices; |
| if (!strcmp(ext,"GL_NV_occlusion_query")) return gl_nv_occlusion_query; |
| if (!strcmp(ext,"GL_NV_pack_subimage")) return gl_nv_pack_subimage; |
| if (!strcmp(ext,"GL_NV_packed_depth_stencil")) return gl_nv_packed_depth_stencil; |
| if (!strcmp(ext,"GL_NV_packed_float_linear")) return gl_nv_packed_float_linear; |
| if (!strcmp(ext,"GL_NV_parameter_buffer_object")) return gl_nv_parameter_buffer_object; |
| if (!strcmp(ext,"GL_NV_path_rendering")) return gl_nv_path_rendering; |
| if (!strcmp(ext,"GL_NV_pixel_buffer_object")) return gl_nv_pixel_buffer_object; |
| if (!strcmp(ext,"GL_NV_pixel_data_range")) return gl_nv_pixel_data_range; |
| if (!strcmp(ext,"GL_NV_platform_binary")) return gl_nv_platform_binary; |
| if (!strcmp(ext,"GL_NV_point_sprite")) return gl_nv_point_sprite; |
| if (!strcmp(ext,"GL_NV_present_video")) return gl_nv_present_video; |
| if (!strcmp(ext,"GL_NV_primitive_restart")) return gl_nv_primitive_restart; |
| if (!strcmp(ext,"GL_NV_read_buffer")) return gl_nv_read_buffer; |
| if (!strcmp(ext,"GL_NV_read_buffer_front")) return gl_nv_read_buffer_front; |
| if (!strcmp(ext,"GL_NV_register_combiners")) return gl_nv_register_combiners; |
| if (!strcmp(ext,"GL_NV_register_combiners2")) return gl_nv_register_combiners2; |
| if (!strcmp(ext,"GL_NV_sRGB_formats")) return gl_nv_srgb_formats; |
| if (!strcmp(ext,"GL_NV_shader_buffer_load")) return gl_nv_shader_buffer_load; |
| if (!strcmp(ext,"GL_NV_shadow_samplers_array")) return gl_nv_shadow_samplers_array; |
| if (!strcmp(ext,"GL_NV_shadow_samplers_cube")) return gl_nv_shadow_samplers_cube; |
| if (!strcmp(ext,"GL_NV_tessellation_program5")) return gl_nv_tessellation_program5; |
| if (!strcmp(ext,"GL_NV_texgen_emboss")) return gl_nv_texgen_emboss; |
| if (!strcmp(ext,"GL_NV_texgen_reflection")) return gl_nv_texgen_reflection; |
| if (!strcmp(ext,"GL_NV_texture_array")) return gl_nv_texture_array; |
| if (!strcmp(ext,"GL_NV_texture_barrier")) return gl_nv_texture_barrier; |
| if (!strcmp(ext,"GL_NV_texture_border_clamp")) return gl_nv_texture_border_clamp; |
| if (!strcmp(ext,"GL_NV_texture_compression_latc")) return gl_nv_texture_compression_latc; |
| if (!strcmp(ext,"GL_NV_texture_compression_s3tc")) return gl_nv_texture_compression_s3tc; |
| if (!strcmp(ext,"GL_NV_texture_env_combine4")) return gl_nv_texture_env_combine4; |
| if (!strcmp(ext,"GL_NV_texture_expand_normal")) return gl_nv_texture_expand_normal; |
| if (!strcmp(ext,"GL_NV_texture_multisample")) return gl_nv_texture_multisample; |
| if (!strcmp(ext,"GL_NV_texture_rectangle")) return gl_nv_texture_rectangle; |
| if (!strcmp(ext,"GL_NV_texture_shader")) return gl_nv_texture_shader; |
| if (!strcmp(ext,"GL_NV_texture_shader2")) return gl_nv_texture_shader2; |
| if (!strcmp(ext,"GL_NV_texture_shader3")) return gl_nv_texture_shader3; |
| if (!strcmp(ext,"GL_NV_transform_feedback")) return gl_nv_transform_feedback; |
| if (!strcmp(ext,"GL_NV_transform_feedback2")) return gl_nv_transform_feedback2; |
| if (!strcmp(ext,"GL_NV_vdpau_interop")) return gl_nv_vdpau_interop; |
| if (!strcmp(ext,"GL_NV_vertex_array_range")) return gl_nv_vertex_array_range; |
| if (!strcmp(ext,"GL_NV_vertex_array_range2")) return gl_nv_vertex_array_range2; |
| if (!strcmp(ext,"GL_NV_vertex_attrib_integer_64bit")) return gl_nv_vertex_attrib_integer_64bit; |
| if (!strcmp(ext,"GL_NV_vertex_buffer_unified_memory")) return gl_nv_vertex_buffer_unified_memory; |
| if (!strcmp(ext,"GL_NV_vertex_program")) return gl_nv_vertex_program; |
| if (!strcmp(ext,"GL_NV_vertex_program2_option")) return gl_nv_vertex_program2_option; |
| if (!strcmp(ext,"GL_NV_vertex_program3")) return gl_nv_vertex_program3; |
| if (!strcmp(ext,"GL_NV_vertex_program4")) return gl_nv_vertex_program4; |
| if (!strcmp(ext,"GL_NV_video_capture")) return gl_nv_video_capture; |
| if (!strcmp(ext,"GL_OES_EGL_image_external")) return gl_oes_egl_image_external; |
| if (!strcmp(ext,"GL_OES_blend_equation_separate")) return gl_oes_blend_equation_separate; |
| if (!strcmp(ext,"GL_OES_blend_func_separate")) return gl_oes_blend_func_separate; |
| if (!strcmp(ext,"GL_OES_blend_subtract")) return gl_oes_blend_subtract; |
| if (!strcmp(ext,"GL_OES_compressed_ETC1_RGB8_texture")) return gl_oes_compressed_etc1_rgb8_texture; |
| if (!strcmp(ext,"GL_OES_compressed_paletted_texture")) return gl_oes_compressed_paletted_texture; |
| if (!strcmp(ext,"GL_OES_depth_texture")) return gl_oes_depth_texture; |
| if (!strcmp(ext,"GL_OES_draw_texture")) return gl_oes_draw_texture; |
| if (!strcmp(ext,"GL_OES_element_index_uint")) return gl_oes_element_index_uint; |
| if (!strcmp(ext,"GL_OES_fbo_render_mipmap")) return gl_oes_fbo_render_mipmap; |
| if (!strcmp(ext,"GL_OES_framebuffer_object")) return gl_oes_framebuffer_object; |
| if (!strcmp(ext,"GL_OES_get_program_binary")) return gl_oes_get_program_binary; |
| if (!strcmp(ext,"GL_OES_mapbuffer")) return gl_oes_mapbuffer; |
| if (!strcmp(ext,"GL_OES_matrix_get")) return gl_oes_matrix_get; |
| if (!strcmp(ext,"GL_OES_matrix_palette")) return gl_oes_matrix_palette; |
| if (!strcmp(ext,"GL_OES_packed_depth_stencil")) return gl_oes_packed_depth_stencil; |
| if (!strcmp(ext,"GL_OES_point_size_array")) return gl_oes_point_size_array; |
| if (!strcmp(ext,"GL_OES_point_sprite")) return gl_oes_point_sprite; |
| if (!strcmp(ext,"GL_OES_read_format")) return gl_oes_read_format; |
| if (!strcmp(ext,"GL_OES_required_internalformat")) return gl_oes_required_internalformat; |
| if (!strcmp(ext,"GL_OES_rgb8_rgba8")) return gl_oes_rgb8_rgba8; |
| if (!strcmp(ext,"GL_OES_single_precision")) return gl_oes_single_precision; |
| if (!strcmp(ext,"GL_OES_standard_derivatives")) return gl_oes_standard_derivatives; |
| if (!strcmp(ext,"GL_OES_stencil1")) return gl_oes_stencil1; |
| if (!strcmp(ext,"GL_OES_stencil4")) return gl_oes_stencil4; |
| if (!strcmp(ext,"GL_OES_stencil8")) return gl_oes_stencil8; |
| if (!strcmp(ext,"GL_OES_surfaceless_context")) return gl_oes_surfaceless_context; |
| if (!strcmp(ext,"GL_OES_texture_3D")) return gl_oes_texture_3d; |
| if (!strcmp(ext,"GL_OES_texture_cube_map")) return gl_oes_texture_cube_map; |
| if (!strcmp(ext,"GL_OES_texture_mirrored_repeat")) return gl_oes_texture_mirrored_repeat; |
| if (!strcmp(ext,"GL_OES_vertex_array_object")) return gl_oes_vertex_array_object; |
| if (!strcmp(ext,"GL_OES_vertex_half_float")) return gl_oes_vertex_half_float; |
| if (!strcmp(ext,"GL_OES_vertex_type_10_10_10_2")) return gl_oes_vertex_type_10_10_10_2; |
| if (!strcmp(ext,"GL_OML_interlace")) return gl_oml_interlace; |
| if (!strcmp(ext,"GL_OML_resample")) return gl_oml_resample; |
| if (!strcmp(ext,"GL_OML_subsample")) return gl_oml_subsample; |
| if (!strcmp(ext,"GL_PGI_misc_hints")) return gl_pgi_misc_hints; |
| if (!strcmp(ext,"GL_PGI_vertex_hints")) return gl_pgi_vertex_hints; |
| if (!strcmp(ext,"GL_QCOM_alpha_test")) return gl_qcom_alpha_test; |
| if (!strcmp(ext,"GL_QCOM_binning_control")) return gl_qcom_binning_control; |
| if (!strcmp(ext,"GL_QCOM_driver_control")) return gl_qcom_driver_control; |
| if (!strcmp(ext,"GL_QCOM_extended_get")) return gl_qcom_extended_get; |
| if (!strcmp(ext,"GL_QCOM_extended_get2")) return gl_qcom_extended_get2; |
| if (!strcmp(ext,"GL_QCOM_perfmon_global_mode")) return gl_qcom_perfmon_global_mode; |
| if (!strcmp(ext,"GL_QCOM_tiled_rendering")) return gl_qcom_tiled_rendering; |
| if (!strcmp(ext,"GL_QCOM_writeonly_rendering")) return gl_qcom_writeonly_rendering; |
| if (!strcmp(ext,"GL_REGAL_ES1_0_compatibility")) return gl_regal_es1_0_compatibility; |
| if (!strcmp(ext,"GL_REGAL_ES1_1_compatibility")) return gl_regal_es1_1_compatibility; |
| if (!strcmp(ext,"GL_REGAL_enable")) return gl_regal_enable; |
| if (!strcmp(ext,"GL_REGAL_error_string")) return gl_regal_error_string; |
| if (!strcmp(ext,"GL_REGAL_extension_query")) return gl_regal_extension_query; |
| if (!strcmp(ext,"GL_REGAL_log")) return gl_regal_log; |
| if (!strcmp(ext,"GL_REND_screen_coordinates")) return gl_rend_screen_coordinates; |
| if (!strcmp(ext,"GL_S3_s3tc")) return gl_s3_s3tc; |
| if (!strcmp(ext,"GL_SGIS_color_range")) return gl_sgis_color_range; |
| if (!strcmp(ext,"GL_SGIS_detail_texture")) return gl_sgis_detail_texture; |
| if (!strcmp(ext,"GL_SGIS_fog_function")) return gl_sgis_fog_function; |
| if (!strcmp(ext,"GL_SGIS_generate_mipmap")) return gl_sgis_generate_mipmap; |
| if (!strcmp(ext,"GL_SGIS_multisample")) return gl_sgis_multisample; |
| if (!strcmp(ext,"GL_SGIS_pixel_texture")) return gl_sgis_pixel_texture; |
| if (!strcmp(ext,"GL_SGIS_point_line_texgen")) return gl_sgis_point_line_texgen; |
| if (!strcmp(ext,"GL_SGIS_point_parameters")) return gl_sgis_point_parameters; |
| if (!strcmp(ext,"GL_SGIS_sharpen_texture")) return gl_sgis_sharpen_texture; |
| if (!strcmp(ext,"GL_SGIS_texture4D")) return gl_sgis_texture4d; |
| if (!strcmp(ext,"GL_SGIS_texture_border_clamp")) return gl_sgis_texture_border_clamp; |
| if (!strcmp(ext,"GL_SGIS_texture_color_mask")) return gl_sgis_texture_color_mask; |
| if (!strcmp(ext,"GL_SGIS_texture_edge_clamp")) return gl_sgis_texture_edge_clamp; |
| if (!strcmp(ext,"GL_SGIS_texture_filter4")) return gl_sgis_texture_filter4; |
| if (!strcmp(ext,"GL_SGIS_texture_lod")) return gl_sgis_texture_lod; |
| if (!strcmp(ext,"GL_SGIX_async")) return gl_sgix_async; |
| if (!strcmp(ext,"GL_SGIX_async_histogram")) return gl_sgix_async_histogram; |
| if (!strcmp(ext,"GL_SGIX_async_pixel")) return gl_sgix_async_pixel; |
| if (!strcmp(ext,"GL_SGIX_blend_alpha_minmax")) return gl_sgix_blend_alpha_minmax; |
| if (!strcmp(ext,"GL_SGIX_convolution_accuracy")) return gl_sgix_convolution_accuracy; |
| if (!strcmp(ext,"GL_SGIX_depth_texture")) return gl_sgix_depth_texture; |
| if (!strcmp(ext,"GL_SGIX_flush_raster")) return gl_sgix_flush_raster; |
| if (!strcmp(ext,"GL_SGIX_fog_offset")) return gl_sgix_fog_offset; |
| if (!strcmp(ext,"GL_SGIX_fog_texture")) return gl_sgix_fog_texture; |
| if (!strcmp(ext,"GL_SGIX_fragment_lighting")) return gl_sgix_fragment_lighting; |
| if (!strcmp(ext,"GL_SGIX_fragment_specular_lighting")) return gl_sgix_fragment_specular_lighting; |
| if (!strcmp(ext,"GL_SGIX_framezoom")) return gl_sgix_framezoom; |
| if (!strcmp(ext,"GL_SGIX_igloo_interface")) return gl_sgix_igloo_interface; |
| if (!strcmp(ext,"GL_SGIX_instruments")) return gl_sgix_instruments; |
| if (!strcmp(ext,"GL_SGIX_interlace")) return gl_sgix_interlace; |
| if (!strcmp(ext,"GL_SGIX_list_priority")) return gl_sgix_list_priority; |
| if (!strcmp(ext,"GL_SGIX_pixel_texture")) return gl_sgix_pixel_texture; |
| if (!strcmp(ext,"GL_SGIX_polynomial_ffd")) return gl_sgix_polynomial_ffd; |
| if (!strcmp(ext,"GL_SGIX_reference_plane")) return gl_sgix_reference_plane; |
| if (!strcmp(ext,"GL_SGIX_resample")) return gl_sgix_resample; |
| if (!strcmp(ext,"GL_SGIX_shadow")) return gl_sgix_shadow; |
| if (!strcmp(ext,"GL_SGIX_shadow_ambient")) return gl_sgix_shadow_ambient; |
| if (!strcmp(ext,"GL_SGIX_sprite")) return gl_sgix_sprite; |
| if (!strcmp(ext,"GL_SGIX_tag_sample_buffer")) return gl_sgix_tag_sample_buffer; |
| if (!strcmp(ext,"GL_SGIX_texture_coordinate_clamp")) return gl_sgix_texture_coordinate_clamp; |
| if (!strcmp(ext,"GL_SGIX_texture_multi_buffer")) return gl_sgix_texture_multi_buffer; |
| if (!strcmp(ext,"GL_SGIX_texture_range")) return gl_sgix_texture_range; |
| if (!strcmp(ext,"GL_SGIX_texture_scale_bias")) return gl_sgix_texture_scale_bias; |
| if (!strcmp(ext,"GL_SGIX_vertex_preclip_hint")) return gl_sgix_vertex_preclip_hint; |
| if (!strcmp(ext,"GL_SGIX_ycrcb")) return gl_sgix_ycrcb; |
| if (!strcmp(ext,"GL_SGI_color_matrix")) return gl_sgi_color_matrix; |
| if (!strcmp(ext,"GL_SGI_color_table")) return gl_sgi_color_table; |
| if (!strcmp(ext,"GL_SGI_texture_color_table")) return gl_sgi_texture_color_table; |
| if (!strcmp(ext,"GL_SUNX_constant_data")) return gl_sunx_constant_data; |
| if (!strcmp(ext,"GL_SUN_convolution_border_modes")) return gl_sun_convolution_border_modes; |
| if (!strcmp(ext,"GL_SUN_global_alpha")) return gl_sun_global_alpha; |
| if (!strcmp(ext,"GL_SUN_mesh_array")) return gl_sun_mesh_array; |
| if (!strcmp(ext,"GL_SUN_read_video_pixels")) return gl_sun_read_video_pixels; |
| if (!strcmp(ext,"GL_SUN_slice_accum")) return gl_sun_slice_accum; |
| if (!strcmp(ext,"GL_SUN_triangle_list")) return gl_sun_triangle_list; |
| if (!strcmp(ext,"GL_SUN_vertex")) return gl_sun_vertex; |
| if (!strcmp(ext,"GL_VIV_shader_binary")) return gl_viv_shader_binary; |
| if (!strcmp(ext,"GL_WIN_phong_shading")) return gl_win_phong_shading; |
| if (!strcmp(ext,"GL_WIN_specular_fog")) return gl_win_specular_fog; |
| if (!strcmp(ext,"GL_WIN_swap_hint")) return gl_win_swap_hint; |
| |
| #if REGAL_SYS_WGL |
| if (!strcmp(ext,"WGL_3DL_stereo_control")) return wgl_3dl_stereo_control; |
| if (!strcmp(ext,"WGL_AMD_gpu_association")) return wgl_amd_gpu_association; |
| if (!strcmp(ext,"WGL_ARB_buffer_region")) return wgl_arb_buffer_region; |
| if (!strcmp(ext,"WGL_ARB_create_context")) return wgl_arb_create_context; |
| if (!strcmp(ext,"WGL_ARB_create_context_profile")) return wgl_arb_create_context_profile; |
| if (!strcmp(ext,"WGL_ARB_create_context_robustness")) return wgl_arb_create_context_robustness; |
| if (!strcmp(ext,"WGL_ARB_extensions_string")) return wgl_arb_extensions_string; |
| if (!strcmp(ext,"WGL_ARB_framebuffer_sRGB")) return wgl_arb_framebuffer_srgb; |
| if (!strcmp(ext,"WGL_ARB_make_current_read")) return wgl_arb_make_current_read; |
| if (!strcmp(ext,"WGL_ARB_multisample")) return wgl_arb_multisample; |
| if (!strcmp(ext,"WGL_ARB_pbuffer")) return wgl_arb_pbuffer; |
| if (!strcmp(ext,"WGL_ARB_pixel_format")) return wgl_arb_pixel_format; |
| if (!strcmp(ext,"WGL_ARB_pixel_format_float")) return wgl_arb_pixel_format_float; |
| if (!strcmp(ext,"WGL_ARB_render_texture")) return wgl_arb_render_texture; |
| if (!strcmp(ext,"WGL_ARB_robustness_share_group_isolation")) return wgl_arb_robustness_share_group_isolation; |
| if (!strcmp(ext,"WGL_ATI_pixel_format_float")) return wgl_ati_pixel_format_float; |
| if (!strcmp(ext,"WGL_ATI_render_texture_rectangle")) return wgl_ati_render_texture_rectangle; |
| if (!strcmp(ext,"WGL_EXT_create_context_es2_profile")) return wgl_ext_create_context_es2_profile; |
| if (!strcmp(ext,"WGL_EXT_create_context_es_profile")) return wgl_ext_create_context_es_profile; |
| if (!strcmp(ext,"WGL_EXT_depth_float")) return wgl_ext_depth_float; |
| if (!strcmp(ext,"WGL_EXT_display_color_table")) return wgl_ext_display_color_table; |
| if (!strcmp(ext,"WGL_EXT_extensions_string")) return wgl_ext_extensions_string; |
| if (!strcmp(ext,"WGL_EXT_framebuffer_sRGB")) return wgl_ext_framebuffer_srgb; |
| if (!strcmp(ext,"WGL_EXT_make_current_read")) return wgl_ext_make_current_read; |
| if (!strcmp(ext,"WGL_EXT_multisample")) return wgl_ext_multisample; |
| if (!strcmp(ext,"WGL_EXT_pbuffer")) return wgl_ext_pbuffer; |
| if (!strcmp(ext,"WGL_EXT_pixel_format")) return wgl_ext_pixel_format; |
| if (!strcmp(ext,"WGL_EXT_pixel_format_packed_float")) return wgl_ext_pixel_format_packed_float; |
| if (!strcmp(ext,"WGL_EXT_swap_control")) return wgl_ext_swap_control; |
| if (!strcmp(ext,"WGL_GDI")) return wgl_gdi; |
| if (!strcmp(ext,"WGL_I3D_digital_video_control")) return wgl_i3d_digital_video_control; |
| if (!strcmp(ext,"WGL_I3D_gamma")) return wgl_i3d_gamma; |
| if (!strcmp(ext,"WGL_I3D_genlock")) return wgl_i3d_genlock; |
| if (!strcmp(ext,"WGL_I3D_image_buffer")) return wgl_i3d_image_buffer; |
| if (!strcmp(ext,"WGL_I3D_swap_frame_lock")) return wgl_i3d_swap_frame_lock; |
| if (!strcmp(ext,"WGL_I3D_swap_frame_usage")) return wgl_i3d_swap_frame_usage; |
| if (!strcmp(ext,"WGL_NV_DX_interop")) return wgl_nv_dx_interop; |
| if (!strcmp(ext,"WGL_NV_copy_image")) return wgl_nv_copy_image; |
| if (!strcmp(ext,"WGL_NV_float_buffer")) return wgl_nv_float_buffer; |
| if (!strcmp(ext,"WGL_NV_gpu_affinity")) return wgl_nv_gpu_affinity; |
| if (!strcmp(ext,"WGL_NV_multisample_coverage")) return wgl_nv_multisample_coverage; |
| if (!strcmp(ext,"WGL_NV_present_video")) return wgl_nv_present_video; |
| if (!strcmp(ext,"WGL_NV_render_depth_texture")) return wgl_nv_render_depth_texture; |
| if (!strcmp(ext,"WGL_NV_render_texture_rectangle")) return wgl_nv_render_texture_rectangle; |
| if (!strcmp(ext,"WGL_NV_swap_group")) return wgl_nv_swap_group; |
| if (!strcmp(ext,"WGL_NV_vertex_array_range")) return wgl_nv_vertex_array_range; |
| if (!strcmp(ext,"WGL_NV_video_capture")) return wgl_nv_video_capture; |
| if (!strcmp(ext,"WGL_NV_video_output")) return wgl_nv_video_output; |
| if (!strcmp(ext,"WGL_OML_sync_control")) return wgl_oml_sync_control; |
| #endif /* REGAL_SYS_WGL */ |
| |
| #if REGAL_SYS_GLX |
| if (!strcmp(ext,"GLX_3DFX_multisample")) return glx_3dfx_multisample; |
| if (!strcmp(ext,"GLX_AMD_gpu_association")) return glx_amd_gpu_association; |
| if (!strcmp(ext,"GLX_ARB_create_context")) return glx_arb_create_context; |
| if (!strcmp(ext,"GLX_ARB_create_context_profile")) return glx_arb_create_context_profile; |
| if (!strcmp(ext,"GLX_ARB_create_context_robustness")) return glx_arb_create_context_robustness; |
| if (!strcmp(ext,"GLX_ARB_fbconfig_float")) return glx_arb_fbconfig_float; |
| if (!strcmp(ext,"GLX_ARB_framebuffer_sRGB")) return glx_arb_framebuffer_srgb; |
| if (!strcmp(ext,"GLX_ARB_get_proc_address")) return glx_arb_get_proc_address; |
| if (!strcmp(ext,"GLX_ARB_multisample")) return glx_arb_multisample; |
| if (!strcmp(ext,"GLX_ARB_robustness_share_group_isolation")) return glx_arb_robustness_share_group_isolation; |
| if (!strcmp(ext,"GLX_ARB_vertex_buffer_object")) return glx_arb_vertex_buffer_object; |
| if (!strcmp(ext,"GLX_ATI_pixel_format_float")) return glx_ati_pixel_format_float; |
| if (!strcmp(ext,"GLX_ATI_render_texture")) return glx_ati_render_texture; |
| if (!strcmp(ext,"GLX_EXT_create_context_es2_profile")) return glx_ext_create_context_es2_profile; |
| if (!strcmp(ext,"GLX_EXT_create_context_es_profile")) return glx_ext_create_context_es_profile; |
| if (!strcmp(ext,"GLX_EXT_fbconfig_packed_float")) return glx_ext_fbconfig_packed_float; |
| if (!strcmp(ext,"GLX_EXT_framebuffer_sRGB")) return glx_ext_framebuffer_srgb; |
| if (!strcmp(ext,"GLX_EXT_import_context")) return glx_ext_import_context; |
| if (!strcmp(ext,"GLX_EXT_swap_control")) return glx_ext_swap_control; |
| if (!strcmp(ext,"GLX_EXT_swap_control_tear")) return glx_ext_swap_control_tear; |
| if (!strcmp(ext,"GLX_EXT_texture_from_pixmap")) return glx_ext_texture_from_pixmap; |
| if (!strcmp(ext,"GLX_EXT_visual_info")) return glx_ext_visual_info; |
| if (!strcmp(ext,"GLX_EXT_visual_rating")) return glx_ext_visual_rating; |
| if (!strcmp(ext,"GLX_INTEL_swap_event")) return glx_intel_swap_event; |
| if (!strcmp(ext,"GLX_MESA_agp_offset")) return glx_mesa_agp_offset; |
| if (!strcmp(ext,"GLX_MESA_copy_sub_buffer")) return glx_mesa_copy_sub_buffer; |
| if (!strcmp(ext,"GLX_MESA_pixmap_colormap")) return glx_mesa_pixmap_colormap; |
| if (!strcmp(ext,"GLX_MESA_release_buffers")) return glx_mesa_release_buffers; |
| if (!strcmp(ext,"GLX_MESA_set_3dfx_mode")) return glx_mesa_set_3dfx_mode; |
| if (!strcmp(ext,"GLX_MESA_swap_control")) return glx_mesa_swap_control; |
| if (!strcmp(ext,"GLX_NV_copy_image")) return glx_nv_copy_image; |
| if (!strcmp(ext,"GLX_NV_float_buffer")) return glx_nv_float_buffer; |
| if (!strcmp(ext,"GLX_NV_multisample_coverage")) return glx_nv_multisample_coverage; |
| if (!strcmp(ext,"GLX_NV_present_video")) return glx_nv_present_video; |
| if (!strcmp(ext,"GLX_NV_swap_group")) return glx_nv_swap_group; |
| if (!strcmp(ext,"GLX_NV_vertex_array_range")) return glx_nv_vertex_array_range; |
| if (!strcmp(ext,"GLX_NV_video_capture")) return glx_nv_video_capture; |
| if (!strcmp(ext,"GLX_NV_video_output")) return glx_nv_video_output; |
| if (!strcmp(ext,"GLX_OML_swap_method")) return glx_oml_swap_method; |
| if (!strcmp(ext,"GLX_OML_sync_control")) return glx_oml_sync_control; |
| if (!strcmp(ext,"GLX_SGIS_blended_overlay")) return glx_sgis_blended_overlay; |
| if (!strcmp(ext,"GLX_SGIS_color_range")) return glx_sgis_color_range; |
| if (!strcmp(ext,"GLX_SGIS_multisample")) return glx_sgis_multisample; |
| if (!strcmp(ext,"GLX_SGIS_shared_multisample")) return glx_sgis_shared_multisample; |
| if (!strcmp(ext,"GLX_SGIX_fbconfig")) return glx_sgix_fbconfig; |
| if (!strcmp(ext,"GLX_SGIX_hyperpipe")) return glx_sgix_hyperpipe; |
| if (!strcmp(ext,"GLX_SGIX_pbuffer")) return glx_sgix_pbuffer; |
| if (!strcmp(ext,"GLX_SGIX_swap_barrier")) return glx_sgix_swap_barrier; |
| if (!strcmp(ext,"GLX_SGIX_swap_group")) return glx_sgix_swap_group; |
| if (!strcmp(ext,"GLX_SGIX_video_resize")) return glx_sgix_video_resize; |
| if (!strcmp(ext,"GLX_SGIX_visual_select_group")) return glx_sgix_visual_select_group; |
| if (!strcmp(ext,"GLX_SGI_cushion")) return glx_sgi_cushion; |
| if (!strcmp(ext,"GLX_SGI_make_current_read")) return glx_sgi_make_current_read; |
| if (!strcmp(ext,"GLX_SGI_swap_control")) return glx_sgi_swap_control; |
| if (!strcmp(ext,"GLX_SGI_video_sync")) return glx_sgi_video_sync; |
| if (!strcmp(ext,"GLX_SUN_get_transparent_index")) return glx_sun_get_transparent_index; |
| if (!strcmp(ext,"GLX_SUN_video_resize")) return glx_sun_video_resize; |
| #endif /* REGAL_SYS_GLX */ |
| |
| #if REGAL_SYS_EGL |
| if (!strcmp(ext,"EGL_ANGLE_query_surface_pointer")) return egl_angle_query_surface_pointer; |
| if (!strcmp(ext,"EGL_ANGLE_surface_d3d_texture_2d_share_handle")) return egl_angle_surface_d3d_texture_2d_share_handle; |
| if (!strcmp(ext,"EGL_EXT_create_context_robustness")) return egl_ext_create_context_robustness; |
| if (!strcmp(ext,"EGL_EXT_multiview_window")) return egl_ext_multiview_window; |
| if (!strcmp(ext,"EGL_HI_colorformats")) return egl_hi_colorformats; |
| if (!strcmp(ext,"EGL_IMG_context_priority")) return egl_img_context_priority; |
| if (!strcmp(ext,"EGL_KHR_config_attribs")) return egl_khr_config_attribs; |
| if (!strcmp(ext,"EGL_KHR_create_context")) return egl_khr_create_context; |
| if (!strcmp(ext,"EGL_KHR_fence_sync")) return egl_khr_fence_sync; |
| if (!strcmp(ext,"EGL_KHR_gl_texture_cubemap_image")) return egl_khr_gl_texture_cubemap_image; |
| if (!strcmp(ext,"EGL_KHR_image_base")) return egl_khr_image_base; |
| if (!strcmp(ext,"EGL_KHR_image_pixmap")) return egl_khr_image_pixmap; |
| if (!strcmp(ext,"EGL_KHR_lock_surface")) return egl_khr_lock_surface; |
| if (!strcmp(ext,"EGL_KHR_lock_surface2")) return egl_khr_lock_surface2; |
| if (!strcmp(ext,"EGL_KHR_reusable_sync")) return egl_khr_reusable_sync; |
| if (!strcmp(ext,"EGL_KHR_stream")) return egl_khr_stream; |
| if (!strcmp(ext,"EGL_KHR_stream_consumer_gltexture")) return egl_khr_stream_consumer_gltexture; |
| if (!strcmp(ext,"EGL_KHR_stream_cross_process_fd")) return egl_khr_stream_cross_process_fd; |
| if (!strcmp(ext,"EGL_KHR_stream_fifo")) return egl_khr_stream_fifo; |
| if (!strcmp(ext,"EGL_KHR_stream_producer_eglsurface")) return egl_khr_stream_producer_eglsurface; |
| if (!strcmp(ext,"EGL_KHR_vg_parent_image")) return egl_khr_vg_parent_image; |
| if (!strcmp(ext,"EGL_KHR_wait_sync")) return egl_khr_wait_sync; |
| if (!strcmp(ext,"EGL_MESA_drm_image")) return egl_mesa_drm_image; |
| if (!strcmp(ext,"EGL_NV_coverage_sample")) return egl_nv_coverage_sample; |
| if (!strcmp(ext,"EGL_NV_coverage_sample_resolve")) return egl_nv_coverage_sample_resolve; |
| if (!strcmp(ext,"EGL_NV_post_sub_buffer")) return egl_nv_post_sub_buffer; |
| if (!strcmp(ext,"EGL_NV_sync")) return egl_nv_sync; |
| if (!strcmp(ext,"EGL_NV_system_time")) return egl_nv_system_time; |
| #endif /* REGAL_SYS_EGL */ |
| |
| return false; |
| } |
| |
| REGAL_NAMESPACE_END |