diff --git a/gradle.properties b/gradle.properties index f0013a91..23a81569 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,5 +18,5 @@ jdkEnablePreview=true jdkEarlyAccessDoc=jdk22 kotlinTargetJdkVersion=21 -overrunMarshalVersion=0.1.0-alpha.10-jdk22 +overrunMarshalVersion=0.1.0-alpha.12-jdk22 overrunPlatformVersion=1.0.0 diff --git a/modules/overrungl.opengl/src/generator/kotlin/overrungl/opengl/OpenGLGenerator.kt b/modules/overrungl.opengl/src/generator/kotlin/overrungl/opengl/OpenGLGenerator.kt index 80c87610..aee94b50 100644 --- a/modules/overrungl.opengl/src/generator/kotlin/overrungl/opengl/OpenGLGenerator.kt +++ b/modules/overrungl.opengl/src/generator/kotlin/overrungl/opengl/OpenGLGenerator.kt @@ -3173,7 +3173,6 @@ fun glExtCaps() { |import overrungl.opengl.ext.sun.*; |import overrun.marshal.Unmarshal; | - |import java.lang.foreign.MemorySegment; |import java.lang.foreign.SegmentAllocator; |import java.lang.invoke.MethodHandle; |import java.util.ArrayList; @@ -3220,14 +3219,11 @@ fun glExtCaps() { appendLine(" }\n") appendLine( """ - | boolean findExtensionsGL(SegmentAllocator allocator, GLLoadFunc load, int version) { - | var pExts = allocator.allocate(ADDRESS); + | boolean findExtensionsGL(GLLoadFunc load, int version) { | var list = new ArrayList(700); - | if (!getExtensions(allocator, version, pExts, list, load)) return false; + | if (!getExtensions(load, version, list)) return false; | - | String exts = Unmarshal.unmarshalAsString(pExts.get(Unmarshal.STR_LAYOUT, 0)); - | - | ${caps.joinToString(separator = "\n| ") { "this.$it = hasExtension(version, exts, list, \"$it\");" }} + | ${caps.joinToString(separator = "\n| ") { "this.$it = list.contains(\"$it\");" }} | | return true; | } diff --git a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GL14C.java b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GL14C.java index 84fec976..057e63fb 100644 --- a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GL14C.java +++ b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GL14C.java @@ -18,6 +18,7 @@ import overrun.marshal.Marshal; import overrun.marshal.gen.Entrypoint; +import overrun.marshal.gen.Skip; import overrungl.opengl.ext.arb.GLARBPointParameters; import overrungl.opengl.ext.arb.GLARBShadow; import overrungl.opengl.ext.arb.GLARBTextureMirroredRepeat; @@ -100,7 +101,7 @@ default void multiDrawElements(int mode, MemorySegment count, int type, MemorySe throw new ContextException(); } - @Entrypoint("glMultiDrawElements") + @Skip default void multiDrawElements(SegmentAllocator allocator, int mode, int[] count, int type, byte[][] indices, int drawCount) { var seg = allocator.allocate(ADDRESS, indices.length); for (int i = 0; i < indices.length; i++) { @@ -109,7 +110,7 @@ default void multiDrawElements(SegmentAllocator allocator, int mode, int[] count multiDrawElements(mode, Marshal.marshal(allocator, count), type, seg, drawCount); } - @Entrypoint("glMultiDrawElements") + @Skip default void multiDrawElements(SegmentAllocator allocator, int mode, int[] count, int type, short[][] indices, int drawCount) { var seg = allocator.allocate(ADDRESS, indices.length); for (int i = 0; i < indices.length; i++) { @@ -118,7 +119,7 @@ default void multiDrawElements(SegmentAllocator allocator, int mode, int[] count multiDrawElements(mode, Marshal.marshal(allocator, count), type, seg, drawCount); } - @Entrypoint("glMultiDrawElements") + @Skip default void multiDrawElements(SegmentAllocator allocator, int mode, int[] count, int type, int[][] indices, int drawCount) { var seg = allocator.allocate(ADDRESS, indices.length); for (int i = 0; i < indices.length; i++) { diff --git a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLCapabilities.java b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLCapabilities.java index 696b7965..f0c77d3d 100644 --- a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLCapabilities.java +++ b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLCapabilities.java @@ -16,7 +16,6 @@ package overrungl.opengl; -import overrun.marshal.MemoryStack; import overrun.marshal.Unmarshal; import java.lang.foreign.FunctionDescriptor; @@ -68,10 +67,7 @@ public int load(GLLoadFunc load) { int version = findCoreGL(glGetString); ext = new GLExtCaps(this); - - try (var stack = MemoryStack.stackPush()) { - if (!ext.findExtensionsGL(stack, load, version)) return 0; - } + if (!ext.findExtensionsGL(load, version)) return 0; ext.load(load); rawGLVersion = version; diff --git a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtCaps.java b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtCaps.java index 704d8434..7581db71 100644 --- a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtCaps.java +++ b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtCaps.java @@ -33,7 +33,6 @@ import overrungl.opengl.ext.sun.*; import overrun.marshal.Unmarshal; -import java.lang.foreign.MemorySegment; import java.lang.foreign.SegmentAllocator; import java.lang.invoke.MethodHandle; import java.util.ArrayList; @@ -441,632 +440,629 @@ void load(GLLoadFunc load) { GLSUNVertex.load(this, load); } - boolean findExtensionsGL(SegmentAllocator allocator, GLLoadFunc load, int version) { - var pExts = allocator.allocate(ADDRESS); + boolean findExtensionsGL(GLLoadFunc load, int version) { var list = new ArrayList(700); - if (!getExtensions(allocator, version, pExts, list, load)) return false; + if (!getExtensions(load, version, list)) return false; - String exts = Unmarshal.unmarshalAsString(pExts.get(Unmarshal.STR_LAYOUT, 0)); - - this.GL_ARB_ES2_compatibility = hasExtension(version, exts, list, "GL_ARB_ES2_compatibility"); - this.GL_ARB_ES3_1_compatibility = hasExtension(version, exts, list, "GL_ARB_ES3_1_compatibility"); - this.GL_ARB_ES3_2_compatibility = hasExtension(version, exts, list, "GL_ARB_ES3_2_compatibility"); - this.GL_ARB_ES3_compatibility = hasExtension(version, exts, list, "GL_ARB_ES3_compatibility"); - this.GL_ARB_arrays_of_arrays = hasExtension(version, exts, list, "GL_ARB_arrays_of_arrays"); - this.GL_ARB_base_instance = hasExtension(version, exts, list, "GL_ARB_base_instance"); - this.GL_ARB_bindless_texture = hasExtension(version, exts, list, "GL_ARB_bindless_texture"); - this.GL_ARB_blend_func_extended = hasExtension(version, exts, list, "GL_ARB_blend_func_extended"); - this.GL_ARB_buffer_storage = hasExtension(version, exts, list, "GL_ARB_buffer_storage"); - this.GL_ARB_cl_event = hasExtension(version, exts, list, "GL_ARB_cl_event"); - this.GL_ARB_clear_buffer_object = hasExtension(version, exts, list, "GL_ARB_clear_buffer_object"); - this.GL_ARB_clear_texture = hasExtension(version, exts, list, "GL_ARB_clear_texture"); - this.GL_ARB_clip_control = hasExtension(version, exts, list, "GL_ARB_clip_control"); - this.GL_ARB_color_buffer_float = hasExtension(version, exts, list, "GL_ARB_color_buffer_float"); - this.GL_ARB_compatibility = hasExtension(version, exts, list, "GL_ARB_compatibility"); - this.GL_ARB_compressed_texture_pixel_storage = hasExtension(version, exts, list, "GL_ARB_compressed_texture_pixel_storage"); - this.GL_ARB_compute_shader = hasExtension(version, exts, list, "GL_ARB_compute_shader"); - this.GL_ARB_compute_variable_group_size = hasExtension(version, exts, list, "GL_ARB_compute_variable_group_size"); - this.GL_ARB_conditional_render_inverted = hasExtension(version, exts, list, "GL_ARB_conditional_render_inverted"); - this.GL_ARB_conservative_depth = hasExtension(version, exts, list, "GL_ARB_conservative_depth"); - this.GL_ARB_copy_buffer = hasExtension(version, exts, list, "GL_ARB_copy_buffer"); - this.GL_ARB_copy_image = hasExtension(version, exts, list, "GL_ARB_copy_image"); - this.GL_ARB_cull_distance = hasExtension(version, exts, list, "GL_ARB_cull_distance"); - this.GL_ARB_debug_output = hasExtension(version, exts, list, "GL_ARB_debug_output"); - this.GL_ARB_depth_buffer_float = hasExtension(version, exts, list, "GL_ARB_depth_buffer_float"); - this.GL_ARB_depth_clamp = hasExtension(version, exts, list, "GL_ARB_depth_clamp"); - this.GL_ARB_depth_texture = hasExtension(version, exts, list, "GL_ARB_depth_texture"); - this.GL_ARB_derivative_control = hasExtension(version, exts, list, "GL_ARB_derivative_control"); - this.GL_ARB_direct_state_access = hasExtension(version, exts, list, "GL_ARB_direct_state_access"); - this.GL_ARB_draw_buffers = hasExtension(version, exts, list, "GL_ARB_draw_buffers"); - this.GL_ARB_draw_buffers_blend = hasExtension(version, exts, list, "GL_ARB_draw_buffers_blend"); - this.GL_ARB_draw_elements_base_vertex = hasExtension(version, exts, list, "GL_ARB_draw_elements_base_vertex"); - this.GL_ARB_draw_indirect = hasExtension(version, exts, list, "GL_ARB_draw_indirect"); - this.GL_ARB_draw_instanced = hasExtension(version, exts, list, "GL_ARB_draw_instanced"); - this.GL_ARB_enhanced_layouts = hasExtension(version, exts, list, "GL_ARB_enhanced_layouts"); - this.GL_ARB_explicit_attrib_location = hasExtension(version, exts, list, "GL_ARB_explicit_attrib_location"); - this.GL_ARB_explicit_uniform_location = hasExtension(version, exts, list, "GL_ARB_explicit_uniform_location"); - this.GL_ARB_fragment_coord_conventions = hasExtension(version, exts, list, "GL_ARB_fragment_coord_conventions"); - this.GL_ARB_fragment_layer_viewport = hasExtension(version, exts, list, "GL_ARB_fragment_layer_viewport"); - this.GL_ARB_fragment_program = hasExtension(version, exts, list, "GL_ARB_fragment_program"); - this.GL_ARB_fragment_program_shadow = hasExtension(version, exts, list, "GL_ARB_fragment_program_shadow"); - this.GL_ARB_fragment_shader = hasExtension(version, exts, list, "GL_ARB_fragment_shader"); - this.GL_ARB_fragment_shader_interlock = hasExtension(version, exts, list, "GL_ARB_fragment_shader_interlock"); - this.GL_ARB_framebuffer_no_attachments = hasExtension(version, exts, list, "GL_ARB_framebuffer_no_attachments"); - this.GL_ARB_framebuffer_object = hasExtension(version, exts, list, "GL_ARB_framebuffer_object"); - this.GL_ARB_framebuffer_sRGB = hasExtension(version, exts, list, "GL_ARB_framebuffer_sRGB"); - this.GL_ARB_geometry_shader4 = hasExtension(version, exts, list, "GL_ARB_geometry_shader4"); - this.GL_ARB_get_program_binary = hasExtension(version, exts, list, "GL_ARB_get_program_binary"); - this.GL_ARB_get_texture_sub_image = hasExtension(version, exts, list, "GL_ARB_get_texture_sub_image"); - this.GL_ARB_gl_spirv = hasExtension(version, exts, list, "GL_ARB_gl_spirv"); - this.GL_ARB_gpu_shader5 = hasExtension(version, exts, list, "GL_ARB_gpu_shader5"); - this.GL_ARB_gpu_shader_fp64 = hasExtension(version, exts, list, "GL_ARB_gpu_shader_fp64"); - this.GL_ARB_gpu_shader_int64 = hasExtension(version, exts, list, "GL_ARB_gpu_shader_int64"); - this.GL_ARB_half_float_pixel = hasExtension(version, exts, list, "GL_ARB_half_float_pixel"); - this.GL_ARB_half_float_vertex = hasExtension(version, exts, list, "GL_ARB_half_float_vertex"); - this.GL_ARB_imaging = hasExtension(version, exts, list, "GL_ARB_imaging"); - this.GL_ARB_indirect_parameters = hasExtension(version, exts, list, "GL_ARB_indirect_parameters"); - this.GL_ARB_instanced_arrays = hasExtension(version, exts, list, "GL_ARB_instanced_arrays"); - this.GL_ARB_internalformat_query = hasExtension(version, exts, list, "GL_ARB_internalformat_query"); - this.GL_ARB_internalformat_query2 = hasExtension(version, exts, list, "GL_ARB_internalformat_query2"); - this.GL_ARB_invalidate_subdata = hasExtension(version, exts, list, "GL_ARB_invalidate_subdata"); - this.GL_ARB_map_buffer_alignment = hasExtension(version, exts, list, "GL_ARB_map_buffer_alignment"); - this.GL_ARB_map_buffer_range = hasExtension(version, exts, list, "GL_ARB_map_buffer_range"); - this.GL_ARB_matrix_palette = hasExtension(version, exts, list, "GL_ARB_matrix_palette"); - this.GL_ARB_multi_bind = hasExtension(version, exts, list, "GL_ARB_multi_bind"); - this.GL_ARB_multi_draw_indirect = hasExtension(version, exts, list, "GL_ARB_multi_draw_indirect"); - this.GL_ARB_multisample = hasExtension(version, exts, list, "GL_ARB_multisample"); - this.GL_ARB_multitexture = hasExtension(version, exts, list, "GL_ARB_multitexture"); - this.GL_ARB_occlusion_query = hasExtension(version, exts, list, "GL_ARB_occlusion_query"); - this.GL_ARB_occlusion_query2 = hasExtension(version, exts, list, "GL_ARB_occlusion_query2"); - this.GL_ARB_parallel_shader_compile = hasExtension(version, exts, list, "GL_ARB_parallel_shader_compile"); - this.GL_ARB_pipeline_statistics_query = hasExtension(version, exts, list, "GL_ARB_pipeline_statistics_query"); - this.GL_ARB_pixel_buffer_object = hasExtension(version, exts, list, "GL_ARB_pixel_buffer_object"); - this.GL_ARB_point_parameters = hasExtension(version, exts, list, "GL_ARB_point_parameters"); - this.GL_ARB_point_sprite = hasExtension(version, exts, list, "GL_ARB_point_sprite"); - this.GL_ARB_polygon_offset_clamp = hasExtension(version, exts, list, "GL_ARB_polygon_offset_clamp"); - this.GL_ARB_post_depth_coverage = hasExtension(version, exts, list, "GL_ARB_post_depth_coverage"); - this.GL_ARB_program_interface_query = hasExtension(version, exts, list, "GL_ARB_program_interface_query"); - this.GL_ARB_provoking_vertex = hasExtension(version, exts, list, "GL_ARB_provoking_vertex"); - this.GL_ARB_query_buffer_object = hasExtension(version, exts, list, "GL_ARB_query_buffer_object"); - this.GL_ARB_robust_buffer_access_behavior = hasExtension(version, exts, list, "GL_ARB_robust_buffer_access_behavior"); - this.GL_ARB_robustness = hasExtension(version, exts, list, "GL_ARB_robustness"); - this.GL_ARB_robustness_isolation = hasExtension(version, exts, list, "GL_ARB_robustness_isolation"); - this.GL_ARB_sample_locations = hasExtension(version, exts, list, "GL_ARB_sample_locations"); - this.GL_ARB_sample_shading = hasExtension(version, exts, list, "GL_ARB_sample_shading"); - this.GL_ARB_sampler_objects = hasExtension(version, exts, list, "GL_ARB_sampler_objects"); - this.GL_ARB_seamless_cube_map = hasExtension(version, exts, list, "GL_ARB_seamless_cube_map"); - this.GL_ARB_seamless_cubemap_per_texture = hasExtension(version, exts, list, "GL_ARB_seamless_cubemap_per_texture"); - this.GL_ARB_separate_shader_objects = hasExtension(version, exts, list, "GL_ARB_separate_shader_objects"); - this.GL_ARB_shader_atomic_counter_ops = hasExtension(version, exts, list, "GL_ARB_shader_atomic_counter_ops"); - this.GL_ARB_shader_atomic_counters = hasExtension(version, exts, list, "GL_ARB_shader_atomic_counters"); - this.GL_ARB_shader_ballot = hasExtension(version, exts, list, "GL_ARB_shader_ballot"); - this.GL_ARB_shader_bit_encoding = hasExtension(version, exts, list, "GL_ARB_shader_bit_encoding"); - this.GL_ARB_shader_clock = hasExtension(version, exts, list, "GL_ARB_shader_clock"); - this.GL_ARB_shader_draw_parameters = hasExtension(version, exts, list, "GL_ARB_shader_draw_parameters"); - this.GL_ARB_shader_group_vote = hasExtension(version, exts, list, "GL_ARB_shader_group_vote"); - this.GL_ARB_shader_image_load_store = hasExtension(version, exts, list, "GL_ARB_shader_image_load_store"); - this.GL_ARB_shader_image_size = hasExtension(version, exts, list, "GL_ARB_shader_image_size"); - this.GL_ARB_shader_objects = hasExtension(version, exts, list, "GL_ARB_shader_objects"); - this.GL_ARB_shader_precision = hasExtension(version, exts, list, "GL_ARB_shader_precision"); - this.GL_ARB_shader_stencil_export = hasExtension(version, exts, list, "GL_ARB_shader_stencil_export"); - this.GL_ARB_shader_storage_buffer_object = hasExtension(version, exts, list, "GL_ARB_shader_storage_buffer_object"); - this.GL_ARB_shader_subroutine = hasExtension(version, exts, list, "GL_ARB_shader_subroutine"); - this.GL_ARB_shader_texture_image_samples = hasExtension(version, exts, list, "GL_ARB_shader_texture_image_samples"); - this.GL_ARB_shader_texture_lod = hasExtension(version, exts, list, "GL_ARB_shader_texture_lod"); - this.GL_ARB_shader_viewport_layer_array = hasExtension(version, exts, list, "GL_ARB_shader_viewport_layer_array"); - this.GL_ARB_shading_language_100 = hasExtension(version, exts, list, "GL_ARB_shading_language_100"); - this.GL_ARB_shading_language_420pack = hasExtension(version, exts, list, "GL_ARB_shading_language_420pack"); - this.GL_ARB_shading_language_include = hasExtension(version, exts, list, "GL_ARB_shading_language_include"); - this.GL_ARB_shading_language_packing = hasExtension(version, exts, list, "GL_ARB_shading_language_packing"); - this.GL_ARB_shadow = hasExtension(version, exts, list, "GL_ARB_shadow"); - this.GL_ARB_shadow_ambient = hasExtension(version, exts, list, "GL_ARB_shadow_ambient"); - this.GL_ARB_sparse_buffer = hasExtension(version, exts, list, "GL_ARB_sparse_buffer"); - this.GL_ARB_sparse_texture = hasExtension(version, exts, list, "GL_ARB_sparse_texture"); - this.GL_ARB_sparse_texture2 = hasExtension(version, exts, list, "GL_ARB_sparse_texture2"); - this.GL_ARB_sparse_texture_clamp = hasExtension(version, exts, list, "GL_ARB_sparse_texture_clamp"); - this.GL_ARB_spirv_extensions = hasExtension(version, exts, list, "GL_ARB_spirv_extensions"); - this.GL_ARB_stencil_texturing = hasExtension(version, exts, list, "GL_ARB_stencil_texturing"); - this.GL_ARB_sync = hasExtension(version, exts, list, "GL_ARB_sync"); - this.GL_ARB_tessellation_shader = hasExtension(version, exts, list, "GL_ARB_tessellation_shader"); - this.GL_ARB_texture_barrier = hasExtension(version, exts, list, "GL_ARB_texture_barrier"); - this.GL_ARB_texture_border_clamp = hasExtension(version, exts, list, "GL_ARB_texture_border_clamp"); - this.GL_ARB_texture_buffer_object = hasExtension(version, exts, list, "GL_ARB_texture_buffer_object"); - this.GL_ARB_texture_buffer_object_rgb32 = hasExtension(version, exts, list, "GL_ARB_texture_buffer_object_rgb32"); - this.GL_ARB_texture_buffer_range = hasExtension(version, exts, list, "GL_ARB_texture_buffer_range"); - this.GL_ARB_texture_compression = hasExtension(version, exts, list, "GL_ARB_texture_compression"); - this.GL_ARB_texture_compression_bptc = hasExtension(version, exts, list, "GL_ARB_texture_compression_bptc"); - this.GL_ARB_texture_compression_rgtc = hasExtension(version, exts, list, "GL_ARB_texture_compression_rgtc"); - this.GL_ARB_texture_cube_map = hasExtension(version, exts, list, "GL_ARB_texture_cube_map"); - this.GL_ARB_texture_cube_map_array = hasExtension(version, exts, list, "GL_ARB_texture_cube_map_array"); - this.GL_ARB_texture_env_add = hasExtension(version, exts, list, "GL_ARB_texture_env_add"); - this.GL_ARB_texture_env_combine = hasExtension(version, exts, list, "GL_ARB_texture_env_combine"); - this.GL_ARB_texture_env_crossbar = hasExtension(version, exts, list, "GL_ARB_texture_env_crossbar"); - this.GL_ARB_texture_env_dot3 = hasExtension(version, exts, list, "GL_ARB_texture_env_dot3"); - this.GL_ARB_texture_filter_anisotropic = hasExtension(version, exts, list, "GL_ARB_texture_filter_anisotropic"); - this.GL_ARB_texture_filter_minmax = hasExtension(version, exts, list, "GL_ARB_texture_filter_minmax"); - this.GL_ARB_texture_float = hasExtension(version, exts, list, "GL_ARB_texture_float"); - this.GL_ARB_texture_gather = hasExtension(version, exts, list, "GL_ARB_texture_gather"); - this.GL_ARB_texture_mirror_clamp_to_edge = hasExtension(version, exts, list, "GL_ARB_texture_mirror_clamp_to_edge"); - this.GL_ARB_texture_mirrored_repeat = hasExtension(version, exts, list, "GL_ARB_texture_mirrored_repeat"); - this.GL_ARB_texture_multisample = hasExtension(version, exts, list, "GL_ARB_texture_multisample"); - this.GL_ARB_texture_non_power_of_two = hasExtension(version, exts, list, "GL_ARB_texture_non_power_of_two"); - this.GL_ARB_texture_query_levels = hasExtension(version, exts, list, "GL_ARB_texture_query_levels"); - this.GL_ARB_texture_query_lod = hasExtension(version, exts, list, "GL_ARB_texture_query_lod"); - this.GL_ARB_texture_rectangle = hasExtension(version, exts, list, "GL_ARB_texture_rectangle"); - this.GL_ARB_texture_rg = hasExtension(version, exts, list, "GL_ARB_texture_rg"); - this.GL_ARB_texture_rgb10_a2ui = hasExtension(version, exts, list, "GL_ARB_texture_rgb10_a2ui"); - this.GL_ARB_texture_stencil8 = hasExtension(version, exts, list, "GL_ARB_texture_stencil8"); - this.GL_ARB_texture_storage = hasExtension(version, exts, list, "GL_ARB_texture_storage"); - this.GL_ARB_texture_storage_multisample = hasExtension(version, exts, list, "GL_ARB_texture_storage_multisample"); - this.GL_ARB_texture_swizzle = hasExtension(version, exts, list, "GL_ARB_texture_swizzle"); - this.GL_ARB_texture_view = hasExtension(version, exts, list, "GL_ARB_texture_view"); - this.GL_ARB_timer_query = hasExtension(version, exts, list, "GL_ARB_timer_query"); - this.GL_ARB_transform_feedback2 = hasExtension(version, exts, list, "GL_ARB_transform_feedback2"); - this.GL_ARB_transform_feedback3 = hasExtension(version, exts, list, "GL_ARB_transform_feedback3"); - this.GL_ARB_transform_feedback_instanced = hasExtension(version, exts, list, "GL_ARB_transform_feedback_instanced"); - this.GL_ARB_transform_feedback_overflow_query = hasExtension(version, exts, list, "GL_ARB_transform_feedback_overflow_query"); - this.GL_ARB_transpose_matrix = hasExtension(version, exts, list, "GL_ARB_transpose_matrix"); - this.GL_ARB_uniform_buffer_object = hasExtension(version, exts, list, "GL_ARB_uniform_buffer_object"); - this.GL_ARB_vertex_array_bgra = hasExtension(version, exts, list, "GL_ARB_vertex_array_bgra"); - this.GL_ARB_vertex_array_object = hasExtension(version, exts, list, "GL_ARB_vertex_array_object"); - this.GL_ARB_vertex_attrib_64bit = hasExtension(version, exts, list, "GL_ARB_vertex_attrib_64bit"); - this.GL_ARB_vertex_attrib_binding = hasExtension(version, exts, list, "GL_ARB_vertex_attrib_binding"); - this.GL_ARB_vertex_blend = hasExtension(version, exts, list, "GL_ARB_vertex_blend"); - this.GL_ARB_vertex_buffer_object = hasExtension(version, exts, list, "GL_ARB_vertex_buffer_object"); - this.GL_ARB_vertex_program = hasExtension(version, exts, list, "GL_ARB_vertex_program"); - this.GL_ARB_vertex_shader = hasExtension(version, exts, list, "GL_ARB_vertex_shader"); - this.GL_ARB_vertex_type_10f_11f_11f_rev = hasExtension(version, exts, list, "GL_ARB_vertex_type_10f_11f_11f_rev"); - this.GL_ARB_vertex_type_2_10_10_10_rev = hasExtension(version, exts, list, "GL_ARB_vertex_type_2_10_10_10_rev"); - this.GL_ARB_viewport_array = hasExtension(version, exts, list, "GL_ARB_viewport_array"); - this.GL_ARB_window_pos = hasExtension(version, exts, list, "GL_ARB_window_pos"); - this.GL_KHR_blend_equation_advanced = hasExtension(version, exts, list, "GL_KHR_blend_equation_advanced"); - this.GL_KHR_blend_equation_advanced_coherent = hasExtension(version, exts, list, "GL_KHR_blend_equation_advanced_coherent"); - this.GL_KHR_context_flush_control = hasExtension(version, exts, list, "GL_KHR_context_flush_control"); - this.GL_KHR_debug = hasExtension(version, exts, list, "GL_KHR_debug"); - this.GL_KHR_no_error = hasExtension(version, exts, list, "GL_KHR_no_error"); - this.GL_KHR_parallel_shader_compile = hasExtension(version, exts, list, "GL_KHR_parallel_shader_compile"); - this.GL_KHR_robust_buffer_access_behavior = hasExtension(version, exts, list, "GL_KHR_robust_buffer_access_behavior"); - this.GL_KHR_robustness = hasExtension(version, exts, list, "GL_KHR_robustness"); - this.GL_KHR_shader_subgroup = hasExtension(version, exts, list, "GL_KHR_shader_subgroup"); - this.GL_KHR_texture_compression_astc_hdr = hasExtension(version, exts, list, "GL_KHR_texture_compression_astc_hdr"); - this.GL_KHR_texture_compression_astc_ldr = hasExtension(version, exts, list, "GL_KHR_texture_compression_astc_ldr"); - this.GL_KHR_texture_compression_astc_sliced_3d = hasExtension(version, exts, list, "GL_KHR_texture_compression_astc_sliced_3d"); - this.GL_OES_byte_coordinates = hasExtension(version, exts, list, "GL_OES_byte_coordinates"); - this.GL_OES_compressed_paletted_texture = hasExtension(version, exts, list, "GL_OES_compressed_paletted_texture"); - this.GL_OES_fixed_point = hasExtension(version, exts, list, "GL_OES_fixed_point"); - this.GL_OES_query_matrix = hasExtension(version, exts, list, "GL_OES_query_matrix"); - this.GL_OES_read_format = hasExtension(version, exts, list, "GL_OES_read_format"); - this.GL_OES_single_precision = hasExtension(version, exts, list, "GL_OES_single_precision"); - this.GL_3DFX_multisample = hasExtension(version, exts, list, "GL_3DFX_multisample"); - this.GL_3DFX_tbuffer = hasExtension(version, exts, list, "GL_3DFX_tbuffer"); - this.GL_3DFX_texture_compression_FXT1 = hasExtension(version, exts, list, "GL_3DFX_texture_compression_FXT1"); - this.GL_AMD_blend_minmax_factor = hasExtension(version, exts, list, "GL_AMD_blend_minmax_factor"); - this.GL_AMD_conservative_depth = hasExtension(version, exts, list, "GL_AMD_conservative_depth"); - this.GL_AMD_debug_output = hasExtension(version, exts, list, "GL_AMD_debug_output"); - this.GL_AMD_depth_clamp_separate = hasExtension(version, exts, list, "GL_AMD_depth_clamp_separate"); - this.GL_AMD_draw_buffers_blend = hasExtension(version, exts, list, "GL_AMD_draw_buffers_blend"); - this.GL_AMD_framebuffer_multisample_advanced = hasExtension(version, exts, list, "GL_AMD_framebuffer_multisample_advanced"); - this.GL_AMD_framebuffer_sample_positions = hasExtension(version, exts, list, "GL_AMD_framebuffer_sample_positions"); - this.GL_AMD_gcn_shader = hasExtension(version, exts, list, "GL_AMD_gcn_shader"); - this.GL_AMD_gpu_shader_half_float = hasExtension(version, exts, list, "GL_AMD_gpu_shader_half_float"); - this.GL_AMD_gpu_shader_int16 = hasExtension(version, exts, list, "GL_AMD_gpu_shader_int16"); - this.GL_AMD_gpu_shader_int64 = hasExtension(version, exts, list, "GL_AMD_gpu_shader_int64"); - this.GL_AMD_interleaved_elements = hasExtension(version, exts, list, "GL_AMD_interleaved_elements"); - this.GL_AMD_multi_draw_indirect = hasExtension(version, exts, list, "GL_AMD_multi_draw_indirect"); - this.GL_AMD_name_gen_delete = hasExtension(version, exts, list, "GL_AMD_name_gen_delete"); - this.GL_AMD_occlusion_query_event = hasExtension(version, exts, list, "GL_AMD_occlusion_query_event"); - this.GL_AMD_performance_monitor = hasExtension(version, exts, list, "GL_AMD_performance_monitor"); - this.GL_AMD_pinned_memory = hasExtension(version, exts, list, "GL_AMD_pinned_memory"); - this.GL_AMD_query_buffer_object = hasExtension(version, exts, list, "GL_AMD_query_buffer_object"); - this.GL_AMD_sample_positions = hasExtension(version, exts, list, "GL_AMD_sample_positions"); - this.GL_AMD_seamless_cubemap_per_texture = hasExtension(version, exts, list, "GL_AMD_seamless_cubemap_per_texture"); - this.GL_AMD_shader_atomic_counter_ops = hasExtension(version, exts, list, "GL_AMD_shader_atomic_counter_ops"); - this.GL_AMD_shader_ballot = hasExtension(version, exts, list, "GL_AMD_shader_ballot"); - this.GL_AMD_shader_explicit_vertex_parameter = hasExtension(version, exts, list, "GL_AMD_shader_explicit_vertex_parameter"); - this.GL_AMD_shader_gpu_shader_half_float_fetch = hasExtension(version, exts, list, "GL_AMD_shader_gpu_shader_half_float_fetch"); - this.GL_AMD_shader_image_load_store_lod = hasExtension(version, exts, list, "GL_AMD_shader_image_load_store_lod"); - this.GL_AMD_shader_stencil_export = hasExtension(version, exts, list, "GL_AMD_shader_stencil_export"); - this.GL_AMD_shader_trinary_minmax = hasExtension(version, exts, list, "GL_AMD_shader_trinary_minmax"); - this.GL_AMD_sparse_texture = hasExtension(version, exts, list, "GL_AMD_sparse_texture"); - this.GL_AMD_stencil_operation_extended = hasExtension(version, exts, list, "GL_AMD_stencil_operation_extended"); - this.GL_AMD_texture_gather_bias_lod = hasExtension(version, exts, list, "GL_AMD_texture_gather_bias_lod"); - this.GL_AMD_texture_texture4 = hasExtension(version, exts, list, "GL_AMD_texture_texture4"); - this.GL_AMD_transform_feedback3_lines_triangles = hasExtension(version, exts, list, "GL_AMD_transform_feedback3_lines_triangles"); - this.GL_AMD_transform_feedback4 = hasExtension(version, exts, list, "GL_AMD_transform_feedback4"); - this.GL_AMD_vertex_shader_layer = hasExtension(version, exts, list, "GL_AMD_vertex_shader_layer"); - this.GL_AMD_vertex_shader_tessellator = hasExtension(version, exts, list, "GL_AMD_vertex_shader_tessellator"); - this.GL_AMD_vertex_shader_viewport_index = hasExtension(version, exts, list, "GL_AMD_vertex_shader_viewport_index"); - this.GL_APPLE_aux_depth_stencil = hasExtension(version, exts, list, "GL_APPLE_aux_depth_stencil"); - this.GL_APPLE_client_storage = hasExtension(version, exts, list, "GL_APPLE_client_storage"); - this.GL_APPLE_element_array = hasExtension(version, exts, list, "GL_APPLE_element_array"); - this.GL_APPLE_fence = hasExtension(version, exts, list, "GL_APPLE_fence"); - this.GL_APPLE_float_pixels = hasExtension(version, exts, list, "GL_APPLE_float_pixels"); - this.GL_APPLE_flush_buffer_range = hasExtension(version, exts, list, "GL_APPLE_flush_buffer_range"); - this.GL_APPLE_object_purgeable = hasExtension(version, exts, list, "GL_APPLE_object_purgeable"); - this.GL_APPLE_rgb_422 = hasExtension(version, exts, list, "GL_APPLE_rgb_422"); - this.GL_APPLE_row_bytes = hasExtension(version, exts, list, "GL_APPLE_row_bytes"); - this.GL_APPLE_specular_vector = hasExtension(version, exts, list, "GL_APPLE_specular_vector"); - this.GL_APPLE_texture_range = hasExtension(version, exts, list, "GL_APPLE_texture_range"); - this.GL_APPLE_transform_hint = hasExtension(version, exts, list, "GL_APPLE_transform_hint"); - this.GL_APPLE_vertex_array_object = hasExtension(version, exts, list, "GL_APPLE_vertex_array_object"); - this.GL_APPLE_vertex_array_range = hasExtension(version, exts, list, "GL_APPLE_vertex_array_range"); - this.GL_APPLE_vertex_program_evaluators = hasExtension(version, exts, list, "GL_APPLE_vertex_program_evaluators"); - this.GL_APPLE_ycbcr_422 = hasExtension(version, exts, list, "GL_APPLE_ycbcr_422"); - this.GL_ATI_draw_buffers = hasExtension(version, exts, list, "GL_ATI_draw_buffers"); - this.GL_ATI_element_array = hasExtension(version, exts, list, "GL_ATI_element_array"); - this.GL_ATI_envmap_bumpmap = hasExtension(version, exts, list, "GL_ATI_envmap_bumpmap"); - this.GL_ATI_fragment_shader = hasExtension(version, exts, list, "GL_ATI_fragment_shader"); - this.GL_ATI_map_object_buffer = hasExtension(version, exts, list, "GL_ATI_map_object_buffer"); - this.GL_ATI_meminfo = hasExtension(version, exts, list, "GL_ATI_meminfo"); - this.GL_ATI_pixel_format_float = hasExtension(version, exts, list, "GL_ATI_pixel_format_float"); - this.GL_ATI_pn_triangles = hasExtension(version, exts, list, "GL_ATI_pn_triangles"); - this.GL_ATI_separate_stencil = hasExtension(version, exts, list, "GL_ATI_separate_stencil"); - this.GL_ATI_text_fragment_shader = hasExtension(version, exts, list, "GL_ATI_text_fragment_shader"); - this.GL_ATI_texture_env_combine3 = hasExtension(version, exts, list, "GL_ATI_texture_env_combine3"); - this.GL_ATI_texture_float = hasExtension(version, exts, list, "GL_ATI_texture_float"); - this.GL_ATI_texture_mirror_once = hasExtension(version, exts, list, "GL_ATI_texture_mirror_once"); - this.GL_ATI_vertex_array_object = hasExtension(version, exts, list, "GL_ATI_vertex_array_object"); - this.GL_ATI_vertex_attrib_array_object = hasExtension(version, exts, list, "GL_ATI_vertex_attrib_array_object"); - this.GL_ATI_vertex_streams = hasExtension(version, exts, list, "GL_ATI_vertex_streams"); - this.GL_EXT_422_pixels = hasExtension(version, exts, list, "GL_EXT_422_pixels"); - this.GL_EXT_EGL_image_storage = hasExtension(version, exts, list, "GL_EXT_EGL_image_storage"); - this.GL_EXT_EGL_sync = hasExtension(version, exts, list, "GL_EXT_EGL_sync"); - this.GL_EXT_abgr = hasExtension(version, exts, list, "GL_EXT_abgr"); - this.GL_EXT_bgra = hasExtension(version, exts, list, "GL_EXT_bgra"); - this.GL_EXT_bindable_uniform = hasExtension(version, exts, list, "GL_EXT_bindable_uniform"); - this.GL_EXT_blend_color = hasExtension(version, exts, list, "GL_EXT_blend_color"); - this.GL_EXT_blend_equation_separate = hasExtension(version, exts, list, "GL_EXT_blend_equation_separate"); - this.GL_EXT_blend_func_separate = hasExtension(version, exts, list, "GL_EXT_blend_func_separate"); - this.GL_EXT_blend_logic_op = hasExtension(version, exts, list, "GL_EXT_blend_logic_op"); - this.GL_EXT_blend_minmax = hasExtension(version, exts, list, "GL_EXT_blend_minmax"); - this.GL_EXT_blend_subtract = hasExtension(version, exts, list, "GL_EXT_blend_subtract"); - this.GL_EXT_clip_volume_hint = hasExtension(version, exts, list, "GL_EXT_clip_volume_hint"); - this.GL_EXT_cmyka = hasExtension(version, exts, list, "GL_EXT_cmyka"); - this.GL_EXT_color_subtable = hasExtension(version, exts, list, "GL_EXT_color_subtable"); - this.GL_EXT_compiled_vertex_array = hasExtension(version, exts, list, "GL_EXT_compiled_vertex_array"); - this.GL_EXT_convolution = hasExtension(version, exts, list, "GL_EXT_convolution"); - this.GL_EXT_coordinate_frame = hasExtension(version, exts, list, "GL_EXT_coordinate_frame"); - this.GL_EXT_copy_texture = hasExtension(version, exts, list, "GL_EXT_copy_texture"); - this.GL_EXT_cull_vertex = hasExtension(version, exts, list, "GL_EXT_cull_vertex"); - this.GL_EXT_debug_label = hasExtension(version, exts, list, "GL_EXT_debug_label"); - this.GL_EXT_debug_marker = hasExtension(version, exts, list, "GL_EXT_debug_marker"); - this.GL_EXT_depth_bounds_test = hasExtension(version, exts, list, "GL_EXT_depth_bounds_test"); - this.GL_EXT_direct_state_access = hasExtension(version, exts, list, "GL_EXT_direct_state_access"); - this.GL_EXT_draw_buffers2 = hasExtension(version, exts, list, "GL_EXT_draw_buffers2"); - this.GL_EXT_draw_instanced = hasExtension(version, exts, list, "GL_EXT_draw_instanced"); - this.GL_EXT_draw_range_elements = hasExtension(version, exts, list, "GL_EXT_draw_range_elements"); - this.GL_EXT_external_buffer = hasExtension(version, exts, list, "GL_EXT_external_buffer"); - this.GL_EXT_fog_coord = hasExtension(version, exts, list, "GL_EXT_fog_coord"); - this.GL_EXT_framebuffer_blit = hasExtension(version, exts, list, "GL_EXT_framebuffer_blit"); - this.GL_EXT_framebuffer_blit_layers = hasExtension(version, exts, list, "GL_EXT_framebuffer_blit_layers"); - this.GL_EXT_framebuffer_multisample = hasExtension(version, exts, list, "GL_EXT_framebuffer_multisample"); - this.GL_EXT_framebuffer_multisample_blit_scaled = hasExtension(version, exts, list, "GL_EXT_framebuffer_multisample_blit_scaled"); - this.GL_EXT_framebuffer_object = hasExtension(version, exts, list, "GL_EXT_framebuffer_object"); - this.GL_EXT_framebuffer_sRGB = hasExtension(version, exts, list, "GL_EXT_framebuffer_sRGB"); - this.GL_EXT_geometry_shader4 = hasExtension(version, exts, list, "GL_EXT_geometry_shader4"); - this.GL_EXT_gpu_program_parameters = hasExtension(version, exts, list, "GL_EXT_gpu_program_parameters"); - this.GL_EXT_gpu_shader4 = hasExtension(version, exts, list, "GL_EXT_gpu_shader4"); - this.GL_EXT_histogram = hasExtension(version, exts, list, "GL_EXT_histogram"); - this.GL_EXT_index_array_formats = hasExtension(version, exts, list, "GL_EXT_index_array_formats"); - this.GL_EXT_index_func = hasExtension(version, exts, list, "GL_EXT_index_func"); - this.GL_EXT_index_material = hasExtension(version, exts, list, "GL_EXT_index_material"); - this.GL_EXT_index_texture = hasExtension(version, exts, list, "GL_EXT_index_texture"); - this.GL_EXT_light_texture = hasExtension(version, exts, list, "GL_EXT_light_texture"); - this.GL_EXT_memory_object = hasExtension(version, exts, list, "GL_EXT_memory_object"); - this.GL_EXT_memory_object_fd = hasExtension(version, exts, list, "GL_EXT_memory_object_fd"); - this.GL_EXT_memory_object_win32 = hasExtension(version, exts, list, "GL_EXT_memory_object_win32"); - this.GL_EXT_misc_attribute = hasExtension(version, exts, list, "GL_EXT_misc_attribute"); - this.GL_EXT_multi_draw_arrays = hasExtension(version, exts, list, "GL_EXT_multi_draw_arrays"); - this.GL_EXT_multisample = hasExtension(version, exts, list, "GL_EXT_multisample"); - this.GL_EXT_multiview_tessellation_geometry_shader = hasExtension(version, exts, list, "GL_EXT_multiview_tessellation_geometry_shader"); - this.GL_EXT_multiview_texture_multisample = hasExtension(version, exts, list, "GL_EXT_multiview_texture_multisample"); - this.GL_EXT_multiview_timer_query = hasExtension(version, exts, list, "GL_EXT_multiview_timer_query"); - this.GL_EXT_packed_depth_stencil = hasExtension(version, exts, list, "GL_EXT_packed_depth_stencil"); - this.GL_EXT_packed_float = hasExtension(version, exts, list, "GL_EXT_packed_float"); - this.GL_EXT_packed_pixels = hasExtension(version, exts, list, "GL_EXT_packed_pixels"); - this.GL_EXT_paletted_texture = hasExtension(version, exts, list, "GL_EXT_paletted_texture"); - this.GL_EXT_pixel_buffer_object = hasExtension(version, exts, list, "GL_EXT_pixel_buffer_object"); - this.GL_EXT_pixel_transform = hasExtension(version, exts, list, "GL_EXT_pixel_transform"); - this.GL_EXT_pixel_transform_color_table = hasExtension(version, exts, list, "GL_EXT_pixel_transform_color_table"); - this.GL_EXT_point_parameters = hasExtension(version, exts, list, "GL_EXT_point_parameters"); - this.GL_EXT_polygon_offset = hasExtension(version, exts, list, "GL_EXT_polygon_offset"); - this.GL_EXT_polygon_offset_clamp = hasExtension(version, exts, list, "GL_EXT_polygon_offset_clamp"); - this.GL_EXT_post_depth_coverage = hasExtension(version, exts, list, "GL_EXT_post_depth_coverage"); - this.GL_EXT_provoking_vertex = hasExtension(version, exts, list, "GL_EXT_provoking_vertex"); - this.GL_EXT_raster_multisample = hasExtension(version, exts, list, "GL_EXT_raster_multisample"); - this.GL_EXT_rescale_normal = hasExtension(version, exts, list, "GL_EXT_rescale_normal"); - this.GL_EXT_secondary_color = hasExtension(version, exts, list, "GL_EXT_secondary_color"); - this.GL_EXT_semaphore = hasExtension(version, exts, list, "GL_EXT_semaphore"); - this.GL_EXT_semaphore_fd = hasExtension(version, exts, list, "GL_EXT_semaphore_fd"); - this.GL_EXT_semaphore_win32 = hasExtension(version, exts, list, "GL_EXT_semaphore_win32"); - this.GL_EXT_separate_shader_objects = hasExtension(version, exts, list, "GL_EXT_separate_shader_objects"); - this.GL_EXT_separate_specular_color = hasExtension(version, exts, list, "GL_EXT_separate_specular_color"); - this.GL_EXT_shader_framebuffer_fetch = hasExtension(version, exts, list, "GL_EXT_shader_framebuffer_fetch"); - this.GL_EXT_shader_framebuffer_fetch_non_coherent = hasExtension(version, exts, list, "GL_EXT_shader_framebuffer_fetch_non_coherent"); - this.GL_EXT_shader_image_load_formatted = hasExtension(version, exts, list, "GL_EXT_shader_image_load_formatted"); - this.GL_EXT_shader_image_load_store = hasExtension(version, exts, list, "GL_EXT_shader_image_load_store"); - this.GL_EXT_shader_integer_mix = hasExtension(version, exts, list, "GL_EXT_shader_integer_mix"); - this.GL_EXT_shader_samples_identical = hasExtension(version, exts, list, "GL_EXT_shader_samples_identical"); - this.GL_EXT_shadow_funcs = hasExtension(version, exts, list, "GL_EXT_shadow_funcs"); - this.GL_EXT_shared_texture_palette = hasExtension(version, exts, list, "GL_EXT_shared_texture_palette"); - this.GL_EXT_sparse_texture2 = hasExtension(version, exts, list, "GL_EXT_sparse_texture2"); - this.GL_EXT_stencil_clear_tag = hasExtension(version, exts, list, "GL_EXT_stencil_clear_tag"); - this.GL_EXT_stencil_two_side = hasExtension(version, exts, list, "GL_EXT_stencil_two_side"); - this.GL_EXT_stencil_wrap = hasExtension(version, exts, list, "GL_EXT_stencil_wrap"); - this.GL_EXT_subtexture = hasExtension(version, exts, list, "GL_EXT_subtexture"); - this.GL_EXT_texture = hasExtension(version, exts, list, "GL_EXT_texture"); - this.GL_EXT_texture3D = hasExtension(version, exts, list, "GL_EXT_texture3D"); - this.GL_EXT_texture_array = hasExtension(version, exts, list, "GL_EXT_texture_array"); - this.GL_EXT_texture_buffer_object = hasExtension(version, exts, list, "GL_EXT_texture_buffer_object"); - this.GL_EXT_texture_compression_latc = hasExtension(version, exts, list, "GL_EXT_texture_compression_latc"); - this.GL_EXT_texture_compression_rgtc = hasExtension(version, exts, list, "GL_EXT_texture_compression_rgtc"); - this.GL_EXT_texture_compression_s3tc = hasExtension(version, exts, list, "GL_EXT_texture_compression_s3tc"); - this.GL_EXT_texture_cube_map = hasExtension(version, exts, list, "GL_EXT_texture_cube_map"); - this.GL_EXT_texture_env_add = hasExtension(version, exts, list, "GL_EXT_texture_env_add"); - this.GL_EXT_texture_env_combine = hasExtension(version, exts, list, "GL_EXT_texture_env_combine"); - this.GL_EXT_texture_env_dot3 = hasExtension(version, exts, list, "GL_EXT_texture_env_dot3"); - this.GL_EXT_texture_filter_anisotropic = hasExtension(version, exts, list, "GL_EXT_texture_filter_anisotropic"); - this.GL_EXT_texture_filter_minmax = hasExtension(version, exts, list, "GL_EXT_texture_filter_minmax"); - this.GL_EXT_texture_integer = hasExtension(version, exts, list, "GL_EXT_texture_integer"); - this.GL_EXT_texture_lod_bias = hasExtension(version, exts, list, "GL_EXT_texture_lod_bias"); - this.GL_EXT_texture_mirror_clamp = hasExtension(version, exts, list, "GL_EXT_texture_mirror_clamp"); - this.GL_EXT_texture_object = hasExtension(version, exts, list, "GL_EXT_texture_object"); - this.GL_EXT_texture_perturb_normal = hasExtension(version, exts, list, "GL_EXT_texture_perturb_normal"); - this.GL_EXT_texture_sRGB = hasExtension(version, exts, list, "GL_EXT_texture_sRGB"); - this.GL_EXT_texture_sRGB_R8 = hasExtension(version, exts, list, "GL_EXT_texture_sRGB_R8"); - this.GL_EXT_texture_sRGB_RG8 = hasExtension(version, exts, list, "GL_EXT_texture_sRGB_RG8"); - this.GL_EXT_texture_sRGB_decode = hasExtension(version, exts, list, "GL_EXT_texture_sRGB_decode"); - this.GL_EXT_texture_shadow_lod = hasExtension(version, exts, list, "GL_EXT_texture_shadow_lod"); - this.GL_EXT_texture_shared_exponent = hasExtension(version, exts, list, "GL_EXT_texture_shared_exponent"); - this.GL_EXT_texture_snorm = hasExtension(version, exts, list, "GL_EXT_texture_snorm"); - this.GL_EXT_texture_storage = hasExtension(version, exts, list, "GL_EXT_texture_storage"); - this.GL_EXT_texture_swizzle = hasExtension(version, exts, list, "GL_EXT_texture_swizzle"); - this.GL_EXT_timer_query = hasExtension(version, exts, list, "GL_EXT_timer_query"); - this.GL_EXT_transform_feedback = hasExtension(version, exts, list, "GL_EXT_transform_feedback"); - this.GL_EXT_vertex_array = hasExtension(version, exts, list, "GL_EXT_vertex_array"); - this.GL_EXT_vertex_array_bgra = hasExtension(version, exts, list, "GL_EXT_vertex_array_bgra"); - this.GL_EXT_vertex_attrib_64bit = hasExtension(version, exts, list, "GL_EXT_vertex_attrib_64bit"); - this.GL_EXT_vertex_shader = hasExtension(version, exts, list, "GL_EXT_vertex_shader"); - this.GL_EXT_vertex_weighting = hasExtension(version, exts, list, "GL_EXT_vertex_weighting"); - this.GL_EXT_win32_keyed_mutex = hasExtension(version, exts, list, "GL_EXT_win32_keyed_mutex"); - this.GL_EXT_window_rectangles = hasExtension(version, exts, list, "GL_EXT_window_rectangles"); - this.GL_EXT_x11_sync_object = hasExtension(version, exts, list, "GL_EXT_x11_sync_object"); - this.GL_GREMEDY_frame_terminator = hasExtension(version, exts, list, "GL_GREMEDY_frame_terminator"); - this.GL_GREMEDY_string_marker = hasExtension(version, exts, list, "GL_GREMEDY_string_marker"); - this.GL_HP_convolution_border_modes = hasExtension(version, exts, list, "GL_HP_convolution_border_modes"); - this.GL_HP_image_transform = hasExtension(version, exts, list, "GL_HP_image_transform"); - this.GL_HP_occlusion_test = hasExtension(version, exts, list, "GL_HP_occlusion_test"); - this.GL_HP_texture_lighting = hasExtension(version, exts, list, "GL_HP_texture_lighting"); - this.GL_IBM_cull_vertex = hasExtension(version, exts, list, "GL_IBM_cull_vertex"); - this.GL_IBM_multimode_draw_arrays = hasExtension(version, exts, list, "GL_IBM_multimode_draw_arrays"); - this.GL_IBM_rasterpos_clip = hasExtension(version, exts, list, "GL_IBM_rasterpos_clip"); - this.GL_IBM_static_data = hasExtension(version, exts, list, "GL_IBM_static_data"); - this.GL_IBM_texture_mirrored_repeat = hasExtension(version, exts, list, "GL_IBM_texture_mirrored_repeat"); - this.GL_IBM_vertex_array_lists = hasExtension(version, exts, list, "GL_IBM_vertex_array_lists"); - this.GL_INGR_blend_func_separate = hasExtension(version, exts, list, "GL_INGR_blend_func_separate"); - this.GL_INGR_color_clamp = hasExtension(version, exts, list, "GL_INGR_color_clamp"); - this.GL_INGR_interlace_read = hasExtension(version, exts, list, "GL_INGR_interlace_read"); - this.GL_INTEL_blackhole_render = hasExtension(version, exts, list, "GL_INTEL_blackhole_render"); - this.GL_INTEL_conservative_rasterization = hasExtension(version, exts, list, "GL_INTEL_conservative_rasterization"); - this.GL_INTEL_fragment_shader_ordering = hasExtension(version, exts, list, "GL_INTEL_fragment_shader_ordering"); - this.GL_INTEL_framebuffer_CMAA = hasExtension(version, exts, list, "GL_INTEL_framebuffer_CMAA"); - this.GL_INTEL_map_texture = hasExtension(version, exts, list, "GL_INTEL_map_texture"); - this.GL_INTEL_parallel_arrays = hasExtension(version, exts, list, "GL_INTEL_parallel_arrays"); - this.GL_INTEL_performance_query = hasExtension(version, exts, list, "GL_INTEL_performance_query"); - this.GL_MESAX_texture_stack = hasExtension(version, exts, list, "GL_MESAX_texture_stack"); - this.GL_MESA_framebuffer_flip_x = hasExtension(version, exts, list, "GL_MESA_framebuffer_flip_x"); - this.GL_MESA_framebuffer_flip_y = hasExtension(version, exts, list, "GL_MESA_framebuffer_flip_y"); - this.GL_MESA_framebuffer_swap_xy = hasExtension(version, exts, list, "GL_MESA_framebuffer_swap_xy"); - this.GL_MESA_pack_invert = hasExtension(version, exts, list, "GL_MESA_pack_invert"); - this.GL_MESA_program_binary_formats = hasExtension(version, exts, list, "GL_MESA_program_binary_formats"); - this.GL_MESA_resize_buffers = hasExtension(version, exts, list, "GL_MESA_resize_buffers"); - this.GL_MESA_shader_integer_functions = hasExtension(version, exts, list, "GL_MESA_shader_integer_functions"); - this.GL_MESA_tile_raster_order = hasExtension(version, exts, list, "GL_MESA_tile_raster_order"); - this.GL_MESA_window_pos = hasExtension(version, exts, list, "GL_MESA_window_pos"); - this.GL_MESA_ycbcr_texture = hasExtension(version, exts, list, "GL_MESA_ycbcr_texture"); - this.GL_NVX_blend_equation_advanced_multi_draw_buffers = hasExtension(version, exts, list, "GL_NVX_blend_equation_advanced_multi_draw_buffers"); - this.GL_NVX_conditional_render = hasExtension(version, exts, list, "GL_NVX_conditional_render"); - this.GL_NVX_gpu_memory_info = hasExtension(version, exts, list, "GL_NVX_gpu_memory_info"); - this.GL_NVX_gpu_multicast2 = hasExtension(version, exts, list, "GL_NVX_gpu_multicast2"); - this.GL_NVX_linked_gpu_multicast = hasExtension(version, exts, list, "GL_NVX_linked_gpu_multicast"); - this.GL_NVX_progress_fence = hasExtension(version, exts, list, "GL_NVX_progress_fence"); - this.GL_NV_alpha_to_coverage_dither_control = hasExtension(version, exts, list, "GL_NV_alpha_to_coverage_dither_control"); - this.GL_NV_bindless_multi_draw_indirect = hasExtension(version, exts, list, "GL_NV_bindless_multi_draw_indirect"); - this.GL_NV_bindless_multi_draw_indirect_count = hasExtension(version, exts, list, "GL_NV_bindless_multi_draw_indirect_count"); - this.GL_NV_bindless_texture = hasExtension(version, exts, list, "GL_NV_bindless_texture"); - this.GL_NV_blend_equation_advanced = hasExtension(version, exts, list, "GL_NV_blend_equation_advanced"); - this.GL_NV_blend_equation_advanced_coherent = hasExtension(version, exts, list, "GL_NV_blend_equation_advanced_coherent"); - this.GL_NV_blend_minmax_factor = hasExtension(version, exts, list, "GL_NV_blend_minmax_factor"); - this.GL_NV_blend_square = hasExtension(version, exts, list, "GL_NV_blend_square"); - this.GL_NV_clip_space_w_scaling = hasExtension(version, exts, list, "GL_NV_clip_space_w_scaling"); - this.GL_NV_command_list = hasExtension(version, exts, list, "GL_NV_command_list"); - this.GL_NV_compute_program5 = hasExtension(version, exts, list, "GL_NV_compute_program5"); - this.GL_NV_compute_shader_derivatives = hasExtension(version, exts, list, "GL_NV_compute_shader_derivatives"); - this.GL_NV_conditional_render = hasExtension(version, exts, list, "GL_NV_conditional_render"); - this.GL_NV_conservative_raster = hasExtension(version, exts, list, "GL_NV_conservative_raster"); - this.GL_NV_conservative_raster_dilate = hasExtension(version, exts, list, "GL_NV_conservative_raster_dilate"); - this.GL_NV_conservative_raster_pre_snap = hasExtension(version, exts, list, "GL_NV_conservative_raster_pre_snap"); - this.GL_NV_conservative_raster_pre_snap_triangles = hasExtension(version, exts, list, "GL_NV_conservative_raster_pre_snap_triangles"); - this.GL_NV_conservative_raster_underestimation = hasExtension(version, exts, list, "GL_NV_conservative_raster_underestimation"); - this.GL_NV_copy_depth_to_color = hasExtension(version, exts, list, "GL_NV_copy_depth_to_color"); - this.GL_NV_copy_image = hasExtension(version, exts, list, "GL_NV_copy_image"); - this.GL_NV_deep_texture3D = hasExtension(version, exts, list, "GL_NV_deep_texture3D"); - this.GL_NV_depth_buffer_float = hasExtension(version, exts, list, "GL_NV_depth_buffer_float"); - this.GL_NV_depth_clamp = hasExtension(version, exts, list, "GL_NV_depth_clamp"); - this.GL_NV_draw_texture = hasExtension(version, exts, list, "GL_NV_draw_texture"); - this.GL_NV_draw_vulkan_image = hasExtension(version, exts, list, "GL_NV_draw_vulkan_image"); - this.GL_NV_evaluators = hasExtension(version, exts, list, "GL_NV_evaluators"); - this.GL_NV_explicit_multisample = hasExtension(version, exts, list, "GL_NV_explicit_multisample"); - this.GL_NV_fence = hasExtension(version, exts, list, "GL_NV_fence"); - this.GL_NV_fill_rectangle = hasExtension(version, exts, list, "GL_NV_fill_rectangle"); - this.GL_NV_float_buffer = hasExtension(version, exts, list, "GL_NV_float_buffer"); - this.GL_NV_fog_distance = hasExtension(version, exts, list, "GL_NV_fog_distance"); - this.GL_NV_fragment_coverage_to_color = hasExtension(version, exts, list, "GL_NV_fragment_coverage_to_color"); - this.GL_NV_fragment_program = hasExtension(version, exts, list, "GL_NV_fragment_program"); - this.GL_NV_fragment_program2 = hasExtension(version, exts, list, "GL_NV_fragment_program2"); - this.GL_NV_fragment_program4 = hasExtension(version, exts, list, "GL_NV_fragment_program4"); - this.GL_NV_fragment_program_option = hasExtension(version, exts, list, "GL_NV_fragment_program_option"); - this.GL_NV_fragment_shader_barycentric = hasExtension(version, exts, list, "GL_NV_fragment_shader_barycentric"); - this.GL_NV_fragment_shader_interlock = hasExtension(version, exts, list, "GL_NV_fragment_shader_interlock"); - this.GL_NV_framebuffer_mixed_samples = hasExtension(version, exts, list, "GL_NV_framebuffer_mixed_samples"); - this.GL_NV_framebuffer_multisample_coverage = hasExtension(version, exts, list, "GL_NV_framebuffer_multisample_coverage"); - this.GL_NV_geometry_program4 = hasExtension(version, exts, list, "GL_NV_geometry_program4"); - this.GL_NV_geometry_shader4 = hasExtension(version, exts, list, "GL_NV_geometry_shader4"); - this.GL_NV_geometry_shader_passthrough = hasExtension(version, exts, list, "GL_NV_geometry_shader_passthrough"); - this.GL_NV_gpu_multicast = hasExtension(version, exts, list, "GL_NV_gpu_multicast"); - this.GL_NV_gpu_program4 = hasExtension(version, exts, list, "GL_NV_gpu_program4"); - this.GL_NV_gpu_program5 = hasExtension(version, exts, list, "GL_NV_gpu_program5"); - this.GL_NV_gpu_program5_mem_extended = hasExtension(version, exts, list, "GL_NV_gpu_program5_mem_extended"); - this.GL_NV_gpu_shader5 = hasExtension(version, exts, list, "GL_NV_gpu_shader5"); - this.GL_NV_half_float = hasExtension(version, exts, list, "GL_NV_half_float"); - this.GL_NV_internalformat_sample_query = hasExtension(version, exts, list, "GL_NV_internalformat_sample_query"); - this.GL_NV_light_max_exponent = hasExtension(version, exts, list, "GL_NV_light_max_exponent"); - this.GL_NV_memory_attachment = hasExtension(version, exts, list, "GL_NV_memory_attachment"); - this.GL_NV_memory_object_sparse = hasExtension(version, exts, list, "GL_NV_memory_object_sparse"); - this.GL_NV_mesh_shader = hasExtension(version, exts, list, "GL_NV_mesh_shader"); - this.GL_NV_multisample_coverage = hasExtension(version, exts, list, "GL_NV_multisample_coverage"); - this.GL_NV_multisample_filter_hint = hasExtension(version, exts, list, "GL_NV_multisample_filter_hint"); - this.GL_NV_occlusion_query = hasExtension(version, exts, list, "GL_NV_occlusion_query"); - this.GL_NV_packed_depth_stencil = hasExtension(version, exts, list, "GL_NV_packed_depth_stencil"); - this.GL_NV_parameter_buffer_object = hasExtension(version, exts, list, "GL_NV_parameter_buffer_object"); - this.GL_NV_parameter_buffer_object2 = hasExtension(version, exts, list, "GL_NV_parameter_buffer_object2"); - this.GL_NV_path_rendering = hasExtension(version, exts, list, "GL_NV_path_rendering"); - this.GL_NV_path_rendering_shared_edge = hasExtension(version, exts, list, "GL_NV_path_rendering_shared_edge"); - this.GL_NV_pixel_data_range = hasExtension(version, exts, list, "GL_NV_pixel_data_range"); - this.GL_NV_point_sprite = hasExtension(version, exts, list, "GL_NV_point_sprite"); - this.GL_NV_present_video = hasExtension(version, exts, list, "GL_NV_present_video"); - this.GL_NV_primitive_restart = hasExtension(version, exts, list, "GL_NV_primitive_restart"); - this.GL_NV_primitive_shading_rate = hasExtension(version, exts, list, "GL_NV_primitive_shading_rate"); - this.GL_NV_query_resource = hasExtension(version, exts, list, "GL_NV_query_resource"); - this.GL_NV_query_resource_tag = hasExtension(version, exts, list, "GL_NV_query_resource_tag"); - this.GL_NV_register_combiners = hasExtension(version, exts, list, "GL_NV_register_combiners"); - this.GL_NV_register_combiners2 = hasExtension(version, exts, list, "GL_NV_register_combiners2"); - this.GL_NV_representative_fragment_test = hasExtension(version, exts, list, "GL_NV_representative_fragment_test"); - this.GL_NV_robustness_video_memory_purge = hasExtension(version, exts, list, "GL_NV_robustness_video_memory_purge"); - this.GL_NV_sample_locations = hasExtension(version, exts, list, "GL_NV_sample_locations"); - this.GL_NV_sample_mask_override_coverage = hasExtension(version, exts, list, "GL_NV_sample_mask_override_coverage"); - this.GL_NV_scissor_exclusive = hasExtension(version, exts, list, "GL_NV_scissor_exclusive"); - this.GL_NV_shader_atomic_counters = hasExtension(version, exts, list, "GL_NV_shader_atomic_counters"); - this.GL_NV_shader_atomic_float = hasExtension(version, exts, list, "GL_NV_shader_atomic_float"); - this.GL_NV_shader_atomic_float64 = hasExtension(version, exts, list, "GL_NV_shader_atomic_float64"); - this.GL_NV_shader_atomic_fp16_vector = hasExtension(version, exts, list, "GL_NV_shader_atomic_fp16_vector"); - this.GL_NV_shader_atomic_int64 = hasExtension(version, exts, list, "GL_NV_shader_atomic_int64"); - this.GL_NV_shader_buffer_load = hasExtension(version, exts, list, "GL_NV_shader_buffer_load"); - this.GL_NV_shader_buffer_store = hasExtension(version, exts, list, "GL_NV_shader_buffer_store"); - this.GL_NV_shader_storage_buffer_object = hasExtension(version, exts, list, "GL_NV_shader_storage_buffer_object"); - this.GL_NV_shader_subgroup_partitioned = hasExtension(version, exts, list, "GL_NV_shader_subgroup_partitioned"); - this.GL_NV_shader_texture_footprint = hasExtension(version, exts, list, "GL_NV_shader_texture_footprint"); - this.GL_NV_shader_thread_group = hasExtension(version, exts, list, "GL_NV_shader_thread_group"); - this.GL_NV_shader_thread_shuffle = hasExtension(version, exts, list, "GL_NV_shader_thread_shuffle"); - this.GL_NV_shading_rate_image = hasExtension(version, exts, list, "GL_NV_shading_rate_image"); - this.GL_NV_stereo_view_rendering = hasExtension(version, exts, list, "GL_NV_stereo_view_rendering"); - this.GL_NV_tessellation_program5 = hasExtension(version, exts, list, "GL_NV_tessellation_program5"); - this.GL_NV_texgen_emboss = hasExtension(version, exts, list, "GL_NV_texgen_emboss"); - this.GL_NV_texgen_reflection = hasExtension(version, exts, list, "GL_NV_texgen_reflection"); - this.GL_NV_texture_barrier = hasExtension(version, exts, list, "GL_NV_texture_barrier"); - this.GL_NV_texture_compression_vtc = hasExtension(version, exts, list, "GL_NV_texture_compression_vtc"); - this.GL_NV_texture_env_combine4 = hasExtension(version, exts, list, "GL_NV_texture_env_combine4"); - this.GL_NV_texture_expand_normal = hasExtension(version, exts, list, "GL_NV_texture_expand_normal"); - this.GL_NV_texture_multisample = hasExtension(version, exts, list, "GL_NV_texture_multisample"); - this.GL_NV_texture_rectangle = hasExtension(version, exts, list, "GL_NV_texture_rectangle"); - this.GL_NV_texture_rectangle_compressed = hasExtension(version, exts, list, "GL_NV_texture_rectangle_compressed"); - this.GL_NV_texture_shader = hasExtension(version, exts, list, "GL_NV_texture_shader"); - this.GL_NV_texture_shader2 = hasExtension(version, exts, list, "GL_NV_texture_shader2"); - this.GL_NV_texture_shader3 = hasExtension(version, exts, list, "GL_NV_texture_shader3"); - this.GL_NV_timeline_semaphore = hasExtension(version, exts, list, "GL_NV_timeline_semaphore"); - this.GL_NV_transform_feedback = hasExtension(version, exts, list, "GL_NV_transform_feedback"); - this.GL_NV_transform_feedback2 = hasExtension(version, exts, list, "GL_NV_transform_feedback2"); - this.GL_NV_uniform_buffer_std430_layout = hasExtension(version, exts, list, "GL_NV_uniform_buffer_std430_layout"); - this.GL_NV_uniform_buffer_unified_memory = hasExtension(version, exts, list, "GL_NV_uniform_buffer_unified_memory"); - this.GL_NV_vdpau_interop = hasExtension(version, exts, list, "GL_NV_vdpau_interop"); - this.GL_NV_vdpau_interop2 = hasExtension(version, exts, list, "GL_NV_vdpau_interop2"); - this.GL_NV_vertex_array_range = hasExtension(version, exts, list, "GL_NV_vertex_array_range"); - this.GL_NV_vertex_array_range2 = hasExtension(version, exts, list, "GL_NV_vertex_array_range2"); - this.GL_NV_vertex_attrib_integer_64bit = hasExtension(version, exts, list, "GL_NV_vertex_attrib_integer_64bit"); - this.GL_NV_vertex_buffer_unified_memory = hasExtension(version, exts, list, "GL_NV_vertex_buffer_unified_memory"); - this.GL_NV_vertex_program = hasExtension(version, exts, list, "GL_NV_vertex_program"); - this.GL_NV_vertex_program1_1 = hasExtension(version, exts, list, "GL_NV_vertex_program1_1"); - this.GL_NV_vertex_program2 = hasExtension(version, exts, list, "GL_NV_vertex_program2"); - this.GL_NV_vertex_program2_option = hasExtension(version, exts, list, "GL_NV_vertex_program2_option"); - this.GL_NV_vertex_program3 = hasExtension(version, exts, list, "GL_NV_vertex_program3"); - this.GL_NV_vertex_program4 = hasExtension(version, exts, list, "GL_NV_vertex_program4"); - this.GL_NV_video_capture = hasExtension(version, exts, list, "GL_NV_video_capture"); - this.GL_NV_viewport_array2 = hasExtension(version, exts, list, "GL_NV_viewport_array2"); - this.GL_NV_viewport_swizzle = hasExtension(version, exts, list, "GL_NV_viewport_swizzle"); - this.GL_OML_interlace = hasExtension(version, exts, list, "GL_OML_interlace"); - this.GL_OML_resample = hasExtension(version, exts, list, "GL_OML_resample"); - this.GL_OML_subsample = hasExtension(version, exts, list, "GL_OML_subsample"); - this.GL_OVR_multiview = hasExtension(version, exts, list, "GL_OVR_multiview"); - this.GL_OVR_multiview2 = hasExtension(version, exts, list, "GL_OVR_multiview2"); - this.GL_PGI_misc_hints = hasExtension(version, exts, list, "GL_PGI_misc_hints"); - this.GL_PGI_vertex_hints = hasExtension(version, exts, list, "GL_PGI_vertex_hints"); - this.GL_REND_screen_coordinates = hasExtension(version, exts, list, "GL_REND_screen_coordinates"); - this.GL_S3_s3tc = hasExtension(version, exts, list, "GL_S3_s3tc"); - this.GL_SGIS_detail_texture = hasExtension(version, exts, list, "GL_SGIS_detail_texture"); - this.GL_SGIS_fog_function = hasExtension(version, exts, list, "GL_SGIS_fog_function"); - this.GL_SGIS_generate_mipmap = hasExtension(version, exts, list, "GL_SGIS_generate_mipmap"); - this.GL_SGIS_multisample = hasExtension(version, exts, list, "GL_SGIS_multisample"); - this.GL_SGIS_pixel_texture = hasExtension(version, exts, list, "GL_SGIS_pixel_texture"); - this.GL_SGIS_point_line_texgen = hasExtension(version, exts, list, "GL_SGIS_point_line_texgen"); - this.GL_SGIS_point_parameters = hasExtension(version, exts, list, "GL_SGIS_point_parameters"); - this.GL_SGIS_sharpen_texture = hasExtension(version, exts, list, "GL_SGIS_sharpen_texture"); - this.GL_SGIS_texture4D = hasExtension(version, exts, list, "GL_SGIS_texture4D"); - this.GL_SGIS_texture_border_clamp = hasExtension(version, exts, list, "GL_SGIS_texture_border_clamp"); - this.GL_SGIS_texture_color_mask = hasExtension(version, exts, list, "GL_SGIS_texture_color_mask"); - this.GL_SGIS_texture_edge_clamp = hasExtension(version, exts, list, "GL_SGIS_texture_edge_clamp"); - this.GL_SGIS_texture_filter4 = hasExtension(version, exts, list, "GL_SGIS_texture_filter4"); - this.GL_SGIS_texture_lod = hasExtension(version, exts, list, "GL_SGIS_texture_lod"); - this.GL_SGIS_texture_select = hasExtension(version, exts, list, "GL_SGIS_texture_select"); - this.GL_SGIX_async = hasExtension(version, exts, list, "GL_SGIX_async"); - this.GL_SGIX_async_histogram = hasExtension(version, exts, list, "GL_SGIX_async_histogram"); - this.GL_SGIX_async_pixel = hasExtension(version, exts, list, "GL_SGIX_async_pixel"); - this.GL_SGIX_blend_alpha_minmax = hasExtension(version, exts, list, "GL_SGIX_blend_alpha_minmax"); - this.GL_SGIX_calligraphic_fragment = hasExtension(version, exts, list, "GL_SGIX_calligraphic_fragment"); - this.GL_SGIX_clipmap = hasExtension(version, exts, list, "GL_SGIX_clipmap"); - this.GL_SGIX_convolution_accuracy = hasExtension(version, exts, list, "GL_SGIX_convolution_accuracy"); - this.GL_SGIX_depth_pass_instrument = hasExtension(version, exts, list, "GL_SGIX_depth_pass_instrument"); - this.GL_SGIX_depth_texture = hasExtension(version, exts, list, "GL_SGIX_depth_texture"); - this.GL_SGIX_flush_raster = hasExtension(version, exts, list, "GL_SGIX_flush_raster"); - this.GL_SGIX_fog_offset = hasExtension(version, exts, list, "GL_SGIX_fog_offset"); - this.GL_SGIX_fragment_lighting = hasExtension(version, exts, list, "GL_SGIX_fragment_lighting"); - this.GL_SGIX_framezoom = hasExtension(version, exts, list, "GL_SGIX_framezoom"); - this.GL_SGIX_igloo_interface = hasExtension(version, exts, list, "GL_SGIX_igloo_interface"); - this.GL_SGIX_instruments = hasExtension(version, exts, list, "GL_SGIX_instruments"); - this.GL_SGIX_interlace = hasExtension(version, exts, list, "GL_SGIX_interlace"); - this.GL_SGIX_ir_instrument1 = hasExtension(version, exts, list, "GL_SGIX_ir_instrument1"); - this.GL_SGIX_list_priority = hasExtension(version, exts, list, "GL_SGIX_list_priority"); - this.GL_SGIX_pixel_texture = hasExtension(version, exts, list, "GL_SGIX_pixel_texture"); - this.GL_SGIX_pixel_tiles = hasExtension(version, exts, list, "GL_SGIX_pixel_tiles"); - this.GL_SGIX_polynomial_ffd = hasExtension(version, exts, list, "GL_SGIX_polynomial_ffd"); - this.GL_SGIX_reference_plane = hasExtension(version, exts, list, "GL_SGIX_reference_plane"); - this.GL_SGIX_resample = hasExtension(version, exts, list, "GL_SGIX_resample"); - this.GL_SGIX_scalebias_hint = hasExtension(version, exts, list, "GL_SGIX_scalebias_hint"); - this.GL_SGIX_shadow = hasExtension(version, exts, list, "GL_SGIX_shadow"); - this.GL_SGIX_shadow_ambient = hasExtension(version, exts, list, "GL_SGIX_shadow_ambient"); - this.GL_SGIX_sprite = hasExtension(version, exts, list, "GL_SGIX_sprite"); - this.GL_SGIX_subsample = hasExtension(version, exts, list, "GL_SGIX_subsample"); - this.GL_SGIX_tag_sample_buffer = hasExtension(version, exts, list, "GL_SGIX_tag_sample_buffer"); - this.GL_SGIX_texture_add_env = hasExtension(version, exts, list, "GL_SGIX_texture_add_env"); - this.GL_SGIX_texture_coordinate_clamp = hasExtension(version, exts, list, "GL_SGIX_texture_coordinate_clamp"); - this.GL_SGIX_texture_lod_bias = hasExtension(version, exts, list, "GL_SGIX_texture_lod_bias"); - this.GL_SGIX_texture_multi_buffer = hasExtension(version, exts, list, "GL_SGIX_texture_multi_buffer"); - this.GL_SGIX_texture_scale_bias = hasExtension(version, exts, list, "GL_SGIX_texture_scale_bias"); - this.GL_SGIX_vertex_preclip = hasExtension(version, exts, list, "GL_SGIX_vertex_preclip"); - this.GL_SGIX_ycrcb = hasExtension(version, exts, list, "GL_SGIX_ycrcb"); - this.GL_SGIX_ycrcb_subsample = hasExtension(version, exts, list, "GL_SGIX_ycrcb_subsample"); - this.GL_SGIX_ycrcba = hasExtension(version, exts, list, "GL_SGIX_ycrcba"); - this.GL_SGI_color_matrix = hasExtension(version, exts, list, "GL_SGI_color_matrix"); - this.GL_SGI_color_table = hasExtension(version, exts, list, "GL_SGI_color_table"); - this.GL_SGI_texture_color_table = hasExtension(version, exts, list, "GL_SGI_texture_color_table"); - this.GL_SUNX_constant_data = hasExtension(version, exts, list, "GL_SUNX_constant_data"); - this.GL_SUN_convolution_border_modes = hasExtension(version, exts, list, "GL_SUN_convolution_border_modes"); - this.GL_SUN_global_alpha = hasExtension(version, exts, list, "GL_SUN_global_alpha"); - this.GL_SUN_mesh_array = hasExtension(version, exts, list, "GL_SUN_mesh_array"); - this.GL_SUN_slice_accum = hasExtension(version, exts, list, "GL_SUN_slice_accum"); - this.GL_SUN_triangle_list = hasExtension(version, exts, list, "GL_SUN_triangle_list"); - this.GL_SUN_vertex = hasExtension(version, exts, list, "GL_SUN_vertex"); - this.GL_WIN_phong_shading = hasExtension(version, exts, list, "GL_WIN_phong_shading"); - this.GL_WIN_specular_fog = hasExtension(version, exts, list, "GL_WIN_specular_fog"); + this.GL_ARB_ES2_compatibility = list.contains("GL_ARB_ES2_compatibility"); + this.GL_ARB_ES3_1_compatibility = list.contains("GL_ARB_ES3_1_compatibility"); + this.GL_ARB_ES3_2_compatibility = list.contains("GL_ARB_ES3_2_compatibility"); + this.GL_ARB_ES3_compatibility = list.contains("GL_ARB_ES3_compatibility"); + this.GL_ARB_arrays_of_arrays = list.contains("GL_ARB_arrays_of_arrays"); + this.GL_ARB_base_instance = list.contains("GL_ARB_base_instance"); + this.GL_ARB_bindless_texture = list.contains("GL_ARB_bindless_texture"); + this.GL_ARB_blend_func_extended = list.contains("GL_ARB_blend_func_extended"); + this.GL_ARB_buffer_storage = list.contains("GL_ARB_buffer_storage"); + this.GL_ARB_cl_event = list.contains("GL_ARB_cl_event"); + this.GL_ARB_clear_buffer_object = list.contains("GL_ARB_clear_buffer_object"); + this.GL_ARB_clear_texture = list.contains("GL_ARB_clear_texture"); + this.GL_ARB_clip_control = list.contains("GL_ARB_clip_control"); + this.GL_ARB_color_buffer_float = list.contains("GL_ARB_color_buffer_float"); + this.GL_ARB_compatibility = list.contains("GL_ARB_compatibility"); + this.GL_ARB_compressed_texture_pixel_storage = list.contains("GL_ARB_compressed_texture_pixel_storage"); + this.GL_ARB_compute_shader = list.contains("GL_ARB_compute_shader"); + this.GL_ARB_compute_variable_group_size = list.contains("GL_ARB_compute_variable_group_size"); + this.GL_ARB_conditional_render_inverted = list.contains("GL_ARB_conditional_render_inverted"); + this.GL_ARB_conservative_depth = list.contains("GL_ARB_conservative_depth"); + this.GL_ARB_copy_buffer = list.contains("GL_ARB_copy_buffer"); + this.GL_ARB_copy_image = list.contains("GL_ARB_copy_image"); + this.GL_ARB_cull_distance = list.contains("GL_ARB_cull_distance"); + this.GL_ARB_debug_output = list.contains("GL_ARB_debug_output"); + this.GL_ARB_depth_buffer_float = list.contains("GL_ARB_depth_buffer_float"); + this.GL_ARB_depth_clamp = list.contains("GL_ARB_depth_clamp"); + this.GL_ARB_depth_texture = list.contains("GL_ARB_depth_texture"); + this.GL_ARB_derivative_control = list.contains("GL_ARB_derivative_control"); + this.GL_ARB_direct_state_access = list.contains("GL_ARB_direct_state_access"); + this.GL_ARB_draw_buffers = list.contains("GL_ARB_draw_buffers"); + this.GL_ARB_draw_buffers_blend = list.contains("GL_ARB_draw_buffers_blend"); + this.GL_ARB_draw_elements_base_vertex = list.contains("GL_ARB_draw_elements_base_vertex"); + this.GL_ARB_draw_indirect = list.contains("GL_ARB_draw_indirect"); + this.GL_ARB_draw_instanced = list.contains("GL_ARB_draw_instanced"); + this.GL_ARB_enhanced_layouts = list.contains("GL_ARB_enhanced_layouts"); + this.GL_ARB_explicit_attrib_location = list.contains("GL_ARB_explicit_attrib_location"); + this.GL_ARB_explicit_uniform_location = list.contains("GL_ARB_explicit_uniform_location"); + this.GL_ARB_fragment_coord_conventions = list.contains("GL_ARB_fragment_coord_conventions"); + this.GL_ARB_fragment_layer_viewport = list.contains("GL_ARB_fragment_layer_viewport"); + this.GL_ARB_fragment_program = list.contains("GL_ARB_fragment_program"); + this.GL_ARB_fragment_program_shadow = list.contains("GL_ARB_fragment_program_shadow"); + this.GL_ARB_fragment_shader = list.contains("GL_ARB_fragment_shader"); + this.GL_ARB_fragment_shader_interlock = list.contains("GL_ARB_fragment_shader_interlock"); + this.GL_ARB_framebuffer_no_attachments = list.contains("GL_ARB_framebuffer_no_attachments"); + this.GL_ARB_framebuffer_object = list.contains("GL_ARB_framebuffer_object"); + this.GL_ARB_framebuffer_sRGB = list.contains("GL_ARB_framebuffer_sRGB"); + this.GL_ARB_geometry_shader4 = list.contains("GL_ARB_geometry_shader4"); + this.GL_ARB_get_program_binary = list.contains("GL_ARB_get_program_binary"); + this.GL_ARB_get_texture_sub_image = list.contains("GL_ARB_get_texture_sub_image"); + this.GL_ARB_gl_spirv = list.contains("GL_ARB_gl_spirv"); + this.GL_ARB_gpu_shader5 = list.contains("GL_ARB_gpu_shader5"); + this.GL_ARB_gpu_shader_fp64 = list.contains("GL_ARB_gpu_shader_fp64"); + this.GL_ARB_gpu_shader_int64 = list.contains("GL_ARB_gpu_shader_int64"); + this.GL_ARB_half_float_pixel = list.contains("GL_ARB_half_float_pixel"); + this.GL_ARB_half_float_vertex = list.contains("GL_ARB_half_float_vertex"); + this.GL_ARB_imaging = list.contains("GL_ARB_imaging"); + this.GL_ARB_indirect_parameters = list.contains("GL_ARB_indirect_parameters"); + this.GL_ARB_instanced_arrays = list.contains("GL_ARB_instanced_arrays"); + this.GL_ARB_internalformat_query = list.contains("GL_ARB_internalformat_query"); + this.GL_ARB_internalformat_query2 = list.contains("GL_ARB_internalformat_query2"); + this.GL_ARB_invalidate_subdata = list.contains("GL_ARB_invalidate_subdata"); + this.GL_ARB_map_buffer_alignment = list.contains("GL_ARB_map_buffer_alignment"); + this.GL_ARB_map_buffer_range = list.contains("GL_ARB_map_buffer_range"); + this.GL_ARB_matrix_palette = list.contains("GL_ARB_matrix_palette"); + this.GL_ARB_multi_bind = list.contains("GL_ARB_multi_bind"); + this.GL_ARB_multi_draw_indirect = list.contains("GL_ARB_multi_draw_indirect"); + this.GL_ARB_multisample = list.contains("GL_ARB_multisample"); + this.GL_ARB_multitexture = list.contains("GL_ARB_multitexture"); + this.GL_ARB_occlusion_query = list.contains("GL_ARB_occlusion_query"); + this.GL_ARB_occlusion_query2 = list.contains("GL_ARB_occlusion_query2"); + this.GL_ARB_parallel_shader_compile = list.contains("GL_ARB_parallel_shader_compile"); + this.GL_ARB_pipeline_statistics_query = list.contains("GL_ARB_pipeline_statistics_query"); + this.GL_ARB_pixel_buffer_object = list.contains("GL_ARB_pixel_buffer_object"); + this.GL_ARB_point_parameters = list.contains("GL_ARB_point_parameters"); + this.GL_ARB_point_sprite = list.contains("GL_ARB_point_sprite"); + this.GL_ARB_polygon_offset_clamp = list.contains("GL_ARB_polygon_offset_clamp"); + this.GL_ARB_post_depth_coverage = list.contains("GL_ARB_post_depth_coverage"); + this.GL_ARB_program_interface_query = list.contains("GL_ARB_program_interface_query"); + this.GL_ARB_provoking_vertex = list.contains("GL_ARB_provoking_vertex"); + this.GL_ARB_query_buffer_object = list.contains("GL_ARB_query_buffer_object"); + this.GL_ARB_robust_buffer_access_behavior = list.contains("GL_ARB_robust_buffer_access_behavior"); + this.GL_ARB_robustness = list.contains("GL_ARB_robustness"); + this.GL_ARB_robustness_isolation = list.contains("GL_ARB_robustness_isolation"); + this.GL_ARB_sample_locations = list.contains("GL_ARB_sample_locations"); + this.GL_ARB_sample_shading = list.contains("GL_ARB_sample_shading"); + this.GL_ARB_sampler_objects = list.contains("GL_ARB_sampler_objects"); + this.GL_ARB_seamless_cube_map = list.contains("GL_ARB_seamless_cube_map"); + this.GL_ARB_seamless_cubemap_per_texture = list.contains("GL_ARB_seamless_cubemap_per_texture"); + this.GL_ARB_separate_shader_objects = list.contains("GL_ARB_separate_shader_objects"); + this.GL_ARB_shader_atomic_counter_ops = list.contains("GL_ARB_shader_atomic_counter_ops"); + this.GL_ARB_shader_atomic_counters = list.contains("GL_ARB_shader_atomic_counters"); + this.GL_ARB_shader_ballot = list.contains("GL_ARB_shader_ballot"); + this.GL_ARB_shader_bit_encoding = list.contains("GL_ARB_shader_bit_encoding"); + this.GL_ARB_shader_clock = list.contains("GL_ARB_shader_clock"); + this.GL_ARB_shader_draw_parameters = list.contains("GL_ARB_shader_draw_parameters"); + this.GL_ARB_shader_group_vote = list.contains("GL_ARB_shader_group_vote"); + this.GL_ARB_shader_image_load_store = list.contains("GL_ARB_shader_image_load_store"); + this.GL_ARB_shader_image_size = list.contains("GL_ARB_shader_image_size"); + this.GL_ARB_shader_objects = list.contains("GL_ARB_shader_objects"); + this.GL_ARB_shader_precision = list.contains("GL_ARB_shader_precision"); + this.GL_ARB_shader_stencil_export = list.contains("GL_ARB_shader_stencil_export"); + this.GL_ARB_shader_storage_buffer_object = list.contains("GL_ARB_shader_storage_buffer_object"); + this.GL_ARB_shader_subroutine = list.contains("GL_ARB_shader_subroutine"); + this.GL_ARB_shader_texture_image_samples = list.contains("GL_ARB_shader_texture_image_samples"); + this.GL_ARB_shader_texture_lod = list.contains("GL_ARB_shader_texture_lod"); + this.GL_ARB_shader_viewport_layer_array = list.contains("GL_ARB_shader_viewport_layer_array"); + this.GL_ARB_shading_language_100 = list.contains("GL_ARB_shading_language_100"); + this.GL_ARB_shading_language_420pack = list.contains("GL_ARB_shading_language_420pack"); + this.GL_ARB_shading_language_include = list.contains("GL_ARB_shading_language_include"); + this.GL_ARB_shading_language_packing = list.contains("GL_ARB_shading_language_packing"); + this.GL_ARB_shadow = list.contains("GL_ARB_shadow"); + this.GL_ARB_shadow_ambient = list.contains("GL_ARB_shadow_ambient"); + this.GL_ARB_sparse_buffer = list.contains("GL_ARB_sparse_buffer"); + this.GL_ARB_sparse_texture = list.contains("GL_ARB_sparse_texture"); + this.GL_ARB_sparse_texture2 = list.contains("GL_ARB_sparse_texture2"); + this.GL_ARB_sparse_texture_clamp = list.contains("GL_ARB_sparse_texture_clamp"); + this.GL_ARB_spirv_extensions = list.contains("GL_ARB_spirv_extensions"); + this.GL_ARB_stencil_texturing = list.contains("GL_ARB_stencil_texturing"); + this.GL_ARB_sync = list.contains("GL_ARB_sync"); + this.GL_ARB_tessellation_shader = list.contains("GL_ARB_tessellation_shader"); + this.GL_ARB_texture_barrier = list.contains("GL_ARB_texture_barrier"); + this.GL_ARB_texture_border_clamp = list.contains("GL_ARB_texture_border_clamp"); + this.GL_ARB_texture_buffer_object = list.contains("GL_ARB_texture_buffer_object"); + this.GL_ARB_texture_buffer_object_rgb32 = list.contains("GL_ARB_texture_buffer_object_rgb32"); + this.GL_ARB_texture_buffer_range = list.contains("GL_ARB_texture_buffer_range"); + this.GL_ARB_texture_compression = list.contains("GL_ARB_texture_compression"); + this.GL_ARB_texture_compression_bptc = list.contains("GL_ARB_texture_compression_bptc"); + this.GL_ARB_texture_compression_rgtc = list.contains("GL_ARB_texture_compression_rgtc"); + this.GL_ARB_texture_cube_map = list.contains("GL_ARB_texture_cube_map"); + this.GL_ARB_texture_cube_map_array = list.contains("GL_ARB_texture_cube_map_array"); + this.GL_ARB_texture_env_add = list.contains("GL_ARB_texture_env_add"); + this.GL_ARB_texture_env_combine = list.contains("GL_ARB_texture_env_combine"); + this.GL_ARB_texture_env_crossbar = list.contains("GL_ARB_texture_env_crossbar"); + this.GL_ARB_texture_env_dot3 = list.contains("GL_ARB_texture_env_dot3"); + this.GL_ARB_texture_filter_anisotropic = list.contains("GL_ARB_texture_filter_anisotropic"); + this.GL_ARB_texture_filter_minmax = list.contains("GL_ARB_texture_filter_minmax"); + this.GL_ARB_texture_float = list.contains("GL_ARB_texture_float"); + this.GL_ARB_texture_gather = list.contains("GL_ARB_texture_gather"); + this.GL_ARB_texture_mirror_clamp_to_edge = list.contains("GL_ARB_texture_mirror_clamp_to_edge"); + this.GL_ARB_texture_mirrored_repeat = list.contains("GL_ARB_texture_mirrored_repeat"); + this.GL_ARB_texture_multisample = list.contains("GL_ARB_texture_multisample"); + this.GL_ARB_texture_non_power_of_two = list.contains("GL_ARB_texture_non_power_of_two"); + this.GL_ARB_texture_query_levels = list.contains("GL_ARB_texture_query_levels"); + this.GL_ARB_texture_query_lod = list.contains("GL_ARB_texture_query_lod"); + this.GL_ARB_texture_rectangle = list.contains("GL_ARB_texture_rectangle"); + this.GL_ARB_texture_rg = list.contains("GL_ARB_texture_rg"); + this.GL_ARB_texture_rgb10_a2ui = list.contains("GL_ARB_texture_rgb10_a2ui"); + this.GL_ARB_texture_stencil8 = list.contains("GL_ARB_texture_stencil8"); + this.GL_ARB_texture_storage = list.contains("GL_ARB_texture_storage"); + this.GL_ARB_texture_storage_multisample = list.contains("GL_ARB_texture_storage_multisample"); + this.GL_ARB_texture_swizzle = list.contains("GL_ARB_texture_swizzle"); + this.GL_ARB_texture_view = list.contains("GL_ARB_texture_view"); + this.GL_ARB_timer_query = list.contains("GL_ARB_timer_query"); + this.GL_ARB_transform_feedback2 = list.contains("GL_ARB_transform_feedback2"); + this.GL_ARB_transform_feedback3 = list.contains("GL_ARB_transform_feedback3"); + this.GL_ARB_transform_feedback_instanced = list.contains("GL_ARB_transform_feedback_instanced"); + this.GL_ARB_transform_feedback_overflow_query = list.contains("GL_ARB_transform_feedback_overflow_query"); + this.GL_ARB_transpose_matrix = list.contains("GL_ARB_transpose_matrix"); + this.GL_ARB_uniform_buffer_object = list.contains("GL_ARB_uniform_buffer_object"); + this.GL_ARB_vertex_array_bgra = list.contains("GL_ARB_vertex_array_bgra"); + this.GL_ARB_vertex_array_object = list.contains("GL_ARB_vertex_array_object"); + this.GL_ARB_vertex_attrib_64bit = list.contains("GL_ARB_vertex_attrib_64bit"); + this.GL_ARB_vertex_attrib_binding = list.contains("GL_ARB_vertex_attrib_binding"); + this.GL_ARB_vertex_blend = list.contains("GL_ARB_vertex_blend"); + this.GL_ARB_vertex_buffer_object = list.contains("GL_ARB_vertex_buffer_object"); + this.GL_ARB_vertex_program = list.contains("GL_ARB_vertex_program"); + this.GL_ARB_vertex_shader = list.contains("GL_ARB_vertex_shader"); + this.GL_ARB_vertex_type_10f_11f_11f_rev = list.contains("GL_ARB_vertex_type_10f_11f_11f_rev"); + this.GL_ARB_vertex_type_2_10_10_10_rev = list.contains("GL_ARB_vertex_type_2_10_10_10_rev"); + this.GL_ARB_viewport_array = list.contains("GL_ARB_viewport_array"); + this.GL_ARB_window_pos = list.contains("GL_ARB_window_pos"); + this.GL_KHR_blend_equation_advanced = list.contains("GL_KHR_blend_equation_advanced"); + this.GL_KHR_blend_equation_advanced_coherent = list.contains("GL_KHR_blend_equation_advanced_coherent"); + this.GL_KHR_context_flush_control = list.contains("GL_KHR_context_flush_control"); + this.GL_KHR_debug = list.contains("GL_KHR_debug"); + this.GL_KHR_no_error = list.contains("GL_KHR_no_error"); + this.GL_KHR_parallel_shader_compile = list.contains("GL_KHR_parallel_shader_compile"); + this.GL_KHR_robust_buffer_access_behavior = list.contains("GL_KHR_robust_buffer_access_behavior"); + this.GL_KHR_robustness = list.contains("GL_KHR_robustness"); + this.GL_KHR_shader_subgroup = list.contains("GL_KHR_shader_subgroup"); + this.GL_KHR_texture_compression_astc_hdr = list.contains("GL_KHR_texture_compression_astc_hdr"); + this.GL_KHR_texture_compression_astc_ldr = list.contains("GL_KHR_texture_compression_astc_ldr"); + this.GL_KHR_texture_compression_astc_sliced_3d = list.contains("GL_KHR_texture_compression_astc_sliced_3d"); + this.GL_OES_byte_coordinates = list.contains("GL_OES_byte_coordinates"); + this.GL_OES_compressed_paletted_texture = list.contains("GL_OES_compressed_paletted_texture"); + this.GL_OES_fixed_point = list.contains("GL_OES_fixed_point"); + this.GL_OES_query_matrix = list.contains("GL_OES_query_matrix"); + this.GL_OES_read_format = list.contains("GL_OES_read_format"); + this.GL_OES_single_precision = list.contains("GL_OES_single_precision"); + this.GL_3DFX_multisample = list.contains("GL_3DFX_multisample"); + this.GL_3DFX_tbuffer = list.contains("GL_3DFX_tbuffer"); + this.GL_3DFX_texture_compression_FXT1 = list.contains("GL_3DFX_texture_compression_FXT1"); + this.GL_AMD_blend_minmax_factor = list.contains("GL_AMD_blend_minmax_factor"); + this.GL_AMD_conservative_depth = list.contains("GL_AMD_conservative_depth"); + this.GL_AMD_debug_output = list.contains("GL_AMD_debug_output"); + this.GL_AMD_depth_clamp_separate = list.contains("GL_AMD_depth_clamp_separate"); + this.GL_AMD_draw_buffers_blend = list.contains("GL_AMD_draw_buffers_blend"); + this.GL_AMD_framebuffer_multisample_advanced = list.contains("GL_AMD_framebuffer_multisample_advanced"); + this.GL_AMD_framebuffer_sample_positions = list.contains("GL_AMD_framebuffer_sample_positions"); + this.GL_AMD_gcn_shader = list.contains("GL_AMD_gcn_shader"); + this.GL_AMD_gpu_shader_half_float = list.contains("GL_AMD_gpu_shader_half_float"); + this.GL_AMD_gpu_shader_int16 = list.contains("GL_AMD_gpu_shader_int16"); + this.GL_AMD_gpu_shader_int64 = list.contains("GL_AMD_gpu_shader_int64"); + this.GL_AMD_interleaved_elements = list.contains("GL_AMD_interleaved_elements"); + this.GL_AMD_multi_draw_indirect = list.contains("GL_AMD_multi_draw_indirect"); + this.GL_AMD_name_gen_delete = list.contains("GL_AMD_name_gen_delete"); + this.GL_AMD_occlusion_query_event = list.contains("GL_AMD_occlusion_query_event"); + this.GL_AMD_performance_monitor = list.contains("GL_AMD_performance_monitor"); + this.GL_AMD_pinned_memory = list.contains("GL_AMD_pinned_memory"); + this.GL_AMD_query_buffer_object = list.contains("GL_AMD_query_buffer_object"); + this.GL_AMD_sample_positions = list.contains("GL_AMD_sample_positions"); + this.GL_AMD_seamless_cubemap_per_texture = list.contains("GL_AMD_seamless_cubemap_per_texture"); + this.GL_AMD_shader_atomic_counter_ops = list.contains("GL_AMD_shader_atomic_counter_ops"); + this.GL_AMD_shader_ballot = list.contains("GL_AMD_shader_ballot"); + this.GL_AMD_shader_explicit_vertex_parameter = list.contains("GL_AMD_shader_explicit_vertex_parameter"); + this.GL_AMD_shader_gpu_shader_half_float_fetch = list.contains("GL_AMD_shader_gpu_shader_half_float_fetch"); + this.GL_AMD_shader_image_load_store_lod = list.contains("GL_AMD_shader_image_load_store_lod"); + this.GL_AMD_shader_stencil_export = list.contains("GL_AMD_shader_stencil_export"); + this.GL_AMD_shader_trinary_minmax = list.contains("GL_AMD_shader_trinary_minmax"); + this.GL_AMD_sparse_texture = list.contains("GL_AMD_sparse_texture"); + this.GL_AMD_stencil_operation_extended = list.contains("GL_AMD_stencil_operation_extended"); + this.GL_AMD_texture_gather_bias_lod = list.contains("GL_AMD_texture_gather_bias_lod"); + this.GL_AMD_texture_texture4 = list.contains("GL_AMD_texture_texture4"); + this.GL_AMD_transform_feedback3_lines_triangles = list.contains("GL_AMD_transform_feedback3_lines_triangles"); + this.GL_AMD_transform_feedback4 = list.contains("GL_AMD_transform_feedback4"); + this.GL_AMD_vertex_shader_layer = list.contains("GL_AMD_vertex_shader_layer"); + this.GL_AMD_vertex_shader_tessellator = list.contains("GL_AMD_vertex_shader_tessellator"); + this.GL_AMD_vertex_shader_viewport_index = list.contains("GL_AMD_vertex_shader_viewport_index"); + this.GL_APPLE_aux_depth_stencil = list.contains("GL_APPLE_aux_depth_stencil"); + this.GL_APPLE_client_storage = list.contains("GL_APPLE_client_storage"); + this.GL_APPLE_element_array = list.contains("GL_APPLE_element_array"); + this.GL_APPLE_fence = list.contains("GL_APPLE_fence"); + this.GL_APPLE_float_pixels = list.contains("GL_APPLE_float_pixels"); + this.GL_APPLE_flush_buffer_range = list.contains("GL_APPLE_flush_buffer_range"); + this.GL_APPLE_object_purgeable = list.contains("GL_APPLE_object_purgeable"); + this.GL_APPLE_rgb_422 = list.contains("GL_APPLE_rgb_422"); + this.GL_APPLE_row_bytes = list.contains("GL_APPLE_row_bytes"); + this.GL_APPLE_specular_vector = list.contains("GL_APPLE_specular_vector"); + this.GL_APPLE_texture_range = list.contains("GL_APPLE_texture_range"); + this.GL_APPLE_transform_hint = list.contains("GL_APPLE_transform_hint"); + this.GL_APPLE_vertex_array_object = list.contains("GL_APPLE_vertex_array_object"); + this.GL_APPLE_vertex_array_range = list.contains("GL_APPLE_vertex_array_range"); + this.GL_APPLE_vertex_program_evaluators = list.contains("GL_APPLE_vertex_program_evaluators"); + this.GL_APPLE_ycbcr_422 = list.contains("GL_APPLE_ycbcr_422"); + this.GL_ATI_draw_buffers = list.contains("GL_ATI_draw_buffers"); + this.GL_ATI_element_array = list.contains("GL_ATI_element_array"); + this.GL_ATI_envmap_bumpmap = list.contains("GL_ATI_envmap_bumpmap"); + this.GL_ATI_fragment_shader = list.contains("GL_ATI_fragment_shader"); + this.GL_ATI_map_object_buffer = list.contains("GL_ATI_map_object_buffer"); + this.GL_ATI_meminfo = list.contains("GL_ATI_meminfo"); + this.GL_ATI_pixel_format_float = list.contains("GL_ATI_pixel_format_float"); + this.GL_ATI_pn_triangles = list.contains("GL_ATI_pn_triangles"); + this.GL_ATI_separate_stencil = list.contains("GL_ATI_separate_stencil"); + this.GL_ATI_text_fragment_shader = list.contains("GL_ATI_text_fragment_shader"); + this.GL_ATI_texture_env_combine3 = list.contains("GL_ATI_texture_env_combine3"); + this.GL_ATI_texture_float = list.contains("GL_ATI_texture_float"); + this.GL_ATI_texture_mirror_once = list.contains("GL_ATI_texture_mirror_once"); + this.GL_ATI_vertex_array_object = list.contains("GL_ATI_vertex_array_object"); + this.GL_ATI_vertex_attrib_array_object = list.contains("GL_ATI_vertex_attrib_array_object"); + this.GL_ATI_vertex_streams = list.contains("GL_ATI_vertex_streams"); + this.GL_EXT_422_pixels = list.contains("GL_EXT_422_pixels"); + this.GL_EXT_EGL_image_storage = list.contains("GL_EXT_EGL_image_storage"); + this.GL_EXT_EGL_sync = list.contains("GL_EXT_EGL_sync"); + this.GL_EXT_abgr = list.contains("GL_EXT_abgr"); + this.GL_EXT_bgra = list.contains("GL_EXT_bgra"); + this.GL_EXT_bindable_uniform = list.contains("GL_EXT_bindable_uniform"); + this.GL_EXT_blend_color = list.contains("GL_EXT_blend_color"); + this.GL_EXT_blend_equation_separate = list.contains("GL_EXT_blend_equation_separate"); + this.GL_EXT_blend_func_separate = list.contains("GL_EXT_blend_func_separate"); + this.GL_EXT_blend_logic_op = list.contains("GL_EXT_blend_logic_op"); + this.GL_EXT_blend_minmax = list.contains("GL_EXT_blend_minmax"); + this.GL_EXT_blend_subtract = list.contains("GL_EXT_blend_subtract"); + this.GL_EXT_clip_volume_hint = list.contains("GL_EXT_clip_volume_hint"); + this.GL_EXT_cmyka = list.contains("GL_EXT_cmyka"); + this.GL_EXT_color_subtable = list.contains("GL_EXT_color_subtable"); + this.GL_EXT_compiled_vertex_array = list.contains("GL_EXT_compiled_vertex_array"); + this.GL_EXT_convolution = list.contains("GL_EXT_convolution"); + this.GL_EXT_coordinate_frame = list.contains("GL_EXT_coordinate_frame"); + this.GL_EXT_copy_texture = list.contains("GL_EXT_copy_texture"); + this.GL_EXT_cull_vertex = list.contains("GL_EXT_cull_vertex"); + this.GL_EXT_debug_label = list.contains("GL_EXT_debug_label"); + this.GL_EXT_debug_marker = list.contains("GL_EXT_debug_marker"); + this.GL_EXT_depth_bounds_test = list.contains("GL_EXT_depth_bounds_test"); + this.GL_EXT_direct_state_access = list.contains("GL_EXT_direct_state_access"); + this.GL_EXT_draw_buffers2 = list.contains("GL_EXT_draw_buffers2"); + this.GL_EXT_draw_instanced = list.contains("GL_EXT_draw_instanced"); + this.GL_EXT_draw_range_elements = list.contains("GL_EXT_draw_range_elements"); + this.GL_EXT_external_buffer = list.contains("GL_EXT_external_buffer"); + this.GL_EXT_fog_coord = list.contains("GL_EXT_fog_coord"); + this.GL_EXT_framebuffer_blit = list.contains("GL_EXT_framebuffer_blit"); + this.GL_EXT_framebuffer_blit_layers = list.contains("GL_EXT_framebuffer_blit_layers"); + this.GL_EXT_framebuffer_multisample = list.contains("GL_EXT_framebuffer_multisample"); + this.GL_EXT_framebuffer_multisample_blit_scaled = list.contains("GL_EXT_framebuffer_multisample_blit_scaled"); + this.GL_EXT_framebuffer_object = list.contains("GL_EXT_framebuffer_object"); + this.GL_EXT_framebuffer_sRGB = list.contains("GL_EXT_framebuffer_sRGB"); + this.GL_EXT_geometry_shader4 = list.contains("GL_EXT_geometry_shader4"); + this.GL_EXT_gpu_program_parameters = list.contains("GL_EXT_gpu_program_parameters"); + this.GL_EXT_gpu_shader4 = list.contains("GL_EXT_gpu_shader4"); + this.GL_EXT_histogram = list.contains("GL_EXT_histogram"); + this.GL_EXT_index_array_formats = list.contains("GL_EXT_index_array_formats"); + this.GL_EXT_index_func = list.contains("GL_EXT_index_func"); + this.GL_EXT_index_material = list.contains("GL_EXT_index_material"); + this.GL_EXT_index_texture = list.contains("GL_EXT_index_texture"); + this.GL_EXT_light_texture = list.contains("GL_EXT_light_texture"); + this.GL_EXT_memory_object = list.contains("GL_EXT_memory_object"); + this.GL_EXT_memory_object_fd = list.contains("GL_EXT_memory_object_fd"); + this.GL_EXT_memory_object_win32 = list.contains("GL_EXT_memory_object_win32"); + this.GL_EXT_misc_attribute = list.contains("GL_EXT_misc_attribute"); + this.GL_EXT_multi_draw_arrays = list.contains("GL_EXT_multi_draw_arrays"); + this.GL_EXT_multisample = list.contains("GL_EXT_multisample"); + this.GL_EXT_multiview_tessellation_geometry_shader = list.contains("GL_EXT_multiview_tessellation_geometry_shader"); + this.GL_EXT_multiview_texture_multisample = list.contains("GL_EXT_multiview_texture_multisample"); + this.GL_EXT_multiview_timer_query = list.contains("GL_EXT_multiview_timer_query"); + this.GL_EXT_packed_depth_stencil = list.contains("GL_EXT_packed_depth_stencil"); + this.GL_EXT_packed_float = list.contains("GL_EXT_packed_float"); + this.GL_EXT_packed_pixels = list.contains("GL_EXT_packed_pixels"); + this.GL_EXT_paletted_texture = list.contains("GL_EXT_paletted_texture"); + this.GL_EXT_pixel_buffer_object = list.contains("GL_EXT_pixel_buffer_object"); + this.GL_EXT_pixel_transform = list.contains("GL_EXT_pixel_transform"); + this.GL_EXT_pixel_transform_color_table = list.contains("GL_EXT_pixel_transform_color_table"); + this.GL_EXT_point_parameters = list.contains("GL_EXT_point_parameters"); + this.GL_EXT_polygon_offset = list.contains("GL_EXT_polygon_offset"); + this.GL_EXT_polygon_offset_clamp = list.contains("GL_EXT_polygon_offset_clamp"); + this.GL_EXT_post_depth_coverage = list.contains("GL_EXT_post_depth_coverage"); + this.GL_EXT_provoking_vertex = list.contains("GL_EXT_provoking_vertex"); + this.GL_EXT_raster_multisample = list.contains("GL_EXT_raster_multisample"); + this.GL_EXT_rescale_normal = list.contains("GL_EXT_rescale_normal"); + this.GL_EXT_secondary_color = list.contains("GL_EXT_secondary_color"); + this.GL_EXT_semaphore = list.contains("GL_EXT_semaphore"); + this.GL_EXT_semaphore_fd = list.contains("GL_EXT_semaphore_fd"); + this.GL_EXT_semaphore_win32 = list.contains("GL_EXT_semaphore_win32"); + this.GL_EXT_separate_shader_objects = list.contains("GL_EXT_separate_shader_objects"); + this.GL_EXT_separate_specular_color = list.contains("GL_EXT_separate_specular_color"); + this.GL_EXT_shader_framebuffer_fetch = list.contains("GL_EXT_shader_framebuffer_fetch"); + this.GL_EXT_shader_framebuffer_fetch_non_coherent = list.contains("GL_EXT_shader_framebuffer_fetch_non_coherent"); + this.GL_EXT_shader_image_load_formatted = list.contains("GL_EXT_shader_image_load_formatted"); + this.GL_EXT_shader_image_load_store = list.contains("GL_EXT_shader_image_load_store"); + this.GL_EXT_shader_integer_mix = list.contains("GL_EXT_shader_integer_mix"); + this.GL_EXT_shader_samples_identical = list.contains("GL_EXT_shader_samples_identical"); + this.GL_EXT_shadow_funcs = list.contains("GL_EXT_shadow_funcs"); + this.GL_EXT_shared_texture_palette = list.contains("GL_EXT_shared_texture_palette"); + this.GL_EXT_sparse_texture2 = list.contains("GL_EXT_sparse_texture2"); + this.GL_EXT_stencil_clear_tag = list.contains("GL_EXT_stencil_clear_tag"); + this.GL_EXT_stencil_two_side = list.contains("GL_EXT_stencil_two_side"); + this.GL_EXT_stencil_wrap = list.contains("GL_EXT_stencil_wrap"); + this.GL_EXT_subtexture = list.contains("GL_EXT_subtexture"); + this.GL_EXT_texture = list.contains("GL_EXT_texture"); + this.GL_EXT_texture3D = list.contains("GL_EXT_texture3D"); + this.GL_EXT_texture_array = list.contains("GL_EXT_texture_array"); + this.GL_EXT_texture_buffer_object = list.contains("GL_EXT_texture_buffer_object"); + this.GL_EXT_texture_compression_latc = list.contains("GL_EXT_texture_compression_latc"); + this.GL_EXT_texture_compression_rgtc = list.contains("GL_EXT_texture_compression_rgtc"); + this.GL_EXT_texture_compression_s3tc = list.contains("GL_EXT_texture_compression_s3tc"); + this.GL_EXT_texture_cube_map = list.contains("GL_EXT_texture_cube_map"); + this.GL_EXT_texture_env_add = list.contains("GL_EXT_texture_env_add"); + this.GL_EXT_texture_env_combine = list.contains("GL_EXT_texture_env_combine"); + this.GL_EXT_texture_env_dot3 = list.contains("GL_EXT_texture_env_dot3"); + this.GL_EXT_texture_filter_anisotropic = list.contains("GL_EXT_texture_filter_anisotropic"); + this.GL_EXT_texture_filter_minmax = list.contains("GL_EXT_texture_filter_minmax"); + this.GL_EXT_texture_integer = list.contains("GL_EXT_texture_integer"); + this.GL_EXT_texture_lod_bias = list.contains("GL_EXT_texture_lod_bias"); + this.GL_EXT_texture_mirror_clamp = list.contains("GL_EXT_texture_mirror_clamp"); + this.GL_EXT_texture_object = list.contains("GL_EXT_texture_object"); + this.GL_EXT_texture_perturb_normal = list.contains("GL_EXT_texture_perturb_normal"); + this.GL_EXT_texture_sRGB = list.contains("GL_EXT_texture_sRGB"); + this.GL_EXT_texture_sRGB_R8 = list.contains("GL_EXT_texture_sRGB_R8"); + this.GL_EXT_texture_sRGB_RG8 = list.contains("GL_EXT_texture_sRGB_RG8"); + this.GL_EXT_texture_sRGB_decode = list.contains("GL_EXT_texture_sRGB_decode"); + this.GL_EXT_texture_shadow_lod = list.contains("GL_EXT_texture_shadow_lod"); + this.GL_EXT_texture_shared_exponent = list.contains("GL_EXT_texture_shared_exponent"); + this.GL_EXT_texture_snorm = list.contains("GL_EXT_texture_snorm"); + this.GL_EXT_texture_storage = list.contains("GL_EXT_texture_storage"); + this.GL_EXT_texture_swizzle = list.contains("GL_EXT_texture_swizzle"); + this.GL_EXT_timer_query = list.contains("GL_EXT_timer_query"); + this.GL_EXT_transform_feedback = list.contains("GL_EXT_transform_feedback"); + this.GL_EXT_vertex_array = list.contains("GL_EXT_vertex_array"); + this.GL_EXT_vertex_array_bgra = list.contains("GL_EXT_vertex_array_bgra"); + this.GL_EXT_vertex_attrib_64bit = list.contains("GL_EXT_vertex_attrib_64bit"); + this.GL_EXT_vertex_shader = list.contains("GL_EXT_vertex_shader"); + this.GL_EXT_vertex_weighting = list.contains("GL_EXT_vertex_weighting"); + this.GL_EXT_win32_keyed_mutex = list.contains("GL_EXT_win32_keyed_mutex"); + this.GL_EXT_window_rectangles = list.contains("GL_EXT_window_rectangles"); + this.GL_EXT_x11_sync_object = list.contains("GL_EXT_x11_sync_object"); + this.GL_GREMEDY_frame_terminator = list.contains("GL_GREMEDY_frame_terminator"); + this.GL_GREMEDY_string_marker = list.contains("GL_GREMEDY_string_marker"); + this.GL_HP_convolution_border_modes = list.contains("GL_HP_convolution_border_modes"); + this.GL_HP_image_transform = list.contains("GL_HP_image_transform"); + this.GL_HP_occlusion_test = list.contains("GL_HP_occlusion_test"); + this.GL_HP_texture_lighting = list.contains("GL_HP_texture_lighting"); + this.GL_IBM_cull_vertex = list.contains("GL_IBM_cull_vertex"); + this.GL_IBM_multimode_draw_arrays = list.contains("GL_IBM_multimode_draw_arrays"); + this.GL_IBM_rasterpos_clip = list.contains("GL_IBM_rasterpos_clip"); + this.GL_IBM_static_data = list.contains("GL_IBM_static_data"); + this.GL_IBM_texture_mirrored_repeat = list.contains("GL_IBM_texture_mirrored_repeat"); + this.GL_IBM_vertex_array_lists = list.contains("GL_IBM_vertex_array_lists"); + this.GL_INGR_blend_func_separate = list.contains("GL_INGR_blend_func_separate"); + this.GL_INGR_color_clamp = list.contains("GL_INGR_color_clamp"); + this.GL_INGR_interlace_read = list.contains("GL_INGR_interlace_read"); + this.GL_INTEL_blackhole_render = list.contains("GL_INTEL_blackhole_render"); + this.GL_INTEL_conservative_rasterization = list.contains("GL_INTEL_conservative_rasterization"); + this.GL_INTEL_fragment_shader_ordering = list.contains("GL_INTEL_fragment_shader_ordering"); + this.GL_INTEL_framebuffer_CMAA = list.contains("GL_INTEL_framebuffer_CMAA"); + this.GL_INTEL_map_texture = list.contains("GL_INTEL_map_texture"); + this.GL_INTEL_parallel_arrays = list.contains("GL_INTEL_parallel_arrays"); + this.GL_INTEL_performance_query = list.contains("GL_INTEL_performance_query"); + this.GL_MESAX_texture_stack = list.contains("GL_MESAX_texture_stack"); + this.GL_MESA_framebuffer_flip_x = list.contains("GL_MESA_framebuffer_flip_x"); + this.GL_MESA_framebuffer_flip_y = list.contains("GL_MESA_framebuffer_flip_y"); + this.GL_MESA_framebuffer_swap_xy = list.contains("GL_MESA_framebuffer_swap_xy"); + this.GL_MESA_pack_invert = list.contains("GL_MESA_pack_invert"); + this.GL_MESA_program_binary_formats = list.contains("GL_MESA_program_binary_formats"); + this.GL_MESA_resize_buffers = list.contains("GL_MESA_resize_buffers"); + this.GL_MESA_shader_integer_functions = list.contains("GL_MESA_shader_integer_functions"); + this.GL_MESA_tile_raster_order = list.contains("GL_MESA_tile_raster_order"); + this.GL_MESA_window_pos = list.contains("GL_MESA_window_pos"); + this.GL_MESA_ycbcr_texture = list.contains("GL_MESA_ycbcr_texture"); + this.GL_NVX_blend_equation_advanced_multi_draw_buffers = list.contains("GL_NVX_blend_equation_advanced_multi_draw_buffers"); + this.GL_NVX_conditional_render = list.contains("GL_NVX_conditional_render"); + this.GL_NVX_gpu_memory_info = list.contains("GL_NVX_gpu_memory_info"); + this.GL_NVX_gpu_multicast2 = list.contains("GL_NVX_gpu_multicast2"); + this.GL_NVX_linked_gpu_multicast = list.contains("GL_NVX_linked_gpu_multicast"); + this.GL_NVX_progress_fence = list.contains("GL_NVX_progress_fence"); + this.GL_NV_alpha_to_coverage_dither_control = list.contains("GL_NV_alpha_to_coverage_dither_control"); + this.GL_NV_bindless_multi_draw_indirect = list.contains("GL_NV_bindless_multi_draw_indirect"); + this.GL_NV_bindless_multi_draw_indirect_count = list.contains("GL_NV_bindless_multi_draw_indirect_count"); + this.GL_NV_bindless_texture = list.contains("GL_NV_bindless_texture"); + this.GL_NV_blend_equation_advanced = list.contains("GL_NV_blend_equation_advanced"); + this.GL_NV_blend_equation_advanced_coherent = list.contains("GL_NV_blend_equation_advanced_coherent"); + this.GL_NV_blend_minmax_factor = list.contains("GL_NV_blend_minmax_factor"); + this.GL_NV_blend_square = list.contains("GL_NV_blend_square"); + this.GL_NV_clip_space_w_scaling = list.contains("GL_NV_clip_space_w_scaling"); + this.GL_NV_command_list = list.contains("GL_NV_command_list"); + this.GL_NV_compute_program5 = list.contains("GL_NV_compute_program5"); + this.GL_NV_compute_shader_derivatives = list.contains("GL_NV_compute_shader_derivatives"); + this.GL_NV_conditional_render = list.contains("GL_NV_conditional_render"); + this.GL_NV_conservative_raster = list.contains("GL_NV_conservative_raster"); + this.GL_NV_conservative_raster_dilate = list.contains("GL_NV_conservative_raster_dilate"); + this.GL_NV_conservative_raster_pre_snap = list.contains("GL_NV_conservative_raster_pre_snap"); + this.GL_NV_conservative_raster_pre_snap_triangles = list.contains("GL_NV_conservative_raster_pre_snap_triangles"); + this.GL_NV_conservative_raster_underestimation = list.contains("GL_NV_conservative_raster_underestimation"); + this.GL_NV_copy_depth_to_color = list.contains("GL_NV_copy_depth_to_color"); + this.GL_NV_copy_image = list.contains("GL_NV_copy_image"); + this.GL_NV_deep_texture3D = list.contains("GL_NV_deep_texture3D"); + this.GL_NV_depth_buffer_float = list.contains("GL_NV_depth_buffer_float"); + this.GL_NV_depth_clamp = list.contains("GL_NV_depth_clamp"); + this.GL_NV_draw_texture = list.contains("GL_NV_draw_texture"); + this.GL_NV_draw_vulkan_image = list.contains("GL_NV_draw_vulkan_image"); + this.GL_NV_evaluators = list.contains("GL_NV_evaluators"); + this.GL_NV_explicit_multisample = list.contains("GL_NV_explicit_multisample"); + this.GL_NV_fence = list.contains("GL_NV_fence"); + this.GL_NV_fill_rectangle = list.contains("GL_NV_fill_rectangle"); + this.GL_NV_float_buffer = list.contains("GL_NV_float_buffer"); + this.GL_NV_fog_distance = list.contains("GL_NV_fog_distance"); + this.GL_NV_fragment_coverage_to_color = list.contains("GL_NV_fragment_coverage_to_color"); + this.GL_NV_fragment_program = list.contains("GL_NV_fragment_program"); + this.GL_NV_fragment_program2 = list.contains("GL_NV_fragment_program2"); + this.GL_NV_fragment_program4 = list.contains("GL_NV_fragment_program4"); + this.GL_NV_fragment_program_option = list.contains("GL_NV_fragment_program_option"); + this.GL_NV_fragment_shader_barycentric = list.contains("GL_NV_fragment_shader_barycentric"); + this.GL_NV_fragment_shader_interlock = list.contains("GL_NV_fragment_shader_interlock"); + this.GL_NV_framebuffer_mixed_samples = list.contains("GL_NV_framebuffer_mixed_samples"); + this.GL_NV_framebuffer_multisample_coverage = list.contains("GL_NV_framebuffer_multisample_coverage"); + this.GL_NV_geometry_program4 = list.contains("GL_NV_geometry_program4"); + this.GL_NV_geometry_shader4 = list.contains("GL_NV_geometry_shader4"); + this.GL_NV_geometry_shader_passthrough = list.contains("GL_NV_geometry_shader_passthrough"); + this.GL_NV_gpu_multicast = list.contains("GL_NV_gpu_multicast"); + this.GL_NV_gpu_program4 = list.contains("GL_NV_gpu_program4"); + this.GL_NV_gpu_program5 = list.contains("GL_NV_gpu_program5"); + this.GL_NV_gpu_program5_mem_extended = list.contains("GL_NV_gpu_program5_mem_extended"); + this.GL_NV_gpu_shader5 = list.contains("GL_NV_gpu_shader5"); + this.GL_NV_half_float = list.contains("GL_NV_half_float"); + this.GL_NV_internalformat_sample_query = list.contains("GL_NV_internalformat_sample_query"); + this.GL_NV_light_max_exponent = list.contains("GL_NV_light_max_exponent"); + this.GL_NV_memory_attachment = list.contains("GL_NV_memory_attachment"); + this.GL_NV_memory_object_sparse = list.contains("GL_NV_memory_object_sparse"); + this.GL_NV_mesh_shader = list.contains("GL_NV_mesh_shader"); + this.GL_NV_multisample_coverage = list.contains("GL_NV_multisample_coverage"); + this.GL_NV_multisample_filter_hint = list.contains("GL_NV_multisample_filter_hint"); + this.GL_NV_occlusion_query = list.contains("GL_NV_occlusion_query"); + this.GL_NV_packed_depth_stencil = list.contains("GL_NV_packed_depth_stencil"); + this.GL_NV_parameter_buffer_object = list.contains("GL_NV_parameter_buffer_object"); + this.GL_NV_parameter_buffer_object2 = list.contains("GL_NV_parameter_buffer_object2"); + this.GL_NV_path_rendering = list.contains("GL_NV_path_rendering"); + this.GL_NV_path_rendering_shared_edge = list.contains("GL_NV_path_rendering_shared_edge"); + this.GL_NV_pixel_data_range = list.contains("GL_NV_pixel_data_range"); + this.GL_NV_point_sprite = list.contains("GL_NV_point_sprite"); + this.GL_NV_present_video = list.contains("GL_NV_present_video"); + this.GL_NV_primitive_restart = list.contains("GL_NV_primitive_restart"); + this.GL_NV_primitive_shading_rate = list.contains("GL_NV_primitive_shading_rate"); + this.GL_NV_query_resource = list.contains("GL_NV_query_resource"); + this.GL_NV_query_resource_tag = list.contains("GL_NV_query_resource_tag"); + this.GL_NV_register_combiners = list.contains("GL_NV_register_combiners"); + this.GL_NV_register_combiners2 = list.contains("GL_NV_register_combiners2"); + this.GL_NV_representative_fragment_test = list.contains("GL_NV_representative_fragment_test"); + this.GL_NV_robustness_video_memory_purge = list.contains("GL_NV_robustness_video_memory_purge"); + this.GL_NV_sample_locations = list.contains("GL_NV_sample_locations"); + this.GL_NV_sample_mask_override_coverage = list.contains("GL_NV_sample_mask_override_coverage"); + this.GL_NV_scissor_exclusive = list.contains("GL_NV_scissor_exclusive"); + this.GL_NV_shader_atomic_counters = list.contains("GL_NV_shader_atomic_counters"); + this.GL_NV_shader_atomic_float = list.contains("GL_NV_shader_atomic_float"); + this.GL_NV_shader_atomic_float64 = list.contains("GL_NV_shader_atomic_float64"); + this.GL_NV_shader_atomic_fp16_vector = list.contains("GL_NV_shader_atomic_fp16_vector"); + this.GL_NV_shader_atomic_int64 = list.contains("GL_NV_shader_atomic_int64"); + this.GL_NV_shader_buffer_load = list.contains("GL_NV_shader_buffer_load"); + this.GL_NV_shader_buffer_store = list.contains("GL_NV_shader_buffer_store"); + this.GL_NV_shader_storage_buffer_object = list.contains("GL_NV_shader_storage_buffer_object"); + this.GL_NV_shader_subgroup_partitioned = list.contains("GL_NV_shader_subgroup_partitioned"); + this.GL_NV_shader_texture_footprint = list.contains("GL_NV_shader_texture_footprint"); + this.GL_NV_shader_thread_group = list.contains("GL_NV_shader_thread_group"); + this.GL_NV_shader_thread_shuffle = list.contains("GL_NV_shader_thread_shuffle"); + this.GL_NV_shading_rate_image = list.contains("GL_NV_shading_rate_image"); + this.GL_NV_stereo_view_rendering = list.contains("GL_NV_stereo_view_rendering"); + this.GL_NV_tessellation_program5 = list.contains("GL_NV_tessellation_program5"); + this.GL_NV_texgen_emboss = list.contains("GL_NV_texgen_emboss"); + this.GL_NV_texgen_reflection = list.contains("GL_NV_texgen_reflection"); + this.GL_NV_texture_barrier = list.contains("GL_NV_texture_barrier"); + this.GL_NV_texture_compression_vtc = list.contains("GL_NV_texture_compression_vtc"); + this.GL_NV_texture_env_combine4 = list.contains("GL_NV_texture_env_combine4"); + this.GL_NV_texture_expand_normal = list.contains("GL_NV_texture_expand_normal"); + this.GL_NV_texture_multisample = list.contains("GL_NV_texture_multisample"); + this.GL_NV_texture_rectangle = list.contains("GL_NV_texture_rectangle"); + this.GL_NV_texture_rectangle_compressed = list.contains("GL_NV_texture_rectangle_compressed"); + this.GL_NV_texture_shader = list.contains("GL_NV_texture_shader"); + this.GL_NV_texture_shader2 = list.contains("GL_NV_texture_shader2"); + this.GL_NV_texture_shader3 = list.contains("GL_NV_texture_shader3"); + this.GL_NV_timeline_semaphore = list.contains("GL_NV_timeline_semaphore"); + this.GL_NV_transform_feedback = list.contains("GL_NV_transform_feedback"); + this.GL_NV_transform_feedback2 = list.contains("GL_NV_transform_feedback2"); + this.GL_NV_uniform_buffer_std430_layout = list.contains("GL_NV_uniform_buffer_std430_layout"); + this.GL_NV_uniform_buffer_unified_memory = list.contains("GL_NV_uniform_buffer_unified_memory"); + this.GL_NV_vdpau_interop = list.contains("GL_NV_vdpau_interop"); + this.GL_NV_vdpau_interop2 = list.contains("GL_NV_vdpau_interop2"); + this.GL_NV_vertex_array_range = list.contains("GL_NV_vertex_array_range"); + this.GL_NV_vertex_array_range2 = list.contains("GL_NV_vertex_array_range2"); + this.GL_NV_vertex_attrib_integer_64bit = list.contains("GL_NV_vertex_attrib_integer_64bit"); + this.GL_NV_vertex_buffer_unified_memory = list.contains("GL_NV_vertex_buffer_unified_memory"); + this.GL_NV_vertex_program = list.contains("GL_NV_vertex_program"); + this.GL_NV_vertex_program1_1 = list.contains("GL_NV_vertex_program1_1"); + this.GL_NV_vertex_program2 = list.contains("GL_NV_vertex_program2"); + this.GL_NV_vertex_program2_option = list.contains("GL_NV_vertex_program2_option"); + this.GL_NV_vertex_program3 = list.contains("GL_NV_vertex_program3"); + this.GL_NV_vertex_program4 = list.contains("GL_NV_vertex_program4"); + this.GL_NV_video_capture = list.contains("GL_NV_video_capture"); + this.GL_NV_viewport_array2 = list.contains("GL_NV_viewport_array2"); + this.GL_NV_viewport_swizzle = list.contains("GL_NV_viewport_swizzle"); + this.GL_OML_interlace = list.contains("GL_OML_interlace"); + this.GL_OML_resample = list.contains("GL_OML_resample"); + this.GL_OML_subsample = list.contains("GL_OML_subsample"); + this.GL_OVR_multiview = list.contains("GL_OVR_multiview"); + this.GL_OVR_multiview2 = list.contains("GL_OVR_multiview2"); + this.GL_PGI_misc_hints = list.contains("GL_PGI_misc_hints"); + this.GL_PGI_vertex_hints = list.contains("GL_PGI_vertex_hints"); + this.GL_REND_screen_coordinates = list.contains("GL_REND_screen_coordinates"); + this.GL_S3_s3tc = list.contains("GL_S3_s3tc"); + this.GL_SGIS_detail_texture = list.contains("GL_SGIS_detail_texture"); + this.GL_SGIS_fog_function = list.contains("GL_SGIS_fog_function"); + this.GL_SGIS_generate_mipmap = list.contains("GL_SGIS_generate_mipmap"); + this.GL_SGIS_multisample = list.contains("GL_SGIS_multisample"); + this.GL_SGIS_pixel_texture = list.contains("GL_SGIS_pixel_texture"); + this.GL_SGIS_point_line_texgen = list.contains("GL_SGIS_point_line_texgen"); + this.GL_SGIS_point_parameters = list.contains("GL_SGIS_point_parameters"); + this.GL_SGIS_sharpen_texture = list.contains("GL_SGIS_sharpen_texture"); + this.GL_SGIS_texture4D = list.contains("GL_SGIS_texture4D"); + this.GL_SGIS_texture_border_clamp = list.contains("GL_SGIS_texture_border_clamp"); + this.GL_SGIS_texture_color_mask = list.contains("GL_SGIS_texture_color_mask"); + this.GL_SGIS_texture_edge_clamp = list.contains("GL_SGIS_texture_edge_clamp"); + this.GL_SGIS_texture_filter4 = list.contains("GL_SGIS_texture_filter4"); + this.GL_SGIS_texture_lod = list.contains("GL_SGIS_texture_lod"); + this.GL_SGIS_texture_select = list.contains("GL_SGIS_texture_select"); + this.GL_SGIX_async = list.contains("GL_SGIX_async"); + this.GL_SGIX_async_histogram = list.contains("GL_SGIX_async_histogram"); + this.GL_SGIX_async_pixel = list.contains("GL_SGIX_async_pixel"); + this.GL_SGIX_blend_alpha_minmax = list.contains("GL_SGIX_blend_alpha_minmax"); + this.GL_SGIX_calligraphic_fragment = list.contains("GL_SGIX_calligraphic_fragment"); + this.GL_SGIX_clipmap = list.contains("GL_SGIX_clipmap"); + this.GL_SGIX_convolution_accuracy = list.contains("GL_SGIX_convolution_accuracy"); + this.GL_SGIX_depth_pass_instrument = list.contains("GL_SGIX_depth_pass_instrument"); + this.GL_SGIX_depth_texture = list.contains("GL_SGIX_depth_texture"); + this.GL_SGIX_flush_raster = list.contains("GL_SGIX_flush_raster"); + this.GL_SGIX_fog_offset = list.contains("GL_SGIX_fog_offset"); + this.GL_SGIX_fragment_lighting = list.contains("GL_SGIX_fragment_lighting"); + this.GL_SGIX_framezoom = list.contains("GL_SGIX_framezoom"); + this.GL_SGIX_igloo_interface = list.contains("GL_SGIX_igloo_interface"); + this.GL_SGIX_instruments = list.contains("GL_SGIX_instruments"); + this.GL_SGIX_interlace = list.contains("GL_SGIX_interlace"); + this.GL_SGIX_ir_instrument1 = list.contains("GL_SGIX_ir_instrument1"); + this.GL_SGIX_list_priority = list.contains("GL_SGIX_list_priority"); + this.GL_SGIX_pixel_texture = list.contains("GL_SGIX_pixel_texture"); + this.GL_SGIX_pixel_tiles = list.contains("GL_SGIX_pixel_tiles"); + this.GL_SGIX_polynomial_ffd = list.contains("GL_SGIX_polynomial_ffd"); + this.GL_SGIX_reference_plane = list.contains("GL_SGIX_reference_plane"); + this.GL_SGIX_resample = list.contains("GL_SGIX_resample"); + this.GL_SGIX_scalebias_hint = list.contains("GL_SGIX_scalebias_hint"); + this.GL_SGIX_shadow = list.contains("GL_SGIX_shadow"); + this.GL_SGIX_shadow_ambient = list.contains("GL_SGIX_shadow_ambient"); + this.GL_SGIX_sprite = list.contains("GL_SGIX_sprite"); + this.GL_SGIX_subsample = list.contains("GL_SGIX_subsample"); + this.GL_SGIX_tag_sample_buffer = list.contains("GL_SGIX_tag_sample_buffer"); + this.GL_SGIX_texture_add_env = list.contains("GL_SGIX_texture_add_env"); + this.GL_SGIX_texture_coordinate_clamp = list.contains("GL_SGIX_texture_coordinate_clamp"); + this.GL_SGIX_texture_lod_bias = list.contains("GL_SGIX_texture_lod_bias"); + this.GL_SGIX_texture_multi_buffer = list.contains("GL_SGIX_texture_multi_buffer"); + this.GL_SGIX_texture_scale_bias = list.contains("GL_SGIX_texture_scale_bias"); + this.GL_SGIX_vertex_preclip = list.contains("GL_SGIX_vertex_preclip"); + this.GL_SGIX_ycrcb = list.contains("GL_SGIX_ycrcb"); + this.GL_SGIX_ycrcb_subsample = list.contains("GL_SGIX_ycrcb_subsample"); + this.GL_SGIX_ycrcba = list.contains("GL_SGIX_ycrcba"); + this.GL_SGI_color_matrix = list.contains("GL_SGI_color_matrix"); + this.GL_SGI_color_table = list.contains("GL_SGI_color_table"); + this.GL_SGI_texture_color_table = list.contains("GL_SGI_texture_color_table"); + this.GL_SUNX_constant_data = list.contains("GL_SUNX_constant_data"); + this.GL_SUN_convolution_border_modes = list.contains("GL_SUN_convolution_border_modes"); + this.GL_SUN_global_alpha = list.contains("GL_SUN_global_alpha"); + this.GL_SUN_mesh_array = list.contains("GL_SUN_mesh_array"); + this.GL_SUN_slice_accum = list.contains("GL_SUN_slice_accum"); + this.GL_SUN_triangle_list = list.contains("GL_SUN_triangle_list"); + this.GL_SUN_vertex = list.contains("GL_SUN_vertex"); + this.GL_WIN_phong_shading = list.contains("GL_WIN_phong_shading"); + this.GL_WIN_specular_fog = list.contains("GL_WIN_specular_fog"); return true; } diff --git a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtFinder.java b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtFinder.java index 70f7bbcb..36a504a8 100644 --- a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtFinder.java +++ b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLExtFinder.java @@ -16,13 +16,13 @@ package overrungl.opengl; +import overrun.marshal.MemoryStack; import overrun.marshal.Unmarshal; -import overrungl.NativeType; import java.lang.foreign.FunctionDescriptor; import java.lang.foreign.MemorySegment; -import java.lang.foreign.SegmentAllocator; import java.lang.invoke.MethodHandle; +import java.util.Collections; import java.util.List; import static java.lang.foreign.ValueLayout.ADDRESS; @@ -35,19 +35,17 @@ * @since 0.1.0 */ final class GLExtFinder { - static boolean getExtensions(SegmentAllocator allocator, + static boolean getExtensions(GLLoadFunc load, int version, - @NativeType("const char**") MemorySegment outExts, - List outExtsI, - GLLoadFunc load) { + List list) { // < 3.0 if (GLLoader.versionMajor(version) < 3) { - final MethodHandle glGetString = load.invoke("glGetString", FunctionDescriptor.of(ADDRESS, JAVA_INT)); + final MethodHandle glGetString = load.invoke("glGetString", FunctionDescriptor.of(Unmarshal.STR_LAYOUT, JAVA_INT)); if (glGetString == null) { return false; } try { - outExts.set(ADDRESS, 0, (MemorySegment) glGetString.invokeExact(GL.EXTENSIONS)); + Collections.addAll(list, ((MemorySegment) glGetString.invokeExact(GL.EXTENSIONS)).getString(0L).split("\\s+")); return true; } catch (Throwable e) { throw new RuntimeException(e); @@ -66,15 +64,18 @@ static boolean getExtensions(SegmentAllocator allocator, } // extension count - final MemorySegment pNumExtsI = allocator.allocate(JAVA_INT); - try { - glGetIntegerv.invokeExact(GL.NUM_EXTENSIONS, pNumExtsI); - } catch (Throwable e) { - throw new RuntimeException(e); - } - int numExtsI = pNumExtsI.get(JAVA_INT, 0L); - if (numExtsI <= 0) { - return false; + int numExtsI; + try (MemoryStack stack = MemoryStack.stackPush()) { + final MemorySegment pNumExtsI = stack.allocate(JAVA_INT); + try { + glGetIntegerv.invokeExact(GL.NUM_EXTENSIONS, pNumExtsI); + } catch (Throwable e) { + throw new RuntimeException(e); + } + numExtsI = pNumExtsI.get(JAVA_INT, 0L); + if (numExtsI <= 0) { + return false; + } } // write to the extension array @@ -85,16 +86,9 @@ static boolean getExtensions(SegmentAllocator allocator, } catch (Throwable e) { throw new RuntimeException(e); } - outExtsI.add(glStrTmp.getString(0L)); + list.add(glStrTmp.getString(0L)); } return true; } - - static boolean hasExtension(int version, String exts, List extsI, String ext) { - if (GLLoader.versionMajor(version) < 3) { - return exts != null && ext != null && exts.contains(ext); - } - return extsI.contains(ext); - } } diff --git a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLLoader.java b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLLoader.java index 3cca9917..7efd3a1c 100644 --- a/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLLoader.java +++ b/modules/overrungl.opengl/src/main/java/overrungl/opengl/GLLoader.java @@ -23,7 +23,10 @@ import overrungl.internal.RuntimeHelper; import overrungl.util.CheckUtil; +import java.lang.foreign.FunctionDescriptor; +import java.lang.foreign.ValueLayout; import java.lang.invoke.MethodHandle; +import java.util.Map; /** * This class must be used before any OpenGL function is called. It has the following responsibilities: @@ -50,6 +53,12 @@ */ public final class GLLoader { private static final boolean DEFAULT_COMPATIBLE = true; + private static final Map DESCRIPTOR_MAP = Map.of( + "glMapBuffer", FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_INT), + "glMapBufferRange", FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_LONG, ValueLayout.JAVA_LONG, ValueLayout.JAVA_INT), + "glMapNamedBuffer", FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_INT), + "glMapNamedBufferRange", FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_LONG, ValueLayout.JAVA_LONG, ValueLayout.JAVA_INT) + ); @Deprecated(since = "0.1.0") private static final ThreadLocal capabilitiesTLS = new ThreadLocal<>(); @@ -137,8 +146,8 @@ public static GL load(GLLoadFunc load, boolean forwardCompatible) { setCapabilities(caps); if (caps.load(load) != 0) { return forwardCompatible ? - Downcall.load(GL.class, load.lookup()) : - Downcall.load(GLLegacy.class, load.lookup()); + Downcall.load(GL.class, load.lookup(), DESCRIPTOR_MAP) : + Downcall.load(GLLegacy.class, load.lookup(), DESCRIPTOR_MAP); } // reset if failed to load setCapabilities(null);